杭電acm的第1000題c語言解法

2021-08-18 19:50:07 字數 934 閱讀 3130

首先我選擇的是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三者都不可能成為冠軍。根據這個...