当前位置: 代码迷 >> C语言 >> 如何跳出数组输入的循环
  详细解决方案

如何跳出数组输入的循环

热度:108   发布时间:2006-07-19 14:55:37.0
如何跳出数组输入的循环
随机将一个班的成绩输入到一个数组中。
void main()
{
int a[200],b=0; //先将数组定义到一个比较大的范围
while (?)
{
scanf("%d",&a[b]);
b++;
}
}



现在的问题是,并不知道抽到的班有多少个成绩,假如我输入30个成绩后想要跳出循环,该如何设置WHILE的条件?
不能设定特定的数字或者字符(字符也是数字嘛)。因为输入的成绩一切都是未知的
请教各位给个解决的办法了。不知道我叙述清楚了没有
搜索更多相关的解决方案: 输入  

----------------解决方案--------------------------------------------------------

输个负数


----------------解决方案--------------------------------------------------------

对于楼主的问题,动态内存分配是一个好办法。
但是假如楼主还没学动态分配,那么,循环里面可以这样:
while (scanf("%d", &a[b++]) == 1) //输入的值为非数字字符就跳出循环了


----------------解决方案--------------------------------------------------------
比较简单的跳出,只要条件不符合就可以跳出。
while(scanf("%d",stu[i])&&stu[i]!=?)
?只要不满足条件就可以了,输入时碰到这个字符,回车就可以退出了。
还可以用文件结束

while((scanf("%d",stu[i]))!=EOF)
----------------解决方案--------------------------------------------------------

谢谢二楼的,你说的办法很好!我写出的程序如下已经调试成功:

#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个对吗?因为最后输入了一个非数字,这个也应该要占用一个数组的,不过也问题不大拉。
----------------解决方案--------------------------------------------------------
以下是引用beyondlwm在2006-7-19 21:06:20的发言:
另外一个问题就是,数组被赋值的一共有b个对吗?因为最后输入了一个非数字,这个也应该要占用一个数组的,不过也问题不大拉。

数组一共输入了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++;
}
这样便可以了.
----------------解决方案--------------------------------------------------------

  相关解决方案