求高手解答关于C程序的表达式的值

求高手解答关于C程序的表达式的值,第1张

首先余氏扒逗号表达式是都执行,但是只取最后一个值。

result = (x=4*5,x*5),x+25;

这样的话首核坦先先计竖昌算小括号里的x = 4*5 = 20,

然后计算x*5 = 100, 这里小括号的结果为100.

然后计算x+25 = 45

所以x = 20, result = 45

#include<stdio.h>

#include<stdlib.h>

#include<string.h>

double f(double a[100],char b[100],int la,int lb)

{

int i,j,k

for(i=0i<lbi++)

{

if(b[i]==’*’)

{

a[i]=a[i]*a[i+1]

for(j=ij<lb-1j++)

b[j]=b[j+1]

for(j=i+1j<la-1j++)

a[j]=a[j+1]

la--

lb--

i--

}

else if(b[i]==’/’)

{

a[i]=a[i]/a[i+1]

for(j=ij<lb-1j++)

b[j]=b[j+1]

for(j=i+1j<la-1j++)

a[j]=a[j+1]

la--

lb--

i--

}

}

for(i=0i<lbi++)

{

if(b[i]==’+’)

{

a[i]=a[i]+a[i+1]

for(j=ij<lb-1j++)

b[j]=b[j+1]

for(j=i+1j<la-1j++)

a[j]=a[j+1]

la--

lb--

i--

}

else if(b[i]==’-’)

{

a[i]=a[i]-a[i+1]

for(j=ij<lb-1j++)

b[j]=b[j+1]

for(j=i+1j<la-1j++)

a[j]=a[j+1]

la--

lb--

i--

}

}

return a[0]

}

main()

{

char b[100],c[100],y[100]

double a[100],s,t,x[100]

int i,j,k,la,lb,l,ld,le,d[100],e[100],g[100],lx,ly

while(gets(c))

{

i=0j=0t=1l=0

for(k=0k<100k++)

a[k]=0

s=0

for(k=0c[k]k++)

{

if(c[k]>=’0’&&c[k]<=’9’)

if(t==1)

{

s=s*10+c[k]-’0’

}

else

{

s=s+(c[k]-’0’)*t

t=t/10

}

else if(c[k]==’.’)

t=0.1

else if(c[k]==’+’||c[k]==’-’||c[k]==’*’||c[k]==’/’)

{

b[i]=c[k]

a[i++]=s

s=0

t=1

}

else if(c[k]==’(’)

{

g[j++]=i

}

else if(c[k]==’)’)

{

e[l++]=i

}

}

a[i++]=s

ld=j

le=l

la=i

lb=la-1

for(i=0i<ldi++)

d[i]=g[ld-i-1]

for(i=0i<ldi++)

{

for(j=0,k=d[i]k<e[i]k++,j++)

{

x[j]=a[k]

y[j]=b[k]

}

x[j++]=a[k]

lx=j

ly=j-1

a[(d[i])]=f(x,y,lx,ly)

k=e[i]-d[i]

for(j=d[i]+1j<la-1j++)

{

a[j]=a[j+k]

b[j]=b[j+k]

}

a[j]=a[j+k]

la=la-k

lb=lb-k

for(j=i+1j<ldj++)

e[j]=e[j]-k

}

s=f(a,b,la,lb)

printf("s=%lf\n",s)

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8276353.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存