Bootstrap

C语言实现简易计算器

通过C语言实现一个简易的计算器

计算器可实现加减乘除等一系列运算

方法一:

       1.程序总体使用switch语句实现多分支选择

switch (input)
{

	case 1:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Add(x, y);  
		break;
	case 2:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Sub(x, y);
		break;
	case 3:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Mul(x, y);
		break;
	case 4:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Div(x, y);
		break;
	case 0:
		printf("退出程序\n");
		break;
	default:
		printf("输入错误\n");
		break;
}

        2.可以给做一个简单的菜单,写一个menu函数

void menu()
{
	printf("************************************\n");
	printf("****      1.Add         2.Sub   ****\n");
    printf("****      3.Mul         4.Div   ****\n");
    printf("****            0.退出          ****\n");
	printf("************************************\n");
}

       3.加减乘除功能分别单独写一个函数

void Add(int x,int y)     //函数不需要返回值,此处用空类型
{
	printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{
	printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{
	printf("output=%d\n", x * y);
}
void Div(int x,int y)
{
	printf("output=%d\n", x / y);
}

总体代码实现如下:

#include<stdio.h>
void Add(int x,int y)
{
	printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{
	printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{
	printf("output=%d\n", x * y);
}
void Div(int x,int y)
{
	printf("output=%d\n", x / y);
}
int main()
{
	int input = 0;
	int x = 0;
	int y = 0;
	do
	{	
		menu();
		printf("请选择:>\n");
		scanf("%d", &input);
		switch (input)
{
	case 1:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Add(x, y);
		break;
	case 2:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Sub(x, y);
		break;
	case 3:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Mul(x, y);
		break;
	case 4:
		printf("请输入两个操作数\n");
		scanf("%d%d", &x, &y);
		Div(x, y);
		break;
	case 0:
		printf("退出程序\n");
		break;
	default:
		printf("输入错误\n");
		break;
}
	} while (input);
}

这种方法当计算器实现的功能变多的时,switch里面会比较繁杂,可使用方法二来优化

方法2:创建一个函数指针数组来存放各个函数的地址,通过函数指针数组来访问这些函数

1.函数指针数组创建如下

void(*p[])(int, int) = { 0,Add,Sub,Mul,Div };

2.通过这个函数指针数组来访问函数并传参

void menu()
{
	printf("************************************\n");
	printf("****      1.Add         2.Sub   ****\n");
    printf("****      3.Mul         4.Div   ****\n");
    printf("****            0.退出          ****\n");
	printf("************************************\n");
}
void Add(int x,int y)
{
	printf("output=%d\n", x + y);
}
void Sub(int x, int y)
{
	printf("output=%d\n", x - y);
}
void Mul(int x, int y)
{
	printf("output=%d\n", x * y);
}
void Div(int x,int y)
{
	printf("output=%d\n", x / y);
}
int main()
{
	int input = 0;
	int x = 0;
	int y = 0;
	do
	{	
		menu();
		printf("请选择:>\n");
		scanf("%d", &input);
		void(*p[])(int, int) = { 0,Add,Sub,Mul,Div };    //创建函数指针数组并初始化
		if (input <= 4 && input >= 1)        //通过if语句来限制输入选择的数字所实现的功能,逻辑分类
		{
		        printf("请输入两个操作数\n");
		        scanf("%d%d", &x, &y);
		        p[input](x, y);       //通过函数指针数组来访问函数并传参
		}
		else if (input == 0)
		{
			printf("退出程序\n");
		}
		else
		{
			printf("输入错误\n");
			break;
		}
	} while (input);
}

参考以上程序也可自己再给里面添加其他的计算器功能

程序运行结果如下

 

 

 

悦读

道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

;