C语言多功能计算器,多功能,包括查看历史记录

运行如图所示

直接按对应按键就能进入功能,不需要敲回车

简易型功能如下

科学型功能如下

随便挑一个功能演示

历史记录功能如下

直接上代码

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#include<math.h>
#include <ctype.h>
#include <string.h>
double vect[10000];
int indx = 0;


char choice;

void menu(void);
void Emenu(void);
void Kmenu(void);
void Hmenu(void);

void jia(void);
void jian(void);
void cheng(void);
void chu(void);

void zhengxian(void);
void yuxian(void);
void zhengqie(void);
void xy(void);
void ln(void);
void log(void);
void jiecheng(void);
void fengmu(void);
void lifang(void);
void pingfang(void);
double num1, num2, result;
unsigned long long factorial(int n);

int main()
{	
 
    menu();	

}	



void menu(void)
{
	system("cls");
	printf("简易型<j>   科学型<k>   历史记录<h>   退出<x>                       \n");
    choice = getch();
    if(choice == 'j')
    {		
    Emenu();
    }
    else if(choice == 'k')
    {		
    Kmenu();
    }
    else if(choice == 'h')
    {
    Hmenu();
    }
    else if(choice == 'x')
	{
	exit(0);
	}
	else if(choice !='k' && choice !='h' && choice !='x' && choice !='j')
	{
     printf("别乱按,扣1复活\n\n");
		     choice = getch();
		         if(choice == '1')
			     {		
			     menu();
			     }
			 		
	}
}


void Emenu(void)
{
	system("cls");
	printf("加<a>   减<s>   乘<m>   除<d>   向上<r>   退出<x>\n");
	choice = getch();
	if(choice == 'r')
	{		
	menu();
    }
    if(choice == 'a')
	{		
	jia();
	}
    if(choice == 's')
	{		
	jian();
	}
	if(choice == 'm')
	{		
	cheng();
	}
	if(choice == 'd')
    {		
    chu();
	} 
	    else if(choice == 'x')
		{
		exit(0);
		}
		else if(choice !='a' && choice !='s' && choice !='m' && choice !='d'&& choice !='x')
		{
	     printf("别乱按,扣1复活\n");
	     choice = getch();
	         if(choice == '1')
		     {		
		     Emenu();
		     }
		 	
		}
}


void Kmenu(void)
{
    system("cls");
	printf("正弦<i>   余弦<c>   正切<t>   x^y<m>   ln<e>   log<s>   n!<j>   1/x<d>   立方<u>   平方<p>   向上<r>   退出<x>\n");
	choice = getch();
	if(choice == 'r')
	{		
	menu();
    }  
	if(choice == 'i')
	{		
	zhengxian();
	}  
	if(choice == 'c')
	{		
	yuxian();
	}  
	if(choice == 't')
	{		
	zhengqie();
	}  
	if(choice == 'm')
	{		
	xy();
	}  
	if(choice == 'e')
	{		
	ln();
	}  
	if(choice == 's')
	{		
	log();
	}  
	if(choice == 'j')
	{		
	jiecheng();
	}  
	if(choice == 'd')
	{		
	fengmu();
	}  
	if(choice == 'u')
	{		
	lifang();
	}  
	if(choice == 'p')
	{		
	pingfang();
	}  
		    else if(choice == 'x')
			{
			exit(0);
			}
else if(choice !='i' && choice !='c' && choice !='t' && choice !='m'&& choice !='e' && choice !='s' && choice !='j'&& choice !='d' && choice !='u' && choice !='p'&& choice !='x')
		{
	     printf("别乱按,扣1复活\n");
	     choice = getch();
	         if(choice == '1')
		     {		
		     Kmenu();
		     }
		 	
		}

}	


void Hmenu(void)
{
	 system("cls");
	printf("历史记录   向上<r>\n");
	for(int i = 0;i < indx;i ++) printf("%lf \n",vect[i]);
	choice = getch();
	if(choice == 'r')
	{		
	menu();
    }
}



void jia(void)
{
	 
	system("cls");
	printf("请输入第一个数: \n");
	scanf("%lf",&num1);
	printf("请输入第二个数: \n");
	scanf("%lf",&num2);
	

	
	
	result = num1 + num2;
	vect[indx] = result; 
	indx += 1;
	printf("相加的和为:%lf\n按r返回上一级\n",result);
	choice = getch();
		if(choice == 'r')
		{		
		Emenu();
	    }
	 
	            
}
void jian(void)
{
	 system("cls");
	printf("请输入第一个数: \n");
	scanf("%lf",&num1);
	printf("请输入第二个数: \n");
	scanf("%lf",&num2);
	result = num1 - num2;
	vect[indx] = result; 
	indx += 1;
	printf("相减的差为:%lf\n按r返回上一级,按其余键退出\n",result);  
	choice = getch();
			if(choice == 'r')
			{		
			Emenu();
		    }
}
void cheng(void)
{
	 system("cls");
	printf("请输入第一个数: \n");
	scanf("%lf",&num1);
	printf("请输入第二个数: \n");
	scanf("%lf",&num2);
	result = num1 * num2;
	vect[indx] = result; 
	indx += 1;
	printf("相乘的积为:%lf\n按r返回上一级,按其余键退出\n",result);    
	choice = getch();
			if(choice == 'r')
			{		
			Emenu();
		    }
}
void chu(void)
{
	 system("cls");
	printf("请输入第一个数: \n");
	scanf("%lf",&num1);
	printf("请输入第二个数: \n");
	scanf("%lf",&num2);
	result = num1 / num2;
	vect[indx] = result; 
	indx += 1;
	printf("相除的商为:%lf\n按r返回上一级,按其余键退出\n",result);  
		choice = getch();
				if(choice == 'r')
				{		
				Emenu();
			    }
}


void zhengxian(void)

{
	system("cls"); 
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = sin(num1);
	vect[indx] = result; 
	indx += 1;
	printf("正弦值:%lf\n按r返回上一级,按其余键退出\n",result); 
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void yuxian(void)
{
	 system("cls");
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = cos(num1);
	vect[indx] = result; 
	indx += 1;
	printf("余弦值:%lf\n按r返回上一级,按其余键退出\n",result); 
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void zhengqie(void)
{
	 system("cls");
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = tan(num1);
	vect[indx] = result; 
	indx += 1;
	printf("正切值:%lf\n按r返回上一级,按其余键退出\n",result); 
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void xy(void)
{
	system("cls");
	printf("请输入x的值: \n");
	scanf("%lf",&num1);
	printf("请输入y的值: \n");
	scanf("%lf",&num2);
	result = pow(num1,num2);
	vect[indx] = result; 
	indx += 1;
	printf("x的y次的值:%lf\n按r返回上一级,按其余键退出\n",result); 
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void ln(void)
{
	system("cls");
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = log10(num1);
	vect[indx] = result; 
	indx += 1;
	printf("lnx的值:%lf\n按r返回上一级,按其余键退出\n",result);
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void log(void)
{
	system("cls");
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = log(num1);
	vect[indx] = result; 
	indx += 1;
	printf("logx的值:%lf\n按r返回上一级,按其余键退出\n",result);
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void jiecheng(void)
{
	int num3;
	 system("cls");
	printf("请输入一个数: \n");
    scanf("%d", &num3);
	result = factorial(num3);
	vect[indx] = result; 
	indx += 1;
    printf("x的阶乘的值:%lf\n按r返回上一级,按其余键退出\n",result);
    		choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void fengmu(void)
{
	 system("cls");
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = 1/num1;
	vect[indx] = result; 
	indx += 1;
	printf("1/x的值:%lf\n按r返回上一级,按其余键退出\n",result);
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void lifang(void)
{
	system("cls"); 
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = num1*num1*num1;
	vect[indx] = result; 
	indx += 1;
	printf("x立方的值:%lf\n按r返回上一级,按其余键退出\n",result);
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}
void pingfang(void)
{
	system("cls"); 
	printf("请输入一个数: \n");
	scanf("%lf",&num1);
	result = num1*num1;
	vect[indx] = result; 
	indx += 1;
	printf("x平方的值:%lf\n按r返回上一级,按其余键退出\n",result);
			choice = getch();
					if(choice == 'r')
					{		
					Kmenu();
				    }
}





unsigned long long factorial(int n) 
{
    if (n == 0 || n == 1) {
        return 1;
    } else {
        return n * factorial(n - 1);
    }
}



Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐