一道很简单的C语言题目,哪位好心人帮我看看哪里错了?

来源:百度知道 编辑:UC知道 时间:2024/06/04 03:26:07
试编写C程序,它将不停地接受用户输入的数字,直到最后两个数字完全相同为止,然后打印出已接收数字的个数(不包括最后一个),以及这些数字的累加和。程序提示和输出界面如下所示:
Number:5
Number:-6
Number:0
Number:45
Number:45
4 numbers were entered and their sunm is 44

我的代码是这样的:
#include "stdio.h"
#define MAX_STRING 100
int Sum(int string[]);
int size;

void main()
{
int index;
int numbers[MAX_STRING];
int sum;
size=0;

numbers[0]=0;
printf("Number: ");
scanf("%d",&numbers[0]);

for(index=1;numbers[index]!=numbers[index-1];index++)
{
printf("Number: ");
scanf("%d",&numbers[index]);
size=size+1;
}

sum=Sum(numbers);

printf("%d numbers were entered and their sum is %d",size,sum);
}

int Sum(int string[])
{
int sum=0;
int index=0;

for(index

for(index=1;numbers[index]!=numbers[index-1];index++)
{
printf("Number: ");
scanf("%d",&numbers[index]);
size=size+1;
}

把上面这个for循环的终止条件换一个地方,改成下面这样:

for(index=1;1;index++)
{
printf("Number: ");
scanf("%d",&numbers[index]);
size=size+1;
if(numbers[index]==numbers[index-1])
break;
}

对于如下格式的for循环:
for (语句a;语句b;语句c)
{
……
}
每次执行完花括号内的内容后,先执行语句c,再判断语句b。
按你原来的写法,肯定不会出现numbers[index]与numbers[index-1]相等的情况。

你也可以改成下面,与你原来的形式更像一点:
for(index=1;numbers[index-1]!=numbers[index-2];index++)
{
printf("Number: ");
scanf("%d",&numbers[index]);
size=size+1;
}

for(index=1;numbers[index]!=numbers[index-1];index++)
{
printf("Number: ");
scanf("%d",&numbers[index]);
size=size+1;
}
循环里面才开始读入 numbers[index] ,循环判断上已经在比较它了

你这个