统计1到N之间数字1的个数
描述N为正整数,计算从1到N的所有整数中包含数字1的个数。比如,N=10,从1,2...10,包含有2个数字1。
输入
输入数据有多组测试数据,每一组占一行,每行为一个数字N,其中1≤N≤9999。以0作为结束。
输出
输出1到N所有整数中1的个数,每个测试占一行。
样例输入
1
2
3
4
5
6
7
8
9
0
样例输出
1
1
1
1
1
1
1
1
1
程序代码:
#include"stdio.h" int main() { int x[9999],i,j,d,N; for(i=0,d=0;i<9999;i++) { for(j=1;i/j;j*=10) { if(i/j%10==1) {x[d]=i; //printf("%d d=%d ",x[d],d); d++; break;} } } while(scanf("%d",&N),N) { for(i=0;i<9999;i++) { if(N>=9991){printf("3439\n");break;} if(x[i]<=N&&x[i+1]>N) {printf("%d\n",i+1);break;} } } return 0; }
刚开始我发现前面没有错,只是在输入9999的时候发现,在结束的地方没有去进行判断,我加了一个末尾的判断,但还是错,求解释