1. 程式人生 > >Calculate A + B.

Calculate A + B.

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 1

Sample 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))