鱼C论坛

 找回密码
 立即注册
查看: 1754|回复: 3

课后作业s1e14的动手题第二个的进阶题

[复制链接]
发表于 2021-10-22 12:42:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 如果孤独感 于 2021-10-22 13:07 编辑

输出时出现只能输出两行就退出的情况;
在while的最后加getchar();也得不到改善;
这是什么情况?
int main()
{
        float ch, sum = 0, d, number, x = 0;
        bool dian, isOdd = 1;

        while (isOdd)
        {
                printf("请输入合法的数字:");
                for (d = 1, dian = 0, number = 0; (ch = getchar()) != '\n';)
                {
                        if (dian)
                        {
                                d /= 10;  //实现小数点后的分数
                        }
                        if (ch == '.')
                        {
                                dian = 1;
                        }
                        if (ch >= '0' && ch <= '9')
                        {
                                number += 1;
                                sum += (ch - '0')*d; //数字和
                        }
                        else if (number > 0 && !(ch >= '0' && ch <= '9') && ch != '.')  //让程序能以任意字符为数字间隔
                        {
                                dian = 0;
                                number = 0;
                        }
                        else
                        {
                                isOdd = 0;  //退出while循环
                        }
                }
        }

        printf("结果是:%.2f\n", sum);
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-10-22 12:55:31 | 显示全部楼层
你这代码是实现什么功能的?
#include <stdio.h>
#include <math.h> 
int main()
{
        float ch, sum = 0, d, number, x = 0;
        bool dian, isOdd = 1;

        while (isOdd)
        {
                printf("请输入合法的数字:");
                for (d = 1, dian = 0, number = 0; (ch = getchar() )!= '\n';)
                {
                        if (dian)
                        {
                                d /= 10;  //实现小数点后的分数
                        }
                        if (ch == '.')
                        {
                                dian = 1;
                        }
                        if (ch >= '0' && ch <= '9')
                        {
                                number += 1;
                                sum += (ch - '0')*d; //数字和
                        }
                        else if (number > 0 && !(ch >= '0' && ch <= '9') && ch != '.')  //让程序能以任意字符为数字间隔
                        {
                                dian = 0;
                                number = 0;
                        }
                        else
                        {
                                isOdd = 0;  //退出while循环
                        }
                }
        }

        printf("结果是:%.2f\n", sum);
        return 0; 
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-10-22 12:57:42 | 显示全部楼层
有点不明白你的问题,改了一下代码
#include <stdio.h>
#include <stdbool.h>

int main()
{
    float ch, sum = 0, d, number;
    bool dian, isOdd = 1;

    while (isOdd)
    {
        printf("请输入合法的数字:");
        for (d = 1, dian = 0, number = 0; (ch = getchar()) != '\n';)
        {
            if (dian)
            {
                    d /= 10;  //实现小数点后的分数
            }
            if (ch == '.')
            {
                    dian = 1;
            }
            if (ch >= '0' && ch <= '9')
            {
                    number += 1;
                    sum += (ch - '0')*d; //数字和
            }
            else if (number > 0 && !(ch >= '0' && ch <= '9') && ch != '.')  //让程序能以任意字符为数字间隔
            {
                    dian = 0;
                    number = 0;
            }
            else
            {
                    isOdd = 0;  //退出while循环
            }
        }
    }

    printf("结果是:%.2f\n", sum);

    return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-10-22 13:05:52 | 显示全部楼层
大马强 发表于 2021-10-22 12:55
你这代码是实现什么功能的?

课后作业s1e14期的第二个动手题的进阶
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-25 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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