您的位置:首页 > 其它

【PAT】B1011

2020-03-28 20:02 78 查看

给定区间。。内 3 个整数 A、B 和 C,请判断 A+B 是否大于 C。
输入格式:
输入第 1 行给出正整数 T (≤10),是测试用例的个数。随后给出 T 组测试用例,每组占一行,顺序给出 A、B 和 C。整数间以空格分隔。
输出格式:
对每组测试用例,在一行中输出 Case #X: true 如果 A+B>C,否则输出 Case #X: false,其中 X 是测试用例的编号(从 1 开始)。
输入样例:
4
1 2 3
2 3 4
2147483647 0 2147483646
0 -2147483648 -2147483647
输出样例:
Case #1: false
Case #2: true
Case #3: true
Case #4: false

错误代码

#include<cstdio>
int main(){
int n;
scanf("%d", &n);
for(int i = 1; i<=n; i++){
int a, b, c;
scanf("%d", &a);     //写在一句
scanf("%d", &b);
scanf("%d", &c);
if(a + b > c){
printf("Case #%d: true\n", i);
}else{
printf("Case #%d: false\n", i);
}
}
return 0;
}

【错误】
0。题目要求一次性输入后 一次性输出所有结果,这样是每一次循环就输出一次,不满足要求;
1.给出的单个数字符合int型 但题目有相加情况,因此要用long long int型;

通过代码

#include<cstdio>
int main(){
int n;
bool A[11] = {false};
scanf("%d", &n);
for(int i = 1; i<=n; i++){
long long int a, b, c;
scanf("%lld%lld%lld", &a, &b, &c);
if(a + b > c){
A[i] = true;
}
}
for(int i = 1; i<=n; i++){
if(A[i] == true){
printf("Case #%d: true\n", i);
}else{
printf("Case #%d: false\n", i);
}
}
return 0;
}

【改进以及知识点】
0. scanf连续输入三个数字写在一句即可;
1.bool型数组是逻辑型,并非数组某一位就是 "false “抑或"true”,只能用if(A[i]==true)来判断,而不能用来赋值字符串。
2.柳神代码也是不满足一次性输入输出要求的,但我写的第二个循环里面的if语句,可用一句代替 将判断语句写在printf内部

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

柳神代码

#include <iostream>
using namespace std;
int main() {
int n;
scanf("%d", &n);
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");
}
return 0;
}
  • 点赞
  • 收藏
  • 分享
  • 文章举报
Jack Pearson 发布了9 篇原创文章 · 获赞 0 · 访问量 271 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: