|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- #include<stdlib.h>
- #include<string.h>
- #include <ctype.h>
- int main(void)
- {
- char num1[222]={0};//存放从键盘接受的所有字符
- char *p=num1 ; //定义一个指向num1[]的指针p
- char n[222]={0};//存放从NUM1中分离出来的数字字符
- int n1[222]={0};//存放转化后的整形数字准备参加运算
- char c[222]={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[i]) != 0)
- {
- n[j]=*p; //将字符数字放入字符数组n[]中;
- j++;
- }
- else
- {
- n[j]='\0';
- n1[k]=atoi(n); //将字符转换成整形放入n1[]中
- k++;
- j=0;
- }
- p++ ;//指向下一位
- }
-
- //调试输出下n1[]数组是否取到所有数字;
- for(i=0;i<k-1;i++)
- {
- printf("%d ",n1[i]);
- }
- printf("\n");
- //第3部分,开始分离数组num1[]中运算符号放入c[]中
- j=0 ;
- k=0 ;
- p=num1;
- for(i=0;i <= strlen(num1);i++)
- {
- if( isalnum(num1[i]) != 0)
- {
-
- }
- else
- {
-
- c[k]=*p ; //将运算符放入c[]中
- k++;
-
- }
- p++ ; //指向下一位
- }
- //调试输出下c[]数组是否取到所有运算符;
- printf("%s\n",c) ;
- // 第四部分,进行运算
- while(1)
- {
-
- for(i=0;i<=strlen(c);i++)
- {
- if(c[i]=='*' || c[i]=='/') //乘除运算
- {
- if(c[i]='*')
- {
- n1[i+1]=n1[i]*n1[i+1] ;
- }
- else
- {
- n1[i+1]=n1[i]/n1[i+1] ;
- }
-
- for(j=i;j<=strlen(c)+1;j++) //数字字符数组从参加运算的后一位开始左移一位
- {
- n1[j]=n1[j+1] ;
- c[j]=c[j+1] ;
- }
-
- break;
- }
- }
- //打印出当前的计算结果表达式
- for(i=0;i<=strlen(c);i++)
- {
- printf("%d%c",n1[i],c[i]);
- }
- j=1 ;
- for(i=0;i<=strlen(c);i++)
- {
- if(c[i]=='*'||c[i]=='/')
- {
- j=0 ; //继续循环
- }
- }
- if(j==1)
- {
- break ; //如果都运算完了,就退出循环
- }
- }//while的结束括号
-
- while(1)
- {
- for(i=0;i<strlen(c);i++)
- {
- if(c[i]=='+' || c[i]=='-') //加减运算
- {
- if(c[i]='+')
- {
- n1[i+1]=n1[i]+n1[i+1] ;
- }
- else
- {
- n1[i+1]=n1[i]-n1[i+1] ;
- }
- for(j=i;j<strlen(c);j++) //数字字符数组从参加运算的后一位开始左移一位
- {
- n1[j]=n1[j+1] ;
- c[j]=c[j+1] ;
- }
-
- break;
- }
- }
- //打印出当前的计算结果表达式
- for(i=0;i<=strlen(c);i++)
- {
- printf("%d%c",n1[i],c[i]);
- }
- j=1 ;
- for(i=0;i<=strlen(c);i++)
- {
- if(c[i]=='+'||c[i]=='-')
- {
- j=0 ; //继续循环
- }
- }
- if(j==1)
- {
- break ; //如果都运算完了,就退出循环
- }
- }//while的尾括号
-
- //上面4则运算完成了,现在结果在n1[0]里面
- //第5步,输出结果
- printf("运算结果为:%d",n1[0]) ;
- getchar();
- return 0;
- }
复制代码 |
|