解题思路:
输入-小写转换大写-密文转明文-大写转为小写输出
注意事项:
套用公式用于大写字母,输出时保留大小写,所以用f[i]标记小写字母;
如果k密钥长度不够,用(i%k_len)求;
公式:m[i]=c[i]-(k[i%k_len]-65);
明文=密文-(密钥-65)
参考代码:
#include<iostream>
#include<string.h>
using namespace std;
char key[1001];//密钥
char c[1001];//密文
char m[1001];//明文
int f[1001];//标记
int main() {
int i;
cin >> key >> c;
int c_len = strlen(c);
int k_len = strlen(key);
for (i = 0; i < c_len; i++) {
if (c[i] >= 'a' && c[i] <= 'z') {
f[i] = 1; //如果是小写字母就做标记
c[i] -= 32;//转换大写字母
}
}
//密钥转为大写字母
for (i = 0; i < k_len; i++) {
if (key[i] >= 'a' && key[i] <= 'z') {
key[i] -= 32;
}
}
//明文=密文-(密钥-65)
for (i = 0; i < c_len; i++) { //遍历密文
m[i]=c[i]-(key[i%k_len]-65);
if(m[i]<65){ //如果明文小于A
m[i]=m[i]+26; //就回到Z
}
}
//输出
for(i=0;i<c_len;i++){
if(f[i]==1){ //如果是小写,转为大写
m[i]+=32;
}
cout<<m[i];
}
return 0;
}
0.0分
0 人评分
C二级辅导-求偶数和 (C++代码)浏览:812 |
【计算球体积】 (C语言代码)浏览:1070 |
去掉双斜杠注释 (C语言代码)浏览:1963 |
C语言程序设计教程(第三版)课后习题10.4 (C语言代码)浏览:590 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:689 |
奖学金 (C++代码)浏览:2053 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:643 |
C语言程序设计教程(第三版)课后习题8.6 (C语言代码)浏览:564 |
A+B for Input-Output Practice (V) (C++代码)浏览:485 |
C语言训练-计算t=1+1/2+1/3+...+1/n (C语言代码)浏览:942 |