ACMモードでの入力データの処理(C / C ++)

参考文献

著作権表示:この記事は、CC 4.0BY-SA著作権契約に準拠したCSDNブロガー「YuZhe-HeLijian」によるオリジナルの記事です。転載のために、元のソースリンクとこのステートメントを添付してください。
元のリンク:https://blog.csdn.net/sxhelijian/article/details/8978850


1.1最も単純な入力

例1:

Description
计算 a+b

Input
两个整数 a,b

Output
a+b的值


Sample Input
1 2

Sample Output
3

この最も単純な入力は、一連の入力を受け入れ、この一連の入力の値を計算します。これは通常のプログラミングと同じです。解決策は次のとおりです。

#include <stdio.h>
int main()
{
    
    
    int a,b;
    scanf("%d %d",&a, &b);
    printf("%d\n",a+b);  //对其他题目,换成要求的复杂处理与输出
    return 0;
}

1.2入力ファイル(EOF)の終わりが読み取られるまで、複数のデータセットを入力するための1回の実行

例2:

Description
计算 a + b

Input
多组由两个整数(a和b)构成的输入,a和b之间用空格隔开,每组输入单独占一行 

Output
每组的两个整数(a和b)求和并输出,每组的求和结果独占一行

Sample Input
1 5
10 20
400 516

Sample Output
6
30
916

この種の入力には複数の入力データのペアが含まれており、読み取るためのループを構築する必要があります。入力のペアがいくつあるかを示すものがないため、入力がいつ終了したかを知る方法が必要です。解決策は次のとおりです。

#include <stdio.h>
int main() 
{
    
    
	int a,b;
	while(scanf("%d %d",&a, &b) != EOF) // 输入结束时,scanf函数返回值为EOF(-1),即没有数据输入时会退出while循环
	{
    
    
		printf("%d\n",a+b);
	}
	return 0; 
}

注1:scanf関数の戻り値は、読み取った変数の数です。変数がない場合、戻り値は-1です。EOFは、-1に等しい事前定義された定数です。

注2:キーボードによるデータ入力であるプログラムをデバッグするときは、入力の終わりとしてCTRL-Zの組み合わせを使用します(つまり、CTRLキーを押しながらZを押します)。これは「ファイルの終わり」と呼ばれます。キーボード入力デバイスの"。

1.3 1回の実行で、複数のデータセットを入力する場合、セットの数は最初の入力データによって決定されます(最初にNを入力し、次にNセットのデータを入力します)。

例3:

Description
计算 a + b

Input
第一行是数据的组数N,从第二行是N组由两个整数(a和b)构成的输入,a和b之间用空格隔开,每组输入单独占一行 

Output
每组的两个整数(a和b)求和并输出,每组的求和结果独占一行

Sample Input
2
1 5
10 20

Sample Output
6
30

最初の行を読み取ってグループの数Nを決定してから、処理のためにN回実行するループを作成する必要があります。解決策は次のとおりです。

#include<stdio.h>
int main()
{
    
    
	int n,i;
	int a,b;
	scanf("%d",&n);
	for(i=0;i<n;i++)
	{
    
    
		scanf("%d%d",&a,&b);
		printf("%d\n",a+b);
	}
	return 0;
}

1.4入力は、データセットの数を示すものではありませんが、特別な入力で終わります。

「生徒の成績を入力して-1で終わる」などのよくある質問は、よくある質問です。-1ポイントを獲得した生徒がいない場合は、この終了データを取得できます。
例4:

Description
计算 a + b

Input
多组由两个整数(a和b)构成的输入,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||b))
	{
    
    
		printf("%d\n",a+b);
	}
	return 0;
}

おすすめ

転載: blog.csdn.net/mahoon411/article/details/123479652