我自己写了一个,但是效率很低,大整数的时候比较慢,代码如下:
#include <stdio.h>
#include <time.h>
int CountOf1s(int n, char ch )
{
int i = 1;
int num = 0;
int count = 0;
int temp = 0;
if(ch < '0' || ch > '9' || n < 1)
return -1;
num = ch - '0';
for(i = 1; i <= n; ++i)
{
temp = i;
while(temp)
{
if(temp%10 == num)
++count;
temp /= 10;
}
}
return count;
}
int main(void)
{
int t1,t2,n;
t1 = clock();
n = CountOf1s(100000,'0');
t2 = clock();
printf("%d\t%d\n",n,t2-t1);
getch();
return 0;
}
谁有更好的代码?或者谁有好的算法之类的,请指点一二,谢谢。