题目来源:洛谷
题意:输入多行数据,每行有三个(一个字母两个非负整数,形如:a 1 2)或两个数据(两个非负整数,形如:1 2)。将其以算式的形式表示,并给出算式的总长度,a代表加法,b代表减法, c代表乘法,只有两个数据时,运算类型与上一行数据相同。
样例
输入:
4
a 64 46
275 125
输出:
64+46=110
9
275+125=400
11

  • 个人感觉不好处理的主要是不确定一行有几个数据。看了很多题解感觉下面处理这一点的思路还算可以的吧。其他的都在注释里了。
#include<bits/stdc++.h>
using namespace std;int StrToInt(string str)//字符串转数字
{int numb = 0;for(int i=0; i<str.length(); i++){numb = numb * 10 + (str[i] - '0');}return numb;
}
int NumOfNum(int n, int allsum)//计算某整数的位数
{if(n == 0) allsum++; //当该整数为0,只有下面的while就不能返回正确位数了while(n > 0){n /= 10;allsum++;}return allsum;
}
void solve(char ch, int a, int b) //运算过程+算式总长度计算+输出
{int allsum = 2, sum = 0;if(ch == 'a'){sum = a + b;cout << a << "+" << b << "=" << sum << endl;}else if(ch == 'b'){sum = a - b;cout << a << "-" << b << "=" << sum << endl;}else if(ch == 'c'){sum = a * b;cout << a << "*" << b << "=" << sum << endl;}if(sum < 0){allsum++;sum = sum * -1;}allsum = NumOfNum(a, allsum);allsum = NumOfNum(b, allsum);allsum = NumOfNum(sum, allsum);cout << allsum << endl;
}
int main()
{int cou, ans = 0, a, b;string str1, str2 , str3;cin >> cou;char ch[100];while(ans < cou){ans++;cin >> str1 >> str2;//数据获取if(str1 != "a" && str1 != "b" && str1 != "c"){//str1不是字母,说明这一行只有两个数据a = StrToInt(str1);b = StrToInt(str2);//回溯上一个存在的运算符,注意不要改变ans本身的值int anss = ans;while(ch[anss] != 'a' && ch[anss] != 'b' && ch[anss] != 'c'){anss--;}solve(ch[anss], a, b);}else{//这一行存在三个数据,需要再获取一次cin >> str3;ch[ans] = str1[0];a = StrToInt(str2);b = StrToInt(str3);solve(ch[ans], a, b);}}return 0;
}

练习 P1957 口算练习题相关推荐

  1. 洛谷P1957 口算练习题

    P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我自己的代码 比较长 #include <iostream> #include <cstri ...

  2. 洛谷 P1957 口算练习题(字符串操作)

    菜鸟生成记(56) P1957 口算练习题 快乐的水题;暴力模拟 #include<iostream> #include<stdio.h>//使用printf,scanf,一定 ...

  3. 【洛谷】P1957 口算练习题【C++】

    口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量 ...

  4. P1957 口算练习题(字符串与int类型的转换)

    题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减少输入的工 ...

  5. P1957 口算练习题(模拟)

    1957 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减 ...

  6. P1957 口算练习题 Java

    这道题还是比较简单的,只要会将字符串转整型整型转字符串就可以了(相关链接:关于字符串和整型的转换),虽然代码比较长,但是是很简单的,耐心看看. import java.util.Scanner; pu ...

  7. P1957 口算练习题(输入情况特殊)

    思路 这个题目的难点就是如何输入,换言之就是判断输入的是否为字符及如何转换. 1.当输入的是字母时,则继续输入两个数. 2.当不是字母时,则要将输入的转换成整型,这里用到了sscanf.sscanf( ...

  8. 两种方法解决口算练习题

    文章目录 口算练习题 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题解: 大佬的代码: 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经 ...

  9. Python实现100以内的加减法口算练习题

    小朋友口算练习题,100以内的加减法运算: 程式要求如下 1,100道100以内的加减法计算题 2,两数相加,和小于等于100 3,被减数必须大于减数 4,前面80道计算题的格式为A+B= 或者C-D ...

  10. <Java><字符串>口算练习题

    题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减少输入的工 ...

最新文章

  1. Java项目:农资采购销售系统(java+SSM+Easyui+maven+Mysql)
  2. 儿童编程软件python-Python编程工具pycharm的使用
  3. SQL语句将某字段查询出以逗号隔开
  4. 卸载后清理干净_想要清理你的Mac?选这几款软件就对了
  5. mysql 用户命令_MySQL命令行新建用户
  6. java 队列 array_Java源码解析阻塞队列ArrayBlockingQueue常用方法
  7. python中int什么意思_python3中int(整型)的使用教程
  8. android 布局长度单位深入研究
  9. git 命令总结(转)
  10. 安装Windows系统提示Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装到GPT分区
  11. 《人类最美的54个公式》
  12. 深圳 计算机网络与管理,深圳计算机网络管理员路由与交换班
  13. xmlDocument是什么?(转)
  14. Codeforces 1102F Elongated Matrix 状压dp
  15. 前端超炫表白干货(一)
  16. 教育培训行业的一些专有名词简称
  17. css图片滑动切换图_CSS帧动画
  18. RFID-MFRC522射频识别模块,S50卡M1
  19. Java高级程序设计课程设计报告
  20. Python爬虫网络请求 requests(get、post)

热门文章

  1. 企业微信H5_自建应用连接H5
  2. android刷机工具mac版,刷机精灵mac版
  3. 把antd组件的英文切换为中文
  4. 超好用的两款作图工具,用起来~~~
  5. CCproxy代理服务器
  6. Ubuntu20安装RTL8811/RTL8812无线网卡驱动
  7. CSS过滤器(CSS filters)
  8. liang-barsky_C和C ++中的Liang Barsky线裁剪算法
  9. jquery获取验证码按钮倒计时
  10. 雷锋读图:如何通过社交媒体提高投资回报率