c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3

来源:学生作业帮助网 编辑:作业帮 时间:2024/11/19 04:24:55
c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3
xSI_i:~/jZڽ*o I)I*TE KD1 aE@˙L~_g&3?M){;r![YU)9{xkUz--Oe<(+[jүcSVȍǧ{ u7kx2.,X rKly%7Tc}<< U!-VCn ':W;}:-}v|M.-{Uυm6-#+Rt!\` #&(&knzݙ=q+4O CaA F$УFnesr8 8?Sy`I~ZAX0/r9,V^Q|ןA?VWOo!wg]ȃWyAgxoGETShDkOu~Q.IrV/}ysCCvLBLӯMddO.B BNkd<^,_pFh@~w^<A_K-1P.U r0KԣҚMA;MǛʻ3P;$yߍgH+YH No!乜bC8W.9Iʥ9;̥S8'04-mI{0;=힀:gs_7~|)!gxDytYȪk(fcG#OWߗVWM87[ >7 bܸ`r__ =Z;;="IUFx!c^">Df.PZ G1>q~!#SSx1~q}1Jۇ}ZKo">6 c zX0o؞+ih&9I0L\.>_)y91Gh/0͘E0bMp PV5AIOQ@8I`5'pܜg2sqOeP:빱Vg3s Y]x Hhfd咇4Ht2L5I &Ra7*('CFZD8ׄZaDIZq!C7GduriR\Q`LM>1&")Pw_3}zl ށ"}j]T4$ZτgI.% 4a#AでY!=h AZmHq`B҈a!3ݐIZ A^uy:KTxZtjcHCdx@"ͯ8=u0R2}˥Zu"ƸJ8شnOqZ+B\[B quח-B\f\Jgy lbsEY!Q؍dF)<g"<.3N8<&skE"u0\S[, EP4~JO⺲Q ?nQNC44La5%!!3aSXC!6D?$_Zab\ePf3P)QʻQ#"%V[LB]Ɏð< \ݠ {➂ ͣ aAAlj^0IZoZ]ĊX{͠1^Z:BW>jnƢn= Ǵ[|o-[O䛥SwYgzHDp_@cn]oHRF8 9 W BCs/iht+r-@=='-<{d*1bu'z^yMڃVw4;*I|}5e%|nA2dbUU!~5J3Ȧ'2|?9QdJjo

c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3
c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号
c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3)*3.5回车显示17.85

c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3
#include
#include
#include
#include
#define BUF_MAX 100
double handle(char *str) //处理没括号的
{
double res,*data=NULL,*data_old=NULL;
char *flag=NULL,*flag_old=NULL,*temp=str,*temp_old=str;
int n=0,m=0,i=0;
assert(NULL!=str);
while(*temp)
{
if(*temp==' ')
strcpy(temp,temp+1);
else
temp++;
}
temp=str;
while(*temp)
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if (*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
n++;
temp++;
}
flag_old=(char *)malloc(sizeof(char)*n);
if(NULL==flag_old)
{
perror("malloc fail!\n");
}
data_old=(double *)malloc(sizeof(double)*(n+1));
if(NULL==data_old)
{
perror("malloc fail!\n");
}
temp=str;
flag=flag_old;
data=data_old;
while(*temp!='\0')
{
if(temp==temp_old && *temp=='-')
{
temp++;
continue;
}
else if(*temp=='+' || *temp=='-' ||*temp=='*' ||*temp=='/')
{
*flag++=*temp;
*temp='\0';
*data++=atof(temp_old);
temp_old=temp+1;
}
temp++;
}
*data=atof(temp_old);
flag=flag_old;
data=data_old;
do
{
m=n;
for(i=0;i

/*******************************************************************************
** 程序名称:表达式计算器
** 程序描述:本程序能够进行只含有非负整数与+ - * /符号的表达式计算;并能够识别
** 错误的算式,给出警报。
**程序特色: 能够进行诸如2+3*...

全部展开

/*******************************************************************************
** 程序名称:表达式计算器
** 程序描述:本程序能够进行只含有非负整数与+ - * /符号的表达式计算;并能够识别
** 错误的算式,给出警报。
**程序特色: 能够进行诸如2+3*5-2*3*6和3-6*2/3的混合运算?
** 使用说明:输入你的算式,注意其中的每个数字不要超过10000,即最大数是999.
** 【C-Free编译通过】
** 程序作者:syrchina
** 最后修改:2009-5-1
*******************************************************************************/
#include "Stdio.h"
#include "Conio.h"
/*******************************************************************************
** 函数名称:calculate
** 函数描述:进行运算,并输出结果
** 输入参数:c[],length
** 输出参数:无
*******************************************************************************/
calculate(int c[],int length)
{
int i;
int error=0;
float result=0;
c[0]=1;
c[2]=10043;
c[length-2]=10045;
c[length-1]=1; /*初始化开头与结尾为加减法*/
/*进行运算*/
/*先乘除,后加减的运算顺序*/
/*将乘除转换为加法*/
for (i=0;i<=length;i++)
{
switch (c[i])
{
case 10042:
c[i+1]=c[i-1]*c[i+1];
c[i]=c[i-2];
c[i-2]=10043;
c[i-1]=0;
break;
case 10047:
c[i+1]=c[i-1]/c[i+1];
c[i]=c[i-2];
c[i-2]=10043;
c[i-1]=0;
break;
}
}
/*进行加减运算*/
result=result+c[0];
for (i=0;i<=length;i++)
{
switch (c[i])
{
case 10043:
result=result+c[i+1];
break;
case 10045:
result=result-c[i+1];
break;
}
/*防错:防止计算结果超过30000*/
if (result>30000)
{
printf("Sorry, the result is beyone my calculating ability.\n\n");
error=1;
break;
}
}
/*输出结果*/
if (error==0)
printf("\n The result is: %.2f\n\n",result);
}
/*******************************************************************************
** 函数名称:translate
** 函数描述:将字符串a[]转换为整型数组b[]中的数字
** 输入参数:无
** 输出参数:
*******************************************************************************/
int translate(char a[])
{
int b[20];
int c[20];
int i=0,k=0;
int length=0;
int error=0;
i=0;
k=0;
length=0;
error=0;
/*初始化b[],c[],全部归零*/
for (i=0;i<20;i++)
{
b[i]=0;
c[i]=0;
}
i=0;
while (a[i]!='\0')
{
switch (a[i]) /*字符串的提取与转换,提取为个位数字*/
{
case '0':
b[i]=a[i]-'0';
break;
case '1':
b[i]=a[i]-'0';
break;
case '2':
b[i]=a[i]-'0';
break;
case '3':
b[i]=a[i]-'0';
break;
case '4':
b[i]=a[i]-'0';
break;
case '5':
b[i]=a[i]-'0';
break;
case '6':
b[i]=a[i]-'0';
break;
case '7':
b[i]=a[i]-'0';
break;
case '8':
b[i]=a[i]-'0';
break;
case '9':
b[i]=a[i]-'0';
break;
case '+':
b[i]=a[i]+10000;
break;
case '-':
b[i]=a[i]+10000;
break;
case '*':
b[i]=a[i]+10000;
break;
case '/':
b[i]=a[i]+10000;
break;
default:
printf("Error, your input is not available.\n");
break;
}
i++;
}
length=i-1;
b[length+1]='\0';
/*防错:对最后一位是否为数字进行检查:*/
if (a[length]>'9'||a[length]<'0')
{
printf("Error, the last char is not a number.\n\n");
error=1;
}
/*防错:对最前一位是否为数字进行检查:*/
if (a[0]>'9'||a[0]<'0')
{
printf("Error, the first char is not a number.\n\n");
error=1;
}
/*数字重组:对上面提取的单个数字进行组合,使多位数复原*/
i=0;
k=3;
while (1)
{
if (b[i]>=0&&b[i]<=9) /*c[]存储复原后的多位数*/
{
c[k]=c[k]*10+b[i];
/*防错:防止单个数超过30000*/
if (c[k]>30000)
{
printf("Sorry, the number you input is too large, I can't calculate.\n\n");
error=1;
break;
}
}
if (i==length) break;
if ((b[i]==10043)||(b[i]==10045)||(b[i]==10042)||(b[i]==10047)) /*ASCII码+10000:+ →10043,- →10045,* →10042,/ →10047*/
{
k++; /*c[]标记运算符号 */
c[k]=b[i];
k++;
}
i++;
}
c[k+3]='\0';
calculate(c,k+3);
}
/*******************************************************************************
** 函数名称:main
** 函数描述:调用子函数实现表达式计算功能
** 输入参数:无
** 输出参数:无
*******************************************************************************/
main()
{
int i;
char a[20];
/*初始化a[],b[],c[],全部归零*/
for (i=0;i<20;i++)
{
a[i]=0;
}
while (1)
{
if (a[0]=='0'&&a[1]=='\0')/*当一行中只有0时,推出程序 */
{
printf("The program will exit...");
//sleep(2);
exit(0);
}
printf("******** Multi-function calculator *********\n");
printf(" For example you can input 2+3*5-2*3*6\n");
printf(" Every number should litter than 10000\n");
printf(" Please input a caluating line:\n ");
gets(a);
translate(a);
}
getch();
}

收起

我有呀,这个我写过,只需要一个switch开关语句就可以了

呵呵。这个不难,你百度一下,有很多的代码

c语言的程序 对实数进行四则运算的程序 要求计算顺序,先乘除,后加减,优先括号c语言的程序,做一个可以对实数进行四则运算的c语言的程序 比如输入1+2回车显示3,输入1+2*3回车显示7 输入(2.1+3 完成四则运算C语言程序 C语言编写程序,使能对分数进行加减乘除四则运算 C语言编写程序四则运算法则 用C语言设计能够完成多步四则运算的程序 有理数的四则运算(C语言) 急用![问题描述]设计一个可进行有理数运算的演示程序.[基本要求]实现两个有理数相加、相减、相乘、相除的运算. 用C语言编写简易计算器可实现两位数以上的四则运算.C语言编写单片机程序. 如何编写一个C语言程序,让计算机自动出四则运算计算题,要求自动出0-10之间的四则运算题,并批改结果? C语言程序填空/*-------------------------------------------------------【程序填空】---------------------------------------------------------功能:产生10个[30,90]区间上的随机整数,然后对其用选择法 进行由小到 求帮忙改进C语言程序凯撒加密英文字母.要求把我的程序改为可以只对英文字母进行加密解密.要代码.感谢! 求判断素数的C语言程序 用c语言 二次方程根的程序. C语言程序的阅读填空 C语言程序的结构特点 求双线性插值法的C语言程序! 电压有效值计算的C语言程序 C语言求平方根的程序 用C语言写个求圆面积的程序