3120586067 发表于 2020-10-22 14:17:49

部分代码意思不理解

do while循环处不理解

#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                printf("请输入合法的数字:");
                sum = sum + num;
                status = scanf("%d", &num);
      } while(status == 1);

      printf("结果是:%ld\n", sum);

      return 0;
}

xieglt 发表于 2020-10-22 14:33:34

#include <stdio.h>

int main()
{
      int num = 0;
      long sum = 0L; // 0L表示类型为long的0
      int status;

      do
      {
                //这是让用户循环输入一个合法数字,将这些数求和,再输出。
                printf("请输入合法的数字:");
                //求和
                sum = sum + num;
                //用户输入,当输入为合法数字时,返回值status = 1,循环继续,不是合法数字时,status = 0,循环退出。
                status = scanf("%d", &num);
      } while(status == 1);

      printf("结果是:%ld\n", sum);

      return 0;
}

大裤衩子 发表于 2020-10-22 14:37:17

scanf函数接收输入成功返回数字1,只要成功就返回1,然后进行下一次输入,成了死循环啦

3120586067 发表于 2020-10-22 14:57:02

xieglt 发表于 2020-10-22 14:33


不是先printf输入,再scanf,再sum求和吗,怎么先sum,再scanf了。
还是说第一次do时,printf,sum略过,status判断是否为合法数字,再循环,printf输入,sum求和,此时sum求和的数字是第一次输入的数,以此循环(胡乱猜测的)

xieglt 发表于 2020-10-22 15:10:26

3120586067 发表于 2020-10-22 14:57
不是先printf输入,再scanf,再sum求和吗,怎么先sum,再scanf了。
还是说第一次do时,printf,sum略过,s ...

sum ,num 都赋了初值0,因此在前在后都没关系。
页: [1]
查看完整版本: 部分代码意思不理解