洛谷 P1957 口算练习题
洛谷 P1957 口算练习题
题目描述
王老师正在教简单算术运算。细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习。 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率。王老师希望尽量减少输入的工作量,比如5+8的算式最好只要输入5和8,输出的结果要尽量详细以方便后期排版的使用,比如对于上述输入进行处理后输出 5+8=13 以及该算式的总长度6。王老师把这个光荣的任务交给你,请你帮他编程实现以上功能。
输入输出格式
输入格式:
第一行为数值i
接着的i行为需要输入的算式,每行可能有三个数据或两个数据。
若该行为三个数据则第一个数据表示运算类型,a表示加法运算,b表示减法运算,c表示乘法运算,接着的两个数据表示参加运算的运算数。
若该行为两个数据,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。
输出格式:
输出2*i行。对于每个输入的算式,输出完整的运算式及结果,第二行输出该运算式的总长度
输入输出样例
4 a 64 46 275 125 c 11 99 b 46 64
64+46=110 9 275+125=400 11 11*99=1089 10 46-64=-18 9
说明
数据规模与约定
0<i<=50
运算数为非负整数且小于10000
对于50%的数据,输入的算式都有三个数据,第一个算式一定有三个数据。
思路:模拟,字符串
本题有许多坑点 qwq
首先,输入时,算式有两个或三个数据,需要判断
其次,若算式的答案为负数或0,需要进行特判
#include <algorithm> #include <iostream> #include <cstring> #include <cstdio> using namespace std; int n, flag; char ch; string s, x, y;void getans(char arr, string t1, string t2) {int ans, len = t1.length() + t2.length() + 2;int a = 0, b = 0, p = t1.length(), q = t2.length();for (int i = 0; i < p; ++i)a = a * 10 + (t1[i] - '0');for (int i = 0; i < q; ++i)b = b * 10 + (t2[i] - '0');if (arr == '+') ans = a + b;else if (arr == '-') ans = a - b;else ans = a * b;cout << t1 << arr << t2 << '=' << ans << '\n';if (ans < 0) ans *= -1, ++len;if (ans == 0) {cout << len + 1;return ;}while (ans > 0) {ans /= 10;++len;}cout << len;return ; }int main() {scanf("%d", &n);for (int i = 1; i <= n; ++i) {cin >> s;if (s.length() == 1) {if (s[0] == 'a') ch = '+', flag = 1;else if (s[0] == 'b') ch = '-', flag = 1;else if (s[0] == 'c') ch = '*', flag = 1;else x = s[0];if (flag) cin >> x >> y;else cin >> y;getans(ch, x, y);}else {x = s; cin >> y;getans(ch, x, y);}if (i != n) cout << '\n';}return 0; }
View Code
转载于:https://www.cnblogs.com/v-vip/p/9673236.html
洛谷 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 ...
- 洛谷 P1957 【口算练习题】
洛谷题目难度都是假的 读入:第一个用string读,判断是否是a,b,c,不是就用进制转换转成十进制数 位数:负数的负号也算一个!0也算一位!(特判或用dowhile) 下面是代码(没有写成子程序所以 ...
最新文章
- 网友们票选的2018 Best Paper,你pick谁?
- CALayer 了解与使用
- python3.6.5无法安装-Python3.6无法安装numpy,如何解决?
- android studio入门
- 研究机构:特斯拉Model 3是2月份最畅销电动汽车
- layui php ajax分页,layui+thinkphp5.1实现分页(非动态表格)
- 3D打印的四种应用场合
- 魔兽争霸3冰封王座十大经典战役全集
- 大数据分析应用的九大领域
- 浪潮服务器dhcp修改ip,dhcp服务器ip地址池修改
- 【网络安全学习之零基础】
- Android USB 输入设备
- 10-11月数据接口-京东商品信息api,金碟Api对接,京东商智监控商品request采集后指数还原,聚水潭第三方接入api,拼多多上架辅助非第三方SKU核对上传,拼多多销量无限修改更新
- 使用canal1.1.5让MySQL5.7同步到ES7.x
- 读透《阿里巴巴数据中台实践》,其到底有什么高明之处?
- homeassistant主动推送信息
- ai如何旋转画布_Illustrator让一个图形沿着某一点或顶点旋转复制教程
- java 什么是原子操作_java原子操作CAS
- 喵呜-温暖治愈系社交应用
- Chapter4、色调映射的一般方法