任务描述
X同学上小学三年级,最近被老师选定为课代表兼小助教,任务是给全班同学批改作业。作业是千以内加减乘除法,X要为所有同学批改并给出分数,他能完成这个任务吗?
输入格式:
第一行是一个正整数N,表示有N个同学的作业需要批改。 第二行以后是N组数据。 每组数据格式如下: 前一行为一个正整数M,表示该同学一共做了M道题。 接下来的M行是M个算式。
每个算式形如A+B=C,A、B都是非负整数,运算仅限于+、-、*、/四种, 除法按C语言规则计算,每个人总分100,平均分配到每道题, 结果错误或运算符错误或不合法(除数为0)的算式不得分。
输出格式:
输出一共N行,每一行输出该同学和得分,结果保留2位小数。
输入样例:
3
5
1+2=3
5*6=30
9-5=6
100+200=300
100/5=20
2
35$6=41
50/10=5
2
1-1=2
1/0=1
输出样例:
80.00
50.00
0.00
代码如下:?
#include<iostream>
bool su(int a,char op,int b,int c){ //函数判断算式是否正确
int flag=0;
switch(op){
case '+':{
if(a+b==c)
flag=1;
break;
}
case '-':{
if(a-b==c)
flag=1;
break;
}
case '*':{
if(a*b==c)
flag=1;
break;
}
case '/':{
if(b==0){
}else{
if(a/b==c)
flag=1;
}
break;
}
}
return flag;
}
using namespace std;
int main()
{
int n;
cin>>n; //给n位同学判作业
while(n>0){
int m;
cin>>m; //该同学的写的题
int k=0; //正确题目的数量
for(int i=1;i<=m;i++){
int a,b,c;
char ch;
scanf("%d%c%d=%d",&a,&ch,&b,&c);
if(su(a,ch,b,c)==1){
k++;
}
}
printf("%.2f\n",(k*1.0/m)*100); //给出得分
n--;
}
return 0;
}
|