mirage


私信TA

用户名:mirage915

访问量:12280

签 名:

蒟蒻也想变强啊..

等  级
排  名 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 人评分

  评论区

#include<stdio.h>
int main()
{
	int a = 0;
	int b = 0;
	int c = 0;
	char sign = 0;
	int count = 0;
	int k = 0;
	while ((k = scanf("%d%c%d=%d", &a, &sign, &b, &c)) == 4)
	{
		if (k < 4)
			getchar();
		else if ((c = a + b && sign == '+') || (c = a - b && sign == '-'))
			count++;
	}
	printf("%d\n", count);

	return 0;
}
我这个到底哪错了
2024-03-18 16:20:41
#include<stdio.h>
int fun(int a,char op,int b)
{
    int c=0;
    switch(op)
	{
	    case '+':
	    c=a+b;
	    break;
	    case '-':
	    c=a-b;
	    break;
	}
	return c;
}
int main()
{
	int a=0,b=0,num=0;
	char op,ch;
	while(~scanf("%d%c%d=%c",&a,&op,&b,&ch))
	{
	if(ch=='?')
	{
	    continue;
	}
	else
	{
	    
	    if((ch-'0')==fun(a,op,b))
	    {
	        num++;
	    }
	}
	}
	printf("%d",num);
	return 0;
}
大佬帮忙看一下这个哪里错了
2023-07-27 00:24:25
为什么对留在缓冲区的\n没有任何反应?
2022-04-18 12:04:04
学到了以前没注意到得细节问题,开心。
2021-12-11 21:29:02
真不错,学到了嗷
2021-11-20 20:43:39
想问一下,为什么要有“getchar()”啊,没有就是错的?
2021-09-11 12:44:59
想问一下大佬为什么是错的
#include<stdio.h>
int main()
{
    int a,b,c,count=0;
    char s;
    while(scanf("%d%c%d=%d",&a,&s,&b,&c)&&a!=EOF&&b!=EOF&&c!=EOF)
    {if(s=='+'&&c==a+b)count++;
     if(s=='-'&&c==a-b)count++;
    }
   printf("%d",count);
    return 0;
}
2021-05-22 12:47:41
#include<stdio.h>
int main()
{
	int a,b,c,score=0,k,j=0;
	char p, q;
	while(k=scanf("%d%c%d%c%d",&a,&q,&b,&p,&c))
	{
		if(++j>100)
		break;
		getchar();
		if(k==5)
		{
			if(q=='+'&&c==a+b)
			score++;
			if(q=='-'&&c==a-b)
			score++;
		}
	}
	printf("%d\n",score);
}
2021-02-06 17:15:54