c语言结果是小数不是整数,高手帮帮忙 为什么输入小数时结果不对 整数的结果对呢?...

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

{

if(suffix[i]>='0' && suffix[i]<='9'||suffix[i]=='.')

{

if (state_int == TRUE)

num=chartonum( suffix[i],i);

else num = suffix[i] - '0';

state_int = TRUE;

}

if(suffix[i]== ' ')

{

if (state_int == TRUE)

{

push_seq(ps, num);

state_int = FALSE;

}

}

if(suffix[i]== '+'||suffix[i]== '-'||suffix[i]== '*'||suffix[i]== '/')

{

if (state_int == TRUE)

{

push_seq(ps, num);

state_int = FALSE;

}

num2 = top_seq(ps);

pop_seq(ps);

num1 = top_seq(ps);

pop_seq(ps);

if (suffix[i] == '+')

push_seq(ps, num1 + num2);

if (suffix[i]== '-')

push_seq(ps, num1 - num2);

if (suffix[i]== '*')

push_seq(ps, num1 * num2);

if (suffix[i]== '/')

push_seq(ps, num1 / num2);

}

}

*presult = top_seq(ps);

pop_seq(ps);

free(ps);

return TRUE;

}

chartonum(char a[],int i)

{

float x=0.0;

int k=0;

while(a[i]>='0'&&a[i]<='9')

{

x=x*10+a[i]-'0';

i++;

}

if(a[i]=='.')

{

i++;

while (a[i]>='0'&&a[i]<='9')

{

x=x*10 + a[i] -'0';

i++;

k++;

}

}

while(k!=0)

{

x=x/10;

k=k-1;

}

return x;

}

void main()

{

char c, infix[MAXNUM], suffix[MAXNUM];

float result;

int i;

int k=0;

printf("Plese input an infix expression!\nInput:");

scanf("%s",&infix);

for(i=0;infix[i]!='\n';i++)

{

k=i++;

}

infix[k]='\0';

infixtoSuffix(infix, suffix);

printf("suffix:  %s\n", suffix);

calculateSuffix(suffix, &result) ;

printf("Result:   %10.2f\n", result);

getch();

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值