用c++在VS上编写维吉尼亚密码时,运行后只输出一个字母然后就报错
#include;
using namespace std;
int main() {
/*输入明文,并区分大小写转化为数字*/
string str;
cin >> str;
int i = str.length(), f;//i为明文长度
for (f = 0; f < i; f++) {
if (str[f] < 97) { str[f] = str[f] - 65; }
else { str[f] = str[f] - 97; ; }
}
/*输入密钥,并调整密文长度与明文长度一致*/
string str2;
cin >> str2;
int l = str2.length(), m;//l为密文长度
if (l < i) {
for (int a = 0; l < i; l++, a++) {
str2[l] = str2[a];
}
}
else {
for (int a = 0; l > i; a++, i++) { str[i] = str[a]; }
}
for (int a = 0; a < l; a++) {
if (str2[a] < 97) { str2[a] = str2[a] - 65; }
else { str2[a] = str2[a] - 97; ; }
}
/*输出密文*/
string str3;
for (int b = 0; b < l; b++) { str3[b] = (str[b] + str2[b]) % 26 + 'a'; cout << str3[b]; }
return 0;
}
有木有人解答一下
在引入头文件时,应该使用 #include 而不是 #include;。
在定义 int 变量时,应该将变量名和类型分开,例如 int i = 0 而不是 int i=0。
在循环语句中,应该为循环变量定义类型,例如 for(int a = 0; a < 10; a++) 而不是 for(a = 0; a < 10; a++)。
在输出语句中,应该使用 cout 而不是 printf。
在下标运算符中,应该使用中括号,例如 str[a] 而不是 str(a)。
在给字符串分配空间时,应该使用 string str = "" 或 string str(n, ' ') 的形式而不是直接声明字符串变量,例如 string str;。