代码错在哪了?
本帖最后由 NYJYA 于 2019-1-23 10:42 编辑题目描述:
输入两个数
A,B
输出
A+B的值。
输入:
多组数据:每组由两个整数(
A和B)构成,
A和B之间用空格隔开,每组输入单独占一行。
当输入为"0 0"时,输入结束。"0 0"这组数据不处理。
输出:
对于每一组测试用例,输出齐对应的和,每组数据一行。
#include<stdio.h>
int main()
{
int i,a,b,sum,k=0;
for(i=0;i<20;i++)
{
scanf("%d %d",&a,&b);
if((a==0)&&(b==0)) break;
else
{
sum=a+b;
k=k+1;
}
}
for(i=0;i<k;i++)
printf("%d\n",sum);
return 0;
} 应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车键作为输入
所以每次循环都要先清空一下输入流的字符 BngThea 发表于 2019-1-23 11:15
应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车 ...
请问怎么清空后面的字符呢? NYJYA 发表于 2019-1-23 13:07
请问怎么清空后面的字符呢?
简单清楚一个字符用
getchar();
语句
如果输入流有很多字符,可以用
setbuf(stdin, NULL); %d会跳过所有空字符的,不是回车问题,你这个是运行时出问题还是什么问题 rencaixiaomeng 发表于 2019-1-23 20:54
%d会跳过所有空字符的,不是回车问题,你这个是运行时出问题还是什么问题
运行没有问题,同样是平台上通不过 BngThea 发表于 2019-1-23 11:15
应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车 ...
scanf格式输入,会跳过空字符(空格、Tab和回车),所以不是这个问题。
你的程序好像没有问题啊?我运行了一下,没看到错误啊?你说一下你遇到的问题 是哪个平台? rencaixiaomeng 发表于 2019-1-24 10:42
是哪个平台?
NEUQ OJ
速度还是内存?还是结果出错 rencaixiaomeng 发表于 2019-1-24 11:10
速度还是内存?还是结果出错
它通不过给了这些数据:
未通过的数据:
结果 答案错误
耗时 0
内存 1495040
页:
[1]