C/C++语言中,在不确定用户输入数据个数的情况下来控制循环结束?

rt,只是知道用户输入的一组整型数据,但不知道其输入的个数,但知道数据个数不会超过100。
现有 int a[100] = {0};
怎么控制循环,把这些数据都存放到这个数组当中呢?不允许设置“-1、0”之类的结束标识符。

#include<stdio.h>
void main()
{
int a[100] = {0}, i=0;
printf("请输入一组整形数据(不超过100个):");

do{
cin>>a[i++];
}while(……); //这里的条件怎么写?

当然,对于例子中,不一定要用do-while循环,大虾们如果有更好的方法,三种循环都可以使用

可以参考下面的代码:

int main()

{

int a[100],i=0,ch=0;

printf("请输入一组整形数据(不超过100个):");

do{

scanf("%d",&a[i++]);

ch=getchar();

}while(ch!='\n');

for(ch=0;ch<i;ch++)

printf("%d\n" , a[ch]);

}

扩展资料:

C语言log()函数:返回x的自然对数(以e为底的对数)

C语言ldiv()函数:求两个数的商和余数(针对long类型)

C语言ceil()函数:求不小于x的最小整数(向上取整)

C语言floor()函数:求不大于x的最大整数(向下取整)

C语言asin()函数:求反正弦

C语言atan()函数:求反正切

C语言atan2()函数:求x/y的反正切值

参考资料来源:百度百科-C语言函数

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-10-29

while(scanf(......)!=EOF){

}


当输入结束时按Ctrl+Z即可结束,一般OJ上的题不知道测试数据时

都可以如此做,比如:

#include<stdio.h>
int main(){
    int a;
    while(scanf("%d",&a)!=EOF){
        printf("%d\n",a);
    }
    return 0;
}

第2个回答  2015-10-19
是的,
每输入一个数据就判断一下,比如设定用户输入end表示结束,当程序获取到这个字符串后就跳出循环。
第3个回答  2011-10-26
先申明一个整数,作为要输入的数据的个数N,要求用户输入。
再根据用户输入的数N来确定数组的大小a[N],,
就可以用for循环来控制追问

题目就是在不确定用户输入的情况下呀,题目意即:即使用户知道有多少个数,也不输入,而他输入结束唯一的信号就是敲了回车……能不能在这里做文章呢?

追答

那就
while(1)
{
a=getchar();
if(a=='\n') exit;
a[i]=a;i++;
}
或者
do{
...
scanf("%d",&a[i]);
}while((getchar())!='\n')

第4个回答  推荐于2017-10-01
#include <iostream>
using namespace std;

void main(void)
{
int a[100]={0},i=0;
printf("请输入一组整形数据:\n");

while(cin>>a[i++]);

cout<<"输出数组"<<endl;
i=0;
while(i<100)
cout<<a[i++]<<", ";

system("pause");

}
输入数字意外的字符(不包含回车,制表符等)即结束。但要保证输入的整数不溢出。
令外:使用cin 需要包含的头文件是iostream追问

不好意思那是我的失误。你的答案已经很接近了,能不能把回车包含进去呢?就是说用户输入了回车后立即结束。难道“不包含回车制表”就是cin的特点么?

追答

#include
using namespace std;

void main(void)
{
int a[100]={0},i=0,temp=0;
printf("请输入一组整形数据:\n");

while(cin>>a[i++],cin.get()!='\n');

cout<<"输出数组"<<endl;
i=0;
while(i<100)
cout<<a[i++]<<", ";

system("pause");

}
不过这样输入限制就多了。

本回答被提问者采纳
相似回答