PAT (Basic Level) Practice (中文)1011 A+B 和 C (15 分) (C++)(两种方案)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m0_37454852/article/details/85386344

1011 A+B 和 C (15 分)

给定区间 [−2
​31
​​ ,2
​31
​​ ] 内的 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


//方案1 用long long int类型进行存储,无需判断是否发生了越界
#include <cstdio>
#include <cstring>

int main()
{
	int T = 0;
	scanf("%d", &T);
	for (int i = 1; i <= T; i++)
	{
	  long long int A, B, C;//定义为long long int类型
		scanf("%lld %lld %lld", &A, &B, &C);//注意long long int类型的输入格式
		if (A - C + B > 0) printf("Case #%d: true\n", i);//输出时需加\n换行
		else printf("Case #%d: false\n", i);
	}
	return 0;
}
//方案2 用int类型进行存储,判断是否发生了越界再做比较
#include <cstdio>
#include <cstring>


int main()
{
	int T = 0;
	int A, B, C;
	scanf("%d", &T);
	for (int i = 1; i <= T; i++)
	{
		scanf("%d %d %d", &A, &B, &C);
		int D = A + B;
		if (D<0 && A>0 && B>0) printf("Case #%d: true\n", i);//判断越界时的状态
		else if(D > 0 && A<0 && B < 0) printf("Case #%d: false\n", i);
		else if(D>C) printf("Case #%d: true\n", i);//否则正常比较输出即可
		else printf("Case #%d: false\n", i);
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/m0_37454852/article/details/85386344