1.经典错误:
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
count++;
printf("%d\n", i);
}
else if (i / 10 == 9)
{
count++;
printf("%d\n", i);
}
}
printf("%d\n", count);
return 0;
}
- 看似是正确的,但是问题就是100以内应该是20个9,因为99是包含了两个9,所以99没有数到各位,只数到了十位
- 问题就出现在了else if上,因为只有在第一个 if 没达到运行条件的情况下,else if 才会运行,所以99是符合 if 的条件的,不会去else if 判断
解决方案:
#include<stdio.h>
int main()
{
int i = 0;
int count = 0;
for (i = 1; i <= 100; i++)
{
if (i % 10 == 9)
{
count++;
printf("%d ", i);
}
if (i / 10 == 9)
{
count++;
printf("%d ", i);
}
}
printf("%d\n", count);
return 0;
}