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
。当它是新字符时