write in front 大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流
2021年度博客之星物联网与嵌入式开发TOP5~2021博客之星Top100~阿里云专家^星级博主~掘金 ? InfoQ创作者~周榜77?总榜2226
本文由 謓泽 原创 CSDN首发如需转载还请通知?
个人主页:打打酱油desuCSDN博客
欢迎各位→点赞 + 收藏?? + 留言?
系列专栏:【C】系列_打打酱油desu-CSDN博客YY_謓泽的博客-CSDN博客【C】系列_打打酱油desu-CSDN博客[〇~①]
??我们并非登上我们所选择的舞台,演出并非我们所选择的剧本
文章图片
计算器の目录
write in front
实现逻辑
普通代码实现
高级代码实现
运行结果
最后
【YY|【C语言】计算器】
文章图片
实现逻辑
首先创建菜单(menu),把我们需要实现的功能打印到运行栏屏幕上。普通代码实现
1、实现加法计算
2、实现减法计算
3、实现除法计算
4、实现乘法计算
0、退出计算器
当然以上都是属于最基本的计算,你当然还可以实现一些其它计算。例如:
位运算(按位与、按位或、按位异或)
左移操作符、右移操作符、取模、开平方等...
由于道理都是一样的只是 return 返回值就可以了在这里不再多述,也有些可以使用库函数直接引用即可像sqrt()、pow()等......
计算器?の普通代码实现如下?
#define _CRT_SECURE_NO_WARNINGS 1
#include
void menu()
{
printf("|-------- 计算器 --------|\n");
printf("|-------★ 1.Add ★------|\n");
printf("|-------★ 2.Sub ★------|\n");
printf("|-------★ 3.Mul ★------|\n");
printf("|-------★ 4.Div ★------|\n");
printf("|-------★ 0.Exit★------|\n");
}
double Add(double x, double y)
{
return x + y;
}
double Sub(double x, double y)
{
return x - y;
}
double Mul(double x, double y)
{
return x * y;
}
double Div(double x, double y)
{
return x / y;
}
int main(void)
{
menu();
double x = 0.0;
double y = 0.0;
double ret = 0.0;
int input = 0;
do
{
printf("请输入菜单界面(input):");
scanf("%d", &input);
if (input == 0)
{
printf("退出Exit!\n");
break;
}
switch (input)
{
case 1:
printf("请输入两个数字:");
scanf("%lf %lf", &x, &y);
ret = Add(x, y);
printf("ret = %.2lf\n", ret);
break;
case 2:
printf("请输入两个数字:");
scanf("%lf %lf", &x, &y);
ret = Sub(x, y);
printf("ret = %.2lf\n", ret);
break;
case 3:
printf("请输入两个数字:");
scanf("%lf %lf", &x, &y);
ret = Mul(x, y);
printf("ret = %.2lf\n", ret);
break;
case 4:
printf("请输入两个数字:");
scanf("%lf %lf", &x, &y);
ret = Div(x, y);
printf("ret = %.2lf\n", ret);
break;
default:
printf("你输入的数字错误,请重新输入!\n");
}
} while (1);
return 0;
}
高级代码实现
计算器?の高级代码实现如下?
#define _CRT_SECURE_NO_WARNINGS 1
#include
void menu()
{
printf("|-------- 计算器 --------|\n");
printf("|-------★ 1.Add ★------|\n");
printf("|-------★ 2.Sub ★------|\n");
printf("|-------★ 3.Mul ★------|\n");
printf("|-------★ 4.Div ★------|\n");
printf("|-------★ 0.Exit★------|\n");
}
double Add(double x, double y)
{
return x + y;
}
double Sub(double x, double y)
{
return x - y;
}
double Mul(double x, double y)
{
return x * y;
}
double Div(double x, double y)
{
return x / y;
}
int main(void)
{
menu();
double(*p[5])(double, double) = { NULL, Add, Sub, Mul, Div };
//函数指针数组!
int input = 0;
do
{
printf("请输入菜单界面上数字:");
scanf("%d", &input);
if (input >= 1 && input <= 4)
{
double x = 0.0, y = 0.0;
printf("请输入两个数字:");
scanf("%lf %lf", &x, &y);
double ret = (*p[input])(x, y);
//下标引用
printf("ret = %.2lf\n", ret);
printf("-------\n");
}
else if (input == 0)
{
printf("Exit退出\n");
break;
}
else
{
printf("你输入数字不在范围之内,请重新输入!\n");
}
} while (input);
return 0;
}
运行结果
加法运行结果↓
文章图片
减法运行结果↓
文章图片
乘法运行结果↓
文章图片
除法运行结果↓
文章图片
退出exit↓
文章图片
输入错误↓
文章图片
最后
实现C语言这种计算器简易的是比较容易的,在这里我们使用的普通代码和高级代码的实现本计算器初学者可能会用到普通代码的实现,但是如果你学过函数指针数组你就可以用这种高级代码的实现方法来做本题,不会指针或者不太了解可以看看博主写过的指针系列的文章如下所示↓
⒈?【C语言】万字速通初阶指针 zero → One_謓泽的博客-CSDN博客
⒉?【C语言】⒉万字带你玩转高阶指针『0?1』_謓泽的博客-CSDN博客
如果你这里,不用函数指针数组去实现实际上也可以,但是代码量会冗余。推荐使用函数指针的方法来进行实现,效率大大滴提高。
注意?这样写它的函数参数必须是统一的才可以。
看到这里了,点个赞吧
文章图片
推荐阅读
- C语言|C语言计算器代码(带有报告)
- C语言典例|【数据结构】二叉树--链式结构
- #|MATlab--建模篇
- MongoDB 分片规则
- 操作系统(王道考研)|2.7操作系统(读者—写者问题 哲学家进餐问题 管程 )
- CSC1001编程方法
- 稳定性建设系列文章3_全链路压测
- 经验分享|【经验分享】GPU CUDA 使用 memory padding 避免 bank conflict
- Android 开发笔记___初级控件之实战__计算器