输入的字符串(字符串仅包含小写字母‘a’到‘z’),按照如下规则,循环转换后输出:a->b,b->c,…,y->z,

#include<iostream>#include"string.h"using namespace std;void convert(char *input,char* output){ char c='\0'; int tag=0; int length=strlen(input); for(int i=0;i<length;i++) { if(input[i]!=c) { output[i]=(input[i]-'a'+1)%26+'a'; tag=1; c=input[i]; } else { if(tag==1) { output[i]=(input[i]-'a'+2)%26+'a'; tag=0; c=input[i]; } else { output[i]=(input[i]-'a'+1)%26+'a'; tag=1; c=input[i];
} } }}void main(){ char input[5]; char output[5]; cout<<"输入字母:"<<endl; cin>>input; convert(input,output); cout<<"输出是:"<<output<<endl;
}
代码如上;为什么输入的时候可以输入多于5个字母;
而且输入比如abcdef的结果是

为什么出现这样的结果,求解释谢谢!

数组的输出你写错了!要用for循环一个个输出
你要限制不能输入超过5个字符就要加一个判断语句。
我把你写的修改了一下。
#include<iostream>
#include"string.h"
using namespace std;
void convert(char *input,char* output)
{
for(int i=0;i<5;i++)
{
output[i]=(input[i]-'a'+1)%26+'a';
}

}

void main()
{
char input[5];
char output[5];
cout<<"输入字母:";
cin>>input;
int length=strlen(input);
while(length>5) //判断输入个数是否超过5个
{
cout<<"输入错误,请重新输入"<<endl;
cin>>input;
length=strlen(input);
}

convert(input,output);
cout<<"输出是:";
for(int i=0;i<5;i++)
{
cout<<output[i];
}
cout<<endl;
}
温馨提示:答案为网友推荐,仅供参考
相似回答