这个学期开始接触 ACM ,查阅相关资料得知,大致有以下八种输入输出格式,题目来自 HDU 。
A+B for Input-Output Practice (I)
输入样例:
1 5
10 20
输出样例:
6
30
由上可知,
有若干组输入数据;有若干组输出数据,每组输出数据占一行。
于是,我们用以下语句来读取评测系统中输入文件的内容:
while(scanf(...) != EOF)
完整代码:
#include <stdio.h>
int main(){
int a, b;
while(scanf("%d %d", &a, &b) != EOF){
printf("%d\n", a + b);
}
return 0;
}
A+B for Input-Output Practice (II)
输入样例:
2
1 5
10 20
输出样例:
6
30
由上可知,
先输入一个整数,确定接下来要输入几组数据,输出格式不变。
于是,我们可以先用 scanf
确定要输入多少组数据,然后用for循环进行输入
完整代码:
#include <stdio.h>
int main(){
int a, b, i, N;
scanf("%d", &N);
for(i=0;i<N;i++){
scanf("%d %d", &a, &b);
printf("%d\n", a + b);
}
return 0;
}
A+B for Input-Output Practice (III)
输入样例:
1 5
10 20
0 0
输出样例:
6
30
由上可知,
有若干组输出数据,题目给定了输入结束条件即输入 0 0
,输出不变。
于是,我们根据上一题,在 while
循环条件加上判断条件或在内部加上判断条件即可
完整代码:
#include <stdio.h>
int main(){
int a, b;
while (scanf("%d %d", &a ,&b) && (a != 0 || b != 0)){
printf("%d\n", a + b);
}
return 0;
}
A+B for Input-Output Practice (IV)
输入样例:
4 1 2 3 4
5 1 2 3 4 5
0
输出样例:
10
15
由上可知,
输入数据有若干组,每组第一个数字确定接下来该组的数据个数,为0时结束。
于是,我们加上判断条件循环输入输出
完整代码:
#include <stdio.h>
int main(){
int a, N, i, sum;
while (scanf("%d", &N) && N != 0){
sum = 0;
for(i=0;i<N;i++){
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}
return 0;
}
A+B for Input-Output Practice (V)
输入样例:
2
4 1 2 3 4
5 1 2 3 4 5
输出样例:
10
15
由上可知,
先输入一个整数,确定接下来要输入几组数据;每组输入数据的第一个数据,确定该组的数据个数。
于是,我们用两个循环实现
完整代码:
#include <stdio.h>
int main(){
int a, N, i, j, sum, n;
scanf("%d", &n);
for(i=0;i<n;i++){
scanf("%d", &N);
sum = 0;
for(j=0;j<N;j++){
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}
return 0;
}
A+B for Input-Output Practice (VI)
输入样例:
4 1 2 3 4
5 1 2 3 4 5
输出样例:
10
15
由上可知,
有若干组输入数据,当读取完毕时结束,输出所有数据,与上题类似
完整代码:
#include <stdio.h>
int main(){
int a, N, j, sum;
while (scanf("%d", &N) != EOF){
sum = 0;
for(j=0;j<N;j++){
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
}
return 0;
}
A+B for Input-Output Practice (VII)
输入样例:
1 5
10 20
输出样例:
6
30
由上可知,
与第一题类似,只是多输出了一个空行
完整代码:
#include <stdio.h>
int main(){
int a, b;
while (scanf("%d %d", &a, &b) != EOF){
printf("%d\n\n", a + b);
}
return 0;
}
A+B for Input-Output Practice (VIII)
输入样例:
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3
输出样例:
10
15
6
本题输出格式可能会疏忽,即最后一行输出后没有空行
完整代码:
#include <stdio.h>
int main(){
int a, i, sum, j, N, n;
scanf("%d", &N);
for(i=0;i<N;++i){
sum = 0;
scanf("%d", &n);
for(j=0;j<n;++j){
scanf("%d", &a);
sum += a;
}
printf("%d\n", sum);
if(N != i+1){
printf("\n");
}
}
return 0;
}
网友评论