【2023.10.30练习】C语言-判断等式成立

计算机能力挑战初赛2020.20题
题目描述:

输入正整数A、B、C(0<=A,B,C<=10000),若用'+'、'-'、'*'、'/'、'%'之一组成等式(即A@B=C,@是上述运算符之一,),则输出“YES”,否则输出“NO”;
输入:
第一行输入正整数N(1<=N<=1000)表示有N组数据,
其后有N行非零整数A、B、C。
输出:
对于每行整数A、B、C,其计算结果各占一行。
输入样例:
5
2 3 6
3 5 1
5 3 1
1 4 1
6 2 7
输出样例:
YES
NO
NO
YES
NO
(说明:输入样例中2*3=6,1%4=1)


题目分析:

初始代码如下:

#include <stdio.h>

int main(void) {
	int num;
	scanf("%d", &num);

	int A;
	int B;
	int C;
	for (int i = 0; i < num; i++) {
		scanf("%d", &A);
		scanf("%d", &B);
		scanf("%d", &C);

		if (A + B == C || A - B == C || A * B ==C  || A / B == C || A % B == C) {
			printf("YES");
		}
		else {
			printf("NO");
		}
	}
	return 0;
}

运行后发现 5 3 1的输出结果为YES,不符题意。

显然是因为在整形类型下:5/3=1。

所以将判定A / B == C修改为B * C == A


最终代码:
#include <stdio.h>

int main(void) {
	int num;
	scanf("%d", &num);

	int A;
	int B;
	int C;
	for (int i = 0; i < num; i++) {
		scanf("%d", &A);
		scanf("%d", &B);
		scanf("%d", &C);

		if (A + B == C || A - B == C || A * B ==C  || C * B == A || A % B == C) {
			printf("YES\n");
		}
		else {
			printf("NO\n");
		}
	}
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值