思路
先定义一个for循环用来获取1~100的整数。
再用取余的方式获得个位并判断,如为9就加一不为就跳过。
那十位我们应在怎么办?
判断完个位之后,我们在除于10就会得到个小数,又因为是int类型计算机就会自动抹除小数,这样在进行取余判9再加一的方式就能判断十位上是不是9了。
那只有个位数怎么办?
笨,只有个位数的话对10取余不就等于本身吗,除以10的话等于零点几几(0.xxx)又因为是int类型,在被计算机抹除小数点后面的值不久等于0吗,0不就是while循环的终止条件吗。
注意:
不要只判断个位是九或者十位是九,这样的话99你就只算了一个,最后输出的结果是19个,
如果非要这么写那就在判断上在加上一句num == 99这样才可以,但又仅限于1~99的判断,要不999,9999,99999你还得少数。
判断过程:
for (int i = 1; i <= 100; i++)
{
int num = i;
do
{
if (num % 10 == 9)
count++;
num /= 10;
} while (num);
}
源码:
#include <stdio.h>
int main()
{
int count = 0;
for (int i = 1; i <= 100; i++)
{
int num = i;
do
{
if (num % 10 == 9)
count++;
num /= 10;
} while (num);
}
printf("%d", count);
}
运行结果: