加入循环中出现了无法输出的问题怎么办?
我本来要做一个统计正数中指定数字个数的问题,但是在加上循环无报错情况下,始终无法输出,完全不懂怎么回事啊
#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
正确地统计了指定数字的个数,并将结果输出。
【相关推荐】