PATトレーニングノート:グレードBの実際の質問--- A + BおよびC(15)

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サイトには、多くの例、有益なコンテンツがあり、英語で書かれています!)
  • あなたが理解していない他のことについては、推測を仮定し、もっと練習してください。
  • それは長い間書かれてきましたが、それでも非常に興味深く価値があります。

 

 

 

 

 

おすすめ

転載: blog.csdn.net/qq_41914687/article/details/103939777