周六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; }