6-9 统计个位数字 (15 分)

6-9 统计个位数字 (15 分)

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

函数接口定义:

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

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

裁判测试程序样例:

#include 

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

思路
注意先求绝对值,否则求余函数无法正确计算
代码

#include 
/*
提交时间	状态	分数	题目	编译器	耗时	用户
2019/10/27 21:58:00
答案正确
15	6-9	C (gcc)	2 ms	569985011
测试点	提示	结果	耗时	内存
0	sample, 数字<0且不连续出现	答案正确	2 ms	384 KB
1	数字>0,有连续出现	答案正确	2 ms	256 KB
2	N=0,且输出1	答案正确	2 ms	280 KB
3	输出为0	答案正确	2 ms	364 KB
4	统计0的次数,可能循环会多1	答案正确	2 ms	256 KB
*/
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;
}

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

int Count_Digit ( const int N, const int D ){
	int temp=N;
	if(N<0)temp*=-1;
	
	if(temp==D)return 1;//处理N=0且D=0的特殊情况,顺便处理  |N|==D的情况
	
	int times=0;//出现次数
	for(int i=temp;i>0;i/=10){
		if(i%10==D)times++;
	}
	return times;
}

你可能感兴趣的:(PTA)