C/C++简单计算器 2019年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析

2023-09-19 06:30:00

目录

C/C++简单计算器

一、题目要求

1、编程实现

2、输入输出

二、解题思路

1、案例分析

三、程序代码

四、程序说明

五、运行结果

六、考点分析


C/C++简单计算器

2019年12月 C/C++编程等级考试一级编程题

一、题目要求

1、编程实现

一个最简单的计算器,支持+, -, , / 四种运算。仅需考虑输入输出为整数的情况,数据和运算结果不会超过int表示的范围。

2、输入输出

输入描述:输入只有一行,共有三个参数,其中第1、2个参数为整数,第3个参数为操作符(+,-,*,/)。

输出描述:输出只有一行,一个整数,为运算结果。然而:

如果出现除数为0的情况,则输出:Divided by zero!

如果出现无效的操作符(即不为 +, -, *, / 之一),则输出:Invalid operator!

输入样例:

1 2 +

输出样例:

3

二、解题思路

1、案例分析

  1. 从给定题目的初步分析可以看出,首先需要从键盘获取2个整数和一个字符
  2. 可以使用int和char类型进行变量的声明,用来保存键盘输入的数据
  3. 然后可以通过多分支if...elif...else语句进行四则运算
  4. 也可以通过switch case语句进行处理,以上两种方式都可以
  5. 小兔子老师这里采用的是switch case语句,处理起来相对更方便点
  6. 根据输入的操作符进行判断,加减乘比较简单,在除的时候需要判断除数是否为0的情况
  7. 如果是0则按要求输出除数不能为0,如果不是0的时候还需要将a和b其中一个值转化为小数,可以使用强制类型转化也可以直接乘以1.0
  8. 还需要判断输入的操作符不是加减乘除的时候需要输出无效字符

三、程序代码

#include<iostream> 
using namespace std;
int main()
{
	int a,b;
	char c;
	cin>>a>>b>>c;
	switch(c)
	{
		case '+':
			cout<<a+b;break;
		case '-':
			cout<<a-b;break;
		case '*':
			cout<<a*b;break;
		case '/':
			if(b==0)
			{
				cout<<"Divided by zero!";
			}
			else
			{
				cout<<a*1.0/b;
			}
			break;
		default:
			cout<<"Invalid operator!";
	}
	return 0;
}

四、程序说明

  1. 根据题目要求声明2个整形int变量和一个char变量
  2. 然后利用输入流对象cin,从键盘读取三个变量的值
  3. 接着对输入的字符利用switch语句,分4种情况进行相应的输出,每次case输出后都需要加上break语句,在碰到除法运算的时候时序像程序分析的第7步一样再次进行判断
  4. 同时最后需要有个default字句,用来规避无效的运算符

五、运行结果

1 2 +


3

六、考点分析

难度级别:容易,这题相对而言还是比较简单的,具体主要考查如下:

  1. 分析题目,找到解题思路
  2. 变量的声明和使用
  3. 输入流对象cin的使用,与流提取运算符 >>结合使用从键盘读取想要的数据
  4. switch case和if多分支语句的使用,在满足不同的条件执行不同的处理结果
  5. 除法运算(/):除号左右两边都是整数的时候返回结果也是整数,所以要正常除法运算需要将两边至少一边转化为小数才可以
  6. 输出流对象cout的使用,与流插入运算符 << 结合使用将对象输出到终端显示
  7. 充分掌握变量定义和使用、多分支语句、除法运算和简单算法知识的使用及输入输出的用法

PS:方式方法有多种,小朋友们只要能够达到题目要求即可!

更多推荐

【结构体类型——详细讲解】

结构体1.结构体类型声明1.1结构体的概念结构体是⼀些值的集合,这些值称为成员变量。结构体的每个成员可以是不同类型的变量。1.2结构的声明structtag{member-list;}variable-list;例如描述⼀个学⽣:structStu{charname[20];//名字intage;//年龄charsex

【数据结构-树】AVL树

💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。推荐:kuan的首页,持续学习,不断总结,共同进步,活到老学到老导航檀越剑指大厂系列:全面总结java核心技术点,如集合,jvm,并发编程redis,kaf

Linux--信号量

一、信号量信号量(semaphore)与已经介绍过的IPC结构不同,他是一个计数器。用于实现进程间的互斥与同步,而不是用于存储进程间的通信数据。可以与共享内存配合使用。临界资源:多道程序系统种存在许多进程,他们共享各种资源,然而有很多资源一次智能供一个进程使用。一次仅允许一个进程使用的资源称为临界资源。许多物理设备都属

决策树案例分析

决策树(DecisionTree)常用于研究类别归属和预测关系的模型,比如是否抽烟、是否喝酒、年龄、体重等4项个人特征可能会影响到‘是否患癌症’,上述4项个人特征称作‘特征’,也即自变量(影响因素X),‘是否患癌症’称为‘标签’,也即因变量(被影响项Y)。决策树模型时,其可首先对年龄进行划分,比如以70岁为界,年龄大于

AI与传统数据库 - ChatGPT风过之后 | 从Duet AI说开来

作者:NiDemai,是NineData数据库产品专家,曾任阿里云数据库国际产品总负责人,华为高斯GaussDB创始团队核心架构师,IBMDb2资深研发工程师。Demai专注Cloud-Nativedatabase架构设计,分析型MPP,企业数据库开发及生态,并且积极参与开源社区建立和发展。OpenAI的突破震撼整个市

用青龙面板实现阿里云盘每日签到

什么是青龙面板?青龙面板是支持Python3、JavaScript、Shell、Typescript的定时任务管理平台。青龙面板从功能上看,和群晖的计划任务很像,都可以定时执行一个任务,并发送通知,只是青龙面板更强大一些。安装在群晖上以Docker方式安装。在注册表中搜索whyour,选择第一个whyour/qingl

迅为iTOP-RK3568开发板Sobel 算子边缘检测

本小节代码在配套资料“iTOP-3568开发板\03_【iTOP-RK3568开发板】指南教程\04_OpenCV开发配套资料\32”目录下,如下图所示:Sobel(索贝尔)算子是计算机视觉领域的一种重要处理方法。主要用于获得数字图像的一阶梯度,常见的应用和物理意义是边缘检测。索贝尔算子把图像中每个像素的上下左右四领域

【数据结构】顺序表与ArrayList

作者主页:paperjie的博客本文作者:大家好,我是paperjie,感谢你阅读本文,欢迎一建三连哦。本文录入于《JAVA数据结构》专栏,本专栏是针对于大学生,编程小白精心打造的。笔者用重金(时间和精力)打造,将javaSE基础知识一网打尽,希望可以帮到读者们哦。其他专栏:《算法详解》《C语言》《javaSE》等内容

基于TensorFlow+CNN+协同过滤算法的智能电影推荐系统——深度学习算法应用(含微信小程序、ipynb工程源码)+MovieLens数据集(七)

目录前言总体设计系统整体结构图系统流程图运行环境模块实现1.模型训练1)数据集分析2)数据预处理3)模型创建4)模型训练5)获取特征矩阵2.后端Django3.前端微信小程序1)小程序全局配置文件2)推荐电影页面3)个人信息界面以及用户登录记录页面系统测试1.模型损失曲线2.测试效果相关其它博客工程源代码下载其它资料下

让机器人飞入寻常百姓家丨青源Workshop「人形机器人」观点集锦

人形机器人并非新事物,早在上世纪70年代,日本早稻田大学加藤一郎就带领团队研发出世界上第一台人形智能机器人——WABOT-1。而去年马斯克Optimus的发布,也对“机器人热”再度推波助澜。人形机器人领域的发展,需要软件和硬件的共同迭代和优化,同时相比于无人驾驶,人形机器人涉及更加复杂的真实世界多模态环境。机器人技术依

Cpp/Qt-day020918Qt

目录完善登录框点击登录按钮后,判断账号(admin)和密码(123456)是否一致,如果匹配失败,则弹出错误对话框,文本内容“账号密码不匹配,是否重新登录”,给定两个按钮ok和cancel,点击ok后,会清除密码框中的内容,继续进行登录;如果点击cancel按钮,则关闭界面。如果账号和密码匹配,则弹出信息对话框,给出提

热文推荐