gpt4 book ai didi

计算数组中每个字符的数量

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

我正在尝试显示用户选择的句子中的哪个字符以及每个字符的数量。因此,如果用户输入“Hello World!”该程序应返回一个字符及其使用次数。

"SPACE:1, !:1, H:1, W:1, e:1, d:1, l:3, o:2, r:1,"

我将它放在一个开关中,因为我有其他选项供用户选择。

现在我可以找出使用了哪些字符以及从 SPACE 到 Q 有多少字符。我也可以找出所有小写字母,但如果它读取一个 'a',它会说有 1 'a ' 和一个空格(在 ASCII 代码中,它从 32 开始,随着小写字母的增加而增加)。

这些是我使用的变量。

int menyval = 0, i, k = 0, h, j, count, count2;
char input, str[100], getridof, add, character;

这是我在这种情况下的情况。

printf("Write a string not more then 50 chars:\n");
getchar();
i = 0;
j = 0;
count = 0;
int counts[50] = { 0 };
gets(str);
str[j] = str[i];
while (str[i] != '\0') {


if (str[i] >= 97 && str[i] <= 122) {
counts[str[i] - 97]++;
}
i++;
count++;
}

for (i = 0; i < 50; i++) {
if (counts[i] != 0) {
printf("%c: %d\n", i + 97, counts[i]);
}
}

while (str[j] != '\0') {


if (((str[j] >= 32 && str[j] <=96)) || ((str[j] >=123 && str[j] <= 126))) {
counts[str[j] - 32]++;
}
j++;
}

for (j = 0; j < 50; j++) {
if (counts[j] != 0 ) {
//if((j) < 127)
printf("%c: %d\n", j + 32, counts[j]);
}
}
printf("Total amount of char: %d\n", count);
str[i] = '\0';
system("pause");
system("cls");

这是一项学校作业,所以如果您不想直接说出代码,我能理解,但我会非常感谢您提供一些提示,为我指明正确的方向。

最佳答案

我以这种方式稍微更正并清除了您自己的代码:

  1. 删除未使用变量的声明。
  2. 将所有声明放在顶部
  3. 删除无用命令。
  4. “魔术” 数字更改为 6597 符号 'A', 'a' - 是的,char 数字。
  5. 为代码的各个部分添加注释
  6. 当然还有纠正错误,主要是:
    1. 重置计数器
    2. 不连续 符号范围(|| 在您的原始条件下)拆分为 2 个连续

所以现在完整的代码是:

#include <stdio.h>

int main() {
int i, count = 0, counts[50] = { 0 };
char str[100];

printf("Write a string not more than 50 chars:\n");
gets(str);

/* Counting capital letters and all symbols, too*/
i = 0;
while (str[i] != '\0') {
if (str[i] >= 'A' && str[i] <= 'Z') {
counts[str[i] - 'A']++;
}
i++;
count++;
}

/* ... and printing results */
for (i = 0; i < 50; i++) {
if (counts[i] != 0) {
printf("%c: %d\n", i + 'A', counts[i]);
}
}

/* ... and clear the counter */
for (i = 0; i < 50; i++)
counts[i] = 0;

/* Counting small letters */
i = 0;
while (str[i] != '\0') {
if (str[i] >= 'a' && str[i] <= 'z') {
counts[str[i] - 'a']++;
}
i++;
}

/* ... and printing results */
for (i = 0; i < 50; i++) {
if (counts[i] != 0) {
printf("%c: %d\n", i + 'a', counts[i]);
}
}

/* ... and clear the counter */
for (i = 0; i < 50; i++)
counts[i] = 0;

/* Counting symbols between SPACE and 'A' */
i = 0;
while (str[i] != '\0') {
if ((str[i] >= ' ' && str[i] < 'A')) {
counts[str[i] - ' ']++;
}
i++;
}

/* ... and printing results */
for (i = 0; i < 50; i++) {
if (counts[i] != 0 ) {
printf("%c: %d\n", i + ' ', counts[i]);
}
}

/* ... and clear the counter */
for (i = 0; i < 50; i++)
counts[i] = 0;

/* Counting symbols over 'z' */
i = 0;
while (str[i] != '\0') {
if ((str[i] >= 123 && str[i] <= 126)) {
counts[str[i] - 123]++;
}
i++;
}

/* ... and printing results */
for (i = 0; i < 50; i++) {
if (counts[i] != 0 ) {
//if((i) < 127)
printf("%c: %d\n", i + 123, counts[i]);
}
}


printf("Total amount of char: %d\n", count);
str[i] = '\0';
system("pause");
system("cls");
return 0;
}

我测试了它,现在它工作正常 - 尽管它仍然很丑。但它主要是您的代码,因此您将理解它

关于计算数组中每个字符的数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40916164/

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