c语言之几种计算器


先看看第一种最基本的计算器


#include <stdio.h>
#include <stdlib.h>

void tips()
    {
    
    
		printf("****************************************\n");
		printf("****************************************\n");
		printf("**********请输入一种算法 + - * /**********\n");
		printf("***************Qinff制作*****************\n");
        printf("****************************************\n");
        printf("****************************************\n");
    }
int adda(int a,int b)
{
    
    
	int c;
    c=a+b;
    return c;
}
int jian(int a,int b)
{
    
    
	int c;
    c=a-b;
    return c;
}
int cheng(int a,int b)
{
    
    
	int c;
    c=a*b;
    return c;
}
float chu(int a,int b)
{
    
    
	float c;
    c=(float)a/b;
    return c;
}      
void reallcalc(int data1,int data2,char suanfa)
{
    
    
 switch(suanfa)
    {
    
    
		case '+':
			printf("两数相加,结果为%d+%d=%d\n",data1,data2,adda(data1,data2));
            break;
        case '-':
			printf("两数相减,结果为%d-%d=%d\n",data1,data2,jian(data1,data2));
            break;
        case '*':
			printf("两数相乘,结果为%d*%d=%d\n",data1,data2,cheng(data1,data2));
            break;
        case '/':
			printf("两数相除,结果为%d/%d=%f\n",data1,data2,chu(data1,data2));
            break;
    }
	
}
void calc(char suanfa)
{
    
    
	int data1,data2;
	switch (suanfa)
        {
    
    
			case'+':
            printf("你选择了加法!\n");
            break;
		
            case'-':
            printf("你选择了减法!\n");
			
            break;
            case'*':
            printf("你选择了乘法!\n");
		
            break;
            case'/':
            printf("你选择了除法!\n");
		
            break;
            default:
            return -1;
//            printf("请正确输入运算符!\n");
            break;
        }
        printf("请输入第一个数:\n");
        scanf("%d",&data1);
        printf("请输入第二个数:\n");
        scanf("%d",&data2);
        
		reallcalc(data1,data2,suanfa);
       
}    
int main()
{
    
    
	int data1,data2,data3;
    char suanfa;
    int mark=0;
    int ret;
	
	while(1)
     {
    
    
        tips();
        if(mark !=0)//把data2以后的回车吸收掉,不想第一次进入程序的时候就被吸收,用mark限制
        {
    
    
        getchar();//回车符也是一种字符 ,getchar函数表示获取一个字符
        }//这里表示把回车键吸收掉
		scanf("%c",&suanfa);
        getchar();      
        mark = 1;
		calc(suanfa);

    }
	system("pause");
	return 0;

}

这里有一个很关键的地方,用mark来吸收回车键,不然程序在最后输入回车后scanf吸收的是回车键,第二次在判断输入的算法时就会出现错误。

第二种计算器

#include <stdio.h>
#include <stdlib.h>

void tips()
    {
    
    
		printf("****************************************\n");
		printf("****************************************\n");
		printf("********请输入一种算法 + - * /**********\n");
        printf("****************************************\n");
        printf("****************************************\n");
    }
int main()
{
    
    
	int data1,data2,data3;
    char suanfa;
    int mark=0;
	
	while(1)
     {
    
    
        tips();
        if(mark !=0)//不想第一次进入程序的时候就被吸收,用mark限制
        {
    
    
        getchar();//回车符也是一种字符 ,getchar函数表示获取一个字符
        }//这里表示把回车键吸收掉
		scanf("%c",&suanfa);
        getchar();      
        mark = 1;
		switch (suanfa)
        {
    
    
			case'+':
            printf("你选择了加法!\n");
			printf("请输入第一个数据 :\n");
			scanf("%d",&data1);
			printf("请输入第二个数据 :\n");
			scanf("%d",&data2);
            printf("%d+%d=%d\n",data1,data2,data1+data2);
            break;
            case'-':
            printf("你选择了减法!\n");
			printf("请输入第一个数据 :\n");
			scanf("%d",&data1);
			printf("请输入第二个数据 :\n");
			scanf("%d",&data2);
            printf("%d-%d=%d\n",data1,data2,data1-data2);
            break;
            case'*':
            printf("你选择了乘法!\n");
			printf("请输入第一个数据 :\n");
			scanf("%d",&data1);
			printf("请输入第二个数据 :\n");
			scanf("%d",&data2);
            printf("%d*%d=%d\n",data1,data2,data1*data2);
            break;
            case'/':
            printf("你选择了除法!\n");
			printf("请输入第一个数据 :\n");
			scanf("%d",&data1);
			printf("请输入第二个数据 :\n");
			scanf("%d",&data2);
            printf("%d/%d=%f\n",data1,data2,(float)data1/data2);
            //输出小数的时候一定要把int型强制转换成float型;被除数、除数其中一个强制转换就行了。
            break;
            default:
            printf("请正确输入运算符!\n");
        }	
    }
	system("pause");
	return 0;

}

这里没有运用函数,而是直接计算输出的。

第三种计算器,运用函数指针

#include<stdio.h>
#include<stdlib.h>

int add(int *a,int *b)
{
    
    
	return *a+*b;
}
int jian(int *a,int *b)
{
    
    
	return *a-*b;
}
int cheng(int *a,int *b)
{
    
    
	return *a*(*b);
}
float chu(int *a,int *b)
{
    
    
	float c;
	c=(float)*a/(*b);
	return c;
}

void tips()
{
    
    
	printf("*******************************\n");
	printf("**********请输入算法***********\n");
	printf("*******************************\n");
	printf("*******************************\n");
}
void onetishi(char suanfa)
{
    
    

	
	switch(suanfa)
	{
    
    
		case '+':
			printf("你选择的是加法!\n");
			break;
		case '-':
			printf("你选择的是减法!\n");
			break;
		case '*':
			printf("你选择的是乘法!\n");
			break;
		case '/':
			printf("你选择的是除法!\n");
			break;
			default:
			printf("请重新输入正确的算法:");
			exit(-1);
			
	}
}

void jisuan(int a,int b,char suanfa)
{
    
    
		int (*padd)(int *a,int *b);
			padd=add;
		int (*pjian)(int *a,int *b);
			pjian=jian;
		int (*pcheng)(int *a,int *b);
			pcheng=cheng;
		float (*pchu)(int *a,int *b);
			pchu=chu;
	
	switch(suanfa)
	{
    
    
		case'+':
			printf("两数相加:%d+%d=%d",a,b,padd(&a,&b));
			break;
		case'-':
			printf("两数相减:%d-%d=%d",a,b,pjian(&a,&b));
			break;
		case'*':
			printf("两数相乘:%d*%d=%d",a,b,pcheng(&a,&b));
			break;
		case'/':
			printf("两数相除:%d/%d=%f",a,b,pchu(&a,&b));
			break;
			default:
			break; 
	}
}
int main()
{
    
    

	
	int a,b;
	char suanfa;
	tips();
	scanf("%c",&suanfa);
	
	void (*ponetishi)(char suanfa);
	ponetishi =onetishi;
	ponetishi(suanfa) ;
	
	printf("请输入第一个数:");
	scanf("%d",&a); 
	printf("请输入第二个数:");
	scanf("%d",&b);
	
	void (*pjisuan)(int a,int b,char suanfa);//声明计算函数 
	pjisuan=jisuan;
	pjisuan(a,b,suanfa);	
	
	return 0;
}

其实不难,多敲代码多实践。

猜你喜欢

转载自blog.csdn.net/qq_43482790/article/details/114580513