PAT 1011. A+B和C (15)

时间:2021-04-18 19:01:52

题目描述:

给定区间[-231, 231]内的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 #1: false
Case #2: true
Case #3: true
Case #4: false

题目分析:这一题乍一看蛮简单的,题目约定的范围似乎就是要用int。如果使用int就中了圈套。int的范围是-2147483648~2147483647,使用不满足题目的范围区间端点。所以果断使用longlong类型。此类题目错的话或者记不清楚整型变量的范围,不妨改一下变量类型,多提交几次即可。

代码如下:

#include<stdio.h>
struct number{
long long A,B, C;            //分别用于存储A B C。 
bool flag;                   //用于标记该组数据AB之和是否大于C 
}num[10]; 
int main()
{
int T;
scanf("%d",&T);           //读入测试用例数目 
for(int i=1;i<=T;i++){
scanf("%lld%lld%lld",&num[i].A ,&num[i].B ,&num[i].C );   //此处一定使用%lld,笔者当时忘记该这里仍用的%d,还是通不过。 
if(num[i].A+num[i].B >num[i].C ){
num[i].flag =true;                        //如果两和大于C,则标记为TRUE。 
}
else num[i].flag =false;
}

for(int i=1;i<=T;i++){
if(num[i].flag ==false){
printf("Case #%d: false\n",i);       //按照格式输出。 
}
else printf("Case #%d: true\n",i);
}
return 0;
}