gpt4 book ai didi

C - 程序无法正常工作,我错过了什么?

转载 作者:太空宇宙 更新时间:2023-11-04 08:18:08 25 4
gpt4 key购买 nike

<分区>

我正在学习 C,我必须编写一个程序,您可以在其中输入一个字符串并调用该函数,该函数会告诉您 2 个字母在字符串中重复次数最多。但是该函数返回了错误的字母。问题是,我使用了我以前制作的程序中的一个片段,所以我不知道为什么它现在不起作用。

这是困扰我的功能,我认为问题出在第二个for循环中,因为如果我打印字母表中每个字母的重复次数,它应该是正确的,重复次数与字符串相比,每个字母都是正确的。但是第二个 for 循环仍然没有返回正确的字母。

void najcescaSlova( char *niz, int *znak) {
int i, slova[26]={0}, duljina=0, znak1, znak2;

while (niz[duljina] != '\0')
++duljina;

for (i=0; i < duljina; ++i) {
if (niz[i] >= 'A' && niz[i] <= 'Z')
++slova[niz[i] - 65];

if (niz[i] >= 'a' && niz[i] <= 'z')
++slova[niz[i] - 97];
}

znak1 = znak2 = -1;

for (i=0; i < 26; ++i) {
if (slova[i] != 0) {
if (slova[i] == znak1) {
znak2 = i;
}

if (slova[i] > znak1) {
znak2 = znak1;
znak1 = i;
}

if (slova[i] < znak1 && slova[i] > znak2) {
znak2 = i;
}
}
}

znak[0] = znak1;
znak[1] = znak2;

return;
}

对不起,该程序是我的母语,但如果您愿意,我可以关闭并重新打开问题。

slova[26]是保存每个字母重复次数的数组。

niz 是输入字符串。

znak1 和 znak2 是最大的两个字母,而 znak1 被视为最大的。

这里的意思是,slova[0]是7,slova[2]是5,所以当i=0时,znak1被置为0,因为0代表A,但是当i=2时,znak1被置为2 , 表示C,即使不满足if(slova[i] > znak1) 条件,slova[i] 为5,小于znak1,znak1 早前设置为7。

抱歉,如果这太长了,感谢您的宝贵时间。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com