String 字符串中的字符顺序不正确

String 字符串中的字符顺序不正确,string,String,我是初学者,我需要一些帮助。这个程序打印出字符串中字符的频率,例如,如果用户输入zzaaa它打印出a3z2,我需要打印的是z2a3,因为z是在a之前首先输入的。但我很难改变顺序。提前谢谢 int main { int ib, i=0, j=0, k=0; int count[26] = {0}; char chh[3][10]; for (ib = 0; ib < 3; ib++) // get 3 input gets(chh[ib]);

我是初学者,我需要一些帮助。这个程序打印出字符串中字符的频率,例如,如果用户输入
zzaaa
它打印出
a3z2
,我需要打印的是
z2a3
,因为
z
是在
a
之前首先输入的。但我很难改变顺序。提前谢谢

int main
{
    int ib, i=0, j=0, k=0;
    int count[26] = {0};
    char chh[3][10];

    for (ib = 0; ib < 3; ib++) // get 3 input
        gets(chh[ib]);

for (i = 0; i < 3; i++)
{

    for (j = 0; j < 10; j++)
    {
        if (chh[i][j] >= 'a' && chh[i][j] <= 'z')
        {
            count[chh[i][j] - 'a']++;
        }
    }


    for (k = 0; k < 26; k++)
    {
        if (count[k] != 0) // if array location is not equals to 0
            printf("%c%d", k + 'a', count[k]); 
    }

    memset(count, 0, sizeof(count)); //reset integer array
    printf("\n");
}
int main
{
intib,i=0,j=0,k=0;
整数计数[26]={0};
char-chh[3][10];
for(ib=0;ib<3;ib++)//获取3个输入
获取(chh[ib]);
对于(i=0;i<3;i++)
{
对于(j=0;j<10;j++)
{

如果(chh[i][j]>='a'&&chh[i][j]它在
z
之前打印
a
,因为您按字母优先级排列
计数
a
z
,而不输入优先级:

count[chh[i][j] - 'a']
如果您想通过输入优先级来打印它们,您应该更改优先级。有几种方法可以做到这一点。例如:

#include <stdio.h>
#include <string.h>

int main()
{
    int ib, i=0, j=0,k=0, kk=0,c=0,found=0;
    int count[26][2];
    char chh[3][10];
    for (ib = 0; ib < 3; ib++) // get 3 input
        gets(chh[ib]);

    printf("output is:\n");

for (i=0;i<26;i++)
    {
        count[i][0]=0;
        count[i][1]=0;
    }
for (i = 0; i < 3; i++)
{
   for (j = 0; j < 10; j++)
    {

        if (chh[i][j] >= 'a' && chh[i][j] <= 'z')
        {

            found=0;
            for (c=0;c<kk;c++)
                if (count[c][0]==chh[i][j])
                        {

                            count[c][1]++;
                            found=1;
                            break;
                        }

            if (!found)
                {

                    count[c][0]=chh[i][j];
                    count[c][1]++;

                    kk++;
                }

        }
    }


    for (k = 0; k < 26; k++)
    {
        if (count[k][1] != 0) // if array location is not equals to 0
            printf("%c%d", count[k][0], count[k][1]); 
    }

   memset(count, 0, sizeof(count)); //reset integer array
    printf("\n");
}
}
#包括
#包括
int main()
{
intib,i=0,j=0,k=0,kk=0,c=0,found=0;
整数计数[26][2];
char-chh[3][10];
for(ib=0;ib<3;ib++)//获取3个输入
获取(chh[ib]);
printf(“输出为:\n”);

对于(i=0;i='a'&&chh[i][j]在
get(B[ib])
中的
B
是什么?使用了未定义数组
B[ib]
chh[3][10]
内容未知!您好,对不起,我已经更改了它。快速解决方法是,使
计数[26][2];
然后将单词的位置放在
计数[26][1]
,(单词计数在
count[26][0]
中),然后从低到高排序并打印。请不要将
get()
用作函数。它不能安全使用。它不再是标准C的一部分。如果使用它,就假装它会使程序崩溃。请改用
fgets()
,但请记住
fgets()< /代码>包括换行符和<代码> GETSH()/<代码>。或者,在Windows上,考虑使用<代码> GETSsx()< /C> >(删除换行符并可以安全使用)。。此外,您应该始终检查输入函数的返回值,以便在函数读取失败时不要尝试使用该值。您好,谢谢!但我可以知道此行的作用吗?count[c][0]=chh[i][j]这意味着将此字符保存在
count
。当它是新字符时