NYJYA 发表于 2019-1-23 10:39:47

代码错在哪了?

本帖最后由 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;
}

BngThea 发表于 2019-1-23 11:15:56

应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车键作为输入

所以每次循环都要先清空一下输入流的字符

NYJYA 发表于 2019-1-23 13:07:40

BngThea 发表于 2019-1-23 11:15
应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车 ...

请问怎么清空后面的字符呢?

BngThea 发表于 2019-1-23 13:30:32

NYJYA 发表于 2019-1-23 13:07
请问怎么清空后面的字符呢?

简单清楚一个字符用
getchar();
语句

如果输入流有很多字符,可以用
setbuf(stdin, NULL);

rencaixiaomeng 发表于 2019-1-23 20:54:18

%d会跳过所有空字符的,不是回车问题,你这个是运行时出问题还是什么问题

NYJYA 发表于 2019-1-24 09:16:40

rencaixiaomeng 发表于 2019-1-23 20:54
%d会跳过所有空字符的,不是回车问题,你这个是运行时出问题还是什么问题

运行没有问题,同样是平台上通不过

sunrise085 发表于 2019-1-24 09:21:12

BngThea 发表于 2019-1-23 11:15
应该是scanf接受两个输入后在输入流中还有你最后键入的回车键,
这样下次循环执行scanf时会直接取出该回车 ...

scanf格式输入,会跳过空字符(空格、Tab和回车),所以不是这个问题。

sunrise085 发表于 2019-1-24 09:28:49

你的程序好像没有问题啊?我运行了一下,没看到错误啊?你说一下你遇到的问题

rencaixiaomeng 发表于 2019-1-24 10:42:52

是哪个平台?

NYJYA 发表于 2019-1-24 10:46:06

rencaixiaomeng 发表于 2019-1-24 10:42
是哪个平台?

NEUQ OJ

rencaixiaomeng 发表于 2019-1-24 11:10:34

速度还是内存?还是结果出错

NYJYA 发表于 2019-1-24 11:47:48

rencaixiaomeng 发表于 2019-1-24 11:10
速度还是内存?还是结果出错

它通不过给了这些数据:
未通过的数据:
结果 答案错误
耗时 0
内存 1495040
页: [1]
查看完整版本: 代码错在哪了?