弟弟的作业

来源:互联网 发布:js初始化加载 编辑:程序博客网 时间:2024/06/03 02:20

1365: 弟弟的作业

描述

题目描述:

你的弟弟刚做完了“100以内数的加减法这部分的作业,请你帮他检查一下。每道题目(包括弟弟的答案)的格式a+b=c或者a-b=c,其中ab是作业中给出的,均为不超过100的非负整数c是弟弟算出的答案,可能是不超过200的非负整数,也可能是单个字符"?",表示他不会算。

输入:

输入文件包含不超过100行,以文件结束符结尾。每行包含一道题目,格式保证符合上述规定,且不

包含任何空白字符。输入的所有整数均不含前导0

输出:

输出仅一行,包含一个非负整数,即弟弟答对的题目数量。

样例输入
1+2=3
3-1=5
6+7=?
99-0=99
样例输出
2
这道题我直接无脑用字符串处理的,其实可以更简单一些,就是用scanf控制输入,数字用%d  然后答案用%c  因为可能是?
这样会简单一些
#include<bits/stdc++.h>using namespace std;int main(){string s;int sum = 0;while(cin>>s){if(s[s.size()-1] == '?')continue;else{int n1,n2,n3;int flag,flag1,flag2;//分别记录符号和等号的位置,flag为0则为加,1为减 n1 = n2 = n3 = 0;for(int i=0;i<s.size();i++){if(s[i] == '+'){flag = 0;flag1 = i;} if(s[i] == '-'){flag = 1;flag1 = i;}if(s[i] == '='){flag2 = i;}}for(int i = 0;i < flag1;i ++){n1 = n1*10 + (s[i]-'0');}for(int i = flag1 +1;i < flag2;i ++){n2 = n2*10 + (s[i]-'0');}for(int i = flag2 +1;i < s.size();i ++){n3 = n3*10 + (s[i]-'0');}if(flag == 0 && n1 + n2 == n3)sum ++;if(flag == 1 && n1 - n2 == n3)sum ++;}}cout<<sum<<endl;return 0;}