1011 A+B 和 C (15 分)
给定区间 [−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
#include<cstdio>
int main()
{
int t;
scanf("%d", &t);
long long a;
long long b;
long long c;
for (int i=1; i<=t; i++)
{
scanf("%lld%lld%lld", &a, &b, &c);
if(a+b>c)
{
printf("Case #%d: true\n",i);
}
else
{
printf("Case #%d: false\n",i);
}
}
return 0;
}
-
这道题注意的点是:有符号型int范围是[-2^31,2^31-1],题目范围是 [−2^31,2^31],最大值2^31会超过int范围,况且int+int有可能超出int范围,所以只能用longlong类型定义变量
-
long long 型输入输出格式为%11d
-
scanf是有返回值的,返回值是成功读入的参数个数。在控制台读取数据不会读入失败,而在读取文件时达到文件末尾无法读取才导致读入失败,这时scanf返回-1,C语言中用EOF代表-1,当题目中未说明有多少数据需要读入时,可以利用scanf返回值是否为EOF判断输入是否结束
-
while(scanf("%d",&n) != EOF) { }
读入字符串可以采用
-
while(scanf("%s",str) != EOF) { } while(gets(str) != NULL) { }
-
while……break型
-
当输入数据满足某个条件时停止输入
-
#include <stdio.h> int main() { int a; int b; while(scanf("%d%d",&a,&b)!=EOF) { if(a==0&&b==0) { break; } printf("%d\n",a+b); } return 0; }