问题遇到的现象和发生背景
c++运行的时候出现了问题,请问怎样解决?
遇到的现象和发生背景,请写出第一个错误信息
有三个问题
第一个问题是我无法输入k, 就是说还没等到我输入k值,程序就报错了
第二个问题是,就是我明明输入的是abc等字母,怎么运行结果出现这么多乱码(那些中文的字)呢?
第三个问题就是图片中显示的问题了
用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%
#include<iostream>
#include<fstream>
const int Num = 20;
using namespace std;
void KaiSa(char* str, int k) {
while (*str) {
if ((*str + k <= 'z' && *str + k >= 'a') && (*str <= 'z' && *str >= 'a')) {
*str++ = *str + k;
}
else if ((*str + k <= 'Z' && *str + k >= 'A') && (*str <= 'Z' && *str >= 'A')) {
*str++ = *str + k;
}
else if (k >= 0) {
*str++ = *str + k - 26;
}
else if (k < 0) {
*str++ = *str + k + 26;
}
}
}
int main()
{
char array [20];
int k;
int choice;
char ch;
int count = 0;
fstream f1;
cout << "请输入明文: "<<endl;
f1.open("file1.txt", ios::out);
do
{
++count;
cin.get(ch);
f1 << ch;
} while (!cin.fail());
f1.close();
f1.open("file1.txt", ios::in);
for (int i = 0; i < count; i++)
{
f1 >> array[i];
cout << array[i];
}
f1.close();
cout << "请输入密钥:"<<endl;
cin >> k;
if (k > 25 || k < -25) {
k %= 26;
}
KaiSa(array, k);
cout << "进行凯撒加密后的密码为:\n";
cout << array << endl;
fstream f2;
f2.open("file2.txt", ios::out);
for (int i = 0; i < count; i++)
{
f2 << array[i];
}
f2.close();
KaiSa(array, -k);
cout << "进行凯撒解密后的密码为:\n";
cout << array << endl;
fstream f3;
f3.open("file3.txt", ios::out);
for (int i = 0; i < count; i++)
{
f3 << array[i];
}
f3.close();
return 0;
}