美文网首页
输入输出问题

输入输出问题

作者: nino天 | 来源:发表于2014-08-12 17:18 被阅读31次

1.输入不说明有多少个Input,以EOF为结束标志

(1)这里要说明的是如果输入 1 2 3 4 (回车),这时会输出 3 7,但不会输出count,因为这里回车并不是EOF,作用是刷新输出buffer,但并不是文件输入结束的标志。通常EOF是crtl+Z!

#include<stdio.h>
int main()
{
    int a, b,count = 0;
    while(scanf("%d%d",&a, &b) != EOF)
    {
        count ++;
        printf("%d\n",a + b);
    }
   printf("The couple of data is: %d\n",count);
   return 0;
}

(2)但是使用scanf会有很多bug:Scanf返回2(2个输入),返回1(1个输入),格式不正确异常返回0,输入EOF返回-1。经过测试发现只有输入回车+ctrlZ的时候scanf才会正常的返回-1,其他任何输入方式都会返回0,从而是while无法停止,具体没看了,所以还是最好用cin,cout进行输入输出控制..
(3)经过测试发现:无论输入的是单数个数据还是双数个数据,输入ctrlZ时有没有空格,都可以得到正确结果

#include <iostream>
using namespace std;
int main()
{
     
    while(cin>>a>>b)
    {
        count++;
        cout<<a+b<<endl;
    }
    cout<<"The couple of data is: "<<count<<endl;
}

2. 输入指定输入个数

    int n;
    cin>>n;
    for(int i=0;i<n;i++)
    {
        cin>>a>>b;
        cout<<a+b<<endl;
    }

3.未知输入数目,以某个特定字符为结束符

(1)输入两个0 0 就结束了
while(scanf("%d %d",&a,&b) &&(a!=0 && b!=0)) 由于&&运算符是短路运算,所以,如果你输入的是0 5,输入正确,a!= 0为假,整个逻辑表达式的值就为假,跳出结束程序,与题目输入规则相矛盾!

    while(scanf("%d%d",&a,&b))
    {
        if(0 == a && 0 == b)
            break;
        printf("%d\n",a + b);
    }

(2)输入换行就结束了,注意这在cin中是不行的,因为cin是不认换行符的..

    char c='0';
    while(c!='\n')
    {
        scanf("%d",&a);
        //printf("%d ",a);
        scanf("%c",&c);
    }
    cout<<"Hello!!"<<endl;

相关文章

网友评论

      本文标题:输入输出问题

      本文链接:https://www.haomeiwen.com/subject/eyyetttx.html