网站建设资讯

NEWS

网站建设资讯

计算表达式的值c语言函数 计算表达式的值c语言函数怎么写

c语言 表达式求值

#includestdio.h

创新互联自2013年创立以来,先为拜城等服务建站,拜城等地企业,进行企业商务咨询服务。为拜城企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

#inlcudestdlib.h

void main()

{

char str[20][201],*p0,*p1;

int t,i,s,f,loop;

scanf("%d",t); if ( t20 ) t=20;

for ( i=0;it;i++ ) scanf("%s",str[i]);

for ( i=0;it;i++ )

{ p0=p1=str[i]; s=0; f=1; loop=1;

while ( loop )

{ while ( (*p1)='0' (*p1)='9' ) p1++;

s+=(f*atoi(p0));

switch ( (*p1) )

{ case 0: loop=0; break;

case '+': f=1; break;

case '-': f=(-1); break;

default: loop=0; break;

}

p1++; p0=p1;

}

printf("\nCase %d:\n",i+1);

printf("%s=%d\n",str[i],s);

}

}

C语言计算表达式的值

#includestdio.h

#includestdlib.h

#define MaxSize 99

void translate(char str[],char exp[]) /*将算术表达式转换成后缀表达式*/

{

struct

{

char data[MaxSize];

int top; /*top为栈顶*/

}op; /*定义一个含data和top的结构体*/

char ch;

int i = 0,t = 0;

op.top = -1;

ch = str[i]; /*将str的每一个数转换成ch*/

i++;

while(ch != '\0') /*ch对应不同的符号的时候对应的转换情况*/

{

switch(ch)

{

case '(': /*当是(的时候,将此括号存入栈op*/

op.top++;op.data[op.top]=ch;

break;

case ')':

while(op.data[op.top] != '(') /*括号内的转换优先级最高,故先提取表达式*/

{

exp[t]=op.data[op.top];

op.top--;

t++;

}

op.top--;

break;

case '+':

case '-':

while(op.top != -1op.data[op.top] != '(')

{

exp[t] = op.data[op.top];

op.top--;

t++;

}

op.top++; /*恢复可插入位置*/

op.data[op.top] = ch;

break;

case '*':

case '/':

while(op.top == '/'||op.top == '*') /*优先级*/

{

exp[t] = op.data[op.top];

op.top--;

t++;

}

op.top++;

op.data[op.top] = ch;

break;

case ' ': /*忽略空格,排除误操作*/

break;

default:

while(ch = '0'ch = '9')

{

exp[t] = ch;t++;

ch = str[i];i++;

}

i--;

exp[t] = '#'; /*分隔操作数,为了美观,也为了以后好分隔操作数,呵呵*/

t++;

}

ch = str[i];

i++;

}

while(op.top != -1) /*得到剩下的部分*/

{

exp[t] = op.data[op.top];

t++;

op.top--;

}

exp[t] = '\0'; /*表达式结束*/

}

float cal_value(char exp[])

{

struct

{

float data[MaxSize];

int top;

}st; /*操作数栈*/

float d;

char ch;

int t = 0;

st.top = -1;

ch = exp[t];

t++;

while(ch != '\0')

{

switch(ch) /*运算主体*/

{

case '+':

st.data[st.top-1] = st.data[st.top-1]+st.data[st.top];

st.top--;

break;

case '-':

st.data[st.top-1] = st.data[st.top-1]-st.data[st.top];

st.top--;

break;

case '*':

st.data[st.top-1] = st.data[st.top-1]*st.data[st.top];

st.top--;

break;

case '/':

if(st.data[st.top] != 0)

st.data[st.top-1]=st.data[st.top-1]/st.data[st.top];

else

{

printf("\n\t除0是错误的");

}

st.top--;

break;

default:

d=0;

while(ch = '0'ch = '9') /*从后缀表达式中获取操作数,#作用在此体现*/

{

d = 10*d+ch-'0';

ch = exp[t];

t++;

}

st.top++;

st.data[st.top] = d;

}

ch = exp[t];

t++;

}

return st.data[st.top];

}

int main() /*可以提到前面去*/

{

char str[MaxSize],exp[MaxSize]; /*str为算术表达式,exps为后缀表达式*/

printf("请输入一个求值表达式\n");

printf("表达式:");

gets(str); /*输入一个算术表达式*/

printf("原表达式是:%s\n",str);

translate(str,exp); /*将算术表达式转换成后追表达式*/

printf("后缀表达式:%s\n",exp);

printf("计算结果:%g\n",cal_value(exp));/*通过后缀表达式来求值*/

system("pause");

return 0;

}

C语言中表达式的值怎么算

此式即等同于 (4!=3)(2)(4+15)

1代表真,0代表非,则原式即 110 所以值为0。

例如:

-12/5 = -2 只为这个是整数运算,结果只取整数部分。

62 1*(6+7) + 7 *(6+1) = 13 +49 62

3.2 *(6+7+1) = 44.8

扩展资料:

一个表达式的赋值和算符的定义以及数值的定义域是有关联的。

两个表达式若被说是等值的,表示对于自由变量任意的定值,两个表达式都会有相同的输出,即它们代表同一个函数。

一个表达式必须是合式的。亦即,其每个算符都必须有正确的输入数量,在正确的地方。如表达式2+3便是合式的;而表达式*2+则不是合式的,至少不是算术的一般标记方式。

表达式和其赋值曾在20世纪30年代由阿隆佐·邱奇和Stephen Kleene在其λ演算中被公式化。λ演算对现代数学和电脑编程语言的发展都曾有过重大的影响。

参考资料来源:百度百科-表达式


本文名称:计算表达式的值c语言函数 计算表达式的值c语言函数怎么写
分享网址:http://njwzjz.com/article/dojigdh.html