void main()
{
int a[200],b=0; //先将数组定义到一个比较大的范围
while (?)
{
scanf("%d",&a[b]);
b++;
}
}
现在的问题是,并不知道抽到的班有多少个成绩,假如我输入30个成绩后想要跳出循环,该如何设置WHILE的条件?
不能设定特定的数字或者字符(字符也是数字嘛)。因为输入的成绩一切都是未知的
请教各位给个解决的办法了。不知道我叙述清楚了没有
谢谢二楼的,你说的办法很好!我写出的程序如下已经调试成功:
#include<conio.h>
#include<stdio.h>
void main()
{
int a[200],b=0,c=0; //先将数组定义到一个比较大的范围
printf("请输入:");
while (scanf("%d", &a[b++]) == 1)
{
scanf("%d",&a[b]);
b++;
}
while(c<b-1)
{
printf("%d",a[c]);
c++;
}
getch();
}
不过请问这个条件scanf("%d", &a[b++]) == 1的具体意思是什么意思啊?
数组一共输入了b个没错,最后一个输入非数字,并没有存入数组,所以并没有您所说的问题。
scanf()在输入时,如果输入成功,则返回输入的参数个数,如果不成功返回零,即为EOF.
不过您的程序有一个小弊病隐藏在里面,就是您并没有消除键盘记录的最后一个非数字,这对您以后扩充程序的时候绝对是个要害.要解决这个问题,您可以在您的程序加上一句:
while (scanf("%d", &a[b++]) == 1)
{
scanf("%d",&a[b]);
b++;
}
getchar(); //或者是fflush(stdin);
while(c<b-1)
{
printf("%d",a[c]);
c++;
}
这样便可以了.