鱼C论坛

 找回密码
 立即注册
查看: 1105|回复: 6

[已解决]c语言第13讲问题。

[复制链接]
发表于 2020-9-12 11:44:38 | 显示全部楼层 |阅读模式

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

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

x
#include <stdio.h>

int main()
{
        int ch;
        int num = 0;

        printf("请输入待转换的字符串:");

        do
        {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
               #include <stdio.h>

int main()
{
        int ch;
        int num = 0;

        printf("请输入待转换的字符串:");

        do
        {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
                else
                {
                        if (num)
                        {
                                break; // 如果已有数字,则退出循环
                        }
                }

        }
        while (ch != '\n');

        printf("结果是:%d\n", num);

        return 0;
}

这里为什么要用到else,不用貌似也没啥影响,还有if括号里的num是什么意思,ch为什么不能等于'\n’,
还有这里
else
                {
                        if (num)
                        {
                                break; // 如果已有数字,则退出循环
                        }
                }
这一段我感觉有些多余啊!

最佳答案
2020-9-16 00:29:12
本帖最后由 风过无痕1989 于 2020-9-16 00:34 编辑

问题还没有解决吗?你所说的 else 段,我去掉一层花括号,能理解了吗?

如果没有这一段,又等不到回车,将会是个死循环

if (num)  的意思是只要 num <> 0 就执行花括号里面的语句,它等价于:if (num != 0)
#include <stdio.h>

int main()
{
        int ch;
        int num = 0;

        printf("请输入待转换的字符串:");

        do
        {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
                else if (num)
                {
                        break;                    // 如果已有数字,则退出循环
                }
 
        }
        while (ch != '\n');

        printf("结果是:%d\n", num);

        return 0;
}

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

使用道具 举报

 楼主| 发表于 2020-9-12 11:49:43 | 显示全部楼层
本帖最后由 728252187 于 2020-9-12 11:50 编辑

[img][/img]
屏幕截图 2020-09-12 115023.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-12 11:56:36 | 显示全部楼层
兄弟,没有你这种发帖子的吧?是发帖子不收税吗?你同样的问题发两个,你叫人家是帮你还是不帮你?

要知道,论坛上没有人是必须帮你解答问题的!!! 人家回复你了,你收到了满意的结论,你得给人家一个回报,选为最佳答案(这步操作并不需要你付出什么,只是系统给了回复人一个相应的奖励而已)。

你前面发了一个帖子了,人家给你回复了,不满意答案,可以继续提问,你重新发一个帖子,这算怎么回事?是想引起回复你帖子的朋友们互掐吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-9-12 11:58:14 | 显示全部楼层
风过无痕1989 发表于 2020-9-12 11:56
兄弟,没有你这种发帖子的吧?是发帖子不收税吗?你同样的问题发两个,你叫人家是帮你还是不帮你?

要知 ...

发出格式了,不知道怎么删,我也不想的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-14 06:18:44 | 显示全部楼层
728252187 发表于 2020-9-12 11:58
发出格式了,不知道怎么删,我也不想的。

我们没有删除帖子的权限
如果感觉你帖子发的有错误想改,可以编辑你的帖子
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-9-16 00:29:12 | 显示全部楼层    本楼为最佳答案   
本帖最后由 风过无痕1989 于 2020-9-16 00:34 编辑

问题还没有解决吗?你所说的 else 段,我去掉一层花括号,能理解了吗?

如果没有这一段,又等不到回车,将会是个死循环

if (num)  的意思是只要 num <> 0 就执行花括号里面的语句,它等价于:if (num != 0)
#include <stdio.h>

int main()
{
        int ch;
        int num = 0;

        printf("请输入待转换的字符串:");

        do
        {
                ch = getchar();

                if (ch >= '0' && ch <= '9')
                {
                        num = 10 * num + (ch - '0');
                }
                else if (num)
                {
                        break;                    // 如果已有数字,则退出循环
                }
 
        }
        while (ch != '\n');

        printf("结果是:%d\n", num);

        return 0;
}

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

使用道具 举报

发表于 2020-9-16 16:22:50 | 显示全部楼层
728252187 发表于 2020-9-12 11:58
发出格式了,不知道怎么删,我也不想的。

好像没有删除帖子的权限,有编辑功能也行呀
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-13 03:23

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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