周六1900C++班级2022-11-12-多组数据

一、多组数据输入

在TZOJ练习平台上,经常会见到一些题目说输入数据有多组输入以EOF结束当输入的数据为0时结束等等的题目描述,那么这些输入具体是如何去解决呢?

1.有明确输入n组数据,可以使用for/while循环来实现n组数据

while:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--)
    {
        //在此输入数据 
    }
     return 0;
}

for:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    for(int i=1;i<=n;i++) //循环n遍 
    {
        
    }
     return 0;
}

 

2.没说明具体数据组数,但是有说当输入为0时结束,这种一般有两种写法

第一种:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n,n) //在while里输入数据,用逗号隔开的n就是在判断是否为0 
    {
        
    } 
     return 0;
}

第二种:

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n) //在while里输入数据
    {
        if(n==0)break; //如果输入的n为0,那么结束循环 
    } 
     return 0;
}

3.题目仅说多组数据输入,且以EOF作为结束或者没有明确任何结束条件

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n) //在while里输入数据
    {

    } 
     return 0;
}

1002: C语言实验题――两个数比较

例如这题用到的就是第一种多组数据输入方案,对于题目所要求的比较大小的程序,直接在while循环中去执行就可以了

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    while(n--) //n--循环n次 
    {
        int a,b;
        cin>>a>>b;
        if(a>b) cout<<a<<endl;
        else cout<<b<<endl;
    } 
     return 0;
}

1078: 输入入门(3)

题目说明输入的a,b以输入0,0时结束,属于明确结束条件,第二种情况

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b; //a,b定义在外面 
    while(cin>>a>>b)  //在cin中输入a,b 
    { 
        if(a==0&&b==0)break; //判断本次输入a,b的结果是否满足结束条件
        cout<<a+b<<endl;
    } 
     return 0;
}

 

1076: 输入入门(1)

题目说要以EOF作为结束,EOF是文件结束符,也就是输入ctrl+z,这种就是第三种输入情况

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int a,b;
    while(cin>>a>>b) //直接在while循环条件中输入n 
    { //每次循环都输入a,b并输出a+b的结果 
        cout<<a+b<<endl;
    } 
     return 0;
}

 

 

1369: 求绝对值

题目没有说明以什么结束,其实就是以EOF结束,属于第三种情况

#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    while(cin>>n) //直接在while循环条件中输入n 
    { //每次循环都输入a,并输出绝对值保留小数 
        int a;
        cin>>a;
        if(a>0)printf("%.2f",a); //%.2f保留2位小数
        else printf("%.2f",-a); 
    } 
     return 0;
}

 

posted @ 2022-11-11 21:10  CRt0729  阅读(65)  评论(0编辑  收藏  举报