首先我選擇的是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水題2053
刷題啊啊啊啊啊!題目 題目說有一串燈,開始的時候燈都是關閉狀態,為0.如果是迴圈i的倍數,那麼就改變它們的狀態。最終求最後一盞燈的狀態,是開啟輸出1,關閉輸出0.因為是求最後一盞燈的狀態,那麼就每層迴圈判斷它除以i是否有餘數。如果有,那就count 如果count是奇數的話,輸出1,偶數輸出0.in...
杭電第1008題總結
這道題目很基礎,但是我也花了很長時間。我想問題可能出現在以下幾個方面 其一,程式結構化思維不夠強。主要是對於乙個問題有了清晰的思路和演算法,但是到用語言實現起來,確實有很大差距。所以我還是要加強這方面的練習。其二,對於語言方面的不熟悉,以至於出現很多低階的語法錯誤。例如 少分號,少括號,變數作用域搞...
杭電ACM 2094 產生冠軍 C語言)
problem description 有一群人,打桌球比賽,兩兩捉對撕殺,每兩個人之間最多打一場比賽。球賽的規則如下 如果a打敗了b,b又打敗了c,而a與c之間沒有進行過比賽,那麼就認定,a一定能打敗c。如果a打敗了b,b又打敗了c,而且,c又打敗了a,那麼a b c三者都不可能成為冠軍。根據這個...