PAT [1011]A + B 和 C

来源:互联网 发布:红蜘蛛显示器校正软件 编辑:程序博客网 时间:2024/05/21 17:48

给定区间[-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开始)。

输入样例:
41 2 32 3 42147483647 0 21474836460 -2147483648 -2147483647
输出样例:
Case #1: falseCase #2: trueCase #3: trueCase #4: false
这道题反反复复提交了六次不断修改提交后得到全部正确的结果,心酸。
当然这道题其实不难,而是有一个坑,如果不爬出来就得不到满分。
题目给的整数范围是int型的,然而两个整型相加有可能超出int型的范围,所以我们在赋值给A B C的时候应该使用long long型,这样才不会导致数据相加超出范围的情况。

以下是代码:

#include<stdio.h>
#include<stdlib.h>
void test(int n)
{
long long i,j;
long long a[100];
for (i = 0; i < (3 * n); i += 3)
scanf_s("%lld %lld %lld",&a[i],&a[i+1],&a[i+2]);
for (i = 0,j = 1; i < 3 * n && j<=n; i += 3,j++)
{
if (a[i] + a[i + 1] > a[i + 2])
printf("Case #%lld: true\n",j);
else if (a[i] + a[i + 1] <= a[i + 2])
printf("Case #%lld: false\n",j);
}
}
int main()
{
int n;
scanf_s("%d", &n);
test(n);
system("pause");
return 0;
}