计算器(C语言)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 介绍
  • 关键代码
  • 运行代码(3种)

介绍

  • 标准计数器:执行加减乘除等等

  • 科学计算器:执行分数、统计学、指数函数、对数、三角函数运算等等

  • 程序员计算器:用于二进制,八进制,十进制,十六进制等相互转换功能


二、关键代码

1、加、减、乘、除的函数调用。

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);

}

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;
}


运行代码

cs 复制代码
#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;
}
相关推荐
DdddJMs__13530 分钟前
C语言 | Leetcode C语言题解之第416题分割等和子集
c语言·leetcode·题解
秋窗71 小时前
VScode C语言中文乱码问题解决
c语言·ide·vscode
9毫米的幻想1 小时前
【C++】—— stack & queue & deque
android·java·c语言·开发语言·c++·学习
小彭爱敲代码4 小时前
第十四届蓝桥杯嵌入式国赛
c语言·物联网·职场和发展·蓝桥杯
小周的C语言学习笔记4 小时前
鹏哥C语言49---第5次作业:选择语句 if 和 switch
c语言·开发语言·c++·算法
李妖妖的拯救者4 小时前
C语言小tip之动态内存常见错误
c语言·c++·算法
䛩x5 小时前
贪吃蛇小游戏(Qt)
c语言·开发语言·qt·程序人生·游戏程序·命令模式
xqhoj6 小时前
C++学习指南(六)----list
c语言·开发语言·数据结构·c++·学习·算法·list
DdddJMs__1356 小时前
C语言 | Leetcode C语言题解之第420题强密码检验器
c语言·leetcode·题解
KBDYD10108 小时前
数据结构--单链表创建、增删改查功能以及与结构体合用
c语言·开发语言·数据结构·算法