文章目录

  • 口算练习题
    • 题目描述
    • 输入格式
    • 输出格式
    • 样例 #1
      • 样例输入 #1
      • 样例输出 #1
    • 提示
  • 题解:
  • 大佬的代码:

口算练习题

题目描述

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

输入格式

第一行为数值 iii

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

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

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

输出格式

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

样例 #1

样例输入 #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

提示

数据规模与约定

对于 50%50\%50% 的数据,输入的算式都有三个数据,第一个算式一定有三个数据。

对于所有数据,0<i≤500<i\leq 500<i≤50,运算数为非负整数且小于 100001000010000。


题解:

我将分为四部分求解:

  1. change函数:主要是数字转化为字符;
void change(int sum){int t=0,flag=0;if(sum<0){flag=1;sum=-sum;}while(sum/10!=0){d[t]=sum%10+'0';sum/=10;t++;}d[t]=sum+'0';t++;if(flag){d[t]='-';t++;d[t]='\0';}else {d[t]='\0';}
}
  1. exchange函数:将字符转化为整数;
void exchange(char *b){int k=0;b1=0;for(int i=strlen(b)-1;i>=0;i--){b1+=(b[i]-'0')*pow(10,k);k++;}
}
  1. compute函数:计算并输出;
void compute(char *b,char *c,char mark){exchange(b);int k=b1;exchange(c);int k1=b1;int sum=0;if(mark=='a'){sum=k+k1;}else if(mark=='b'){sum=k-k1;}else {sum=k*k1;}change(sum);cout<<b<<mark1[mark-'a']<<c<<"=";for(int i=strlen(d)-1;i>=0;i--){printf("%c",d[i]);}printf("\n");cout<<strlen(b)+strlen(c)+strlen(d)+2<<endl;
}
  1. main函数,式子的输入;
int main(){int n;cin>>n;int t=n;char mark;while(t--){cin>>a;if(a[0]<'0'||a[0]>'9'){mark=a[0];cin>>b;cin>>c;compute(b,c,mark);    }else{cin>>b;compute(a,b,mark);}
a[0]='\0';
b[0]='\0';
c[0]='\0';
d[0]='\0';
}
return 0;
}
#mermaid-svg-hHlbCJpquT0g1Tbs {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .error-icon{fill:#552222;}#mermaid-svg-hHlbCJpquT0g1Tbs .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-hHlbCJpquT0g1Tbs .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-hHlbCJpquT0g1Tbs .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-hHlbCJpquT0g1Tbs .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-hHlbCJpquT0g1Tbs .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-hHlbCJpquT0g1Tbs .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-hHlbCJpquT0g1Tbs .marker{fill:#333333;stroke:#333333;}#mermaid-svg-hHlbCJpquT0g1Tbs .marker.cross{stroke:#333333;}#mermaid-svg-hHlbCJpquT0g1Tbs svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-hHlbCJpquT0g1Tbs .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .cluster-label text{fill:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .cluster-label span{color:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .label text,#mermaid-svg-hHlbCJpquT0g1Tbs span{fill:#333;color:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .node rect,#mermaid-svg-hHlbCJpquT0g1Tbs .node circle,#mermaid-svg-hHlbCJpquT0g1Tbs .node ellipse,#mermaid-svg-hHlbCJpquT0g1Tbs .node polygon,#mermaid-svg-hHlbCJpquT0g1Tbs .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-hHlbCJpquT0g1Tbs .node .label{text-align:center;}#mermaid-svg-hHlbCJpquT0g1Tbs .node.clickable{cursor:pointer;}#mermaid-svg-hHlbCJpquT0g1Tbs .arrowheadPath{fill:#333333;}#mermaid-svg-hHlbCJpquT0g1Tbs .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-hHlbCJpquT0g1Tbs .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-hHlbCJpquT0g1Tbs .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-hHlbCJpquT0g1Tbs .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-hHlbCJpquT0g1Tbs .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-hHlbCJpquT0g1Tbs .cluster text{fill:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs .cluster span{color:#333;}#mermaid-svg-hHlbCJpquT0g1Tbs div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-hHlbCJpquT0g1Tbs :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

转化字符到整数
input
导入compute函数
转化整数到字符
exchange函数
compute函数
stdin
main函数
change函数
output
#include<iostream>
#include<cstring>
#include<cmath>
using namespace std;
char a[100],b[100],c[100],d[100],mark1[4]={"+-*"};
int b1=0;
void change(int sum){int t=0,flag=0;if(sum<0){flag=1;sum=-sum;}while(sum/10!=0){d[t]=sum%10+'0';sum/=10;t++;}d[t]=sum+'0';t++;if(flag){d[t]='-';t++;d[t]='\0';}else {d[t]='\0';}
}
void exchange(char *b){int k=0;b1=0;for(int i=strlen(b)-1;i>=0;i--){b1+=(b[i]-'0')*pow(10,k);k++;}
}
void compute(char *b,char *c,char mark){exchange(b);int k=b1;exchange(c);int k1=b1;int sum=0;if(mark=='a'){sum=k+k1;}else if(mark=='b'){sum=k-k1;}else {sum=k*k1;}change(sum);cout<<b<<mark1[mark-'a']<<c<<"=";for(int i=strlen(d)-1;i>=0;i--){printf("%c",d[i]);}printf("\n");cout<<strlen(b)+strlen(c)+strlen(d)+2<<endl;
}int main(){int n;cin>>n;int t=n;char mark;while(t--){cin>>a;if(a[0]<'0'||a[0]>'9'){mark=a[0];cin>>b;cin>>c;compute(b,c,mark);  }else{cin>>b;compute(a,b,mark);}
a[0]='\0';
b[0]='\0';
c[0]='\0';
d[0]='\0';
}
return 0;
}

大佬的代码:

同样他是采用sscanf,sprintf方法将字符转整数;

#mermaid-svg-ySHkbdZVUsX1dxZJ {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .error-icon{fill:#552222;}#mermaid-svg-ySHkbdZVUsX1dxZJ .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edge-thickness-normal{stroke-width:2px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ySHkbdZVUsX1dxZJ .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .marker.cross{stroke:#333333;}#mermaid-svg-ySHkbdZVUsX1dxZJ svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .cluster-label text{fill:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .cluster-label span{color:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .label text,#mermaid-svg-ySHkbdZVUsX1dxZJ span{fill:#333;color:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .node rect,#mermaid-svg-ySHkbdZVUsX1dxZJ .node circle,#mermaid-svg-ySHkbdZVUsX1dxZJ .node ellipse,#mermaid-svg-ySHkbdZVUsX1dxZJ .node polygon,#mermaid-svg-ySHkbdZVUsX1dxZJ .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .node .label{text-align:center;}#mermaid-svg-ySHkbdZVUsX1dxZJ .node.clickable{cursor:pointer;}#mermaid-svg-ySHkbdZVUsX1dxZJ .arrowheadPath{fill:#333333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edgeLabel{background-color:#e8e8e8;text-align:center;}#mermaid-svg-ySHkbdZVUsX1dxZJ .edgeLabel rect{opacity:0.5;background-color:#e8e8e8;fill:#e8e8e8;}#mermaid-svg-ySHkbdZVUsX1dxZJ .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ySHkbdZVUsX1dxZJ .cluster text{fill:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ .cluster span{color:#333;}#mermaid-svg-ySHkbdZVUsX1dxZJ div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ySHkbdZVUsX1dxZJ :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}

input:字符变整形
整数变字符型
stdin
sscanf
sprintf
output

#include<iostream>
#include<cstring>
#include<cstdio>
using namespace std;
int main(){int n;char a;int c,d;char b[100],s[100];cin>>n;for(int i=0;i<n;i++){cin>>b;if(b[0]<'0'||b[0]>'9'){a=b[0];cin>>c>>d;}    else{sscanf(b,"%d",&c);//将b转化为c的int型;cin>>d; }memset(s,0,sizeof(s));if(a=='a'){sprintf(s,"%d+%d=%d",c,d,c+d);}else if(a=='b'){sprintf(s,"%d-%d=%d",c,d,c-d);}else{sprintf(s,"%d*%d=%d",c,d,c*d);}cout<<s<<endl<<strlen(s)<<endl;}
}

两种方法解决口算练习题相关推荐

  1. qmenu只在鼠标单击时消失_两种方法解决win10电脑无法使用无线鼠标问题

    使用有线鼠标时用户们是否也都会被那条线控制住,有时需要大范围移动时并不行,现在很多用户都会选择使用无线鼠标,因为可以随意移动使用更加方便.但是在使用中也有用户遇到了麻烦,使用win10连接鼠标后无法使 ...

  2. cf服务器断开连接出现信息有误,CF与服务器断开连接是什么原因?两种方法解决...

    穿越火线每次玩到高分的时候游戏就会被提示:"网络出现异常,与服务器断开连接"的情况,怎么解决? 方法步骤: 第一种方法: 1.在电脑上下载安装360安全卫士,接着在主界面中找到工具 ...

  3. python两种方法解决线程冲突问题

    本博文源于python基础炫酷技能,主要讲述python的线程的问题.大家学到多线程的时候只要搞明白两种东西即可,第一线程通信,另一个叫做线程冲突.本博文就以一种打印数字的方法浅析线程冲突的解决方案! ...

  4. prim算法求最小生成树_最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

  5. 最小生成树的两种方法(Kruskal算法和Prim算法)

    关于图的几个概念定义: 连通图:在无向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该无向图为连通图. 强连通图:在有向图中,若任意两个顶点vivi与vjvj都有路径相通,则称该有向图为强连 ...

  6. 用两种方法求解九宫算问题

    问题: 在一个3*3的方格内填入9个数字,数字的范围从1~9,每个数字仅出现一次,使得每行.每列以及两个对角线的数字之和为15.  一.VBA程序 算法思路: 1.将9个数字分成3组,每组3个数字,使 ...

  7. 两种方法解决pip、conda安装库时慢的问题

    方法一: 直接用国内的源,比如清华源,但清华源有时不太好用,我现在大都用百度源 pip install 库名称 -i https://mirror.baidu.com/pypi/simple 方法二: ...

  8. oracle 0.5格式问题,两种方法解决Oracle的数值0.5只显示成.5问题

    Oracle对数值0.n转换成char类型的时候会自动忽略前面的0(原因好像是为了节省空间0.5保存到数据库为.5).例如: SQL> SELECT to_char(0.5) FROM DUAL ...

  9. 两种方法解决腾讯会议独立显卡占用高的问题

    适用场景:只参与会议,观看他人屏幕共享. 方法一: 如果是英伟达独立显卡: ①打开 "NVIDIA控制面板" ②打开 "管理3D设置" ③添加 "腾讯 ...

最新文章

  1. 深度分析Java的枚举类型——枚举的线程安全性及序列化问题
  2. 使用PostMan工具测试spring boot接口的若干请求参数形式
  3. java原生类型没有封装_Java基本数据类型与封装类型详解(int和Integer区别)
  4. 2007年3月东北微软技术活动预告
  5. 如何利用阿里云安全产品加强你的网站防护能力
  6. 隐马尔可夫(HMM)、前/后向算法、Viterbi算法
  7. http://blog.csdn.net/churximi/article/details/61210129
  8. 联想电脑怎么进入Android,联想电脑怎么连接手机
  9. AS3 in FlashDevelop
  10. vue 如何生成一个dom元素_通过一个简单的示例学习如何编写Vue组件
  11. 项上的温柔,冬季围巾8大打法图解(组图)
  12. nginx 过滤post报文 防火墙_详解nginx限制IP恶意调用短信接口处理方法
  13. windows XP系统内核文件分析精简系统很有好处
  14. 智能指针是一种类,别名称为句柄类
  15. MATLAB 线性拟合
  16. monocle安装不成功 想尽各种办法
  17. Linux报错:Syntax error: “(“ unexpected解决办法,elf
  18. 来看看中国计算机视觉行业发展有什么动态?
  19. 【SPSS】基础图形的绘制(条形图、折线图、饼图、箱图)详细操作过程
  20. Chopper: Partitioning Models into 3D-Printable Parts论文笔记

热门文章

  1. gitlab用户邮箱验证的坑
  2. JavaScript制作留言板
  3. 麦咖啡McAfee的规则设置
  4. 当ie浏览器无法上网时
  5. 对口升学计算机学校录取分,中职对口升学本科第一批院校录取分数线划定
  6. 亚马逊视频下载用什么工具:试试专业亚马逊视频下载器-Tuneboto Amazon Video Downloader中文版 | 亚马逊上的视频怎么下载?
  7. python中模块文件的扩展名不一定是py_跟老齐学Python之Import 模块
  8. 择时策略1:一个金叉死叉(python)
  9. 无线AP与AC以及STA的区别
  10. 数字内容市场水量上涨,阜博集团能否成为“鲶鱼”?