当前位置: 首页 > news >正文

网站导航设计欣赏宁夏建设工程造价网站

网站导航设计欣赏,宁夏建设工程造价网站,专业网站建设市场分析,企业门户网站国内外研究现状个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客 前期思路(菜单的制作等):利用C语言的分支循环少量的函数知识写一个猜数字的小游戏-CSDN博客 计算器的制作其实与游…

个人主页(找往期文章包括但不限于本期文章中不懂的知识点): 我要学编程(ಥ_ಥ)-CSDN博客

 前期思路(菜单的制作等):利用C语言的分支循环少量的函数知识写一个猜数字的小游戏-CSDN博客

计算器的制作其实与游戏没有很大的区别。

#include <stdio.h>
void Add(int x, int y)//加法
{printf("%d\n", x + y);
}void Sub(int x, int y)//减法
{printf("%d\n", x - y);
}void Mul(int x, int y)//乘法
{printf("%d\n", x * y);
}void Div(int x, int y)//除法
{printf("%d\n", x / y);
}void menu()
{printf("****************************\n");printf("****    1.Add   2.Sub   ****\n");printf("****    3.Mul   4.Div   ****\n");printf("******    0.exit      ******\n");printf("****************************\n");
}int main()
{int input = 0;int x = 0;int y = 0;do{menu();printf("请输入您要进行的运算:");scanf("%d", &input);switch (input){case 1:printf("请输入要运算的数:");scanf("%d%d", &x, &y);Add(x,y);break;case 2:printf("请输入要运算的数:");scanf("%d%d", &x, &y);Sub(x, y);break;case 3:printf("请输入要运算的数:");scanf("%d%d", &x, &y);Mul(x, y);break;case 4:printf("请输入要运算的数:");scanf("%d%d", &x, &y);Div(x, y);break;case 0: printf("退出计算器\n");break;default: printf("输入错误,请重新输入:\n");break;}} while (input);return 0;
}

注意上述计算都是整数运算。

上面这个代码虽然能够达到我们想要的目的,但是我们会发现这个比较冗杂,特别是那个switch……case语句。那么我们有没有什么办法,使这个代码看上去简洁一点呢?这个就得用到函数指针数组的知识点(不知道的小伙伴可以去我的主页自取,指针第3篇),通过一个数组存放一些函数的地址,再间接来调用这些函数。

#include <stdio.h>
void Add(int x, int y)
{printf("%d\n", x + y);
}void Sub(int x, int y)
{printf("%d\n", x - y);
}void Mul(int x, int y)
{printf("%d\n", x * y);
}void Div(int x, int y)
{printf("%d\n", x / y);
}void menu()
{printf("****************************\n");printf("****    1.Add   2.Sub   ****\n");printf("****    3.Mul   4.Div   ****\n");printf("******    0.exit      ******\n");printf("****************************\n");
}int main()
{int input = 0;int x = 0;int y = 0;void (*p[5])(int, int) = { 0, Add, Sub, Mul, Div };//数组初始化,对应的运算do{menu();printf("请输入您要进行的运算:");scanf("%d", &input);printf("请输入要运算的数:");scanf("%d%d", &x, &y);switch (input){case 1:p[1](x, y);break;case 2:p[2](x, y);break;case 3:p[3](x, y);break;case 4:p[4](x, y);break;case 0: printf("退出计算器\n");break;default: printf("输入错误,请重新输入:\n");break;}} while (input);return 0;
}

这个代码去计算,确实是没问题。但是如果我们输入错误或者是想退出计算器,就显得有点别扭。 

输入错误了或者不想用了,还要我们输入运算数。 

怎么解决呢?其实只要我们限制输入的数就行了。

#include <stdio.h>
void Add(int x, int y)
{printf("%d\n", x + y);
}void Sub(int x, int y)
{printf("%d\n", x - y);
}void Mul(int x, int y)
{printf("%d\n", x * y);
}void Div(int x, int y)
{printf("%d\n", x / y);
}void menu()
{printf("****************************\n");printf("****    1.Add   2.Sub   ****\n");printf("****    3.Mul   4.Div   ****\n");printf("******    0.exit      ******\n");printf("****************************\n");
}int main()
{int input = 0;int x = 0;int y = 0;void (*p[5])(int, int) = { 0, Add, Sub, Mul, Div };do{menu();printf("请输入您要进行的运算:");scanf("%d", &input);if ((input >= 1) && (input <= 4))//switch语句在此处用不了{printf("请输入要运算的数:");scanf("%d%d", &x, &y);p[input](x,y);}else if (input == 0){printf("退出计算器\n");}else{printf("输入错误,请重新输入:\n");}} while (input);return 0;
}

如果把if语句写进switch语句中会导致if语句不执行。因为先执行的switch语句,就直接跳到case语句去了,不会理会if语句。 

当然这个也可以用函数调用的方法来写。

#include <stdio.h>
void Add(int x, int y)
{printf("%d\n", x + y);
}void Sub(int x, int y)
{printf("%d\n", x - y);
}void Mul(int x, int y)
{printf("%d\n", x * y);
}void Div(int x, int y)
{printf("%d\n", x / y);
}void menu()
{printf("****************************\n");printf("****    1.Add   2.Sub   ****\n");printf("****    3.Mul   4.Div   ****\n");printf("******    0.exit      ******\n");printf("****************************\n");
}void calc(void(*p)(int, int))
{printf("请输入要运算的数:");int x = 0;int y = 0;scanf("%d%d", &x, &y);p(x, y);}int main()
{int input = 0;int x = 0;int y = 0;do{menu();printf("请输入您要进行的运算:");scanf("%d", &input);switch (input){case 1:calc(Add);break;case 2:calc(Sub);break;case 3:calc(Mul);break;case 4:calc(Div);break;case 0: printf("退出计算器\n");break;default: printf("输入错误,请重新输入:\n");break;}} while (input);return 0;
}

http://www.yayakq.cn/news/752057/

相关文章:

  • 遵义网上办事大厅广州网站优化效果
  • 家庭农场网站建设qq炫舞做浴缸的网站
  • 炫彩发光字制作网站wordpress 无插件主题
  • 专业做招聘网站旅行社网站开发 论文
  • 哪个建站比较好wordpress 本地ajax
  • 石家庄专业做网站公司建设营销型网站哪家好
  • 房地产销售平台网站建设网站功能描述书须包含哪些内容
  • 泰安网站建设如何网站开发工程论坛
  • 制作网站图片不显示c在线编程网站
  • 上饶做网站的公司wordpress 调用二级分类
  • 博客网站推荐唐山市路桥建设有限公司网站
  • layui响应式网站开发教程湟中网站建设
  • 已有网站怎么修改布恩网站删除
  • 广州大型网站设计公司哈尔滨住房和城乡建设局
  • 网站优化及推广公司大学网站设计
  • 搜索各大网站百度下载应用
  • 酒店网站建设的优点长沙网红小吃
  • 哪个网站可以改字体网站上线后
  • 公司网站建设费入哪个科目网站建设技术质量指标
  • 手机怎么搭建网站找人帮忙做网站
  • 深圳建站费用公司图标大全
  • 合肥专业商业网站产品优化是什么意思
  • 网站制作方案有哪些wordpress个人站主题
  • 怎样做不用备案的网站理聪网营销型网站建设
  • 网站后台建设wordpress 不能提交评论
  • 南昌做网站网络营销网站 优帮云
  • 济南川芎网站建设app开发公司
  • 济源市建设管理处网站网站做什么内容
  • 专注做动漫的门户网站做网站如何收益
  • 化妆品网站做的好的苏州建设职业培训中心