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
搞什么,问题都不给,怎么帮你啊

C语言简单编程题目两道,求高手做一下。高分!!!
第1题 :include <stdio.h> include <stdlib.h> define MAX 200 int main(void){ int a[MAX], i = 0;srand(time(NULL)); \/\/ 时间种子, 保证真随机, 每次不会相同 while (i < MAX) { a[i] = rand() % 10000; \/\/ 随机获得10000以下数字, 0-9999 if (a[i] < 1000) { ...

C语言菜鸟求高手解答...
1. 第一个问题似乎是一个关于C语言条件判断的疑问。你需要明确表达你的问题,以便得到具体的解答。2. 在C语言中,`m++` 表示先使用变量 `m` 的值,然后将 `m` 的值加1。所以,表达式 `m++ > 5` 首先将 `m` 的值(初始为5)用于比较,然后 `m` 自增。3. 由于 `m` 的初始值是5,...

一些C语言题目!求高手答疑!谢谢了!!!
1,int和char虽然可以转换,但是如果互相转换了,想得到的原值就不一样了。2,第一条语句语法上应该是错误的;第二条把float类型的f模以int类型的i后,把他们的结果转换成(int)3.double是占8个字节,folat和int都占4个字节,char占一个字节,所以double比她们高位,所以低位向高位进行自动类型提升、...

电脑C语言编程,求高手帮忙
1.include<stdio.h> void main(){ int n[8],maxn=0,minn=0,detn;float score[8],max,min,aver=0.0,det,detm;printf("输入裁判号及分数:\\n");scanf("%d%f",&n[0],&score[0]);max=min=score[0];for(int i=1;i<8;i++){ scanf("%d%f",&n[i],&score[i]);if(max<...

C语言菜鸟求高手解答...
第一个问题只能说是一个判定条件,不知道你要的结果是什么。。2.m++>5这个判定是先取值后运算,m=5>5这个是不成立的,所以结果为假,然后m自增m=6,接着运行else printf("%d\\",m--);同样先取值运行,m=6所以输出6,之后再自减m=5但这是没有输出的,如果运行这个 main(){ int m=5;i...

c语言求n个数最大值,求高手解答。。。在codeblocks上
=EOF) { int i=n,c=0; int a[i]; for(i=0;i<n;i++) scanf("%d",&a[i]); for(i=0;i<n;i++) { if(a[i]>a[c]) c=i; } printf("%d\\n",a[c]); } return 0;}

C语言问题,x=3,求x+=x*=x++的值,求高手给解一下,给出解释.谢谢哈!
这个不同的编译器处理方式不同。你可以这样理解:x*=x++;x+=x;得:x++ \/\/ 4->x x*=x \/\/ 4*3->x(12)x+=x \/\/ 12+4->x(16)

用C语言求解一元二次方程,菜鸟问题,求高手解答。。。
void main(){float a,b,c,disc,x1,x2,realpart,imagpart;scanf("%f,%f,%f",&a,&b,&c);disc=b*b-4*a*c;if(fabs(disc)<=0.0001) printf("has two equal roots:%8.4f\\n",-b\/(2*a));else if(disc>0.0001){x1=(-b+sqrt(disc))\/(2*a);x2=(-b-sqrt(disc))\/(2*...

C语言编程:s=1+12+123+1234+12345求高手!
自定义一个递归求和函数在主函数中用(12345)调用,是求解此题十分恰当的选择。代码如下:include "stdio.h"int f(int n){\/\/自定义递归求和函数if(n==1)return 1;return n+f(n\/10);\/\/用n\/10调用满足每项逐次少低位数的规律}int main(int argc,char *argv[]){printf("%d\\n",f(12345)...

C语言的编程问题,求高手解答啊。新手很不明白。6月19号之前需要用到...
int a[N][N],b[N][N],c[N][N],n=4;void main(){ int i,j;printf("请输入矩阵维数2-10:\\n");scanf("%d",&n);printf("请输入矩阵A:\\n");for(i=0;i<n;i++){ printf("第%d行数据:\\n",i+1);for(j=0;j<n;j++)scanf("%d",&a[i][j]);} printf("请输入矩阵...

相似回答
大家正在搜