给定数字N,我希望计算出现在数字3中的3的数目。 范围1-N。
int N;
int cnt = 0;
scanf("%d", &N);
for (int i = 1; i <= N; i++) {
if (i < 30) {
if (i % 10 == 3)
cnt++;
}
else {
while (i > 0) {
if (i % 10 == 3) {
cnt++;
}
i = (i / 10);
}
}
}
printf("%d", cnt);
当我的输入介于1到29之间时,此程序可以正常工作,但是当输入超过30时,该程序会给我一个错误的答案。
答案 0 :(得分:0)
您在外部for循环和内部while循环中使用相同的变量。
您需要为内部while循环使用其他变量。
通过变量j
控制while循环,您的程序将如下所示:
#include <stdio.h>
int main(int argc, char * argv[])
{
int N, j;
int cnt = 0;
scanf("%d", &N);
for (int i = 1; i <= N; i++) {
if (i < 30) {
if (i % 10 == 3)
cnt++;
}
else {
j = i;
while (j > 0) {
if (j % 10 == 3) {
cnt++;
}
j = (j / 10);
}
}
}
printf("%d", cnt);
return -1;
}
输出:
>a.exe
30
4
>a.exe
33
8