lebaaa 发表于 2023-10-23 23:05:55

循环数组问题求解

这样运行系统报错了,应怎么改{:5_100:}
题目:编写一个程序,输入一个字符串,输出其中每个字符在字母表中的序号。对于不是英文字时的字符,输出 0。例如:输入为”acbf8g”,输出为 1 3 2 6 0 7
#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    char str;
    cin.getline(str, 10, '\n');
    for (int i = 0; str != '\n'; i++)
    {
      if (isdigit(str))
            cout << " " << "0";
      else if (isalpha(str))
            cout << " " << str - 'a' + 1 ;
    }
    return 0;
}
Thanks♪(・ω・)ノ

isdkz 发表于 2023-10-23 23:06:19

问题出在循环的条件判断上。在这段代码中,使用了 cin.getline() 函数来获取输入的字符串,但是它不会将换行符 \n 包含在内。所以在循环条件判断 str[ i] != '\n' 中,永远都无法满足条件,导致循环无法结束,最终导致系统报错。

解决这个问题,可以将循环条件改为判断字符串是否结束,即判断 str[ i] != '\0' 。 \0 是字符串的结束符,表示字符串的结尾。

改正后的代码如下所示:

#include <iostream>
#include <cstdlib>

using namespace std;

int main()
{
    char str;
    cin.getline(str, 10, '\n');
    for (int i = 0; str[ i] != '\0'; i++)
    {
      if (isdigit(str[ i]))
            cout << " " << "0";
      else if (isalpha(str[ i]))
            cout << " " << str[ i] - 'a' + 1 ;
    }
    return 0;
}


这样修改后,循环会在字符串结束时结束,不会再出现报错的情况。

cjgank 发表于 2023-10-24 10:50:09

楼下方法是对的

六翻了 发表于 2023-10-24 19:28:40

#include <ctype.h>

int main() {
    char str;
    int i;
    printf("请输入一个字符串:");
    scanf("%s", str);
    printf("每个字符在字母表中的序号为:");
    for(i = 0; str != '\0'; i++) {
      if(isalpha(str)) {
            if(isupper(str)) {
                printf("%d ", toupper(str) - 'A' + 1);
            } else {
                printf("%d ", tolower(str) - 'a' + 1);
            }
      } else {
            printf("0 ");
      }
    }
    return 0;
}

lebaaa 发表于 2023-10-25 11:22:18

cjgank 发表于 2023-10-24 10:50
楼下方法是对的

是楼上吧嘿嘿嘿

lebaaa 发表于 2023-10-25 11:23:21

六翻了 发表于 2023-10-24 19:28


Thanks♪(・ω・)ノ我们班其他两个同学也是这么做的

六翻了 发表于 2023-10-25 11:43:09

lebaaa 发表于 2023-10-25 11:23
Thanks♪(・ω・)ノ我们班其他两个同学也是这么做的

条条大路通罗马

lebaaa 发表于 2023-10-25 11:47:27

六翻了 发表于 2023-10-25 11:43
条条大路通罗马

是的!可以去看看我的新帖吗{:10_254:}差一点点就能到罗马了

cjgank 发表于 2023-11-1 15:42:38

lebaaa 发表于 2023-10-25 11:22
是楼上吧嘿嘿嘿

{:5_109:}对。打错字了,楼上
页: [1]
查看完整版本: 循环数组问题求解