c语言编程问题,求高手解答(高分)

来源:百度知道 编辑:UC知道 时间:2024/05/18 02:29:03
#include "stdafx.h"
#include "stdio.h"

int main(int argc, char* argv[])
{
int game(int n,int k);
int n,k,x;
scanf("%d,%d",&n,&k);
printf("\n");
x=game(n,k)+1;
printf("%d",x);
return 0;
}

int game(int n,int k)
{
int i,cn=0,ce=0,a[50]={'0'};
for(i=0;i<n;i++)
a[i]=1;
while(ce+1!=n)
{
if(a[i]==0)
{
cn++;
}
if(cn==k)
{
cn=0;
ce++;
a[i]=0;
}
if(i==n-1)
{
i=0;
}
else
{
i++;
}
}

for(i=0;i<n;i++)
{
if(a[i]==1)
return(i);
}

}
各位老大我错了 这个程序是关于小朋友玩游戏- -,n个小朋友玩数数,每次数到k的小朋友出局,然后下一个小朋友从1重新开始数。我编的程序不管输入什么k n,输出值都是1 求高手指点、

你的程序没有大的问题,可以执行,只是以下几个小问题:

一、第一行包含的文件不存在,这一行应该删除。

二、定义了argc、argv两个变量没有使用,编译会有警告,可以删除他们或者不管,最好改为:
int main()

三、scanf输入n和k的时候,中间有个逗号分隔,这样输入的时候会麻烦,最好改为:
scanf("%d%d",&n,&k);

您想问什么?

int game(int n,int k);从main里面删掉

if(i==n-1)
{
i=0;
}
else
{
i++;
}这段有问题,i在执行完上面for后就已经等于n了。要清零!

for(i=0;i<n;i++)
{
if(a[i]==1)
return(i);
}这个之后还要一个return, 因为如果a里面没有等于1的元素,你的函数就没有返回值了。

这个程序的目的是什么?

这个差不多啊,你自己改改:
有n个人围成一圈,顺序排号,从第一个人开始报数(从1到3 ),凡是报到3的人退出圈子。问最后留下的是原来几号的那位 (要求:用指针)

#include <stdio.h>
#include <malloc.h>
int main()
{
int n=0,last,*arr,*p,index=1;
int i,j;
printf("输入整数n:\n");
scanf("%d",&n);
arr=(int*)malloc(sizeof(int)*n+1);
for( i=1;i<n+1;i++)
{
arr[i]=i;
}
for(j=1;j<n+1;j++)
{
pri