4-9 统计个位数字

本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-21252中,2出现了3次,则该函数应该返回3。

函数接口定义:

int Count_Digit ( const int N, const int D );

其中N和D都是用户传入的参数。N的值不超过int的范围;D是[0, 9]区间内的个位数。函数须返回N中D出现的次数。

裁判测试程序样例:

#include <stdio.h>

int Count_Digit ( const int N, const int D );

int main()
{
    int N, D;
				
    scanf("%d %d", &N, &D);
    printf("%d\n", Count_Digit(N, D));
    return 0;
}

/* 你的代码将被嵌在这里 */

输入样例:

-21252 2

输出样例:

3

解题思路:

  • 4-7 一样的位统计。建立了一个 a[10] 的数组来存放各个数位的个数。
  • 增加了处理负数转正以及特殊值 0 的代码。

解题代码:

int Count_Digit (const int N, const int D) {
	
	int n = N, d = D;
	int i, a[10]={};
	
	if (n < 0) {
		n = -n;
	} 
	if (n==0 && D==0) {
		a[D]=1;
	}
	while (n>0) {
		i = n % 10;
		n = n / 10;
		switch (i) {  
			case 0: a[0]++; break;
			case 1: a[1]++; break;
			case 2: a[2]++; break;
			case 3: a[3]++; break;
			case 4: a[4]++; break;
			case 5: a[5]++; break;
			case 6: a[6]++; break;
			case 7: a[7]++; break;
			case 8: a[8]++; break;
			case 9: a[9]++; break; 
			}
	}
	return a[D];
}
posted @ 2016-07-30 23:29  文之  阅读(1100)  评论(0编辑  收藏  举报