Calculate A + B.
阿新 • • 發佈:2020-07-07
Problem Description
Calculate A + B.Input
Each line will contain two integers A and B. Process to end of file.Output
For each case, output A + B in one line.Sample Input
1 1Sample Output
2 一般程式碼(不通過):#include<stdio.h> int main(){ int a,b; scanf("%d%d",&a,&b); printf("%d\n",a+b); return 0; }
標準程式碼:
#include<stdio.h> int main(){ int a,b; while(~scanf("%d%d",&a,&b)) { print("%d\n",a+b); } return 0; }
值得一提的有三點:
-
這裡為什麼把scanf加到while裡面迴圈一下。
-
以上兩種寫法平時都是對的,更多人傾向於第一種,而第二種是ACM中經常用的一種寫法。
-
-
“~”的作用。
- “~”是按位取反。按位取反的意思就是:對所有整數取反=本身的相反數-1。~9=-10、~10=-11。
- 接著說一下while,針對本題,while(0)代表終止迴圈,while(非0)執行接下來的迴圈體。
- scanf的返回值是輸入值的個數,例如本題:當a,b都成功寫入,scanf返回值就是2。如果沒有輸入值就是返回-1,-1按位取反結果是0,while(~scanf("%d", &n))就是當沒有輸入的時候退出迴圈。關於scanf的具體用法可以看一下:C語言中scanf函式與空格回車
-
while (~scanf("%d%d",&n,&m))和while (scanf("%d%d",&n,&m)!=EOF)區別。
- 兩者沒區別。後者的具體意思進連結:ACM之while(scanf("%d",&n)!=EOF)。總的概括都是:當scanf函式的返回值不等於-1時 繼續進行迴圈。因為(-1!=EOF)=0,當while(0)時,終止迴圈。
借鑑:位運算子之---按位取反運算子(簡單易懂)
while (~scanf("%d%d",&n,&m))