冒冒菜菜 2021-11-30 21:45 采纳率: 0%
浏览 59

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

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;
}

  • 写回答

1条回答 默认 最新

  • 关注

    考虑数据越界的问题,当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;
    }
    
    
    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 11月30日