|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
#include <stdio.h>
#include <stdlib.h>
int main()
{
int chang, i = 0, j, num = 1, k;
//chang表示用户输入字符串的长度,i和j用来循环计数的,num用来表示character数组的行长度,k用来排序时作为中间值
char characters[100], character[100][2] = {0}, K;
//characters数组用来存放用户输入的字符串,character这个二维数组用来存放characters中非重复部分元素及其出现次数,K用来排序时作为中间值
printf("请用户输入字符串:");
gets(characters);
chang = strlen(characters);
for(;i < chang;i++)
{
if(i == 0)
{
character[0][0] = characters[0];
character[0][1] = 1;
}
else
{
for(j = 0;j < num;j++)
{
if(characters[i] == character[j][0])
{
character[j][1] = character[j][1] + 1;
break;
}
else if(j == num - 1)
{
character[i][0] = characters[i];
num = num + 1;
printf("num = %d\n", num);
}
}
}
}
for(i = 0; i < chang - 1; i++)
{
for(j = i + 1;j < chang; j++)
{
if(character[i][1] > character[j][1])
{
k = character[i][1];
character[i][1] = character[j][1];
character[j][1] = k;
K = character[i][0];
character[i][0] = character[j][0];
character[j][0] = K;
}
}
}
for(i = 0; i < chang; i++)
{
printf("字符%c出现的次数为%d\n", character[i][0], character[i][1]);
}
printf("字符%c出现的次数最多,为%d次\n", character[chang - 1][0], character[chang - 1][1]);
return 0;
}
输入aaabbc后输出如图
为什么二维数组character中还存了三个空元素呢?
本帖最后由 傻眼貓咪 于 2022-1-15 08:04 编辑
#include <stdio.h>
int main()
{
char string[100], *p = string;
short chr[256] = {0}, *q = chr, m = -1, n = -1;
scanf("%s", string);
while(*p) chr[*p++]++;
for(int i = 0; i < 256; i++){
if(*(q+i)){
printf("字符 %c 出现的次数为 %hd 次\n", i, *(q+i));
if(*(q+i) > n){
m = i;
n = *(q+i);
}
}
}
printf("字符 %c 出现的次数最多,为 %hd 次", m, n);
return 0;
}
aaabbc
字符 a 出现的次数为 3 次
字符 b 出现的次数为 2 次
字符 c 出现的次数为 1 次
字符 a 出现的次数最多,为 3 次
|
-
|