统计个位数字 (15 分)
本题要求实现一个函数,可统计任一整数中某个位数出现的次数。例如-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
总结:在写这道题目的时候,我一开始当成了一道编程题在写,写到后面发现好像不对,才发现这是一道函数题,大可不必这么麻烦,然后转过头利用计数器来和循环来实现需求。在写的时候,我一直都超时,检查了好几遍都没有发现错在哪里,最后发现错在了a /=10;一开始我的if语句没有花括号,所以一直检查不出来,导致while循环超时。所以在此建议大家在编写代码的时候无论多么简单的语句都要按照格式进行编写。不要犯和我一样的错误。
代码实现:
int Count_Digit ( const int N, const int D )
{
int count=0;
int a=N,s=0;
if(N==0)return 1;
if(a<0)
a=-a;
while(a){
s=a%10;
if(s==D){
count++;
}
a/=10;
}
return count;
}