正确答案如下:
#include<stdio.h>
int main(){
char a[1001];
int b[10],i,n=0;
for(i=0;i<10;i++){
b[i]=0;
}
scanf("%s",a);
for(i=0;a[i]!='\0';i++){
b[(a[i]-'0')]++;
}
for(i=0;i<10;i++){
if(b[i]!=0){
n++;
}
}
for(i=0;i<10;i++){
if(b[i]!=0){
printf("%d:%d",i,b[i]);
n--;
if(n>0){
printf("\n");
}
}
}
return 0;
}
感觉先n++再n--有些麻烦,不知道能否优化。
由于字符串的知识有些遗忘,写了如下代码进行复习。
#include<stdio.h>
int main(){
char a[10];
int i;
scanf("%s",a);
for(i=0;a[i]!='\0';i++){
printf("%c",a[i]);
}
return 0;
}
下面是部分正确的答案,因为int类型不够大。
#include<stdio.h>
int main(){
int a,b[10],i,n=0;
scanf("%d",&a);
for(i=0;i<10;i++){
b[i]=0;
}
for(;a>0;a/=10){
b[a%10]++;
}
for(i=0;i<10;i++){
if(b[i]!=0){
n++;
}
}
for(i=0;i<10;i++){
if(b[i]!=0){
printf("%d:%d",i,b[i]);
n--;
if(n>0){
printf("\n");
}
}
}
return 0;
}