1.タイトルの説明
上記のタイトル
给定区间[-2的31次方, 2的31次方]内的3个整数A、B和C,请判断A+B是否大于C。
説明を入力してください:
输入第1行给出正整数T(<=10),是测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。
出力の説明:
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
入力例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
出力の説明:
对每组测试用例,在一行中输出“Case #X: true”如果A+B>C,否则输出“Case #X: false”,其中X是测试用例的编号(从1开始)。
入力例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
2.私のACコード:
#include<stdio.h>
int main(){
int i, n ;
long a, b, c;
scanf("%d", &n);
for( i = 1; i <= n; i++){
scanf("%ld %ld %ld", &a, &b, &c);
if(a +b > c)
printf("Case #%d: true\n", i);
else
printf("Case #%d: false\n", i);
}
}
3、経験関連
1.問題分析:
- テストポイント1:基本的な入力および出力ルール。
- テストポイント2:データ型とその特性。
第二に、経験
- int範囲:-2,147,483,648〜2,147,483,647。テストデータは31回のうち2回表示される場合があり、これは境界を超えています。
- オーバーフローは、aとbが同じ符号で追加された場合にのみ発生します。abが異なる場合、bcは同じ符号であり、直接判断できます(a + b)> c。次に、異なる符号が (a + b)> c を a>(c-b)に変換します。bcが異なる場合、答えが直接得られます。-----この方法は操作が少し複雑ですが、それでもこの方法は複雑です。自分の思考の次元を拡大しました。
- 対応するデータ型の長さはOSやコンパイラによって異なる可能性があるため、ネイティブintのバイト数をクエリする方法:sizeof(int); sizeof(long); sizeof(long long);
- intおよびその他の型の最大値を取得するには、整数と浮動小数点数に関連するマクロを定義する2つのライブラリ関数<limits.h>と<float.h>を使用して、このキーワードを直接検索します。各ライブラリ関数の2つの概要と例を取得できます。中国語版:新人チュートリアルが適しています:https://www.runoob.com/cprogramming/c-standard-library-limits-h.html ;英語版:http:/ /www.cplusplus .com / reference /(壁の亀裂の提案の背後にある英語のWebサイトには、多くの例、有益なコンテンツがあり、英語で書かれています!)
- あなたが理解していない他のことについては、推測を仮定し、もっと練習してください。
- それは長い間書かれてきましたが、それでも非常に興味深く価値があります。