注册 登录
编程论坛 C++教室

这个问题该如何修改

hffjhhh 发布于 2020-11-29 10:23, 1606 次点击
以下代码如何在保持条件i<10不变的情况下,允许它未读取到10个数的前提下提前停止读取?
比如只读取了2个数或3个数或5个数就停止循环?
程序代码:
#include<iostream>
int main(void){
    int b[10];
    for(int i=0;i<10;i++){        
        std::cin>>b[i];
    }
    return 0;
}
5 回复
#2
Jonny02012020-11-29 12:00
一种是输入错误的字符, 比如英文字符
另外一种是加一个条件判断, 当 i = 多少的时候, 就 break
#3
rjsp2020-11-29 17:20
听不懂,是最大只允许输入10个整数吗?
程序代码:
#include <iostream>
using namespace std;

int main( void )
{
    int b[10];

    size_t cnt;
    for( cnt=0; cnt!=size(b); ++cnt )
    {
        if( !(cin>>b[cnt]) )
            break;
    }

    for( size_t i=0; i!=cnt; ++i )
        cout << b[i] << " \n"[i+1!=cnt];
}

怎么中止输入不是C/C++该管的,windows用ctrl+z,linux用ctrl+d,然后回车。
#4
hffjhhh2020-11-29 20:40
以下是引用rjsp在2020-11-29 17:20:28的发言:

听不懂,是最大只允许输入10个整数吗?
#include <iostream>
using namespace std;

int main( void )
{
    int b[10];

    size_t cnt;
    for( cnt=0; cnt!=size(b); ++cnt )
    {
        if( !(cin>>b[cnt]) )
            break;
    }

    for( size_t i=0; i!=cnt; ++i )
        cout << b << " \n"1!=cnt];
}
怎么中止输入不是C/C++该管的,windows用ctrl+z,linux用ctrl+d,然后回车。

size(b)在我的编译器上会出错,将它改为sizeof(b)后就可以了。
另外size_t是什么类型?我将它改为int后也一样可以。
#5
rjsp2020-11-29 21:39
size(b)在我的编译器上会出错,将它改为sizeof(b)后就可以了。
即使改,也应该改为 sizeof(b)/sizeof(*b)

另外size_t是什么类型?我将它改为int后也一样可以。
size_t 是c/c++ 规定的,用作下标、数组长度 等的指定类型,而不是 int。
#6
大头leo2020-11-29 21:54
while(cin>>x)
这样的话在评测机上就会自己结束
1