728252187 发表于 2020-9-12 11:44:38

c语言第13讲问题。

#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; // 如果已有数字,则退出循环
                        }
                }
这一段我感觉有些多余啊!

728252187 发表于 2020-9-12 11:49:43

本帖最后由 728252187 于 2020-9-12 11:50 编辑

风过无痕1989 发表于 2020-9-12 11:56:36

兄弟,没有你这种发帖子的吧?是发帖子不收税吗?你同样的问题发两个,你叫人家是帮你还是不帮你?

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

你前面发了一个帖子了,人家给你回复了,不满意答案,可以继续提问,你重新发一个帖子,这算怎么回事?是想引起回复你帖子的朋友们互掐吗?

728252187 发表于 2020-9-12 11:58:14

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

要知 ...

发出格式了,不知道怎么删,我也不想的。

巴巴鲁 发表于 2020-9-14 06:18:44

728252187 发表于 2020-9-12 11:58
发出格式了,不知道怎么删,我也不想的。

我们没有删除帖子的权限
如果感觉你帖子发的有错误想改,可以编辑你的帖子

风过无痕1989 发表于 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;
}

乐乐学编程 发表于 2020-9-16 16:22:50

728252187 发表于 2020-9-12 11:58
发出格式了,不知道怎么删,我也不想的。

好像没有删除帖子的权限,有编辑功能也行呀
页: [1]
查看完整版本: c语言第13讲问题。