
csp信奥赛C高频考点专项训练之字符串 --【字符串综合】口算练习题题目描述王老师正在教简单算术运算。细心的王老师收集了i ii道学生经常做错的口算题并且想整理编写成一份练习。编排这些题目是一件繁琐的事情为此他想用计算机程序来提高工作效率。王老师希望尽量减少输入的工作量比如58 \texttt{58}58的算式最好只要输入5 \texttt 55和8 \texttt 88输出的结果要尽量详细以方便后期排版的使用比如对于上述输入进行处理后输出5813 \texttt{5813}5813以及该算式的总长度6 66。王老师把这个光荣的任务交给你请你帮他编程实现以上功能。输入格式第一行一个整数i ii。接着的i ii行为需要输入的算式每行可能有三个数据或两个数据。若该行为三个数据则第一个数据表示运算类型a \texttt aa表示加法运算b \texttt bb表示减法运算c \texttt cc表示乘法运算接着的两个数据表示参加运算的运算数。若该行为两个数据则表示本题的运算类型与上一题的运算类型相同而这两个数据为运算数。输出格式输出2 × i 2\times i2×i行。对于每个输入的算式输出完整的运算式及结果第二行输出该运算式的总长度。输入输出样例 #1输入 #14 a 64 46 275 125 c 11 99 b 46 64输出 #16446110 9 275125400 11 11*991089 10 46-64-18 9【数据规模与约定】对于50 % 50\%50%的数据输入的算式都有三个数据。对于所有数据0 i ≤ 50 0i\leq 500i≤50第一个算式一定有三个数据运算数为非负整数且小于10000 1000010000。思路分析输入解析第一行一个整数i表示算式数量。由于每行可能只有两个数此时运算类型与上一行相同或三个数据包含运算类型和两个数我们需要灵活读入。可以用一个字符串s先读入该行的第一个字段如果s是a、b或c则说明此行有三个数据记录当前运算类型c s[0]再读入两个整数x, y。否则说明此行只有两个数据s本身就是第一个运算数将其转为整数x再读入第二个整数y运算类型沿用上一行的c。第一个算式保证有三个数据所以c一定会被初始化。表达式生成根据当前运算类型c计算表达式字符串和结果。加法x y符号减法x - y符号-乘法x * y符号*使用to_string将整数转为字符串拼接成x 符号 y 结果。输出每个算式输出两行第一行完整的表达式如6446110第二行该表达式的长度即字符串的字符个数所有输出按输入顺序依次处理。注意事项运算数为非负整数且小于10000结果可能为负减法时负号计入长度。表达式长度直接用str.length()获取。使用std::ios::sync_with_stdio(false)加速输入输出。代码实现#includebits/stdc.husingnamespacestd;intmain(){inti;// 算式个数cini;charc0;// 当前运算类型初始无值for(intt0;ti;t){// 循环处理每个算式string s;// 读入第一个字段cins;intx,y;// 两个运算数if(sa||sb||sc){// 三个数据cs[0];// 更新运算类型cinxy;// 读入两个整数}else{// 两个数据xstoi(s);// 第一个数ciny;// 第二个数// c 保持上一行的值}string exp;// 存储完整表达式intres;// 运算结果if(ca){resxy;expto_string(x)to_string(y)to_string(res);}elseif(cb){resx-y;expto_string(x)-to_string(y)to_string(res);}else{// c cresx*y;expto_string(x)*to_string(y)to_string(res);}coutexp\n;// 输出表达式coutexp.length()\n;// 输出长度}return0;}功能分析输入处理能够正确区分每行是三个数据还是两个数据并动态更新当前运算类型符合题目要求。表达式生成根据加、减、乘运算生成形如xyz的字符串结果自动转换为字符串并拼接。长度计算利用std::string::length()获取表达式的字符数包括数字、运算符、等号和负号。输出格式每个算式先输出表达式再输出长度各占一行。【完整系列请查看专栏】信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转各种学习资料助力大家一站式学习和提升#includebits/stdc.husingnamespacestd;intmain(){cout########## 一站式掌握信奥赛知识! ##########;cout############# 冲刺信奥赛拿奖! #############;cout###### 课程购买后永久学习不受限制! ######;return0;}【秘籍汇总】完整csp信奥赛C学习资料1、csp/信奥赛C完整信奥赛系列课程永久学习https://edu.csdn.net/lecturer/7901 点击跳转2、CSP信奥赛C竞赛拿奖视频课https://edu.csdn.net/course/detail/40437 点击跳转https://edu.csdn.net/course/detail/41081 点击跳转3、csp信奥赛高频考点知识详解及案例实践CSP信奥赛C动态规划https://blog.csdn.net/weixin_66461496/category_13096895.html点击跳转CSP信奥赛C标准模板库STLhttps://blog.csdn.net/weixin_66461496/category_13108077.html 点击跳转信奥赛C提高组csp-s知识详解及案例实践https://blog.csdn.net/weixin_66461496/category_13113932.html 点击跳转4、csp信奥赛冲刺一等奖有效刷题题解信奥赛C普及组CSP-J一等奖通关刷题题单及题解https://blog.csdn.net/weixin_66461496/category_12673810.html 点击跳转信奥赛C提高组csp-j初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12808781.html 点击跳转信奥赛C提高组csp-s初赛复赛真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13125089.html 点击跳转5、GESP C考级真题题解GESP(C 一级二级三级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12858102.html 点击跳转GESP(C 四级五级六级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_12869848.html 点击跳转GESP(C 七级八级)真题题解持续更新https://blog.csdn.net/weixin_66461496/category_13117178.html 点击跳转· 文末祝福 ·#includebits/stdc.husingnamespacestd;intmain(){cout跟着王老师一起学习信奥赛C;cout 成就更好的自己 ;cout csp信奥赛一等奖属于你! ;return0;}