C语言简易科学计算器加减乘除括号#include #include main(){int i,j,h,g,num[20],z,m,n,s;char ch[80],r,sign[20];for (i=0;i

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/06 07:23:13

C语言简易科学计算器加减乘除括号
#include
#include
main()
{
int i,j,h,g,num[20],z,m,n,s;
char ch[80],r,sign[20];
for (i=0;i

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
main()
{
\x09int i,j,h,g,num[20]={0},z,m,n,s; //num[20]可以这样初始化
\x09char ch[80],r,sign[20];
    
\x09gets(ch);  //字符串输入
                
    for(i=0;i<strlen(ch);i++)
\x09{
\x09\x09s=0;
\x09\x09switch (ch[i])
\x09\x09{
\x09\x09case '+':sign[s]='+';s++;break; //缺少break;
\x09\x09case '-':sign[s]='-';s++;break;
\x09\x09case '*':sign[s]='*';s++;break;
\x09\x09case '/':sign[s]='/';s++;break;
\x09\x09case '(':sign[s]='(';s++;break;
\x09\x09case ')':sign[s]=')';s++;break;

\x09\x09}
\x09}                                          /*读入符号*/

\x09do{
\x09\x09m=0;
\x09\x09num[m]=atoi(ch);            
\x09\x09n=sizeof(num[0]);
\x09   for (i=n+2;i<=(z-n-2);i++)
\x09\x09{
\x09\x09   ch[i-n-2]=ch[i];
\x09\x09}
\x09\x09m++;
\x09}while (ch[0]=='\n');            /*进行数字的读入转换*/
  
\x09/////  发现下面好多死循环,怎么可能会有结果呢   ////////////////
    for (i=0;;i++)                   /*开始进行计算*/
\x09{
\x09\x09if (sign[i]=='(')
\x09\x09{
\x09\x09\x09for (j=i+1;j<=z;j++)
\x09\x09\x09{
                 if (sign[j]==')')
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09for (h=i+1;h<=j;h++)
\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09if (sign[h]=='*')
\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09num[h-1]=num[h-1]*num[h];
\x09\x09\x09\x09\x09\x09\x09for (g=h;;g++)
\x09\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09\x09}
                          if (sign[h]=='/')
\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09num[h-1]=num[h-1]/num[h];
\x09\x09\x09\x09\x09\x09\x09for (g=h;;g++)
\x09\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09for (h=i+1;;h++)
\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09 if (sign[h]=='+')
\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09num[h-1]=num[h-1]+num[h];
\x09\x09\x09\x09\x09\x09\x09for (g=h;;g++)
\x09\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09\x09}
                          if (sign[h]=='-')
\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09num[h-1]=num[h-1]-num[h];
\x09\x09\x09\x09\x09\x09\x09for (g=h;;g++)  //死循环
\x09\x09\x09\x09\x09\x09\x09{
\x09\x09\x09\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09\x09}
\x09\x09\x09\x09\x09}
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09}
\x09\x09for (h=i+1;h<=j;h++)
\x09\x09{
\x09\x09\x09if (sign[h]=='*')
\x09\x09\x09{
\x09\x09\x09\x09num[h-1]=num[h-1]*num[h];
\x09\x09\x09\x09for (g=h;;g++)   //死循环
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09}
\x09\x09\x09}
            if (sign[h]=='/')
\x09\x09\x09{
\x09\x09\x09\x09num[h-1]=num[h-1]/num[h];
\x09\x09\x09\x09for (g=h;;g++)   //死循环
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09}
\x09\x09for (h=i+1;;h++)   //死循环
\x09\x09{
\x09\x09\x09if (sign[h]=='+')
\x09\x09\x09{
\x09\x09\x09\x09num[h-1]=num[h-1]+num[h];
\x09\x09\x09\x09for (g=h;;g++)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09}
\x09\x09\x09}
            if (sign[h]=='-')
\x09\x09\x09{
\x09\x09\x09\x09num[h-1]=num[h-1]-num[h];
\x09\x09\x09\x09for (g=h;;g++)
\x09\x09\x09\x09{
\x09\x09\x09\x09\x09num[g]=num[g+1];
\x09\x09\x09\x09}
\x09\x09\x09}
\x09\x09}
\x09}
    printf("%d \n",num[0]);
\x09r=getchar();
\x09return 0;
}