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

#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);
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-12-11
这个差不多啊,你自己改改:
有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++)
{
printf("%4d",arr[j]);
}
printf("\n\n");
p=arr; //
for(i=1;i<n;) //i 计算次数,leave the last one !
for(j=1;j<4;j++)
{
if(j==3)
{
arr[index++]=0;//0 代表已经出局的数字
i++;
}
index++;
//process index overflow!
if(index>n)
index%=n;

}
//output
for(i=1;i<n+1;i++)
if(arr[i])
{
printf("The last num is %4dth \n",i);
break;
}
main();
return 0;
}
第2个回答  2009-12-11
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的元素,你的函数就没有返回值了。
第3个回答  2009-12-11
#include<stdio.h>
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10},i,j=0,m=0;
for(i=0;j<=10;i++)
{
if(i==10)i=0;
if(a[i]!=0)
{
m++;
if(m==8)
{
printf("%d\n",i);
j++;
m=0;
a[i]=0;
}
}

}
}
以前写的,懒得改了,我这里已经初始化数组了,你自己该一下就能达到你的要求,你参考一下,够简洁了吧!!
第4个回答  2009-12-11
搞什么,问题都不给,怎么帮你啊
相似回答
大家正在搜