答案正确率百分之五十,不知道哪里有问题

img

img


#include
using namespace std;
int main()
{
int T,i,j,n=1;
cin>>T;
int a[T][3];
for(i=0;i<T;i++)
{
for(j=0;j<3;j++)
{
cin>>a[i][j];
}
}
for(i=0;i<T;i++)
{
if((a[i][0]+a[i][1])>a[i][2])
{
cout<<"Case #"<<n<<": true";
}
else
{
cout<<"Case #"<<n<<": false";
}
cout<<endl;
n++;
}
return 0;
}

考虑数据越界的问题,当A或者B的和超出int范围的时候,可能会出错,所以用一个long long 类型的临时变量存储A+B的和
另外,使用变量定义数组的长度,在部分编译器中会报错,因为题目告诉T<=10了,所以直接用a[10][3]就可以了。
代码修改如下:

#include <iostream>
using namespace std;
int main()
{
    int T,i,j,n=1;
    cin>>T;
    int a[10][3]; //用变量定义数组长度有风险,部分编译器会编译报错,因为题目告诉T<=10,所以直接定义a[10][3]就够用了
    for(i=0;i<T;i++)
    {
        for(j=0;j<3;j++)
        {
            cin>>a[i][j];
        }
    }
    for(i=0;i<T;i++)
    {
        long long s = a[i][0]+a[i][1]; //这里用一个临时变量保存两者的和
        if( s>a[i][2])
        {
            cout<<"Case #"<<n<<": true";
        }
        else
        {
            cout<<"Case #"<<n<<": false";
        }
        cout<<endl;
        n++;
    }
    return 0;
}