C语言的问题,高手帮帮忙

程序的目的是:一组人轮流报数,只报1,2,3,然后接下来的人再从头开始报。报到3的人离队,剩下的人继续报数,直到剩下最后一个人.程序要找到那个人.怎么写?我这样写可以吗?... 程序的目的是:一组人轮流报数,只报1,2,3,然后接下来的人再从头开始报。报到3的人离队,剩下的人继续报数,直到剩下最后一个人.程序要找到那个人.

怎么写?

我这样写可以吗?

#include<stdio.h>
void solve(int n,int a[])
{int k=0;
int count;
int report=0;
int *p=a;
count=n;
while(count>1)
{if(*(p+k)==1)
{report++;
if(report==3)
{*(p+k)=0;
count--;
}
}
k++;
if(k==n)
k=0;
}
do
{if(*(p+k)==1)
{printf("The NO.%d member is left.",k+1);
count=0;}
else
{k++;
if(k==n)
k=0;}
}
while(count!=0)
}

void main()
{int n,i;
int member[30];
printf("The one who reports 3 will be selected out of the team.This program will show u the last member.Please enter the amount of your members:\n");
scanf("%d",&n);
for(i=0;i<n;i++)
member[i]=1;
for(;i>=n&&i<30;i++)
member[i]=0;
solve(n,member);
printf("\n");
}

编译时显示有5处错误,我找不出来。能帮忙找找么?帮忙找找语法错误。我上机机会不多,都是在纸上编的多。所以操作起来经常有自己看不出的语法错误。
大家就当C语言改错题做了吧。
能给出完整答案更好哦~`谢谢各位啦。^_^
展开
 我来答
llxlovesx
2007-02-12
知道答主
回答量:8
采纳率:0%
帮助的人:10.2万
展开全部
我看了半天,呵呵,关键本人不才,改了一个地方, 我没有编译环境,不知道这样行不:
#include<stdio.h>
void solve(int n,int a[])
{int k=0;
int count;
int report=0; /* */
int *p=a; /* 指针指向数组开始 */
count=n;
while(count>1) /* count = N>1*/
{if(*(p+k)==1) /* a[1]==1*/
{report++;
if(report%3==0)
{*(p+k)=0;
count--;

}
}
k++;
if(k==n)
k=0;
}
do
{if(*(p+k)==1)
{printf("The NO.%d member is left.",k+1);
count=0;
}
else
{k++;
if(k==n)
k=0;
}
}
while(count!=0)
}

void main()
{int n,i;
int member[30];
printf("The one who reports 3 will be selected out of the team.This program will show us the last member.Please enter the amount of your members:\n");
scanf("%d",&n); /* 若N=13*/
for(i=0;i<n;i++)
member[i]=1;
for(;i>=n&&i<30;i++) /* [1,1,0,1,1,0,1,1,0,1,1,0,1,0,0,0,0,0,0,0...] */
member[i]=0;
solve(n,member);
printf("\n");
}

参考资料: 自己搞的

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友4c8e60ef0
2007-02-12 · 超过20用户采纳过TA的回答
知道答主
回答量:95
采纳率:0%
帮助的人:0
展开全部
solve(n,member); void solve(int n,int a[])
函数引用不对,member是数组的首地址,上面你也看到int a[]是个数组,你将它改为int *a;这样应该可以。
还有一点就是你这个程序写的太乱,看起来真的很吃力。写程序的时候应该多写注释,这样我们也好更方便的帮你看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
adp_pos10g
推荐于2016-08-31
知道答主
回答量:2
采纳率:0%
帮助的人:0
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct Node
{
int data;
struct Node *next;
};

main()
{
struct Node *newnode=NULL;
struct Node *currentnode=NULL;
struct Node *headnode=NULL;
struct Node *a_node;
struct Node *b_node;

int n;
int m;
int i;
printf("please input the number that the person in circle");
scanf("%d",&n);

if(n<=1)
{
printf("input wrong number\n");
exit(1);
}

for(i=1;i<=n;i++)
{
newnode=(struct Node*)malloc(sizeof(struct Node));
newnode->data=i;

if(headnode==NULL)
{
headnode=newnode;
currentnode=newnode;
}

else
{
currentnode->next=newnode;
currentnode=newnode;
}
}

currentnode->next=headnode;

a_node=headnode;
b_node=headnode->next;

printf("please input the number that count to be out ");
scanf("%d",&m);

if(m<=1)
{
printf("input wrong number\n");
exit(1);
}

while(a_node!=a_node->next)
{
for(i=1;i<m-1;i++)
{
a_node=a_node->next;
b_node=b_node->next;
}
printf("the number %d person out on this turn\n",*b_node);
a_node->next=b_node->next;
a_node=b_node->next;
free(b_node);
b_node=a_node->next;
}
printf("the %d person in circle at last\n",*a_node);
getch();
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式