给定一个数字 N,我希望计算 范围 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 时,程序会给我一个错误的答案。
您对外部 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