描述
试计算在区间1 到n 的所有整数中,数字x(0 ≤ x ≤ 9)共出现了多少次?
例如,在1到11 中,即在1、2、3、4、5、6、7、8、9、10、11 中,数字1 出现了4 次。
输入描述:
输入共1行,包含2个整数n、x,之间用一个空格隔开。
输出描述:
输出共1行,包含一个整数,表示x出现的次数。
示例1
输入:
11 1输出:
4备注:
对于100%的数据,1≤ n ≤ 1,000,000,0 ≤ x ≤ 9。
题解
#include <stdio.h>
int main()
{
int n, x;
int a = 0; //代表每个从多位数上拆下来的数
int sum = 0; //计数器
scanf("%d %d", &n, &x);
for (int j =1; j <= n; j++) //从1到n,遍历1~n这串数字
{
int i = j; //将j的值赋给i,用i代替j来进行while循环,这样子就不会改变j的值
while (i != 0)
{
a = i % 10;
i = i / 10; //典型将多位数拆成单位数的代码段
if (x == a)
{
sum++; //计数器计数
}
}
}
printf("%d", sum);
return 0;
}
总结
1.循环嵌套的时候,如果内外层循环使用同一个变量,往往该变量会在内层循环发生变化(因为改该变量可能作为内层循环的条件),所以,要在内层循环结束之后要将该变量还原,才能使其在外层循环中继续使用。
2.下面这段典型的代码可用于拆分多位数
#include<stdio.h>
int main()
{
int i;
int a=0;
scanf("%d",&i);
while(i!=0){
a=i%10;
i=i/10;
printf("%d",a);
}
return 0;
}