如何计算 3 到 1 之间包含 1 的数字,其中 N 是给定的输入?



给定一个数字 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

相关内容

最新更新