洛谷 P1957 口算练习题

题目描述

王老师正在教简单算术运算。细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习。 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率。王老师希望尽量减少输入的工作量,比如5+8的算式最好只要输入5和8,输出的结果要尽量详细以方便后期排版的使用,比如对于上述输入进行处理后输出 5+8=13 以及该算式的总长度6。王老师把这个光荣的任务交给你,请你帮他编程实现以上功能。

输入输出格式

输入格式:

第一行为数值i

接着的i行为需要输入的算式,每行可能有三个数据或两个数据。

若该行为三个数据则第一个数据表示运算类型,a表示加法运算,b表示减法运算,c表示乘法运算,接着的两个数据表示参加运算的运算数。

若该行为两个数据,则表示本题的运算类型与上一题的运算类型相同,而这两个数据为运算数。

输出格式:

输出2*i行。对于每个输入的算式,输出完整的运算式及结果,第二行输出该运算式的总长度

输入输出样例

输入样例#1: 复制

4
a 64 46
275 125
c 11 99
b 46 64

输出样例#1: 复制

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 口算练习题相关推荐

  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. 洛谷 P1957 【口算练习题】

    洛谷题目难度都是假的 读入:第一个用string读,判断是否是a,b,c,不是就用进制转换转成十进制数 位数:负数的负号也算一个!0也算一位!(特判或用dowhile) 下面是代码(没有写成子程序所以 ...

最新文章

  1. 网友们票选的2018 Best Paper,你pick谁?
  2. CALayer 了解与使用
  3. python3.6.5无法安装-Python3.6无法安装numpy,如何解决?
  4. android studio入门
  5. 研究机构:特斯拉Model 3是2月份最畅销电动汽车
  6. layui php ajax分页,layui+thinkphp5.1实现分页(非动态表格)
  7. 3D打印的四种应用场合
  8. 魔兽争霸3冰封王座十大经典战役全集
  9. 大数据分析应用的九大领域
  10. 浪潮服务器dhcp修改ip,dhcp服务器ip地址池修改
  11. 【网络安全学习之零基础】
  12. Android USB 输入设备
  13. 10-11月数据接口-京东商品信息api,金碟Api对接,京东商智监控商品request采集后指数还原,聚水潭第三方接入api,拼多多上架辅助非第三方SKU核对上传,拼多多销量无限修改更新
  14. 使用canal1.1.5让MySQL5.7同步到ES7.x
  15. 读透《阿里巴巴数据中台实践》,其到底有什么高明之处?
  16. homeassistant主动推送信息
  17. ai如何旋转画布_Illustrator让一个图形沿着某一点或顶点旋转复制教程
  18. java 什么是原子操作_java原子操作CAS
  19. 喵呜-温暖治愈系社交应用
  20. Chapter4、色调映射的一般方法

热门文章

  1. ART-Pi 实现音乐播放器 --播放《天空之城》
  2. 无根树的Prufer序列
  3. cpu超线程优缺点_今天看了下百度百科!看到了超线程的优缺点啊!转!
  4. uniapp基础开发模板
  5. C语言实现洛谷题库中的 P1125 [NOIP2008 提高组] 笨小猴
  6. 数字孪生实际应用案例-煤矿篇
  7. 机器人领域期刊会议汇总
  8. 【APP授权登录】创建新浪微博(sina)移动应用
  9. 多智时代,人工智能发展历史的时间表
  10. PHP获得某天某星期某月的开始结束时间