题目描述
给定区间 [−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 #1: false
Case #2: true
Case #3: true
Case #4: false
题目思路
实现T次循环,除了使用for循环之外,更简洁的做法是while(T--)
。例如:
T=5;
while(T--){
printf("%d",T);
}
int型数据范围是[-2^31, 2^31-1],最大值在这里就会超出int型的范围。另外,两个int型变量相加,最后可能是超过int型的,因此此题必须使用long long作为ABC的变量类型。否则将会报答案错误
###数据结构
变量名 | 数据类型 | 作用 |
---|---|---|
T | int | 测试用例 |
a | long long | |
b | long long | |
c | long long |
参考代码
下面的代码能在PAT题目链接运行成功,欢迎采纳或提出更好的建议。
#include<cstdio>
int main()
{
int T;
scanf_s("%d",&T);//测试用例
for(int i=1;i<=T;i++)
{
long long a,b,c;//输入输出格式必须为%lld
scanf_s("%lld%lld%lld",&a,&b,&c);
if(a+b>c)
printf("Case #%d: true\n",i);//printf不需要取内存地址,只需变量名即可
else
printf("Case #%d: false\n",i);
}
return 0;
}
采用while(T–)
#include<cstdio>
int main()
{
int T,i=1;
scanf("%d",&T);
while(T--)
{
long long a,b,c;
scanf("%lld%lld%lld",&a,&b,&c);//long long输入输出都是%lld
if(a+b>c){
printf("Case #%d: true\n",i);
}
else
{
printf("Case #%d: false\n",i);//注意空格,容易报格式错误
}
i++;
}
return 0;
}