好吧我要问的就是OJ上用烂了的那道最简单A+B,只不过这个要求多组数据的输入:
题目描述:计算A+B 输入:
输入n(n未知,也不可能从键盘上输入)组测试数据每组1行2整数A, B输出:输出A+B值样例输入1 23 4样例输出37
这是网上很流行的那个答案:
#include <stdio.h>
void main(){ int a,b; while (scanf("%d%d",&a,&b)!=EOF) { printf("%d\n",a+b); }}
现在问题来了。。。貌似这个答案是对的??build之后提示的是没有错误,但是我运行后仍然只能计算出第一行输入的数据。run的对话框跳出来之后,按照题目给定的测试数据,我的输入是这样的:先按1,然后空格,然后按2,然后回车就直接出现结果为3了。。。。根本不是我想的那样回车后就换行继续输入另一组计算数据啊。。。图片为证。表示EOF完全不会用啊!!!!!
#include <iostream>
#include <list>
using namespace std;
int main()
{
baiint a,b;
list<int> l;
while (scanf("%d%d",&a,&b)!=EOF)
{
dul.push_back(a+b);
}
while (!l.empty())
{
cout<<l.front()<<endl;
l.pop_front();
}
}
需要用到list保存结果,因为n未知大小所以用list更合适。
如果是想以比较方便的方式输入数据,可以考虑把多行的数据存在文本文件中,每次使用这些数据的时候,可以直接从这个文件里面读取。
如果编译后生成的可执行文件名为a.exe,存放数据的文件为b.txt(和a.exe放在同一文件夹下),则再控制台(命令行提示符状态)输入: a < b.txt 即可。 其中的小于号<,就是输入重定向符号。
扩展资料:
C语言包含的各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。
参考资料来源:百度百科-c语言
把EOF改成2是什么意思?能具体说下嘛。另外,什么时候按ctrl+z??抱歉我比较菜
( ⊙o⊙ )能不能再说下
这道题要保存数据的 我来写一个
#include
int main()
{
int a[100],b[100];
int i=0,j=0,m;
char c;
while(scanf("%d %d%c",&a[i++],&b[j++],&c)==3);
for(m=0;m<j-1;m++)
printf("%d\n",a[m]+b[m]);
return 0;
}
scanf的返回值为成功读取的数据个数
哦。。。是这样啊。。谢谢啦。
可是oj上提供的测试方法上没写ctrl+z,这样提交打出的是wrong。。。
这个必须要Ctrl +z结束呀 你想想你打回车之后肯定不会结束嘛 需要另外一种方式结束 那就肯定是这个了 原题是什么样子的 可能是格式不对 读取或者输出的格式不对 你把原题发给我看看
本回答被提问者采纳