鱼C论坛

 找回密码
 立即注册
查看: 575|回复: 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应该是一个字符数组而不是一个字符变量,并且你可能需要使用一个循环来读取多个字符。下面是修正后的代码:
  1. #include <iostream>
  2. int main() {
  3.     int i=0;
  4.     char word[100],a,b;//a ing,b er ly
  5.     std::cin.getline(word, 100);
  6.     int n = strlen(word);   // 此处你需要包含头文件<cstring>,并使用strlen函数获取字符串的长度
  7.     for(i=0; i<n-1; i++) {   // 因为最后一个字符是换行符,所以循环条件改为n-1
  8.         if(word[i]=='i' && word[i+1]=='n' && word[i+2]=='g') {
  9.             a='a';
  10.             i+=2;   // 找到一个单词后,跳过此单词的长度
  11.             std::cout<<a;
  12.         } else if(word[i]=='e' && word[i+1]=='r') {
  13.             b='l';
  14.             i+=1;   // 找到一个单词后,跳过此单词的长度
  15.             std::cout<<b;
  16.         } else {
  17.             std::cout<<word[i];
  18.         }
  19.     }
  20.     std::cout<<word[n-1];   // 输出最后一个字符
  21.    
  22.     return 0;
  23. }
复制代码

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

以上回复来自 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-4-27 16:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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