輸入_第一類:
輸入不說明有多少個Input Block,以EOF為結束標志。
例1:
Description:
你的任務是計算a+b
Input
輸入包含多行數據,每行有兩個整數a和b,以空格分開。
Output
對於每對整數a,b,輸出他們的和,每個和占一行。
Sample Input
1 5
10 20
Sample Output
6
30
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a, &b) != EOF) printf("%d\n",a+b);
}
本類輸入解決方案:
C語法:
while(scanf("%d %d",&a, &b) != EOF)
{
....
}
C++語法:
while( cin >> a >> b )
{
....
}
說明:
1. Scanf函數返回值就是讀出的變量個數,如:scanf( “%d %d”, &a, &b );
如果只有一個整數輸入,返回值是1,如果有兩個整數輸入,返回值是2,如果一個都沒有,則返回值是-1。
2. EOF是一個預定義的常量,等於-1。
輸入_第二類:
輸入一開始就會說有N個Input Block,下面接著是N個Input Block。
例2:
Description:
你的任務是計算a+b
Input
輸入包含多行數據,第一行有一個整數N,接下來N行每行有兩個整數a和b,以空格分開。
Output
對於每對整數a,b,輸出他們的和,每個和占一行。
Sample Input
2
1 5
10 20
Sample Output
6
30
#include <stdio.h>
int main()
{
int n,i,a,b;
scanf("%d",&n);
for(i=0;i<n;i++)
{
scanf("%d %d",&a, &b);
printf("%d\n",a+b);
}
}
本類輸入解決方案:
C語法:
scanf("%d",&n) ;
for( i=0 ; i<n ; i++ )
{
....
}
C++語法:
cin >> n;
for( i=0 ; i<n ; i++ )
{
....
}
輸入_第三類:
輸入不說明有多少個Input Block,但以某個特殊輸入為結束標志。
例3:
Description:
你的任務是計算a+b
Input
輸入包含多行數據,每行有兩個整數a和b,以空格分開。測試數據以0 0結束。
Output
對於每對整數a,b,輸出他們的和,每個和占一行。
Sample Input
1 5
10 20
0 0
Sample Output
6
30
#include <stdio.h>
int main()
{
int a,b;
while(scanf("%d %d",&a, &b) &&!(a==0 && b==0))
printf("%d\n",a+b);
}
本類輸入解決方案:
C語法:
while(scanf("%d",&n) && n!=0 )
{
....
}
C++語法:
while( cin >> n && n != 0 )
{
....
}
輸入_第四類:
以上幾種情況的組合
例4:
Description:
你的任務是計算多個數字的和
Input
輸入包含多行數據,每行以一個整數N開始,接著有N個整數,以空格分開。測試數據以0結束。
Output
輸出每行的N個整數之和,每個和占一行。
Sample Input
4 1 2 3 4
5 1 2 3 4 5
0
Sample Output
10
15