早教吧 育儿知识 作业答案 考试题库 百科 知识分享

大大,这道题中的“输入包含多组测试用例.每组用例占一行”,计算a+bInput输入包含多组测试用例.每组用例占一行,包含2个整数a和b.最后一组用例为00,表示输入结束,该用例不需要处理.Output对

题目详情
大大,这道题中的“输入包含多组测试用例.每组用例占一行”,
计算a+b
Input
输入包含多组测试用例.每组用例占一行,包含2个整数a和b.最后一组用例为0 0,表示输入结束,该用例不需要处理.
Output
对于每组输入用例,输入a+b的和,占一行.
Sample Input
1 5
10 20
0 0
Sample Output
6
30
▼优质解答
答案和解析
看起来像是ACM的OJ系统呵.和我们平常编程的运行环境不同:它上面的输入和输出是分开的,不像咱们从键盘输入后在屏幕上显示,程序输出的内容也在屏幕上显示,交错一起的那个样子.
这道题,你可以用一个循环,设定结束条件为连续读到两个0,循环体里对于每次读到的一行两个数,执行求和输出并换行.
#include
int main()
{
int a,b;
while(1) {
scanf("%d%d",&a,&b);
if(a==0&&b==0) break;
printf("%d\n",a+b);
}
return 0;
}
在所有的输入完成前,OJ不会去检查你程序的输出的^_^,它只要一个最后的结果.所以你不必非要等最后一个数据输入后再一股脑地输出来,那样可能需要用一个足够大的数组或者是动态分配的存储来保存所有结果,会严重降低程序效率,在ACM上是很不利的.
如果你对OJ的方式感兴趣,可以利用重定向来模仿它.在你的源文件旁边建立两个文件,一个用来存放代替键盘输入的内容,另一个用来存放代替屏幕输出的内容,假设分别叫in.txt和out.txt,然后这样写:
#include
int main()
{
int a,b;
freopen("in.txt","r",stdin);
freopen("out.txt","w",stdout);
freopen("out.txt","w",stderr);
while(1) {
scanf("%d%d",&a,&b);
if (a==0&&b==0) break;
printf("%d\n",a+b);
}
fclose(stdin);
fclose(stdout);
fclose(stderr);
return 0;
}
然后在运行.exe前把输入数据一口气全部保存到in.txt中去,再去启动你的.exe程序,运行结束后你再手动打开out.txt对照一下,可以试试.不过记得在提交前把freopen()和fclose()的那几条语句去掉.以前在网上看过别人利用OJ环境的宏定义来条件编译,等会儿再找找看.