用c语言编程计算输入X的值,输出y的值?

用c语言编程计算输入X的值,输出y的值?,第1张

C语言编程: 输入x的值,按下面公式蚂察或计算并输出y的值(保留两没橘位小数) 123456789101112#include<stdio.h>#include<math.h>int main(){double x, y scanf ( %lf , &x) if (x >0)y = sqrt(2*x) else if (x <0)y = 1.0/(3*exp(x)) else y = 0 printf ( %.2f\闷伍n , y) return 0}

#include<stdio.h>

#include<stdlib.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 != -1&&op.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] = cht++

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

}

#include <stdio.h>

int main()

{int i,s=0

for(i=1i<唯派=100i++)

s+=i

printf("指州贺%d\n"迹桥,s)

return 0

}


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存