鱼C论坛

 找回密码
 立即注册
查看: 3331|回复: 5

为什么显示0

[复制链接]
发表于 2016-7-4 23:43:37 | 显示全部楼层 |阅读模式
8鱼币
本帖最后由 连心 于 2016-7-5 02:07 编辑

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

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

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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-5 11:22:01 | 显示全部楼层
楼主能把代码格式弄一下么
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-5 23:56:11 | 显示全部楼层
首先,不管显示什么,这应该都显示不出来,代码有错,编译应该失败了。shu = input-'0';和fh = input;这两句语法错误。
其次,cc()和jiajian()分别处理乘除和加减。代码不规范,读起来不完全清楚,比如cc():fh里的第j个字符'*'对应累加了shu里的第j、j+1个浮点数的乘积。这具体意义是什么?不太清楚。建议修改一下再看
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-6 09:38:10 | 显示全部楼层
1.楼主是不是要做 6+7*8/2-6=这样的计算器?百度“后缀表达式、c语言四则运算”有现成代码。
2.自己写代码要学着自己调试,看代码是不是按照自己的思路在走。
3.数符分离是我昨天给的建议,自己写了一下,并不合理,楼主不用太花精力了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-6 15:02:23 | 显示全部楼层
应该。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-15 12:11:20 | 显示全部楼层
单步调试吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-20 07:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表