鄭州軽工業大学oj問題解(c言語)1078-1080多実例試験、入門問題
2602 ワード
1078107908080はoj問題の3つの典型的なマルチグループテストデータの問題であり、最も簡単な問題1000のアップグレード版でもあり、従来の数十問題ループの問題とは異なり、ここでは新しい知識を運用してループを使用する必要がある.
題目記述計算A+B は、試験のグループ数を表す第1の動作の整数n(1≦n≦10)を入力する.以下にn組のテストデータがあり、各組1行、2個の整数、A,Bである. は各行に対して入力を出力し、A+Bの値を出力し、単独で1行を占める.
コードは次のとおりです.
明らかに、今回のテーマと従来のテーマの最大の違いは、2回の入力である.2行に分けて入力しますが、どうすれば2行に分けて入力できますか?一部の学生は直接2つの入力を考えているかもしれませんが、これはだめです.1行目と2行目はここで因果関係なので、1行目は2行目の入力回数を決めます.したがって、ここではネストループを使用する必要があります.コードの注釈の解釈は比較的はっきりしている.最初の入力はループの回数、すなわちn組のテストデータがあり、次の入力はa,bを1回ずつ入力する.単一サイクルで出力を完了します.ここで注意すべきは、ループのたびに個別のプロセスであり、前回のループの入力は次の‘a,bの入力に影響を与えないことである. 入力時の値を加算し、データの混同を避けることに注意してください.
題目記述計算A+B 入力データは複数組あります.各組1行、整数A,Bである. は各行に対して入力を出力し、A+Bの値を出力し、単独で1行を占める. このようなマルチインスタンステストソリューションを提示します:while(scanf("%d%d",&a,&b)!=EOF){//テストデータのセットを読み込む//処理//出力結果}注意:EOFはマクロ定義定数-1、scanf関数遭遇ファイル終了フラグ関数戻り値は-1、キーボード入力時、ctrl+zは入力終了を表します例えば:while(scanf("%d%d",&a,&b)!=EOF) printf("%d",a+b);
1079は1078の別の解法である.実は上の説明がはっきりしていることを示しています.ここではEOFの役割を重点的に述べるだけです.ここでEOFは,新たなデータ入力がなければループを終了するという意味である.ここではwhile文にしか適用できませんが、データの読み取りが容易で、ループの回数を自分で制限する必要がなく、漏れを避けるのが利点です.
題目記述計算A+B 入力データは複数組あります.各組の1行は、2つの整数A,Bである.0を入力すると入力が終了し、このグループの入力は処理されません. は各行に対して入力を出力し、A+Bの値を出力し、単独で1行を占める. ヒント入力0 0が終了し、本題はループ条件でキーボード入力を読み取り、同時に判断することができる:while(scanf("%d%d",&a,&b),a!=0||b!=0) printf("%d",a+b);
1079と同様に1080は1078の第3の解法である.ここでは,A,Bの値を判断してループの終了を行い,aとbがともに0になるとループを終了する.この解法は通常,入力回数が明確な場合に用いられ,一定のコード量を節約できる.
1078 a+bマルチインスタンステスト(一)
コードは次のとおりです.
#include
int main()
{
int a,b,i,n,s;
scanf("%d",&n);// ,
for(i=1;i<=n;i++)
{
scanf("%d%d",&a,&b);//( a,b)
s=a+b;
printf("%d
",s);
}
return 0;
}
コード解析:
明らかに、今回のテーマと従来のテーマの最大の違いは、2回の入力である.2行に分けて入力しますが、どうすれば2行に分けて入力できますか?一部の学生は直接2つの入力を考えているかもしれませんが、これはだめです.1行目と2行目はここで因果関係なので、1行目は2行目の入力回数を決めます.したがって、ここではネストループを使用する必要があります.コードの注釈の解釈は比較的はっきりしている.最初の入力はループの回数、すなわちn組のテストデータがあり、次の入力はa,bを1回ずつ入力する.単一サイクルで出力を完了します.
1079:a+bマルチインスタンステスト(二)
#include
int main()
{
int a,b;
while(scanf("%d%d",&a,&b)!=EOF)
{
printf("%d
",a+b);
}
return 0;
}
1079は1078の別の解法である.実は上の説明がはっきりしていることを示しています.ここではEOFの役割を重点的に述べるだけです.ここでEOFは,新たなデータ入力がなければループを終了するという意味である.ここではwhile文にしか適用できませんが、データの読み取りが容易で、ループの回数を自分で制限する必要がなく、漏れを避けるのが利点です.
1080:a+bマルチインスタンステスト(三)
#include
int main()
{
int a,b;
while(scanf("%d%d",&a,&b),a!=0||b!=0)
{
printf("%d
",a+b);
}
return 0;
}
1079と同様に1080は1078の第3の解法である.ここでは,A,Bの値を判断してループの終了を行い,aとbがともに0になるとループを終了する.この解法は通常,入力回数が明確な場合に用いられ,一定のコード量を節約できる.