#include
#include
void main()
{
char ch[80];
int i,a[10],j,t;
for(i=0;i<10;i++)
a[i]=0;
//gets(ch);
scanf("%s",ch);
t=strlen(ch);
printf("%s\n",ch);
printf("字符串的长度是%d\n",t);
for(i=0;i<=t;i++)
{
if(ch[i]== '0')
a[0]++;
if(ch[i]== '1')
a[1]++;
if(ch[i]== '2')
a[2]++;
if(ch[i]== '3')
a[3]++;
if(ch[i]== '4')
a[4]++;
if(ch[i]== '5')
a[5]++;
if(ch[i]== '6')
a[6]++;
if(ch[i]== '7')
a[7]++;
if(ch[i]== '8')
a[8]++;
if(ch[i]== '9')
a[9]++;
}
for(i=0;i<10;i++)
printf("数字%d出现%d次\n",i,a[i]);
}
这是我的想法,繁琐了点,应该可以用switch语句吧
关于你的代码if(ch[i]>='0'&&ch[i]<='9') a[ch[i]]++;
这句代码就像楼上说的那样,它的值是个字符,就像'0'这样,是不能作为下标的