PAT训练笔记:乙级真题---A+B和C (15)

一、题目描述

题目描

给定区间[-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

二、我的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);
    }
}

三、心得相关

        一、题目分析:

  • 考点一:基本的输入输出规则;
  • 考点二:数据类型及其特点。

二、心得体会

  • int范围: -2,147,483,648 到2,147,483,647 。测试数据可能会出现2的31次的值,超出边界;
  • 溢出只出现在a、b同号相加;ab异号时,bc同号,直接相(a+b) > c判断即可。那么异号将 (a+b) > c  转换成  a > (c - b);bc不同号时,直接得出answer;-----这个方法,操作实现上复杂了点,但是这个方法还是扩展了自己思考的维度;
  • 因为不同OS和编译器,对应数据类型的长度可能不同,那么如何查询本机int啥的字节数:sizeof(int);sizeof(long);  sizeof(long long);
  • 怎么得到int等类型的最值,可使用  <limits.h> 和<float.h>  这两个库函数,分别定义了与整数和浮点数相关的宏,直接搜索这个关键词,就可以得到两个库函数的介绍及实例:中文版:菜鸟教程的不错:https://www.runoob.com/cprogramming/c-standard-library-limits-h.html;英文版:http://www.cplusplus.com/reference/(墙裂建议后面这个英文的网站,实例很多,内容翔实,而且是英文的!)
  • 其他的一些自己不懂的,假设猜想,多实践动手;
  • 虽然写了很久,但是还是蛮有意思,蛮值的。

猜你喜欢

转载自blog.csdn.net/qq_41914687/article/details/103939777
今日推荐