PAT B1011 -- A+B和C

 第一次在CSDN上写博客,毕业以后工作有一年半了,一直再写Windows客户端服务,快过去两年了,感觉自己的C++水没有太大的提升,决定从现在开始练习一些C++在线编程,报名了今年的PAT乙级考试,现在在牛客网刷题。准备用这个账号来写一些解体报告与心得,和大家分享。向更多大神们学习。

今天做的是第一题A+B>C, 题目是这样的:

给定区间[-2^31, 2^31]内的三个整数A,B,C,请判断A+B是否大于C

输入格式是第一行输入测试用例个数T(T<=10), 然后给出T组测试用例,每组用例顺序输入A,B,C,空格分离,

如果A+B>C, 输出Case #X : true, 反之输出Case #X : false.


下面是我的代码:

#include 
using namespace std;

int main()
{
	int i = 0;
	int t;
	cin >> t;
	
	//检测输入的t值,如果超过10直接返回
	if (t > 10)
	{
		return -1;
	}

	long a, b, c;
	//最初我是用For循环写的输入,发现总得WA,后来知道是要多组测试数据
	while (cin >> a >> b >> c)
	{
		if (a + b > c)
		{
			cout << "Case #" << i + 1 << ": true" << endl;
		}
		else
		{
			cout << "Case #" << i + 1 << ": false" << endl;
		}
		i = i + 1;
		if(i > t)
		{
			return 1;
		}
	}

	return 0;
}


虽然这道题目非常的简单,但是我还是有一些心得的:

1. 这一年半的工作中积累的,对输入的参数做检测。

2. 数据类型定义成long, 因为int未必是4字节。

3. 关于输入依稀记得很久以前大学C语言有个while(scanf("%d %d",&a, &b) != EOF)来输入多组数据,但是C++不知道怎么写,然后问了大学室友,知道可以写成while(cin >> a){}。

4. 看题目不仔细,Case的C一开始是小写,空格没有弄好,导致提交了多次。


后来看了柳神的解题代码,用了一个?:运算符就输出了,真的好厉害,也粘贴一下核心代码

for (int i = 0; i < n; i++) {
        long long int a, b, c;
        scanf("%lld%lld%lld", &a, &b, &c);
        printf("Case #%d: %s\n", i + 1, a + b > c ? "true" : "false");
    }







你可能感兴趣的:(PAT乙级,PAT)