数一下 1到 100 的所有整数中出现多少个数字9并输出这些数字

发布时间:2024年01月06日

? 分析:

????????我们知道 1-100的整数 i 中,9会出现在十位和个位上,数9出现的次数可以通过以下来实现:

  • 个位是9? ?// i % 10得到整数 i 个位上的数
  • 十位是9? ?// i / 10得到整数 i 除了个位数的数字

这也是做这道题之后,我们需要掌握的。思考, 1234想到得到4、12和123如何实现?(先自行思考一下)

1234 % 10? ? //得到4

1234 / 100? ? ? //得到12

1234 / 10? ?//得到123

?代码实现:

#include<stdio.h>
int main()

?? ?int count = 0;
?? ?int i = 0;
?? ?for (i = 1; i <= 100; i++)
?? ?{
?? ??? ?if (i % 10 == 9)//个位数是9
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ??? ?printf("%d ", i);
?? ??? ?}
?? ??? ?if (i / 10 == 9)//十位数是9
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ??? ?printf("%d ", i);
?? ??? ?}
?? ?}
?? ?printf("\n");
?? ?printf("%d\n", count);
?? ?return 0;
}

从这里可以看出,99是算了两次的,所以数字9的出现次数是20 。那下例打印出19,是怎么回事呢?

易错点

#include<stdio.h>
int main()

?? ?int count = 0;
?? ?int i = 0;
?? ?for (i = 1; i <= 100; i++)
?? ?{
?? ??? ?if (i % 10 == 9)//个位数是9
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ??? ?printf("%d ", i);
?? ??? ?}
?? ??? ?else if (i / 10 == 9)//十位数是9
?? ??? ?{
?? ??? ??? ?count++;
?? ??? ??? ?printf("%d ", i);
?? ??? ?}
?? ?}
?? ?printf("\n");
?? ?printf("%d\n", count);
?? ?return 0;
}

????????从运行结果看出,99少算了一次。对比前一个代码,发现差别仅有分支结构(if-if、if-else if)。

  • if-if条件只要满足就会都会执行if语句;
  • if-else只会执行一个语句,要么是if语句,要么是else语句 。

而这里99首先满足? i % 10 == 9? 的判断条件,所以执行完相应语句后,就到for循环的调整语句(i++),没有进入else语句。


期待

?

?

文章来源:https://blog.csdn.net/wait___wait/article/details/135416002
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。