P1957 口算练习题 - 洛谷 | 计算机科学教育新生态 (luogu.com.cn)

我自己的代码 比较长

#include <iostream>
#include <cstring>
using namespace std;
int wei(int u)//统计一个数的位数
{int idx = 0;if (u < 0) idx++,u = -u;if (u == 0) return 1;while(u){u /= 10;idx++;}return idx;
}void op(char a2, int b2, int c2)
{if (a2 == 'a') {cout << b2 << "+" << c2 << "=" << b2+c2 << endl;cout << wei(b2) + wei(c2) + wei(b2+c2) + 2 << endl;}else if (a2 == 'b'){cout << b2 << "-" << c2 << "=" << b2-c2 << endl;cout << wei(b2) + wei(c2) + wei(b2-c2) + 2 << endl;}else if (a2 == 'c'){    cout << b2 << "*" << c2 << "=" << b2 * c2 << endl;cout << wei(b2) + wei(c2) + wei(b2*c2) + 2 << endl;}return;
}int main()
{int i, b1, c1;scanf("%d", &i);while (i--){char a[10000], b[10000], c[10000],t;cin >> a;if (a[0] >= 'a' && a[0] <= 'c') {t = a[0];cin >> b >> c;sscanf(b, "%d", &b1);//把数字字符串b转化成int b1 sscanf(c, "%d", &c1);op(t, b1, c1);}else{strcpy(b, a);//把字符串a复制给b cin >> c;sscanf(b, "%d", &b1);sscanf(c, "%d", &c1);op(t, b1, c1);//如果这一行没有操作 t保存的是上一次操作 }  }return 0;
}

先介绍以下sscanf和sprintf

char str[100];
sscanf(str,"%d",&n);//将str转换为"%d"的n
sprintf(str,"%d",n);//将"%d"的n转换为str

洛谷大佬题解的思路和代码

#include <iostream>
#include <cstring> //memset & strlen 用cstring
#include <cstdio> //sscanf & sprintf 用cstdio
using namespace std;
int main()
{char a;//a用于存储运算符int n, c, d;char s[100], b[10];//s存储最终的字符串,b临时变量cin >> n;for(int i = 0; i < n; i++){cin >> b;//输入一串字符,有可能是运算符,也有可能是数字if(b[0] >= 'a' && b[0] <= 'z'){a = b[0];//如果是运算符就存入a,然后输入数字cin >> c >> d;}else{sscanf(b, "%d", &c);//如果是数字就转换b为int存储到第一个数字cin >> d;//然后输入剩下的第二个数字}memset(s, 0, sizeof(s) );//清空原有的字符串,防止长度判断错误if(a == 'a') sprintf(s, "%d+%d=%d", c, d, c+d);//用sprintf格式化else if(a=='b') sprintf(s, "%d-%d=%d", c, d, c-d);else if(a=='c') sprintf(s, "%d*%d=%d", c, d, c*d);cout << s << endl << strlen(s) << endl;//输出字符串和字符串长度}return 0;
}

字符串操作繁琐

要加强相关语法!!!

多记strcpy,sscanf,sprintf之类的函数

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

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

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

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

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

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

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

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

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

  5. P1957 口算练习题 Java

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

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

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

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

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

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

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

  9. 洛谷 P1957 【口算练习题】

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

最新文章

  1. html调用asp边疆,[求助]怎么实现ASP在HTML中调用
  2. thinkphp两表联查并且分页
  3. 解决类似/usr/lib64/libstdc++.so.6:version `GLIBCXX_3.4.21` not found的问题
  4. Android Studio查找错误原因
  5. Visual Studio提示——DebuggerDisplay
  6. 无线路由器文件服务器,D-LINK路由器局域网文件共享详解
  7. Word中插入的Excle打开后闪退如何解决? - Office2019
  8. hnrxgs伸缩器在管道中的作用以及工作原理
  9. 2018年江西省电子现场赛赛题
  10. 2021年焊工(初级)报名考试及焊工(初级)新版试题
  11. 微信企业号开发-如何建立连接
  12. java中遍历Set的方法
  13. cubase外放有声音耳机没声音_为何CUBASE耳机内没有声音
  14. Havel算法-Python实现
  15. snprintf函数
  16. CSDN个人博客访问量突破300万
  17. 电气器件系列三十二:电缸
  18. 5.2 数据可视化分析——词云图绘制
  19. Java基础String类-字符串反转
  20. html5 全屏样式,HTML5 全屏特征

热门文章

  1. 【Office】excel当前日期,下月日期
  2. 修改ansible hosts文件路径
  3. 选择好的企业网盘考量标准有哪些
  4. Androidproject师进阶之路 :《Android开发进阶:从小工到专家》上市啦!
  5. 他选歌太纠结了,有时临比赛开始的前一天才能
  6. Python爬虫工程师需要掌握哪些技术?
  7. 乐信2020校园招聘数据笔试题[试题整理]
  8. 爬取当当网的图书信息之导读
  9. 如何将PDF转换成SWF
  10. 某型无人机群的监视覆盖任务航路规划