精华内容
下载资源
问答
  • C语言写的计算器程序
  • C语言编写计算器程序;附有源代码的详细注解
  • c语言编写的基于51单片机的计算器程序(4x4按键);0~9十个数字键,加减乘除四个键,等号按键和清零按键。实现长度最长为6位数的加、减、乘、除,可根据自己的硬件,进行改写,增加计算数字的长度。
  • C语言编写简易计算器

    万次阅读 多人点赞 2017-06-29 11:40:34
    C语言中的switch语句实现简易的四则运算计算器#include int main() { double number1=0.0; double number2=0.0; char operation=0; for(;;) { printf("\nEnter the calculation\n"); scanf("%lf%c%lf",&n

    用C语言中的switch语句实现简易的四则运算计算器

    #include<stdio.h>
    int main()
    {
       double number1=0.0;
       double number2=0.0;
       char operation=0;
       for(;;)
       {
    
       printf("\nEnter the calculation\n");
       scanf("%lf%c%lf",&number1,&operation,&number2);
    
       switch(operation)
       {
          case '+':
               printf("=%lf\n",number1+number2);
              break;
    
          case '-':
               printf("=%lf\n",number1-number2);
               break;
    
          case '*':
               printf("=%lf\n",number1*number2);
               break;
    
          case '/':
               if(number2==0)
                 printf("\n\n\aDivision by zero error!\n");
               else
                 printf("=%lf\n",number1/number2);
               break;
    
          case '%':
               if((long)number2==0)  
                 printf("\n\n\aDivision by zero error!\n"); 
               else
                 printf("=%ld\n",(long)number1%(long)number2);      
               break;
    
          default:
              printf("\n\n\aDivision by zero error!\n");
              break;          
        }
        }
        return 0;
    }
    展开全文
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼printf("pleaseinputtheExpression:\n");gets©;s=filter©;Resolve(s,a,b);while(b[i]!='\0'&&b!='\n'){if(b[i]!='('){if(kern<=a[0])number=stackin(number...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

    printf("please input the Expression :\n ");

    gets©;

    s=filter©;

    Resolve(s,a,b);

    while(b[i]!='\0'&&b!='\n')

    {

    if(b[i]!='('){ if(kern<=a[0])number=stackin(number,a[kern++]); }

    if(b[i]=='a'||b[i]=='s'){

    number=stackout(number,&num);

    number=stackin(number,tatal(0,num,b[i]));

    }

    else if(operater==NULL||b[i]=='(')operater=stackin(operater,(double)b[i]);

    else if(b[i]==')')

    {

    if((char)operater->data=='(')operater=stackout(operater,&sum);

    else { while((char)operater->data!='(')

    {

    number=stackout(number,&num);

    ber=stackin(ber,num);

    operater=stackout(operater,&sum);

    if(oper==NULL)oper=stackin(oper,sum);

    else {

    if(max((char)sum)<=max((char)oper->data)&&ber->next!=NULL)

    {

    ber=stackout(ber,&num1);

    ber=stackout(ber,&num2);

    oper=stackout(oper,&num);

    ber=stackin(ber,tatal(num1,num2,(char)num));

    }

    oper=stackin(oper,sum);

    }

    }

    number=stackout(number,&num1);

    ber=stackin(ber,num1);

    operater=stackout(operater,&sum);

    ber=stackout(ber,&num1);

    ber=stackout(ber,&num2);

    oper=stackout(oper,&num);

    if((char)num=='-'||(char)num=='/')number=stackin(number,Contrary(num1,num2,(char)num));

    else { number=stackin(number,tatal(num1,num2,(char)num)); }

    }

    }

    else {

    if(max(b[i])<=max((char)operater->data)&&number->next!=NULL)

    {

    number=stackout(number,&num1);

    number=stackout(number,&num2);

    operater=stackout(operater,&sum);

    num=tatal(num1,num2,(char)sum);

    number=stackin(number,num);

    }

    operater=stackin(operater,(double)b[i]);

    }

    i++;

    }

    if(kern<=a[0])number=stackin(number,a[kern]);

    while(operater!=NULL)

    {

    number=stackout(number,&num1);

    number=stackout(number,&num2);

    operater=stackout(operater,&sum);

    number=stackin(number,tatal(num1,num2,(char)sum));

    }

    for(k=0;s[k]!='\0';k++)printf("%c",s[k]);

    number=stackout(number,&num2);

    printf("=%lf\n",num2);

    printf("\nSuccess! Press any key to exit!\n");

    getch();

    }

    展开全文
  • 这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理。 在该计算器程序,能进行加减乘除、sin、cos、exp...
  • 这是用C语言编写计算器源代码,可以借鉴学习一下,有错误的地方请改正
  • C语言编写计算器程序只能在黑框框里输入,怎么能让它可视化,就是能出现一个界面能点的那种
  • 在进行程序运算时,float型数据一律转换为double型数据,为自动类型转换。所以结果一样。但float,double两种类型数据精度不同,float型有效数字位数为6~7位,double为15~16位,二者有区别; 一般情况下都用double...

    main()

    {

    char c;

    double a,b;

    scanf("%lf%c%lf",&a,&c,&b);

    if(c=='+'){

    printf("%.2lf\n",a+b);

    }

    if(c=='-'){

    printf("%.2lf\n",a-b);

    }

    if(c=='*'){

    printf("%.2lf\n",a*b);

    }

    if(c=='/'){

    if(b==0)

    printf("error\n");

    else

    printf("%.2lf\n",a/b);

    }

    }

    判断输入符号:+-*/;输出对应数;

    重点是:​定义类型时定义double

    类型;输入%lf;输出想保存两位小数点的话就是%.2f;

    那么double和float类型定义的区别是什么呢?

    百度:​

    使用%f对实数只输出小数点后6位的数字(不是有效数字,强制只输出小数点后6位),所以输出双精度型必须明确指定输出小数点后位数,要求使用%.nf格式n为小数点后数位! %lf格式定义的是scanf()函数的格式输入,不是输出。​

    float是单精度实型,用4个字节存储

    double是双精度实型,用8个字节存储。在进行程序运算时,float型数据一律转换为double型数据,为自动类型转换。所以结果一样。但float,double两种类型数据精度不同,float型有效数字位数为6~7位,double为15~16位,二者有区别;

    一般情况下都用double定义;输出时根据需要%.nf;输入时指定是%lf(再次强调是字母l;不是数字1)​

    展开全文
  • C语言编写计算器

    2009-07-21 23:38:00
    C语言编写计算器 可以进行高浮点数计算, 带有界面,windows程序设计
  • C语言编写简单计算器程序

    万次阅读 多人点赞 2016-07-01 10:03:13
    这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理。 在该计算器程序,能进行加减乘除、sin、cos、exp...

    这两天在看一个C语言写的计算器程序,做了不少的功夫,跟着作者一步步的进行完善,了解了许多细节性的东西,在此自己做个总结,加深自己对程序的印象,也算是梳理。

    在该计算器程序,能进行加减乘除、sin、cos、exp等操作,同时能进行数值保存功能。而该计算器使用逆波兰表示法。即所有运算符都跟在操作数的后面,比如下列表达式:
    (1 - 2) * (4 + 5)采用逆波兰表示法表示为:1 2 - 4 5 + *
    逆波兰表达法中不需要圆括号,只要知道每个运算符需要几个操作数就不会引起歧义。

    计算器程序实现很简单,具体原理如下:

    while/* 下一个运算符或操作数不是文件结束指示符 */if/* 是数 *//* 将该数压入到栈中 */
        else if/* 是运算符 *//* 弹出所需数目的操作数 */
            /* 执行运算 */
            /* 将结果压入到栈中 */
        else if/* 是换行符 *//* 弹出并打印栈顶的值 */
        else
            /* 出错 */

    在程序设计中,使用模块化思想,getop函数来进行读入,该函数返回一个标识,用来标识读入的是什么类型。主循环体中根据该标识执行相应的动作。

    以下是该程序: (我将所有函数和变量放在同一文件)

    #include <stdlib.h>
    #include <stdio.h>
    #include <string.h>
    
    #define MAXOP 100
    #define NUMBER '0'   //标识读入的是数字
    #define NAME 'n'     //标识读入的是字符串(函数名或非法字符串)
    #define ALPHA 26     
    int getop(char []);   
    void push (double);  //压栈
    double pop(void);    //出栈
    void clear(void);    //清空栈
    void mathfnc(char []);   //执行相应的数学函数sin、cos、exp等
    
    int main(void)
    {
        int type;
        int i, var = 0;
        double op1, op2,v;
        char s[MAXOP];
        double variable[ALPHA];
    
        for (i = 0; i < ALPHA; i++)    //初始化用于保存数值的变量数组
            variable[i] = 0.0;
    
        while ((type = getop(s)) != EOF)    //读取输入
        {
            switch (type)
            {
                case NUMBER:
                    push (atof(s));
                    break;
                case NAME:
                    mathfnc(s);
                    break;
                case '+':
                    push (pop() + pop());
                    break;
                case '*':
                    push (pop() * pop());
                    break;
                case '-':
                    op2 = pop();
                    push (pop() - op2);
                    break;
                case '/':
                    op2 = pop();
                    if (op2 != 0.0)
                        push (pop() / op2);
                    else
                        printf ("error: zero divisor\n");
                    break;
                case '%':
                    op2 = pop();
                    if (op2 != 0.0)
                        push (fmod(pop(), op2));
                    else
                        printf ("error: zero divisor\n");
                    break;
                case '?':    //打印栈顶元素
                    op2 = pop();
                    printf ("\t%.8g\n", op2);
                    push (op2);
                    break;
                case '=':   //保存数值
                    pop();
                    if (var >= 'A' && var <= 'Z')
                        variable[var - 'A'] = pop();
                    else
                        printf ("error: no variable name\n");
                    break;
                case 'c':
                    clear();
                    break;
                case 'd':   //复制栈顶元素
                    op2 = pop();
                    push(op2);
                    push(op2);
                    break;
                case 's':   //交换栈元素
                    op1 = pop();
                    op2 = pop();
                    push(op1);
                    push(op2);
                case '\n':
                    v = pop();   //v保存最后的一次结果
                    printf ("\t%.8g\n", v);
                    break;
                default:
                    if (type >= 'A' && type <= 'Z')
                        push(variable[type - 'A']);
                    else if (type == '@')   //输入的字符@表示最近一次结果值 
                        push(v);
                    else
                        printf ("error: unknown command %s\n", s);
                    break;
            }
            var = type;  
        }
        return 0;
    }
    
    /* ----------------------------------------------------------- */
    
    #define MAXVAL 100
    
    int sp = 0;     //标识栈顶
    double val[MAXVAL];
    
    void push(double f)
    {
        if (sp < MAXVAL)
            val[sp++] = f;
        else
            printf ("error: stack full, can't push %g\n", f);
    }
    
    double pop(void)
    {
        if (sp > 0)
            return val[--sp];
        else
        {
            printf ("error: statck empty\n");
            return 0.0;
        } 
    }
    
    void clear(void)
    {
        sp = 0;
    }
    
    void mathfnc (char s[])
    {
        double op2;
    
        if (strcmp (s, "sin") == 0)
            push(sin(pop()));
        else if(strcmp (s, "cos") == 0)
            push(cos(pop()));
        else if(strcmp (s, "exp") == 0)
            push(exp(pop()));
        else if(strcmp (s, "pow") == 0)
        {
            op2 = pop();
            push (pow(pop(), op2));
        }
        else
            printf ("error: %s not supported\n", s);
    }
    
    /* ----------------------------------------------------------- */
    
    #include <ctype.h>
    
    int getch(void);
    void ungetch(int);
    
    int getop(char s[])
    {
        int i, c;
        while ((s[0] = c = getch()) == ' ' || c == '\t')  //过滤开头的空白字符
            ;
        s[1] = '\0';
    
        i = 0;
    
        if (islower(c))   //判断是否为小写字母,也即读取由小写字母组成的字符串
        {
            while (islower(s[++i] = c = getch()))
                ;
            s[i] = '\0';
    
            if (c != EOF)
                ungetch(c);
            if (strlen (s) > 1)
                return NAME;
            else 
                return c;
        }
    
        if (!isdigit(c) && c != '.' && c != '-')
            return c;
    
        if (c == '-')     //用于判断是负数还是减操作          
        { 
            if (isdigit(c = getch()) || c == '.')  
                s[++i] = c;
            else
            {
                if (c != EOF)
                    ungetch(c);
                return '-';
            }
        }
    
        if (isdigit(c))      //收集整数部分
            while (isdigit(s[++i] = c = getch()))
                ;
    
        if (c == '.')    //收集小数部分
            while (isdigit(s[++i] = c = getch()))
                ;
    
        s[i] = '\0';
    
        if (c != EOF)
            ungetch(c);
    
        return NUMBER;
    }
    
    
    /* ----------------------------------------------------------- */
    /*
     * 引用以下两个函数是因为:程序不能确定它已经读入的输入是否足够 *
     * 除非超前多读入一些输入,在本程序中,读入一些字符合成一个数字 *
     * 所以在看到第一个非数字字符之前,已经读入的数的完整性是不能确定的
     * 由于程序要超前读入一个字符,这样就导致最后又一个字符不属于当前所要读入的数 
     */
    
    #define BUFSIZE 100
    char buf[BUFSIZE];
    int bufp = 0;
    
    int getch(void)  
    {
        return (bufp > 0) ? buf[--bufp] : getchar();
    }
    
    void ungetch (int c)
    {
        if (bufp >= BUFSIZE)
            printf ("ungetch: too many characters\n");
        else
            buf[bufp++] = c;
    }
    

    该程序虽然简单,但是还是存在一些小小的问题,比如没有数据时进行pop的话,会打印栈中无数据同时返回数值0.0,在循环体中许多执行操作会将该数值保存到栈中,之后打印该值,用户体验度比较差。程序设计方面,模块化设计使得该程序容易增加功能而不影响其他模块,比如增加一些数学函数处理,在mathfnc函数中去添加,或增加一些运算符操作,可以在主循环体中增加。

    总之,这次学习还是颇有收获。

    展开全文
  • 其实开发一款计算器简单,当然也是很多C语言小白必练手的一个项目,小编今天介绍的项目课程就是教你利用C语言开发一款简单计算器,非常适合新手小白哦~ 小编整理好了一套C/C++资料,加小编C/C++编程学习群:...
  • C语言编的一个简单计算器程序,大家可以看看。
  • C语言编写简易计算器的思路和过程

    千次阅读 2009-07-29 13:05:00
    关于这个计算器,我已经改进了好几次,使用do-while和switch语句嵌套来进行简单的四则运算。但是在处理“/”运算时,由于分母不能为零,所以我使用了if-else语句。如下:#include main(void){ float sum1,sum2,jum...
  • 满意答案zjwandy20102014.09.16采纳率:41%等级:12已帮助:5892人var c:char; sym:array[0..30]of char; num:array[0..30]of longint; ts,tn:shortint; x:longword; procedure calcu; var p:char;...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼case'1':printf("请输入要计算的数字\n");scanf("%lf",&a);scanf("%lf",&b);sum=a+b;printf("%lf\n",sum);break;case'2':printf("请输入要计算的数字\n");...
  • 该楼层疑似违规已被系统折叠隐藏此楼查看此楼case'1':printf("请输入要计算的数字\n");scanf("%lf",&a);scanf("%lf",&b);sum=a+b;printf("%lf\n",sum);break;case'2':printf("请输入要计算的数字\n");...
  • STC89C52单片机C语言编写简单计算器程序,矩阵按键输入,4位数码管输出显示,可实现简单的加减乘除运算!
  • C语言实现简易计算器

    千次阅读 2020-04-02 12:28:11
    怎样用C语言实现简易计算器 #include<stdio.h> int main() { int a=0,b=0; char c=0; scanf("%d %c %d",&a,&c,&b); if (b==0){printf("Divided by zero!");} else{ switch(c) { ...
  • 课程设计名称: C 语言课程设计课程设计题目: 简单计算器程序目录第1章 需求分析 0设计要求 0任务 0第2章 总体设计 1TOC \o "1-5" \h \z \o "Current Document" 设计简介及设计方案论述 1...\o "Current Document" ...
  • C语言代码编写的一个简易计算器,可以实现加减乘除的功能!
  • ![图片说明](https://img-ask.csdn.net/upload/202005/13/1589348640_923214.png)
  • # ## # **编程环境为VC6.0 和 C-Free** ![图片说明](https://img-ask.csdn.net/upload/202002/23/1582468390_291681.jpg)
  • C语言简单计算器编写课程设计存档资料 成绩:华东交通大学理工学院课 程 设 计 报 告 书所属课程名称 C语言程序设计题 目 简单计算器分 院 电 信 分 院专业班级 电子商务2010 级 1 班学 号 20100210460123学生...
  • C语言实现简易计算器(二)

    千次阅读 2018-07-29 18:23:46
    接上一篇文章:C语言实现计算器(一) 该程序较上一篇复杂,但功能比较齐全,可以实现带括号的计算,但仍不能实现带小数点的运算 #include &lt;stdio.h&gt; #include &lt;stdlib.h&gt; #define...
  • c语言半学期了,对字符的处理实在不擅长,请高手们帮我看看 谢谢了 // Calculator.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include "stdlib.h" #include "math.h" #include "string....
  • //x, y, z: 用来保存取模相关变量,printf("代码计算器:可以求加、减、乘、除和取模\n""如果需要进行四则运算请输入1, 如果需要进行取模运算请输入2 \n");do{scanf("%d", &xz);if (xz == 1){printf("请按照“被X数 ...
  • C语言实现简单计算器

    2021-04-05 18:07:05
    C语言实现简单计算器 使用了函数指针数组,使代码大大简化。利用函数指针进行相应函数的调用,比起分支语句使代码更易扩展。 #include"jisuanqi.h" //菜单 void menu() { printf("****************************\n...
  • 这是一个用C语言编写简单计算器。它使用readline获取用户输入。 最初写于2021年1月25日,当前版本: 1.5 可用命令 当前, calc支持以下命令: 命令 描述 calc 进入仅计算器模式(请参阅[1]) clear 清除萤幕 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,247
精华内容 2,098
关键字:

c语言编写简单计算器程序

c语言 订阅