我编写的代码会检查前两个字母是否相同,它会删除一个并更正单词。但它不起作用是什么问题?
char word[4];
int i;
cout<<"Enter Word:";
for(i=0;i<5;i++) cin>>word[i];
for(int y=0;y<5;y++){
if(word[i]==word[i+1]){
for(int k=y;k<5;k++){
word[i]=word[i+1];
}
for(int g=0;g<5;g++)
cout<<word[i];
}
}
答案 0 :(得分:1)
该行:
if(word[i]==word[i+1]){
需要:
if(word[y]==word[y+1]){
事实上,几乎所有对i
的引用都需要适当的循环变量。
此外,大多数文字5
需要4
代替。 (您希望遍历值0,1,2和3.您不想访问word[4]
(它不存在)。
最后,行:
for(int y=0;y<5;y++){
应该是:
for(int y=0;y<3;y++){
因为您要访问word[y+1]
答案 1 :(得分:0)
您不需要循环直到阵列结束。你需要去最后一个之前的地方。
此外,您还需要将索引中的 i 更改为循环。
char word[4];
int i;
cout<<"Enter Word:";
for(i=0;i<5;i++)
cin>>word[i];
for(int y=0;y<4;y++){
if(word[y]==word[y+1]){
for(int k=y;k<4;k++){
word[k]=word[k+1];
}
for(int g=0;g<5;g++)
cout<<word[g];
}
}