#include <stdio.h>
int main()
{
int n,x;
scanf("%d %d",&n,&x);
int count =0;
for(int i = 1;i<=n;i++)
{
int m =i;//从1开始计算
while(m)//循环运行的条件
{
if(m%10==x) //如果m除以10的余数是x的话,那么count就++
count++;
m=m/10; //再次定义m的值
}
}
printf("%d\n",count);
return 0;
}
//m /= 10; 表示将变量 m 除以 10 并将结果重新赋值给 m。这种操作在循环中用于逐步移除 m 的最低位数字,从而逐位检查 m 中的每个数字。
//假设 i 的值为 123,那么在第一次迭代中 m 也将是 123。循环开始时:
/*1.检查 m % 10,得到 3。如果这个数字等于 x,则 count 加一。
2.然后执行 m /= 10,此时 m 的值变为 12(即去掉了最低位的 3)
在下一次循环迭代中:
1.再次检查 m % 10,得到 2。重复判断过程
2.执行 m /= 10,现在 m 的值变为 1。
在第三次循环迭代中:
1.检查 m % 10,得到 1。再次进行判断
2.执行 m /= 10,此时 m 的值变为 0,因为 1 除以 10 等于 0。
当 m 变为 0 时,while 循环的条件不再满足,循环结束。这样,通过逐步除以 10,代码能够检查 i 的每一位数字,并对等于 x 的数字进行计数。
使用 m /= 10 而不是 m = m / 10 的好处是,/= 操作符直接对整数进行除法操作并更新 m 的值,避免了进行浮点数除法然后再进行类型转换的需要。*/
标签:count,int,scanf,整数,C语言,---,main
From: https://blog.csdn.net/2301_80863610/article/details/139183362