岁寒青松 发表于 2022-2-9 16:28:54

莫名其妙的循环

本帖最后由 岁寒青松 于 2022-2-9 16:28 编辑

1#include<stdio.h>
2
3int main()
4{
5         int i , sum = 0 ;
6
7         while (1)
8         {
9               printf("请输入合法的数字:");
10               scanf("%d", &i );
11               
12               if (i >= 0 && i <= 9)
13               {      
14                         sum = sum + i ;
15               }
16               else
17               {      
18                         printf("结果是:%d\n", sum);
19                         break;
20               }
21         }
22         
23         return 0;
24 }


这是我写的S1E4课后作业动动手的题目1的代码,运行时一旦输入字母,就会无限输出“请输入合法的数字:”这行字,不知道是哪出的问题,求教!

深谙流年 发表于 2022-2-9 16:40:07

我是学Python的   我看你的那个‘’请输入合法的数字‘’是不是没赋值   然后就没有用户操作的时候所以一直打印那句话

梦回连营 发表于 2022-2-9 16:57:08

i的初始值是0, 符合第一个分支条件, 当你输入一个字母时, scanf没有读取到整数,会进入下一行代码,并且你输入的字母一直保存在缓冲区, 所以 i 的值一直为 0,然后一直在while里不断循环

ckblt 发表于 2022-2-9 17:04:58

#include <stdio.h>
#include <stdlib.h>

int main()
{
    char s;
    int i, sum = 0;

    while (1)
    {
      printf("请输入合法的数字:");
      scanf("%s", s);

      i = atoi(s);

      if ((i != 0 || s == "0") && (i >= 0 && i <= 9))
      {
            sum = sum + i;
      }
      else
      {
            printf("结果是:%d\n", sum);
            break;
      }
    }

    return 0;
}

hornwong 发表于 2022-2-9 18:59:56

{:5_95:}

Passepartout 发表于 2022-2-9 19:36:26

{:5_102:}{:5_107:}

Passepartout 发表于 2022-2-9 19:36:59

{:5_95:}

Passepartout 发表于 2022-2-9 19:37:29

{:5_110:}

Passepartout 发表于 2022-2-10 07:28:05

{:10_258:}

Passepartout 发表于 2022-2-10 07:28:37

{:5_102:}

Passepartout 发表于 2022-2-10 07:54:01

{:10_256:}

Passepartout 发表于 2022-2-10 07:54:33

{:10_269:}

Passepartout 发表于 2022-2-10 07:55:19

{:10_250:}

Passepartout 发表于 2022-2-10 07:56:11

{:10_266:}

Passepartout 发表于 2022-2-10 07:56:46

{:10_266:}

Passepartout 发表于 2022-2-10 07:57:17

{:10_266:}

Passepartout 发表于 2022-2-10 07:58:00

{:10_269:}
页: [1]
查看完整版本: 莫名其妙的循环