连心 发表于 2016-7-4 23:43:37

为什么显示0

本帖最后由 连心 于 2016-7-5 02:07 编辑

#include<stdio.h>
float shu,temp,sum=0.0;
char fh;
int i,j,k;
        int cc(void)
               
        {
               
                for(j=0;j<20;j++)
                if(fh=='*'||fh== '/')       
                {
                        if(fh=='*')
                        {
                        sum+= shu * shu;
                        }
                        else
                                {
                                        if(shu == 0)
                                                printf("input error! div is zero!");
                                        else
                                        {
                                                sum+=shu / shu;
                                        }
                                }//优先级
                }
                return (temp);
        }
                        float jiajian(float x)       
                                {
                       
                                        for(k=0;k<20;k++)
                                        {
                                                if(fh=='+'||fh=='-')
                                                {
                                                        if(k==(x-1)||k==(x+1))
                                                                sum+=shu + x;
                                                        else
                                                                sum+=shu + shu;
                                                }
                                          else
                                                        if(fh=='-')
                                                        {
                                                                if(k==(x-1)||k==(x+1))
                                                                {       
                                                                        if(k==(x-1))
                                                                           sum+=shu-x;
                                                                        else
                                                                                sum+=x - shu;
                                                                }
                                                                else
                                                                          sum+=shu - shu;
                                                        }
                                        }
                                }                                               

main()
{
        char input;
        printf("请输入表达式:");
        scanf("%s",input);
        for(i=0;i<20;i++)
        {
       if(input>='0'&&input<='9')
                shu = input-'0';
       else
                fh = input;

        }//完成数符分离       
        jiajian(cc());
        printf("%f\n", sum);
}

梦幻一生 发表于 2016-7-5 11:22:01

楼主能把代码格式弄一下么{:5_92:}

mingcxx 发表于 2016-7-5 23:56:11

首先,不管显示什么,这应该都显示不出来,代码有错,编译应该失败了。shu = input-'0';和fh = input;这两句语法错误。
其次,cc()和jiajian()分别处理乘除和加减。代码不规范,读起来不完全清楚,比如cc():fh里的第j个字符'*'对应累加了shu里的第j、j+1个浮点数的乘积。这具体意义是什么?不太清楚。建议修改一下再看{:10_243:}。

yundi 发表于 2016-7-6 09:38:10

1.楼主是不是要做 6+7*8/2-6=这样的计算器?百度“后缀表达式、c语言四则运算”有现成代码。
2.自己写代码要学着自己调试,看代码是不是按照自己的思路在走。
3.数符分离是我昨天给的建议,自己写了一下,并不合理,楼主不用太花精力了

DAY 发表于 2016-7-6 15:02:23

应该。。。。

千亩计者 发表于 2016-8-15 12:11:20

单步调试吧
页: [1]
查看完整版本: 为什么显示0