数据结构——算法之(016)( 输入整数n,计算从1到n这n个整数的十进制示意中1出现的次数和)
数据结构——算法之(016)( 输入整数n,计算从1到n这n个整数的十进制表示中1出现的次数和)
【申明:本文仅限于自我归纳总结和相互交流,有纰漏还望各位指出。 联系邮箱:Mr_chenping@163.com】
题目:
输入整数n,计算从1到n这个n个整数的十进制表示中1出现的次数和
题目分析:
一、其实问题可以转换成求一个数中1出现的次数,则涉及到基本的取余和除法运算
算法实现:
#include <stdio.h> /* ** 计算整数@m中包含数字@digit的个数 */ int count_digit_num(int m, int digit) { int count = 0; while(m) { if(m%10 == digit) count++; m = m/10; } return count; } int count_digit_one(int m) { int i=0; int count = 0; for(; i<=m; i++) { count += count_digit_num(i, 1); } return count; } int main(int argc, char *argv[]) { int m = atoi(argv[1]); printf("%d----->%d\n", m, count_digit_one(m)); }