ltt1986 发表于 2015-6-13 23:14:11

用C写了个简单计算器,附上源码,有点乱大神勿喷!


#include<stdlib.h>
#include<string.h>
#include <ctype.h>
int main(void)
{       
    char num1={0};//存放从键盘接受的所有字符
    char *p=num1 ;   //定义一个指向num1[]的指针p
    char n={0};//存放从NUM1中分离出来的数字字符
    int n1={0};//存放转化后的整形数字准备参加运算
    char c={0};//存放从NUM1中分离出来的运算字符
    unsigned int i,j,k;//设置3个循环变量
    //第一部分,从接盘接受输入的字符放入num1[]中

    while(1)
    {       
      
      *p=getchar();
      
      if(*p=='\n')
      {
            break;
      }
      p++;
    }
    //调试输出接受到的数组
    printf("%s\n",num1);

    //第2部分,开始分离数组num1[]中的数字字符
    j=0 ;
    k=0 ;
    p=num1;
    for(i=0;i <= strlen(num1);i++)
    {
      
      if( isalnum(num1) != 0)
      {

            n=*p;    //将字符数字放入字符数组n[]中;
            j++;
      }
      else
      {
            n='\0';
            n1=atoi(n);   //将字符转换成整形放入n1[]中
            k++;
            j=0;
      }
      p++ ;//指向下一位
    }
   
    //调试输出下n1[]数组是否取到所有数字;
    for(i=0;i<k-1;i++)
    {
      printf("%d ",n1);
    }
    printf("\n");
    //第3部分,开始分离数组num1[]中运算符号放入c[]中
    j=0 ;
    k=0 ;
    p=num1;
    for(i=0;i <= strlen(num1);i++)
    {

      if( isalnum(num1) != 0)
      {
            
      }
      else
      {
      
            c=*p; //将运算符放入c[]中
            k++;
            
      }
      p++ ; //指向下一位
    }
    //调试输出下c[]数组是否取到所有运算符;
    printf("%s\n",c) ;


    // 第四部分,进行运算
    while(1)
    {

   
      for(i=0;i<=strlen(c);i++)
      {
            if(c=='*' || c=='/') //乘除运算
            {
                if(c='*')
                {
                  n1=n1*n1 ;
                }
                else
                {
                  n1=n1/n1 ;
                }
               
                for(j=i;j<=strlen(c)+1;j++)//数字字符数组从参加运算的后一位开始左移一位
                {
                  n1=n1 ;
                  c=c ;
                }
               
                break;
            }
      }
      //打印出当前的计算结果表达式
      for(i=0;i<=strlen(c);i++)
      {
            printf("%d%c",n1,c);
      }
      j=1 ;
      for(i=0;i<=strlen(c);i++)
      {
            if(c=='*'||c=='/')
            {
                j=0 ;         //继续循环
            }
      }
      if(j==1)
      {
            break ;         //如果都运算完了,就退出循环
      }
    }//while的结束括号
   


    while(1)
    {


      for(i=0;i<strlen(c);i++)
      {
            if(c=='+' || c=='-') //加减运算
            {
                if(c='+')
                {
                  n1=n1+n1 ;
                }
                else
                {
                  n1=n1-n1 ;
                }

                for(j=i;j<strlen(c);j++)//数字字符数组从参加运算的后一位开始左移一位
                {
                  n1=n1 ;
                  c=c ;
                }
               
                break;
            }
      }
      //打印出当前的计算结果表达式
      for(i=0;i<=strlen(c);i++)
      {
            printf("%d%c",n1,c);
      }
      j=1 ;
      for(i=0;i<=strlen(c);i++)
      {
            if(c=='+'||c=='-')
            {
                j=0 ;         //继续循环
            }
      }
      if(j==1)
      {
            break ;//如果都运算完了,就退出循环
      }
    }//while的尾括号
   
//上面4则运算完成了,现在结果在n1里面
    //第5步,输出结果
    printf("运算结果为:%d",n1) ;

    getchar();
    return 0;

}

sunzhanpe 发表于 2015-6-14 12:09:22

还不错吧,有界面么
页: [1]
查看完整版本: 用C写了个简单计算器,附上源码,有点乱大神勿喷!