鱼C论坛

 找回密码
 立即注册
查看: 1581|回复: 2

[已解决]pat试题,A+B和C

[复制链接]
发表于 2017-9-28 16:50:02 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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遍,竟然是错误的

最佳答案
2017-9-29 23:03:06
本帖最后由 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分,哭死。。。已然是一条咸鱼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-9-29 23:03:06 | 显示全部楼层    本楼为最佳答案   
本帖最后由 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分,哭死。。。已然是一条咸鱼了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-10-1 07:45:56 | 显示全部楼层
eglym 发表于 2017-9-29 23:03
当你的输入为三个 -2147483647的时候
在计算的过程之中会出现溢出的吧。。

pat考试,不是提交之后,可以看成绩的嘛,没有得分改格式,继续试,不就行了。。为毛,,会得5分
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-28 17:45

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表