do while循环后无法输出打印

加入循环中出现了无法输出的问题怎么办?
我本来要做一个统计正数中指定数字个数的问题,但是在加上循环无报错情况下,始终无法输出,完全不懂怎么回事啊

#include <stdio.h>
int main()
{
    int p,q,number,digit;
    scanf("%d %d",&number,&digit);
    p = number/10;
    int count = 1;
    q = number%10;
    do{
    if(q==digit){
            count++;
        }
        q=p%10;
        
    }while(p/10!=0);
    printf("%d\n",count);
    return 0;
}
    
    

你在do-while循环中没有更新p的值。你需要在循环的最后加上p = q;来更新p的值。
修改后的代码如下:

#include <stdio.h>
int main()
{
    int p,q,number,digit;
    scanf("%d %d",&number,&digit);
    p = number/10;
    int count = 1;
    q = number%10;
    do{
        if(q==digit){
            count++;
        }
        q=p%10;
        p = q; // 更新p的值
        
    }while(p/10!=0);
    printf("%d
",count);
    return 0;
}

如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

【以下回答由 GPT 生成】

这段代码有一个问题,循环体内的 p = p / 10; 应该在 if (q == digit) 之后,而不是之前。

这是因为在循环开始时,只对变量 p 进行了一次赋值,然后在循环体内进行了计算。但是在循环体内的 if 语句中,当 q == digit 时,计数器 count 增加,但是 p 没有更新,会导致循环条件 p / 10 != 0 一直为真,从而形成了无限循环。

请修改代码如下:

#include <stdio.h>

int main()
{
    int p, q, number, digit;
    scanf("%d %d", &number, &digit);
    p = number / 10;
    int count = 1;
    q = number % 10;

    do {
        if (q == digit) {
            count++;
        }
        p = p / 10;
        q = p % 10;

    } while (p != 0);

    printf("%d\n", count);

    return 0;
}

这样修改后,循环体内的 p = p / 10; 语句会在每一次循环时更新 p 的值,使得循环最终能够退出。同时,计数器 count 正确地统计了指定数字的个数,并将结果输出。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^