1011 A+B 和 C (15 分)
给定区间 [−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
正确代码:
#include <stdio.h>
#include <stdlib.h>
int main()
{
long long a,b,c;
int i=0,n=0;
int result[10];
scanf("%d",&n);
for(i=0; i<n; i++)
{
scanf("%lld %lld %lld",&a,&b,&c);
result[i] = (a+b>c) ? 1 : 0;
}
for(i=0; i<n; i++)
printf("Case #%d: %s\n",i+1,(result[i]?"true":"false"));
return 0;
}
这个题挺简单,只是需要注意数据长度,这里栽了一次。。。
题目给出的区间是[-2^63,2^63],首先需要知道的int型的范围是[-2^63,2^63-1],在最大值这里会超出int的范围。另外,两个int型的变量相加,最后可能是超过int型的,因此在本题中,必须使用long long作为ABC的变量类型,输入输出格式必须是%lld,否则就进坑了。(Yes,that's me)
总结:数据范围分清, int+int 也可能超出 int。就算是 2^31 也是超出int。
int整型范围:32位(32位整数,10^9以内),-2^31~~+(2^31)-1。绝对值在10^9以内的都可以定义成int。
long long范围:(64位整数,10^18以内)2的63次方,-2^63~~+(2^63)-1。超过2147483647的就要用long long。后面要加LL标识符。