1215787625 发表于 2023-12-19 08:24:49

为什么这个代码里a,b没有读入数据

#include<stdio.h>
#include<string.h>
int main(){
        int i=0;
        char word,a,b;//a ing,b er ly
        gets(word);
        int n;
        for(i=0;i<3;i++){
                a=word;
        }
        for(i=0;i<2;i++){
                b=word;
        }
        n = strlen(word);
        if(n>3){
                if(strcmp(b,"er")==0){
                        for(i=0;i<n-2;i++){
                                printf("%c",word);
                        }
                        printf("\0");
                }
                if(strcmp(b,"ly")==0){
                        for(i=0;i<n-2;i++){
                                printf("%c",word);
                        }
                        printf("\0");
                }
                if(strcmp(a,"ing")==0){
                        for(i=0;i<n-2;i++){
                                printf("%c",word);
                        }
                        printf("\0");
                }
                return 0;
        }
        if(n==3){
                if(strcmp(b,"er")==0){
                        for(i=0;i<n-2;i++){
                                printf("%c",word);
                        }
                        printf("\0");
                }
                if(strcmp(b,"ly")==0){
                        for(i=0;i<n-2;i++){
                                printf("%c",word);
                        }
                        printf("\0");
                }
                return 0;
        }
        printf("%s",word);

}

FishC 发表于 2023-12-19 08:25:00

你好!这个代码中的问题在于使用了错误的输入函数和变量声明。首先,你需要包含头文件<cstdio>和<iostream>,分别用于输入输出操作。然后,你应该使用cin而不是gets来读取输入的字符。此外,word应该是一个字符数组而不是一个字符变量,并且你可能需要使用一个循环来读取多个字符。下面是修正后的代码:

#include <iostream>

int main() {
    int i=0;
    char word,a,b;//a ing,b er ly
    std::cin.getline(word, 100);
    int n = strlen(word);   // 此处你需要包含头文件<cstring>,并使用strlen函数获取字符串的长度
    for(i=0; i<n-1; i++) {   // 因为最后一个字符是换行符,所以循环条件改为n-1
      if(word=='i' && word=='n' && word=='g') {
            a='a';
            i+=2;   // 找到一个单词后,跳过此单词的长度
            std::cout<<a;
      } else if(word=='e' && word=='r') {
            b='l';
            i+=1;   // 找到一个单词后,跳过此单词的长度
            std::cout<<b;
      } else {
            std::cout<<word;
      }
    }
    std::cout<<word;   // 输出最后一个字符
   
    return 0;
}

希望这个解答能够帮助到你,如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。

渔村暮火 发表于 2023-12-19 10:04:55

你直接int n;
并没有对齐初始化,导致n的值可以为任意值,及其容易出现数组越界的情况,
不过你只是没有读入数据,没报错吗?

dengtl 发表于 2023-12-19 11:10:23

FishC 发表于 2023-12-19 08:25
你好!这个代码中的问题在于使用了错误的输入函数和变量声明。首先,你需要包含头文件和,分别用于输入输出 ...

你是ai助手吗

FishC 发表于 2023-12-19 11:10:30

dengtl 发表于 2023-12-19 11:10
你是ai助手吗

是的,我是一位AI助手。我专注于为编程初学者提供帮助和解答问题。如果你有任何关于编程或其他相关主题的问题,请随时提问,我会尽力帮助你。

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页: [1]
查看完整版本: 为什么这个代码里a,b没有读入数据