|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
第一次发帖,新人贴,还望多多给力
给定区间[-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<stdio.h>
int main()
{
int i = 0, num, sb[30];
int a = 0, b = 1, c = 2,d = 0, e = 1, f = 2;
scanf("%d", &num);
while (i < num)
{
scanf("%d %d %d", &sb[a], &sb[b], &sb[c]);
i++;
a = a + 3, b = b + 3, c = c + 3;
}
for (int k = 0; k < num; k++)
{
if ((sb[d] + sb[e])>sb[f])
{
printf("Case #%d: true\n", (k + 1));
}
else
printf("Case #%d: false\n", (k+ 1));
d = d + 3, e = e + 3, f = f + 3;
}
return 0;
}
我蛮好奇的,纯粹交给计算机判断大小,为什么我其他数输入进去,是没问题的。-2147483648 这个数连着输入3遍,竟然是错误的
本帖最后由 eglym 于 2017-9-29 23:05 编辑
当你的输入为三个 -2147483647的时候
在计算的过程之中会出现溢出的吧。。 #include<stdio.h>
int main()
{
int i = 0, num, sb[30];
int a = 0, b = 1, c = 2,d = 0, e = 1, f = 2;
scanf("%d", &num);
while (i < num)
{
scanf("%d %d %d", &sb[a], &sb[b], &sb[c]);
i++;
a = a + 3, b = b + 3, c = c + 3;
}
for (int k = 0; k < num; k++)
{
printf("%d\n",sb[d] + sb[e]);
if ((sb[d] + sb[e])>sb[f])
{
printf("Case #%d: true\n", (k + 1));
}
else
printf("Case #%d: false\n", (k+ 1));
d = d + 3, e = e + 3, f = f + 3;
}
return 0;
}
我将两个相加之后的结果输出为2..
就酱~~~
去年我参加过PAT结果就最后一题拿到了5分,其他的没有注意格式。。结果最后成绩为5分,哭死。。。已然是一条咸鱼了
|
|