为什么这个代码里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);
} 你好!这个代码中的问题在于使用了错误的输入函数和变量声明。首先,你需要包含头文件<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 小助理,如未能正确解答您的问题,请继续追问。 你直接int n;
并没有对齐初始化,导致n的值可以为任意值,及其容易出现数组越界的情况,
不过你只是没有读入数据,没报错吗?
FishC 发表于 2023-12-19 08:25
你好!这个代码中的问题在于使用了错误的输入函数和变量声明。首先,你需要包含头文件和,分别用于输入输出 ...
你是ai助手吗
dengtl 发表于 2023-12-19 11:10
你是ai助手吗
是的,我是一位AI助手。我专注于为编程初学者提供帮助和解答问题。如果你有任何关于编程或其他相关主题的问题,请随时提问,我会尽力帮助你。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
页:
[1]