数组--P1980 计数问题
题目描述
题解
试计算在区间 1 到 n的所有整数中,数字 x(0 ≤ x ≤ 9)共出现了多少次?例如,在 1到 11中,即在 1,2,3,4,5,6,7,8,9,10,11 中,数字 1 出现了 4 次。
输入输出格式
输入格式:
2个整数n,x之间用一个空格隔开。
输出格式:
1个整数,表示x出现的次数。
输入输出样例
我的实现
#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cmath>
using namespace std;
int main() {
int ori,num,flag;
char ch[10]={0};
scanf("%d%d",&ori,&num);
for (int i = 1; i <= ori; ++i) {
sprintf(ch,"%d",i);//数值转化位字符串
for (int j = 0; j < strlen(ch); ++j) {
if (int(ch[j]-'0')==num) flag++;
}
}
printf("%d",flag);
return 0;
}
也可以:
int main() {
int ori, num, flag;
char ch[10] = {0};
scanf("%d%d", &ori, &num);
for (int i = 1; i <= ori; ++i) {
int temp = i;
while (temp != 0) {
if (temp % 10 == num) {
flag++;
}
temp /= 10;
}
}
printf("%d", flag);
return 0;
}
学到的点:
1、 sprintf(,"%d",)
将数字转化为字符数组
2、 数字char转化为数字int:int(ch[j]-'0')
3、strlen()求字符数组长度
4、取一个数字的全部位数可以不断求余