我的代码;
#include
int main(){
int A,B,C;
scanf("%d+||-||/||%d==%d",&A,&B,&C);
if(A+B==C||A-B==C||AB==C||A/B==C){
printf("GOOD!");
}else if(A+B==C||A-B==C||A*B==C||A/B!=C){
printf("SORRY!");
}
return 0;
}
任务描述
读入一道形如A+B=C的四则运算题,正确则输出"GOOD!",错误输出"SORRY!"。
其中两个运算数为1到100范围以内的随机整数,运算符为加减乘除四种运算之一。
输入格式:
一个算式中间没有空格。
输出格式:
GOOD!或者SORRY!
输入样例:
56+23=79
输出样例:
GOOD!
输入样例:
45/21=3
输出样例:
SORRY!
第一个问题:scanf使用错误,你写的||符号它是不认的,你输入的就只是&后的变量,所以我们直接就写一个表达式(详见下面)
第二个问题:比较错误,你想让输入的跟你预想的正确结果进行比较,如果正确就输出good,错误就输出sorry,可是这里需要解决的问题是怎么把你输入的表达式进行比较呢,我们其实比较的就是一个结果,那我们就把正确的结果单独算出来再与你写的表达式结果进行比较。你的问题主要是想着整个表达式进行比较了,其实并不需要,我们只需要比较结果,详见代码
#include<stdio.h>
int main() {
int a, c,e,sum,sub,div,mul;
char b,d; //b和d表示符号
printf("随机输入一个A+B形式的四则运算");
scanf("%d%c%d%c%d", &a, &b,&c, &d,&e); //读入数据;
sum = a + c;
sub = a - c;
div = a / c;
mul = a * c;
if ( sum==e || sub==e || div==e || mul==e) {
printf("GOOD!");
}
else {
printf("SORRY!");
}
return 0;
}
scanf("表达式"),表达式怎么写的,输入时就要怎么输入。所以你表达式写成那样,是准备怎么样输入?
你应该把输入当成一个字符串,然后再解析字符串,获取三个数字和运算符,之后才是判断对错。