c语言计算器

news/2025/1/15 16:49:42/

c语言计算器两种方法

//一般做法
#include<stdio.h>
#include<windows.h>
//#include<assert.h>
void menu()
{printf("**************************\n");printf("****欢迎来到计算器页面****\n");printf("**** 1.add    2.mul  *****\n");printf("*****3.sub    4.div1 *****\n");printf("*****0.exit          *****\n");printf("**************************\n");
}int add(int x, int y)
{return x + y;
}int mul(int x, int y)
{return x * y;
}int sub(int x, int y)
{return x - y;
}int div1(int x, int y)
{return x / y;
}int main()
{int n = 1;menu();while (n){printf("请输入选项:\n");scanf("%d", &n);int x = 0, y = 0;/*printf("请输入两个整数!\n");scanf("%d%d", &x, &y);*/    //若将两个数字输入放在此处会出现输入错误时不能退出系统,而是显示“输入两个整数”的提示switch (n){case 1:printf("请输入两个整数!\n");scanf("%d%d", &x, &y);printf("%d\n", add(x, y));break;case 2:printf("请输入两个整数!\n");scanf("%d%d", &x, &y);printf("%d\n", mul(x, y));break;case 3:printf("请输入两个整数!\n");scanf("%d%d", &x, &y);printf("%d\n", sub(x, y));break;case 4:printf("请输入两个整数!\n");scanf("%d%d", &x, &y);printf("%d\n", div1(x, y));break;case 0:printf("退出计算器!\n");break;default:printf("输入错误,请重新输入!\n");}}
}


//使用函数指针数组解决计算器问题#include<stdio.h>
#include<windows.h>
//#include<assert.h>void menu()
{printf("**************************\n");printf("****欢迎来到计算器页面****\n");printf("**** 1.add    2.mul  *****\n");printf("*****3.sub    4.div1 *****\n");printf("*****0.exit          *****\n");printf("**************************\n");
}int add(int x, int y)
{return x + y;
}int mul(int x, int y)
{return x * y;
}int sub(int x, int y)
{return x - y;
}int div1(int x, int y)
{return x / y;
}int main()
{int n = 1;menu();while (n){printf("请输入选项:\n");scanf("%d", &n);int(*arr[5])() = { 0,add,mul,sub,div1 };//转移表//定义一个函数指针数组,存放函数地址if (n >= 0 && n < 5){int x = 0, y = 0;printf("请输入两个整数:>\n");scanf("%d%d", &x, &y);printf("%d\n", (*arr[n])(x,y));//输出结果}else{printf("输入有误,请重新输入!\n");scanf("%d", &n);}}system("pause");return 0;
}
两种方法相比,第一种相似代码较多,比较冗余;第二种代码简洁直观,程序效率高。

http://www.ppmy.cn/news/231635.html

相关文章

C语言 基础版计算器加减乘除

#include<stdio.h> void tips(){ printf(“\n"); printf("计算器\n"); printf(“请输入一种算法\n”); printf("\n"); printf("by&#xff1a;兴\n"); printf("**********\n”); } int add(data1,data2){ int z; z data1data2;…

C语言(商品价格计算)

#include"stdio.h" struct shop { char name[20]; //定义结构体&#xff0c;包括商品名称、单价、数量、总价 int price; int sum; int total; }shop[4]; void main() { struct shop temp; int i,j; int total0; for(i1;i<4;i) …

【c语言】新概念(bushi) Water Article 多功能计算器的数学

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、常规思路解出大概模型1.菜单打印2.运算函数的书写3.主函数 二、优化、修改与补充1.对主函数内部进行修改2.调整 总结 前言 我通过学习一段时间的c语言&…

C++11 使用using定义别名(替代typedef)::作用域运算符

typedef 一切合法的变量的定义可以转换为类型 typedef unsigned int uint_t;示例如下&#xff1a; 使用 typedef 重定义类型是很方便的&#xff0c;但它也有一些限制&#xff0c;比如&#xff0c;无法重定义一个模板。 现在&#xff0c;在 C11 中终于出现了可以重定义一个模…

Nvidia 的新显卡架构 Maxwell 性能相比开普勒提升了多少?

作者&#xff1a;喵西和熊 链接&#xff1a;https://www.zhihu.com/question/22630075/answer/29041618 来源&#xff1a;知乎 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 现在Nvidia的节奏基本上是一个结构用两年。类似于intel的钟摆计…

ADV8005

ADV8005 ADV8005是一个视频信号处理器&#xff08;VSP&#xff09;&#xff0c;具有TTL和串行视频输入&#xff0c;能对输入视频做做去隔行处理&#xff0c;能产生和融合一个位图形成OSD&#xff0c;具有双HDMI输出、支持SD和HD的6-DAC编码器输出。 1&#xff0e;特点 l 视…

非专业游戏CPU多核性能研究

作为一个专业web后端开发&#xff0c;非常业余游戏爱好者&#xff0c;普通硬件退烧者&#xff0c;虽然对游戏研发一窍不通&#xff0c;想对游戏性能的问题探讨下。 游戏性能与多核CPU的疑问 第一个问题&#xff0c;近几年为什么游戏主旋律都在GPU的选择上&#xff0c;而往往都是…

差之毫厘谬之千里!带你认识CPU后缀含义

intel的几代CPU中&#xff0c;后缀字母主要有以下几种&#xff1a; M&#xff1a;笔记本专用CPU&#xff0c;一般为双核&#xff0c;M前面一位数字是0&#xff0c;意味着是标准电压处理器&#xff0c;如果是7&#xff0c;则是低电压处理器。 U&#xff1a;笔记本专用低电压CPU&…