标题:如何跳出数组输入的循环
只看楼主
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
 问题点数:0 回复次数:6 
如何跳出数组输入的循环
随机将一个班的成绩输入到一个数组中。
void main()
{
int a[200],b=0; //先将数组定义到一个比较大的范围
while (?)
{
scanf("%d",&a[b]);
b++;
}
}



现在的问题是,并不知道抽到的班有多少个成绩,假如我输入30个成绩后想要跳出循环,该如何设置WHILE的条件?
不能设定特定的数字或者字符(字符也是数字嘛)。因为输入的成绩一切都是未知的
请教各位给个解决的办法了。不知道我叙述清楚了没有
搜索更多相关主题的帖子: 输入 
2006-07-19 14:55
lhyanlh
Rank: 1
等 级:新手上路
帖 子:19
专家分:0
注 册:2006-7-11
得分:0 

输个负数

2006-07-19 15:12
lj_860603
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:714
专家分:0
注 册:2006-1-25
得分:0 

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


我的原则很简单:不做不喜欢的事!
2006-07-19 15:42
nuciewth
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:我爱龙龙
等 级:贵宾
威 望:104
帖 子:9786
专家分:208
注 册:2006-5-23
得分:0 
比较简单的跳出,只要条件不符合就可以跳出。
while(scanf("%d",stu[i])&&stu[i]!=?)
?只要不满足条件就可以了,输入时碰到这个字符,回车就可以退出了。
还可以用文件结束

while((scanf("%d",stu[i]))!=EOF)

倚天照海花无数,流水高山心自知。
2006-07-19 16:54
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
得分:0 

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

#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的具体意思是什么意思啊?

2006-07-19 21:04
beyondlwm
Rank: 1
等 级:新手上路
帖 子:98
专家分:0
注 册:2006-7-19
得分:0 
另外一个问题就是,数组被赋值的一共有b个对吗?因为最后输入了一个非数字,这个也应该要占用一个数组的,不过也问题不大拉。
2006-07-19 21:06
soft_wind
Rank: 3Rank: 3
等 级:新手上路
威 望:8
帖 子:1430
专家分:0
注 册:2006-4-5
得分:0 
以下是引用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++;
}
这样便可以了.


对不礼貌的女生收钱......
2006-07-20 15:04



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-79171-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.746606 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved