找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3421|回复: 0
收起左侧

c语言计算器程序(简单)

[复制链接]
ID:71922 发表于 2015-1-11 00:18 | 显示全部楼层 |阅读模式
/*************************************************
名称:计算器程序日期:2015年月1月11号
编写:扫帚菜(大鹤)
内容:通过此程序,实现简单的四则运算
**************************************************/
#include "stdio.h"
#include "stdlib.h"
float get_num(char **);

int main()
{
    char a[80];
    int sign = 1;/*正负号的标志*/
    float result = 0;
    char *p;
    clrscr();
    gets(a); /*由此输入字符*/
    p=a;
    if(*p=='-') /*如果第一个字符为'-'号则标志为负*/
    {
        sign=-1;
        p++;   /*指向下一个字符*/
    }
    while(*p!=0)
    {
        float  m;
        m=sign*get_num(&p);/*m被赋值为字符串的第一个数*/
        while(*p=='*'||*p=='/')/*如果字符为'*'或'/'则一直进行*/
        {
            if(*p=='*')
            {
                p++;
                m*=get_num(&p);
            }
            else
            {
                int div;
                p++;
                div=get_num(&p);
            if(div==0)
            {
                printf("个驴!除数怎么为0?疯了吧~~~\n");
                exit(1);
            }
            else
            m/=div;
        }
    }
    if(*p!='+'&&*p!='-'&&*p!=0)
    {
         printf("哈哈,非法字符=非法同居: %c\n",*p);
         exit(0);
    }

    result+=m;
    if(*p=='+')
    {
        sign=1;
        p++;
     }
    else if(*p=='-')
    {
        sign=-1;
        p++;
    }
    else
        break;
   }
printf("The result is %f\n", result);
getch();
return 0;
}
/*****************************************************
以下函数为计算函数,涉及较多指针和二级指针的知识,为C程
序比较难的部分,不做过多注释,因为只会越注越乱看不懂可
以问我,在下虽然是个菜鸟,但在这个程序上还得算是个老鸟
******************************************************/
float get_num(char **p)
{
    float n =0, m = 10;
    if(**p!='.'&&(**p<'0'||**p>'9'))
   {
        printf("不长脑子。乱输什么?运算符后面不是数行吧\n");
        exit(1);
   }
    while(**p>='0'&&**p<='9')
    {
        n=n*10+**p-48;
        (*p)++;
    }
   if(**p=='.')
   {
        (*p)++;
        while(**p>='0' &&**p<='9')
        {
             n+=(**p-48)/m;
             (*p)++;
             m*=10;
        }
   }
return n;
}


回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表