自己做一个计算器

第零版

#include<stdio.h>
int main()
{
    double tot,i,j;
    char ch;
    printf("请输入第一个数:") ;
    scanf("%f",&i);
    printf("请输入运算符;");
    scanf("%c",&ch);
    printf("请输入第二个数:") ;
    scanf("%f",&j);
    if(ch=='+') {
        tot=i+j;
    }else if(ch=='-'){
        tot=i-j;
    }else if(ch=='*'){
        tot=i*j;
    }else if(ch=='/'){
        tot=i/j;
    }
    printf("%f",tot);
    return 0;
}

第一版

#include<stdio.h>
int main()
{
    int sum,j;
    
    printf("请输入第1个数:") ;
    scanf("%d",&sum);
    char ch;
    int t;
    for(t=2;getchar()!='=';t++){
        printf("请输入运算符以及第%d个数:",t);
        ch=getchar();
        scanf("%d",&j);
        switch(ch){
            case'+':sum+=j;break;
            case'-':sum-=j;break;
            case'*':sum*=j;break;
            case'/':sum/=j;break;
        }
        printf("%d\n",sum);
    }
    
    printf("%d",sum);
    return 0;
}

第二版

2020.3.20 14:36更新第二版(加入了菜单,优化了界面,但是选项只可用两个)

#include<stdio.h>

#include <conio.h>//用于getch()读取用户输入的按键 

#include<windows.h>//用于清理屏幕 

int main()

{

    //多次运算多组数据
    
    do{
    
    //菜单
    
    printf("---------------------菜单--------------------\n") ;
    
    printf("↑:加减乘除                                 \n") ;
    
    printf("Esc:退出                                    \n") ;
    
    printf("Home:设置                                   \n") ;
    
    printf("---------------------------------------------\n") ;
    
    
    //判断用户输入选项 
    
    char userput;
    
    userput=getch();//第一次调取 ,之后的if是第二次调取,实际值 
    
    
    
    
    //加减乘除运算 
    
    if(userput==72) 
    {   
        
        printf("---------------------------------------------\n"); 
        
        printf("|               加减乘除模式                |\n"); 
        
        printf("---------------------------------------------\n"); 
        
        
        int sum,j;
        
        printf("请输入第1个数:") ;
        
        scanf("%d",&sum);
        
        char ch;
        
        int t;
        
        
        //多次输入计算单组数据 
        
        for(t=2;getchar()!='=';t++){//t的作用是为下面提示输入第几个数 
        
        
        //获取用户输入的运算符以及第几个数 
        
        printf("请输入运算符及第%d个数(如:+8,如果结束运算请输入==):",t);
        
        ch=getchar();
        
                scanf("%d",&j);
        
        
        //判断运算符,做出对应运算 
        
        switch(ch){
        
            case'+':sum+=j;break;
            
            case'-':sum-=j;break;
            
            case'*':sum*=j;break;
            
            case'/':sum/=j;break;
            
        }
        
        printf("本次计算结果=%d\n",sum);
        
        }
        
        //printf("最终结果=%d",sum);
        
        }
        
        
        //退出程序 
        
        else if(userput==27)
        
        {
        
            printf("---------------------------------------------\n"); 
            
            printf("|                  退出程序                 |\n"); 
            
            printf("---------------------------------------------\n"); 
            
            break;
        
        }
    
    
    
        //为了让布局美观,每次算完之后清空屏幕 ,用到了头文件#include<windows.h> 
        
        system("cls") ;
        
        
            
        
    
    }while(1);
    
    
    
     

    return 0;

}

第三版

#include<stdio.h>
#include <conio.h>//用于getch()读取用户输入的按键 
#include<windows.h>//用于清理屏幕 
int main()
{
    int set;//用于设置选项卡,放在外面的原因是让每一次循环都可以用到,而不改变set的值,以免影响下一次循环 
    int point=2;//用于设置选项卡,对于输出的数保留n位小数 ,默认保留两位小数 
    //多次运算多组数据
    do{
        //菜单
        printf("---------------------菜单--------------------\n") ;
        printf("↑:加减乘除                                 \n") ;
        printf("Esc:退出                                    \n") ;
        printf("Home:设置                                   \n") ;
        printf("---------------------------------------------\n") ;
        
        //判断用户输入选项 
        char userput;
        userput=getch();//第一次调取 ,之后的if是第二次调取,实际值 
        
        //加减乘除运算 
        if(userput==72)//72表示用户输入上箭头 
        {   
            printf("---------------------------------------------\n"); 
            printf("|               加减乘除模式                |\n"); 
            printf("---------------------------------------------\n"); 
    
            double sum,j;
            printf("请输入第1个数:") ;
            scanf("%lf",&sum);
            char ch;
            int t;
    
            //多次输入计算单组数据 
            for(t=2;getchar()!='=';t++){//t的作用是为下面提示输入第几个数 
    
            //获取用户输入的运算符以及第几个数 
            printf("请输入运算符及第%d个数(如:+8,以==退出):",t);
            ch=getchar();
            scanf("%lf",&j);
            
            
            //判断运算符,做出对应运算 
            switch(ch){
                case'+':sum+=j;break;
                case'-':sum-=j;break;
                case'*':sum*=j;break;
                case'/':sum/=j;break;
            }
            printf("本次计算结果=%.*lf\n",point,sum);
            }
            
        }
        
        //退出程序 
        else if(userput==27)
        {
            printf("---------------------------------------------\n"); 
            printf("|                  退出程序                 |\n"); 
            printf("---------------------------------------------\n"); 
            break;
        }
            
        //设置选项卡
        
            //判断区 
        else if(userput==71)
        {
            printf("---------------------------------------------\n"); 
            printf("|                    设置                   |\n"); 
            printf("|1.刷新屏幕                                 |\n"); 
            printf("|2.保留小数                                 |\n"); 
            printf("---------------------------------------------\n"); 
            int setin;
            char setchoose;
            printf("请输入数字以进入选项:") ;
            scanf("%d",&setin);
            //1.刷新屏幕 
            if(setin==1)
            {
                printf("是否关闭刷新屏幕[y/n]:");
                scanf("%c",&setchoose);
                if(setchoose=='y'){
                    set=1;
                } else{
                    set=0;
                }
            }
            //2.保留小数
            if(setin==2) 
            {
                printf("你希望保留几位小数?:");
                scanf("%d",&point);//这里不需要经过执行区 
            }
            
        }
        
            //执行区
        if(set==1)//选择的是弄yes
        {
        
        } 
        else//选择的是no 
        {
            //为了让布局美观,每次算完之后清空屏幕 ,用到了头文件#include<windows.h> 
            system("cls") ;
        }


    }while(1);
    
    
     
    return 0;
}

第四版

2020.3.20 20:04

更新第三版:优化了加减乘除(可以进行小数运算,多亏了%lf);

                加入了十进制转换其他进制模式;

                加入了设置,可以选择是否关闭“刷新屏幕”;可以选择保留几位小数

进制转换.png

#include<stdio.h>
#include <conio.h>//用于getch()读取用户输入的按键 
#include<windows.h>//用于清理屏幕 
int main()
{
    int set;//用于设置选项卡,放在外面的原因是让每一次循环都可以用到,而不改变set的值,以免影响下一次循环 
    int point=2;//用于设置选项卡,对于输出的数保留n位小数 ,默认保留两位小数 
    double i,j,k,sum,num,left;//参与计算:加减乘除,进制转换 
    int ip,jp,kp,sump,nump,leftp;//参与计算:加减乘除,进制转换 
    //多次运算多组数据
    do{
        //菜单
        printf("---------------------菜单--------------------\n") ;
        printf("↑:加减乘除                                 \n") ;
        printf("↓:进制转换                                 \n") ;
        printf("Esc:退出                                    \n") ;
        printf("Home:设置                                   \n") ;
        printf("---------------------------------------------\n") ;
        
        //判断用户输入选项 
        char userput;
        userput=getch();//第一次调取 ,之后的if是第二次调取,实际值 
        
        //加减乘除运算 
        if(userput==72)//72表示用户输入上箭头 
        {   
            printf("---------------------------------------------\n"); 
            printf("|               加减乘除模式                |\n"); 
            printf("---------------------------------------------\n"); 
    
            double sum;
            printf("请输入第1个数:") ;
            scanf("%lf",&sum);
            char ch;
            int t;
    
            //多次输入计算单组数据 
            for(t=2;getchar()!='=';t++){//t的作用是为下面提示输入第几个数 
    
            //获取用户输入的运算符以及第几个数 
            printf("请输入运算符及第%d个数(如:+8,以==退出):",t);
            ch=getchar();
            scanf("%lf",&j);
            
            
            //判断运算符,做出对应运算 
            switch(ch){
                case'+':sum+=j;break;
                case'-':sum-=j;break;
                case'*':sum*=j;break;
                case'/':sum/=j;break;
            }
            printf("%lf%c%lf=%.*lf\n",sum,ch,j,point,sum);
            }
            
        }
        
        //进制转换
        else if(userput==80) 
        {
            printf("---------------------------------------------\n"); 
            printf("|               进制转换模式                |\n"); 
            printf("---------------------------------------------\n"); 
            do{
                printf("请输入你要转换的十进制整数:");
                scanf("%d",&ip);
                printf("你想转换成___进制:");
                scanf("%d",&jp);
                
                //处理数据 
                kp=ip;//暂存IP的数值,下面要对他分解 
                sump=0;//初始总和=0 
                for(nump=1;ip>0;nump*=10) {
                    leftp=ip%jp;//取余 
                    ip/=jp;//取整 
                    sump+=nump*leftp;//倒序相加 
                }
                ip=kp;//IP换回原来值 
                printf("%d的%d进制数是%d\n",ip,jp,sump);
                
                
                printf("按下任意键继续(Esc退出)\n");//借用退出程序的功能 
                userput=getch();
            }while(userput!=27);
             
        }
        
        //退出程序 
        else if(userput==27)
        {
            printf("---------------------------------------------\n"); 
            printf("|                  退出程序                 |\n"); 
            printf("---------------------------------------------\n"); 
            break;
        }
            
        //设置选项卡
        
            //判断区 
        else if(userput==71)
        {
            printf("---------------------------------------------\n"); 
            printf("|                    设置                   |\n"); 
            printf("|1.刷新屏幕                                 |\n"); 
            printf("|2.保留小数                                 |\n"); 
            printf("---------------------------------------------\n"); 
            int setin;
            char setchoose;
            printf("请输入数字以进入选项:") ;
            scanf("%d",&setin);
            //1.刷新屏幕 
            if(setin==1)
            {
                printf("是否关闭刷新屏幕[y/n]:");
                scanf(" %c",&setchoose);//考虑到scanf的读取,上一个scanf结尾是\n,在进行这个scanf的时候把\n算在%c里面,一定要加一个空格 
                if(setchoose=='y'){
                    set=1;
                } else{
                    set=0;
                }
            }
            //2.保留小数
            else if(setin==2) 
            {
                printf("你希望保留几位小数?:");
                scanf("%d",&point);//这里不需要经过执行区 
            }
            
        }
        
            //执行区
        if(set==1)//选择的是弄yes
        {
            printf("修改成功\n");
        } 
        else//选择的是no 
        {
            //为了让布局美观,每次算完之后清空屏幕 ,用到了头文件#include<windows.h> 
            system("cls") ;
        }


    }while(1);
    
    
     
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/oceaninfinite/p/12534608.html