第一次在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 <iostream>
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");
}