您的位置:首页 > 编程语言 > C语言/C++

C++ PAT 乙级B1011 A+B和C

2019-02-26 20:02 183 查看

C++ PAT 乙级B1011 A+B和C

题目描述

给定区间[-2³¹,2³¹]内的三个整数A、B和C,请判断A+B是否大于C。

输入格式

第一行给出正整数T(小于等于10),即测试用例的个数。随后给出T组测试用例,每组占一行,顺序给出A、B和C。整数间以空格分隔。

输出格式

对每组测试用例,如果A+B>C,在一行中输出“case#X :true”;否则输出“case#X :false”,其中X是测试用例的编号

输入样例

4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483648
输出样例

case#1 :false
case#2 :true
case#3 :true
case#4 :false

笔者本人思路分析

(1)使用数组存储输入的数据,利用下标进行数据加和和比较。
(2)限制存入的数组大小使用最开始时输入的样例T*3
(3)若是在PAT系统中提交,一定要注意输出的格式!版主就被坑惨了。。。输出时冒号和“true”、“false”之间没加空格,一直提示格式错误。。。一直改!终于对了!

代码改正过,已经无错。仅供参考

代码

#include<iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int main()
{
long long num_in[40];   //存储输入样例
int i=0;
char c;
int T;
int a=1;
cin>>T;   //输入样例的组数
c=getchar();  //获取输入字符
if(T>10||c!='\n'||T<0)
{
return 0;
}
while(i<T*3)  //终止条件为数组中的数达到样例应有的数目
{
c=getchar();  //获取输入字符
if((c>='0'&&c<='9')||c=='-')  //输入正整数、负整数
{
ungetc(c,stdin);
cin>> num_in[i];
if(num_in[i]<pow(-2,31)||num_in[i]>pow(2,31))
{
return 0;
}
else {i++;}
}

}

for(int j=0;j<i;j=j+3)
{
if(num_in[j]+num_in[j+1]>num_in[j+2])
{
cout<<"Case #"<<a<<": true"<<endl;
}
else
{
cout<<"Case #"<<a<<": false"<<endl;
}
a++;

}
return 0;
}

此代码仅供参考

结果截图


如需转载,请联系版主获得授权!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: