杭电acm的第1000题c语言解法
首先我選擇的是c語言的解法,開始是輸入如下的答案:
#include "stdio.h"
int main(void)
{
long long a,b;
scanf("%d", &a);
scanf("%d", &b);
printf("%d\n", a+b);
}
該程序只能輸入一次數據,而杭電acm1000題問題描述是:
Each line will contain two integers A and B. Process to end of file.意思是每一行包含A和B這兩個int型的整數,
Process?to?end?of?file?就是處理到文件的結束。
把每一行的兩個數字加起來,然后打印出來,直到文件末尾。
所以代表可以輸入多組數據,直到你的輸入EOF為止。
正確的程序應該是:
#include "stdio.h"
int main(void)
{
int a, b;
while (scanf("%d %d", &a, &b) != EOF)
printf("%d\n", a + b);
}
對于
while (scanf("%d %d", &a, &b) != EOF)的解釋如下;
1、eof在c中定義為-1,vs2013的原話為
#define EOF -1;
2、只要scanf()讀取一個整數,就會返回1.
3、所以它等價于while (scanf("%d %d", &a, &b) != -1),即scanf仍在持續接受鍵盤輸入區內的整數數據進入到標準輸入區。
windows中ctrl+Z 會產生 一個 EOF 碼,拍入 鍵盤緩沖區,因為沒有單個EOF 鍵,只能用組合鍵拍入。Linux的又不一樣的
。
總結
以上是生活随笔為你收集整理的杭电acm的第1000题c语言解法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大数据之flink定时器
- 下一篇: 通过一个Kafka故障解决过程阐述架构师