【C语言】用C语言写一个计算器

1.描述

程序是一个简单的计算器,能正确输入数据,能实现加、 减、乘、除等算术运算,能进行简单三角运算,运算结果 能正确显示,可以清楚数据等。
本程序涉及的所有数学知识都很简单,但输入过程也很简单。

2.实现逻辑

1.先让屏幕打印一个菜单
2.实现加法运算
3.实现减法运算
4.实现乘法运算
5.实现除法运算
6.退出计算器
本文只是只是写最基础的运算,可以在这基础上加上其他的一些运算,比如异或,按位与,按位或…

3.代码展示

完整代码:

void menu()
{
	printf("*************************\n");
	printf("*******   1.add   *******\n");
	printf("*******   2.sub   *******\n");
	printf("*******   3.mul   *******\n");
	printf("*******   4.div   *******\n");
	printf("*************************\n");
}
int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}
int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("输入操作数:");
			scanf("%d %d", &x, &y);
			ret = add(x, y);
			printf("ret = %d\n", ret);
			break;
		case 2:
			printf("输入操作数:");
			scanf("%d %d", &x, &y);
			ret = sub(x, y);
			printf("ret = %d\n", ret);
			break;
		case 3:
			printf("输入操作数:");
			scanf("%d %d", &x, &y);
			ret = mul(x, y);
			printf("ret = %d\n", ret);
			break;
		case 4:
			printf("输入操作数:");
			scanf("%d %d", &x, &y);
			ret = div(x, y);
			printf("ret = %d\n", ret);
			break;
		case 0:
			printf("退出程序\n");
			break;
		default:
			printf("选择错误\n");
			break;
		}
	} while (input);
	return 0;
}

运算结果:
在这里插入图片描述

4.简化代码

上面的代码可以实现基本的运算了,但是要是想要在上面加上其他的运算,就要在switch增加一个case,要是写很多运算,那么程序就显得很繁琐。
所以避免代码冗余,把代码改整一下,更加简洁,更加方便。
创建一个函数指针数组,把运算部分的函数名写进去,只要运用就会转到这个函数,也叫转义表。

void menu()
{
	printf("*************************\n");
	printf("*******   1.add   *******\n");
	printf("*******   2.sub   *******\n");
	printf("*******   3.mul   *******\n");
	printf("*******   4.div   *******\n");
	printf("*************************\n");
}
int add(int a, int b)
{
	return a + b;
}
int sub(int a, int b)
{
	return a - b;
}
int mul(int a, int b)
{
	return a * b;
}
int div(int a, int b)
{
	return a / b;
}
int main()
{
	int x, y;
	int input = 1;
	int ret = 0;
	int (*pr[5])(int, int) = { 0,add,sub,mul,div };//pr是一个函数指针的数组,也叫转义表
	do
	{
		menu();
		printf("请选择:");
		scanf("%d", &input);
		if (input == 0)
		{
			printf("退出计算器\n");
			break;
		}
		if (input >= 1 && input <= 4)
		{
			printf("输入操作数:");
			scanf("%d %d", &x, &y);
			ret = pr[input](x, y);
			printf("ret = %d\n", ret);
		}
		else
		{
			printf("选择错误\n");
		}
		
	} while (input);
	return 0;
}

运算结果:
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值