mirage


私信TA

用户名:mirage915

访问量:12284

签 名:

蒟蒻也想变强啊..

等  级
排  名 2336
经  验 2351
参赛次数 2
文章发表 9
年  龄 0
在职情况 在职
学  校
专  业

  自我简介:

解题思路:



这道题目有很多的限制,完全可以拿来好好利用。


“每道题目(包括弟弟的答案)的 格式为 a+b=c 或者 a-b=c,其中a和b是作业中给出的,均为不超过100的非负整数;c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。”

“输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,且不包含任何空白字符。输入的所有整数均不含前导0。


1.直接按照格式  scanf("%d%c%d=%d",&a,&op,&b,&c)  读取。


2.判断读入是否正常,不正常  则清除缓冲区,继续下一次读入。

                                正常     则判断计算,计算正确得分加一。



参考代码:


#include<stdio.h>
main()
{
	char op;
	int a,b,c,k,score=0;
	while(~(k=scanf("%d%c%d=%d",&a,&op,&b,&c))){
		if(k==3) getchar();//读取缓存区回车 
		else if(op=='+' && c==a+b) score++;
		else if(c==a-b) score++;
	}
	printf("%d",score);
 }


 

0.0分

124 人评分

  评论区

大佬你这个程序我在devc++里运行怎么没输出啊&……
2019-06-14 22:47:11
问一下scanf里输入‘=’是什么高深的东西   不太懂
2019-05-16 13:22:26
char eq;
int right = 0;
struct home {
	int a, b, c;
	char d;
};
int main()
{
	home ques[100];
	for (int n = 0; n < 100; n++) {
		scanf_s("%d%c%d=%d", &ques[n].a, &ques[n].d, &ques[n].b, &ques[n].c);//为什么这样不行。
		getchar();
		if (ques[n].b == '+') {
			if (ques[n].c = ques[n].a + ques[n].b) {
				right++;
			}
		}
		if (ques[n].b == '-') {
			if (ques[n].c = ques[n].a - ques[n].b) {
				right++;
			}
		}
	}
	printf("%d", right);
}
大神,我为啥在vs里连表达式都输不出?就是输入第一个表达式就出错了。。。。。
2019-05-08 10:59:04
我也没很明白,以下是我测试过后的猜测:
char op;
int a, b, c = 0, d;
while(~(d = scanf("%d%c%d=%d", &a, &op, &b, &c)))
{
    	printf("test\n");
    	i++;
    	if(i == 10) 
		{
			printf("%d\n", i);
			char q = getchar();
			printf("%c", q);
		}
	}
当输入1+1=? 时,输入的字符被存入缓冲,scanf方法扫描到前四个字符并成功赋值,当扫描到 ? 时,由于类型不匹配,保留了c的初始值0,然后执行循环体,此时d==3,成功匹配3个变量的值;
下一次循环中,scanf方法再次扫描,缓存中还是 ? 没有被取走,第一个赋值 a 就已经失败了,后续不再赋值,a,op,b,c保留之前的值,d==0,成功匹配0个变量的值,进入循环体;
也就是说,缓存中的 ? 始终没有被取走,陷入了死循环。
上文作者判断d==3时,用getchar()取走缓存中不被 c 匹配的 ?,因此可以继续输入。
为了验证猜测,我在上述代码中输入 1+1=? ,在循环十次后用getchar()取出缓存,结果q=='?',也就是迟迟不被匹配的那个?
把?换成其他非整型字符也成立。
2019-03-06 10:24:24
伤脑筋。。大神。。怎样可以退出循环输出值
2019-01-22 15:29:04
怎样才能在编译器上出结果,输什么值会出循环???
2019-01-04 01:46:16
太牛逼了,这脑洞!
2019-01-04 01:27:48
我输入?后 后续就不能再输入算式了
2018-11-25 11:00:19