这道题很水,可问题是我半天没出来
先附上代码
#include<stdio.h> #include<string.h> int main(){ int n,i,t,m,temp; scanf("%d",&n); while(n--){ scanf("%d",&m); int s[10]={0}; for(i=1;i<=m;i++){ temp=i; while(temp!=0){ t=temp%10; s[t]+=1; temp=temp/10; } } for(i=0;i<=9;i++){ if(i!=9)printf("%d ",s[i]); else printf("%d\n",s[i]); } } return 0; }
小结:
输完2,3之后就没反应,然后猜测应该是无限循环导致后面没有出来,一看果真是的,i那里首先不是把它赋值给temp,而是直接就那么做,那么到i=i/10的时候,i就会等于0会无限循环下去,所以要把i赋值给temp,然后再做。