写码讲堂

1、B4500 [GESP202603 三级] 凯撒密码
(1)参考程序:

#include<iostream>
#include<string>
using namespace std;

int main(){
	int d,a;
	char c1,c2;   //c1为明码首字符,c2为密码首字符。
	string t;
	cin.get(c1);
	cin.ignore(1001,'\n');  //清除输入缓冲区字符‌,逐个丢弃1001个字符,直到遇到换行符 \n(即用户按下的回车键)为止,‌包括该换行符本身‌也会被丢弃。
	cin.get(c2);
	cin.ignore(1001,'\n');
	cin>>t;
	d=c1-c2;     //c1=c2+d,d为解密移动量。
	//cout<<c1<<"  "<<c2<<"  "<<d<<endl;
	//cout<<t<<"  "<<-2%26<<"  "<<d;
	a=(d<0)?90:65;
	for(char ch:t) cout<<(char)(((ch-a)+d)%26+a);	
	return 0;
}

(2)编程原理,用小规模5到10六个数为例
11
此题数据是65到90二十六个数,根据上图进行数学建模。

posted @ 2026-07-31 10:34  gdyyx  阅读(9)  评论(0)    收藏  举报