大家好,欢迎来到IT知识分享网。
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
- 介绍
- 关键代码
- 运行代码(3种)
介绍
- 标准计数器:执行加减乘除等等
- 科学计算器:执行分数、统计学、指数函数、对数、三角函数运算等等
- 程序员计算器:用于二进制,八进制,十进制,十六进制等相互转换功能
二、关键代码
1、加、减、乘、除的函数调用。
2、
1、运用do…while进行计算器是否运行。再用switch…case.default选择加还是减或者乘、除。
do
{
menu();
printf(“请选择:>”);
scanf(“%d”, &input);
switch (input)
{
case 0:
printf(“退出计算器:\n”);
break;
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);
Mlu(x, y);
break;
case 4:
printf(“除法:”);
scanf(“%d %d”, &x, &y);
Div(x, y);
break;
default:
printf(“请重新输入:\n”);
break;
}
} while (input);
2、Add、Sub、Mlu和Div中有相同的代码,本着优秀代码利用函数指针数组可进行优化、简单、明了,再运用if…else if…else进行判断是否退出、或者进行计算。
printf(“请选择:>”);
scanf(“%d”, &input);
int(*pfArr[5])(int, int) = { Add,Sub,Mlu,Div };if (input > 0 && input < 5)
{
printf(“请输入二个数:”);
scanf(“%d %d”, &x, &y);
pfArr[input](x, y);
}
else if (input == 0)
{
printf(“退出计算器:\n”);
}
else
printf(“请重新输入:”);
3、运用回调函数进行优化。根据input进行选择计算器中加、减、乘、除,然后传给函数指针pf
,再输入二个要计算的数,再回归Add、Sub、Mlu、Div函数里进行运算。
void Calc(int(* pf)(int, int))
{
int x = 0, y = 0;
printf(“请输入二个数:”);
scanf(“%d %d”, &x, &y);
pf(x, y);
}
switch (input)
{
case 0:
printf(“退出计算器:\n”);
break;
case 1:
Calc(Add);
break;
case 2:
Calc(Sub);
break;
case 3:
Calc(Mlu);
break;
case 4:
Calc(Div);
break;
default:
printf(“请重新输入:\n”);
break;
}
运行代码
#define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> void Add(int x, int y) { printf("sum=%d\n", x + y); } void Sub(int x, int y) { printf("sum=%d\n", x - y); } void Mlu(int x, int y) { printf("sum=%d\n", x * y); } void Div(int x, int y) { printf("sum=%d\n", x / y); } void menu() { printf("*\n"); printf(" 1.Add 2.Sub \n"); printf(" 3.Mlu 4.Div \n"); printf(" play.jsq \n"); printf("*\n"); } //方法一: int main() { int x = 0, y = 0; int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 0: printf("退出计算器:\n"); break; 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); Mlu(x, y); break; case 4: printf("除法:"); scanf("%d %d", &x, &y); Div(x, y); break; default: printf("请重新输入:\n"); break; } } while (input); return 0; } 方法二 int main() { int x = 0,y = 0; int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); int(*pfArr[5])(int, int) = { Add,Sub,Mlu,Div }; if (input > 0 && input < 5) { printf("请输入二个数:"); scanf("%d %d", &x, &y); pfArr[input](x, y); } else if (input == 0) { printf("退出计算器:\n"); } else printf("请重新输入:"); } while (input); return 0; } 方法三 void Calc(int(* pf)(int, int)) { int x = 0, y = 0; printf("请输入二个数:"); scanf("%d %d", &x, &y); pf(x, y); } int main() { int input = 0; do { menu(); printf("请选择:>"); scanf("%d", &input); switch (input) { case 0: printf("退出计算器:\n"); break; case 1: Calc(Add); break; case 2: Calc(Sub); break; case 3: Calc(Mlu); break; case 4: Calc(Div); break; default: printf("请重新输入:\n"); break; } } while (input); return 0; }
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/130204.html