【Time Limit:50ms Memory Limit:65 536KB】 难度指数:★★☆☆☆
题目描述:给定区间内的三个整数A、B和C,请判断A+B是否大于C。
输入格式:第一行给出整数T(T<=10),即测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数以空格分隔。
输出格式:对每组测试用例,如果A+B>C,在一行中输出“Case#ⅹ:true”;否则输出“Case#ⅹ:false”,其中ⅹ是测试用例的编号(从1开始)。
输入样例:
4
1 2 3
2 3 4
2147483674 0 2147483646
输出样例:
Case#1:flase
Case#2:true
Case#3:true
Case#4:flase
//———————————————————————————–
思路:
输入count用以表示下面输入的数据组数,同时令tcase表示当前是第几组数据,初值为1.对于每组数据,都判断A+B是否大于C,然后输出相应的Case#ⅹ:false和Case#ⅹ:true。
注意:
①如果要执行count次。则应用count–,而非–count(执行count-1次);
②题目给出的范围是,首先要知道int型变量的数据范围是,所有当A和B都取最大值时候,他们相加的值就是,而这明显超过了int型所能表示的范围了,所以应该将其类型写为long long类型,但是注意在vc++编译器下不支持long long类型,在vc下应该使用_int64,输入使用%I64d。
③此题目还有方法二,利用a和c-b来比较大小,这就不会超出int的范围了;
④注意int,long,long long,_int64,unsigned int,unsigned long ,unsigned long long,unsigned _int64的取值范围,此链接“ ”为总结的范围表示。
//———————————————————————————-
(方法一)代码:
#include<stdio.h>
int main(){
int count,tcase = 1;
scanf("%d",&count);
while(count--){
_int64 A,B,C;
scanf("%I64d%I64d%I64d",&A,&B,&C);
if(A+B > C)
printf("Case #%d:true\n",tcase++);
else
printf("Case #%d:false\n",tcase++);
}
return 0;
}
(方法二)代码:
#include<stdio.h>
int main(){
int n;
scanf("%d",&n);
int a,b,c;
int k=1;
while(n--){
scanf("%d %d %d",&a,&b,&c);
if(a > (c-b))
printf("Case #%d: true\n",k);
else
printf("Case #%d: false\n",k);
k++;
}
return 0;
}
PS:每天学习和更新CCF/PAT算法题,算法爱好者们欢迎加关注,互相学习,一起进步。