鱼C论坛

 找回密码
 立即注册
查看: 1575|回复: 1

[已解决]求助

[复制链接]
发表于 2022-1-14 17:31:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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-14 22:02:41
本帖最后由 傻眼貓咪 于 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 次
1642152586(1).png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-1-14 22:02:41 | 显示全部楼层    本楼为最佳答案   
本帖最后由 傻眼貓咪 于 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 次
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 08:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表