这个小题目我错到哪里了?

问题链接:http://pat.zju.edu.cn/contests/mooc-c/7-2
我的答案:http://www.icourse163.org/learn/zju/0809ZJU007#/learn/forumdetail?pid=196321
不知道大家能不能进PAT
题目是这样的
给定区间[-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开始)。
输入样例:41 2 32 3 42147483647 0 21474836460 -2147483648 -2147483647输出样例:Case #1: falseCase #2: trueCase #3: trueCase #4: false
这是我的答案

for循环读取那里有问题。

for(cnt1 = 3 ; cnt1 < count * 3 ; cnt1 +=3){
number[cnt1] = a;   //这里第一次赋值就是number[3] = a,下次是number[6] = a
number[cnt2] = b;   //这里cnt2永远等于2,因为cnt2 = cnt + 1 = 1 + 1 = 2
number[cnt3] = c;   //这里cnt3永远等于3,因为cnt3 = cnt + 2 = 1 + 2 = 3
}

这样发现问题了吧,你给number数组赋值的结果远远不是你读取到的。

我对你的程序进行了改写:

#include <stdio.h>
int main()
{
int count  = 0; //count就是输入总共有几组数据
scanf("%d",&count);
long number[100];
for(int i = 0; i < count * 3; i++)
scanf("%d",&number[i]);  //读取数据并赋值给number数组

//对数据进行判断,数据每三个一组
int cnt = 1; //cnt用于输出Case后面的那个数
for(int i = 0; i < count * 3; i += 3)
{
if( (number[i] + number[i+1]) > number[i+2])
printf("Case #%d:true\n",cnt);
else
printf("Case #%d:false\n",cnt);
cnt++;
}
return 0;
}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-24
#include <stdio.h>  
#include <stdbool.h>  
bool abc();  
int main(){  
    int t,i;  
    scanf("%d",&t);  
    for(i=0;i<t;++i){  
        bool b=abc();  
        printf("Case #%d: %s\n",i+1,b == false ? "false" : "true");  
    }  
  
    return 0;  
}  
  
bool abc(){  
    long a,b,c;  
    scanf("%ld %ld %ld",&a,&b,&c);  
    if(a+b > c)  
        return true;  
    else  
        return false;  
      
}

我的解答,http://blog.csdn.net/u013542256/article/details/37691473

可以一起交流mooc。

相似回答