大家看看这个代码为什么结果不对(密文)C++

来源:百度知道 编辑:UC知道 时间:2024/05/21 21:59:01
#include<iostream>
#include<stdlib.h>
using namespace std;
main()
{
char string[80];
gets(string);
char c;
for(int i=0;(c=string[i])!='\0';i++)
{if((c>'a'&&c<='z')||(c>'A'&&c<='Z'))
c=c-1;
else if((c='a')||(c='A')) c=c+25;
}
for(int i=0;(c=string[i])!='\0';i++)
cout<<string[i];
system("pause");
}
为什么输入一个单词这个程序是对的,而是一个句子的时候输出的答案就不对了.譬如输入love就对,I love you就不对了

c=string[i],但是c改变了之后string[i]并不改变。所以要修改一下
{if((c>'a'&&c<='z')||(c>'A'&&c<='Z'))
c=c-1; //改成string[i]=c-1;
else if((c='a')||(c='A')) c=c+25; //改成string[i]=c+25;
}

else if((c='a')||(c='A')) c=c+25;
晕了,才发现你的等号用错了,要两个==,怪不得把所有不是字母的都变成z了。。。郁闷,找了半天。。。。

你的意思是不是当c='A'时,输出的是z,而不是Z.
如果是这样,是因为在C++输出窗口中Z与z是相同的,都像是z.