概述
算法笔记@Ada_Lake
算法笔记代码保留地~~~
2.10小节——C/C++快速入门->黑盒测试
问题 A: A+B 输入输出练习I
- 题目描述 ,你的任务是计算a+b。这是为了acm初学者专门设计的题目。你肯定发现还有其他题目跟这道题的标题类似,这些问题也都是专门为初学者提供的。
- 输入,输入包含一系列的a和b对,通过空格隔开。一对a和b占一行。
- 输出,对于输入的每对a和b,你需要依次输出a、b的和。如对于输入中的第二对a和b,在输出中它们的和应该也在第二行。
- 样例输入,
1 5
10 20 - 样例输出,
6
30
我的理解
1.只说了包含一系列的a和b对。通过空格隔开。则不知道到底要输入多少个。
用 while…EOF
2.不用数组的话如何输入大量再输出?
她说的是依次输出。不是最后统一输出。
主要考察的是scanf("%d", &a) != EOF
3.ctrl+Z+Enter手动结束while
4.scanf("%s", str)等同于gets(str)
即 while(scanf("%s", str) != EOF)等同于 while(gets(str) != NULL)
以下是代码
// Ada
#include<stdio.h>
int main() {
int a, b;
while(scanf("%d %d", &a, &b) != EOF) {
printf("%dn", a + b);
}
return 0;
}
问题 B: A+B 输入输出练习II
- 题目描述 ,你的任务是计算a+b。
- 输入,第一行是一个整数N,表示后面会有N行a和b,通过空格隔开。
- 输出,对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,对应的和也输出在第二行。 - 样例输入,
2
1 5
10 20 - 样例输出,
6
30
我的理解
题1是不知道循环多少次的情况下。题2是已知多少次
**以下是代码**
// Ada
#include<stdio.h>
int main(){
int a, b, N;
scanf("%d", &N);
while( N-- ) {
scanf("%d %d", &a, &b);
printf("%dn", a + b);
}
return 0;
}
问题 C: A+B 输入输出练习III
- 题目描述 ,你的任务是计算a+b。
- 输入,输入中每行是一对a和b。其中会有一对是0和0标志着输入结束,且这一对不要计算。
- 输出,对于输入的每对a和b,你需要在相应的行输出a、b的和。
如第二对a和b,他们的和也输出在第二行。 - 样例输入,
1 5
10 20
0 0 - 样例输出,
6
30
我的理解
条件加进去即可
**以下是代码**
// Ada
#include<stdio.h>
int main(){
int a, b;
scanf("%d %d", &a, &b);
while(( a != 0 ) && ( b != 0 )) {
printf("%dn", a + b);
scanf("%d %d", &a, &b);
}
return 0;
}
算法笔记上的两种写法:
** 法一:**
// Ada
#include<stdio.h>
int main() {
int a, b;
while(scanf("%d %d", &a, &b) != EOF) {
if(a == 0 && b == 0) break;
printf("%dn", a + b);
}
return 0;
}
法二 :
// Ada
#include<stdio.h>
int main() {
int a, b;
while((scanf("%d %d", &a, &b) != EOF), a||b) {
printf("%dn", a + b);
}
return 0;
}
== while((scanf("%d %d", &a, &b) != EOF), a||b) ==
问题 D: A+B 输入输出练习IV
- 题目描述 ,你的任务是计算若干整数的和。
- 输入,每行的第一个数N,表示本行后面有N个数。如果N=0时,表示输入结束,且这一行不要计算。
- 输出,对于每一行数据需要在相应的行输出和。
- 样例输入,
4 1 2 3 4
5 1 2 3 4 5
0 - 样例输出,
10
15
我的理解
scanf("%d", &n)已经是把值放到了n中。不知道脑子抽什么疯
以下是代码
// Ada
#include<stdio.h>
int main() {
int a, b, N, n, sum = 0;
while((scanf("%d", &N) != EOF), N) {
int sum = 0;
while(N){
scanf("%d", &n);
sum = sum + n;
N--;
}
printf("%dn", sum);
}
return 0;
}
已经说了 不确定次数的时候应该用while…EOF ,为什么开始没这样写!!
问题 E: A+B 输入输出练习V
- 题目描述 ,你的任务是计算若干整数的和。
- 输入,输入的第一行是一个正数N,表示后面有N行。每一行的第一个数是M,表示本行后面还有M个数
- 输出,对于每一行数据需要在相应的行输出和。
- 样例输入,
2
4 1 2 3 4
5 1 2 3 4 5 - 样例输出,
10
15
我的理解
总感觉自己没用上这节黑盒测试讲的输入输出
// Ada
#include<stdio.h>
int main(){
int N, M, n;
while(scanf("%d", &N) != EOF) {
while(N--){
scanf("%d", &M);
int sum = 0;
while(M--) {
scanf("%d", &n);
sum = sum + n;
}
printf("%dn", sum);
}
}
return 0;
}
问题 F: A+B 输入输出练习VI
- 题目描述 ,你的任务是计算若干整数的和。
- 输入,每行的第一个数N,表示本行后面有N个数。
- 输出,对于每一行数据需要在相应的行输出和。
- 样例输入,
4 1 2 3 4
5 1 2 3 4 5 - 样例输出,
10
15
我的理解
总感觉自己没用上这节黑盒测试讲的输入输出
// Ada
#include<stdio.h>
int main(){
int N, n;
while(scanf("%d", &N) != EOF) {
int sum = 0;
while(N--) {
scanf("%d", &n);
sum = sum + n;
}
printf("%dn", sum);
}
return 0;
}
问题 G: A+B 输入输出练习VII
-
题目描述 ,你的任务是计算若干整数的和。
-
输入,输入包含若干行,每行输入两个整数a和b,由空格分隔。
-
输出,对于每组输入,输出a和b的和,每行输出后接一个空行。
-
样例输入,
1 5
10 20 -
样例输出,
630
我的理解
感觉就是问题A,加了一个额外输出一个换行符
// Ada
#include<stdio.h>
int main(){
int a, b;
while(scanf("%d%d", &a, &b) != EOF) {
printf("%dn", a + b);
printf(“n”);
}
return 0;
}
问题 H: A+B 输入输出练习VIII
-
题目描述 ,你的任务是计算若干整数的和。
-
输入,输入的第一行为一个整数N,接下来N行每行先输入一个整数M,然后在同一行内输入M个整数。
-
输出,对于每组输入,输出M个数的和,每组输出之间输出一个空行。
-
样例输入,
3
4 1 2 3 4
5 1 2 3 4 5
3 1 2 3 -
样例输出,
1015 6
我的理解
这里写的是每组之间!!
因此最后一个不多输出换行
在while(T–)中判断是否为T大于0
// Ada
#include<stdio.h>
int main() {
int N, M, n;
scanf("%d", &N);
while(N--) {
scanf("%d", &M);
int sum = 0;
while(M--) {
scanf("%d", &n);
sum = sum + n;
}
printf("%dn", sum);
if(N >= 1) {
printf("n");
}
}
return 0;
}
最后
以上就是落寞奇迹为你收集整理的算法笔记习题 2-10小节的全部内容,希望文章能够帮你解决算法笔记习题 2-10小节所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复