简单的计算器

  • Post author:
  • Post category:其他


前言:使用了函数指针数组,主体思路简单,要考虑多个分支

正文:

Q:请编写一个基于文本的、选单驱动的模拟计算器程序。该程序先让用户从加、减、乘、除、x的 y次幂、x的平方根,x的自然对数以及x的常用对数等运算中选择一个,然后请用户输入两个或一个双精度型的数值,最后计算并显示结果。对于两个和一个操作数的函数,要求分别使用一个函数指针数组来记录其函数名,数组中的每一个指针代表一个函数。对于双操作数的函数,每个函数都接收两个double型的实参且返回类型均为void;对于单操作数的函数,每个函数都接收一个double型的实参且返回类型均为void。

源代码:

#include<stdio.h>
#include<math.h> 
void jia(double x,double y);
void jian(double x,double y);
void cheng(double x,double y);
void chu(double x,double y);
void mi(double x,double y);
void gen(double x,double y);
void zi(double x,double y);
void chang(double x,double y);
int main(){	
    int a;	
	double x,y;	
	void (*p[]) (double x,double y)= {0,jia,jian,cheng,chu,mi,gen,zi,chang};	
	printf("1.加法 2.减法 3.乘法 4.除法 5.x的y次幂 6.x的平方根 7.x的自然对数 8.x的常用对数\n");	
	printf("请选择要进行的计算(1-8):");	
	scanf("%d",&a);		
	if(a<6)	{	
	    printf("请分别输入x,y的值:");	
		scanf("%lf%lf",&x,&y);
	}	
	else	{	
	    printf("请输入x的值:");	
		scanf("%lf",&x);	
		y=x;
	}	
	(*p[a])(x,y);
}	
void jia(double x,double y)	{		
    printf("%f和%.2f的和为:%.2f",x,y,x+y);	
}	
void jian(double x,double y){		   
    printf("%.2lf和%.2lf的差为:%.2lf",x,y,x-y);	
}	
void cheng(double x,double y){			
    printf("%.2lf和%.2lf的积为:%.2lf",x,y,x*y);	
}	
void chu(double x,double y){	
	printf("%.2lf和%.2lf的商为:%.2lf",x,y,x/y);	
}	
void mi(double x,double y)	{		
    printf("%.2lf的%.2lf次幂等于%.2lf",x,y, pow(x,y));	
}	
void gen(double x,double y)	{		
    printf("%.2lf的平方根为%.2lf",x,sqrt(x));	
}	
void zi(double x,double y)	{		
    printf("%.2lf的自然对数是%.2lf",x,log(x));	
}	
void chang(double x,double y)	{		
    printf("%.2lf的常用对数是%.2lf",x,log10(x)); 	
}



版权声明:本文为weixin_52621330原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。