#include<stdio.h>
int main()
{char a[100],b[100][2]={0};
int i,j=1,k;
gets(a);
b[0][0]=a[0];
for(int i=1;a[i]!='\0';i++)
{while(k<i)
{k=0;
if(a[k]!=a[i])
k++;
if(a[k]==a[i]) continue;}
if(k==i) {b[j++][0]=a[i];b[j++][1]='1';}
else if(k<i&&b[k][0]==a[k]) b[k][1]=+1;
}
for(j=0;;j++)
printf("%c %c\n",b[j][0],b[j][1]);
}
二维数组的第一个字符是干什么用的,记录出现的字符吗
代码修改如下:
#include<stdio.h>
int main()
{
char a[100],b[100][2]={0};
int i,j=0,k;
gets(a);
b[0][0]=a[0];
for( i=0;a[i]!='\0';i++)
{
k=0;
while(k<j)
{
if(b[k][0]!=a[i])
k++;
else if(b[k][0]==a[i])
break;
}
if(k==j)
{
b[j][0]=a[i];
b[j][1]=0x01;
j++;
}
else //if(k<i&&b[k][0]==a[k])
b[k][1]=+1;
}
for(k=0;k<j;k++)
printf("%c %d\n",b[k][0],b[k][1]);
return 0;
}
一维数组的话,就要自己计算每行的位置就行
#include <stdio.h>
#include <ctype.h>
#define N 100
int main()
{
char a[N];
int c[256] = {};
fgets(a, N, stdin);
const char *p = a;
while (*p)
c[*p++]++;
printf("ASCII\tCHAR\tCOUNT\n");
for (int i = 0; i < 256; i++)
if (c[i] > 0)
printf("0x%02X\t%c\t%d\n", i, isspace(i) ? ' ' : i, c[i]);
return 0;
}
#include<stdio.h>
int main()
{
char a[100],b[100][2]={0},temp;
int i,j=0,k,m;
gets(a);
for(i=0;a[i]!='\0';i++)
{for(m=i+1;a[m]!='\0';m++)
if(a[m]<a[i])
{ temp=a[i];
a[i]=a[m];
a[m]=temp;
} }
a[m]='\0';
for( i=0;a[i]!='\0';i++)
{
k=0;
while(k<j)
{
if(b[k][0]!=a[i])
k++;
else if(b[k][0]==a[i])
break;
}
if(k==j)
{
b[j][0]=a[i];
b[j][1]='1';
j++;
}
else if(k<j)
b[k][1]=b[k][1]+1;
}
for(k=0;k<j;k++)
printf("%c=%c\n",b[k][0],b[k][1]);
printf("\n");
return 0;
}