题目描述:
给定区间[-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;
}