C语言的小项目-简易计算器

我们想使用C语言开发一个简易的计算器,需要什么呢?是不是首先需要一个菜单呢?

看,这就是一个简单的菜单啦!

void menu()
{
    printf(*******************计算器***************************);
    printf("*******1.加(Add)*****2.减(Sub)**************\n");
    printf("*******3.乘(Div)*****4.除(Div)**************\n");
    printf("*******0.返回(Exit)***************************\n");
    printf(*******************计算器***************************);
}

那么我们肯定需要一个主函数,把菜单放到主函数里边。主函数里面肯定要有去进行运算的一些代码。那么我们来看一下下面这段代码。为了避免丢失精度,以及更好的进行运算,笔者在这里选择使用float类型。

int main()
{
    int input=0;
    float x=0;
    float y=0;
    float ret=0;
    
    do{
    menu();
    printf("请选择:>");
    scanf("%d,&input");
        if(input==0)
        {
            printf("退出计算器\n");
            break;
        }
        else if(input=>1&&input<=4)
        {
            printf("请输入两个数:>");
            scanf("%f %f",&x,&y);
            ret=pf[input](x,y);
            printf("%f",ret);
        }
        else
        {
            printf("指令错误");
        }
 }while(input);
return 0;
}

这里使用do while循环

大家一定会有疑问,这个ret=pf[input](x,y); 在哪里,别着急,我们只需要在主函数上加入一个函数指针数组。

  •  注pf 是一个函数指针数组,方括号 [] 用于指定数组的索引。input 的值作为索引,从 pf 数组中选择一个特定的元素。(具体内容可重返数组部分温习)
  • 注:数组元素类型为 float(*)(float, float),这是一种函数指针类型,该指针指向的函数接收两个 float 类型参数并返回一个 float 类型值。
float (*pf[5])(float , float)={NULL,Add,Sub,Mul,Div};

 由于数组下标的第一个元素是从 0 开始,所以数组第一位是0(NULL)。

很明显,我们的这个程序中还缺点什么东西,没错!就是用于计算的函数!下面我们来看看这些函数们! 

float Add(float x, float y)
{
    return x+y;
}
float Sub(float x, float y)
{
    return x-y;
}
float Mul(float x, float y)
{
    return x*y;
}
float Div(float x, float y)
{
    return x/y;
}

重点分析:

1.else后面不能直接跟条件表达式,编译器会将(input>=1&&input<=4)视为一个普通的表达式,但这个表达式在这里没有任何意义,并且会导致语法错误。

 if(input==0)
        {
            printf("退出计算器\n");
            break;
        }
        else if(input=>1&&input<=4)
        {
            printf("请输入两个数:>");
            scanf("%f %f",&x,&y);
            ret=pf[input](x,y);
            printf("%f",ret);
        }

2.float (*pf[5])(float, float)={NULL, Add, Sub, Mul, Div}; 和ret = pf[input](x, y);

  • float (*pf[5])(float, float)={NULL, Add, Sub, Mul, Div}; 定义了一个函数指针数组,为后续通过索引调用不同函数提供了基础。
  • ret = pf[input](x, y); 利用 pf 数组,根据 input 的值选择特定的函数来执行,并传递参数 x 和 y,得到函数执行结果并赋值给 ret。例如,如果 input 的值为 1,那么 pf[1] 指向 Add 函数,ret = pf[1](x, y); 就相当于调用 Add(x, y) 函数,并将返回值赋给 ret

完整代码如下:

#include
void menu()
{
	printf("*******************计算器**************************\n");
	printf("*******1.加(Add)*****2.减(Sub)**************\n");
	printf("*******3.乘(Div)*****4.除(Div)**************\n");
	printf("*******0.返回(Exit)***************************\n");
	printf("*******************计算器***************************\n");
}
float Add(float x, float y)
{
	return x+y;
}
float Sub(float x, float y)
{
	return x-y;
}
float Mul(float x, float y)
{
	return x*y;
}
float Div(float x, float y)
{
	return x/y;
}
float (*pf[5])(float , float)={NULL,Add,Sub,Mul,Div};
int main()
{
	int input=0;
	float x=0;
	float y=0;
	float ret=0;
	
	do{
		menu();
		printf("请选择:>");
		scanf("%d",&input);
		if(input==0)
		{
			printf("退出计算器\n");
			break;
		}
		else if(input>=1&&input<=4)
		{
			printf("请输入两个数:>");
			scanf("%f %f",&x,&y);
			ret=pf[input](x,y);
			printf("%f",ret);
		}
		else
		{
			printf("指令错误");
		}
	}while(input);
	return 0;
}

你可能感兴趣的:(c语言,开发语言)