1137: registros médicos cifrados (C C ++)

[Tema Descripción]

小英是药学专业大三的学生,暑假期间获得了去医院药房实习的机会。 在药房实习期间,小英扎实的专业基础获得了医生的一致好评,得知小英在计算概论中取得过好成绩后,主任又额外交给她一项任务,解密抗战时期被加密过的一些伤员的名单。 经过研究,小英发现了如下加密规律(括号中是一个“原文 -> 密文”的例子) 1.原文中所有的字符都在字母表中被循环左移了三个位置(dec -> abz) 2.逆序存储(abcd -> dcba ) 3.大小写反转(abXY -> ABxy)

【entrar】

一个加密的字符串。(长度小于50且只包含大小写字母)

【Salida】

输出解密后的字符串。

【Muestra de entrada】

GSOOWFASOq

[Salida de muestra]

Trvdizrrvj

【Código】

#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    
    
	char a[51],b[51];
	cin>>a;
	int len=strlen(a);
	int k=len; 
	//倒叙  大小写  转换后存入b数组 
	for(int i=0;i<len;i++)
	{
    
    
		if( (a[i]>='a' && a[i]<='z') ) b[k-1]=a[i]-32; //小写则-32变为大写 
		else b[k-1] = a[i]  +32	;		//否则就是大写字母 +32变成小写  
		k--;		//数组b从最后开始顺序存放 转换过大小写的数组a		
	} 

	//右移三位 
	for(int i=0;i<len;i++)
	{
    
    
		if(b[i]=='x') cout<<"a";		//xyz 大小写 6种情况    
		else if (b[i]=='X') cout<<"A";
		else if (b[i]=='y') cout<<"b";
		else if (b[i]=='Y') cout<<"B";
		else if (b[i]=='z') cout<<"c";
		else if (b[i]=='Z') cout<<"C";
		else	cout<<char(b[i]+3);		//其他情况 右移3位输出 
	}
}

Supongo que te gusta

Origin blog.csdn.net/weixin_50901683/article/details/109097371
Recomendado
Clasificación