个位数字统计 (15 分)
给定一个整数n,统计每种不同的个位数字出现的次数。例如,给定n=100811,则有2个0,3个1,1个8。
输入格式:
输入一个不超过长整型范围的整数n。
输出格式:
对n中每一种不同的各位数字,以 D:M的格式在一行中输出该位数字 D及其在 n 中出现的次数 M。要求按 D 的升序输出。
输入样例:
100811
输出样例:
0:2
1:3
8:1
自己的代码:之前一直PTA段错误,后来发现是static int char[10]的问题
然后换了一种方法初始化,PTA就运行超时了。。
超时代码:
#include<stdio.h>
int main()
{
char ch;
int a[10]={0};
int i;
ch=getchar();
while(ch!='\n'){
i=ch-'0';
a[i]++;
ch=getchar();
}
for(i=0;i<10;i++)
{
if(a[i]!=0) printf("%d:%d\n",i,a[i]);
}
return 0;
}
正确了的代码:
#include<stdio.h>
int main()
{
long n;
int i;
static int a[10];
scanf("%ld",&n);
while(n)
{
a[n%10]++;
n/=10;
}
for(i=0;i<10;i++)
{
if(a[i]) printf("%d:%d\n",i,a[i]);
}
return 0;
}
还是不太清楚上一种为什么错。。。