练习 P1957 口算练习题
题目来源:洛谷
题意:输入多行数据,每行有三个(一个字母两个非负整数,形如: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 口算练习题相关推荐
- 洛谷P1957 口算练习题
P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 我自己的代码 比较长 #include <iostream> #include <cstri ...
- 洛谷 P1957 口算练习题(字符串操作)
菜鸟生成记(56) P1957 口算练习题 快乐的水题;暴力模拟 #include<iostream> #include<stdio.h>//使用printf,scanf,一定 ...
- 【洛谷】P1957 口算练习题【C++】
口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量 ...
- P1957 口算练习题(字符串与int类型的转换)
题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减少输入的工 ...
- P1957 口算练习题(模拟)
1957 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减 ...
- P1957 口算练习题 Java
这道题还是比较简单的,只要会将字符串转整型整型转字符串就可以了(相关链接:关于字符串和整型的转换),虽然代码比较长,但是是很简单的,耐心看看. import java.util.Scanner; pu ...
- P1957 口算练习题(输入情况特殊)
思路 这个题目的难点就是如何输入,换言之就是判断输入的是否为字符及如何转换. 1.当输入的是字母时,则继续输入两个数. 2.当不是字母时,则要将输入的转换成整型,这里用到了sscanf.sscanf( ...
- 两种方法解决口算练习题
文章目录 口算练习题 题目描述 输入格式 输出格式 样例 #1 样例输入 #1 样例输出 #1 提示 题解: 大佬的代码: 口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经 ...
- Python实现100以内的加减法口算练习题
小朋友口算练习题,100以内的加减法运算: 程式要求如下 1,100道100以内的加减法计算题 2,两数相加,和小于等于100 3,被减数必须大于减数 4,前面80道计算题的格式为A+B= 或者C-D ...
- <Java><字符串>口算练习题
题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量减少输入的工 ...
最新文章
- Java项目:农资采购销售系统(java+SSM+Easyui+maven+Mysql)
- 儿童编程软件python-Python编程工具pycharm的使用
- SQL语句将某字段查询出以逗号隔开
- 卸载后清理干净_想要清理你的Mac?选这几款软件就对了
- mysql 用户命令_MySQL命令行新建用户
- java 队列 array_Java源码解析阻塞队列ArrayBlockingQueue常用方法
- python中int什么意思_python3中int(整型)的使用教程
- android 布局长度单位深入研究
- git 命令总结(转)
- 安装Windows系统提示Windows无法安装到这个磁盘,选中的磁盘具有MBR分区表。在EFI系统上,Windows只能安装到GPT分区
- 《人类最美的54个公式》
- 深圳 计算机网络与管理,深圳计算机网络管理员路由与交换班
- xmlDocument是什么?(转)
- Codeforces 1102F Elongated Matrix 状压dp
- 前端超炫表白干货(一)
- 教育培训行业的一些专有名词简称
- css图片滑动切换图_CSS帧动画
- RFID-MFRC522射频识别模块,S50卡M1
- Java高级程序设计课程设计报告
- Python爬虫网络请求 requests(get、post)