鱼C论坛

 找回密码
 立即注册
查看: 1136|回复: 4

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

[复制链接]
发表于 2023-12-19 08:24:49 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-12-19 08:25:00 | 显示全部楼层
你好!这个代码中的问题在于使用了错误的输入函数和变量声明。首先,你需要包含头文件<cstdio>和<iostream>,分别用于输入输出操作。然后,你应该使用cin而不是gets来读取输入的字符。此外,word应该是一个字符数组而不是一个字符变量,并且你可能需要使用一个循环来读取多个字符。下面是修正后的代码:
#include <iostream>int main() {    int i=0;    char word[100],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]=='i' && word[i+1]=='n' && word[i+2]=='g') {            a='a';            i+=2;   // 找到一个单词后,跳过此单词的长度            std::cout<<a;        } else if(word[i]=='e' && word[i+1]=='r') {            b='l';            i+=1;   // 找到一个单词后,跳过此单词的长度            std::cout<<b;        } else {            std::cout<<word[i];        }    }    std::cout<<word[n-1];   // 输出最后一个字符        return 0;}
希望这个解答能够帮助到你,如果还有其他问题,请随时提问!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 10:04:55 | 显示全部楼层
你直接int n;
并没有对齐初始化,导致n的值可以为任意值,及其容易出现数组越界的情况,
不过你只是没有读入数据,没报错吗?

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

你是ai助手吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-12-19 11:10:30 | 显示全部楼层

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

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 03:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表