求教,不知道哪错了~~3AC 7WA
查看原帖
求教,不知道哪错了~~3AC 7WA
368928
houhui0楼主2020/8/9 00:19

思路:

  1. 密钥不区分大小写,转换成其在字母表中的位置(0-25)
  2. 每次读入1个密文字符,直至换行
    1. 密文减去转换后的密钥
    2. 如果小于'A',或小于'a'并且原先是小写,加上26

#3 #5 #8 AC 其余WA

代码(⚠码风不良⚠):

#include<cstdio>
using namespace std;
void jiemi(char c);
char key[101];
unsigned short k=0;
int main()
{
	scanf("%s",key);
	unsigned short i=0;
	char ch=key[0],in;
	while(ch!='\0')
	{
		if(ch<'a')key[i]=ch-'A';
		else key[i]=ch-'a';
		ch=key[++i];
	}			//转换密钥
	getchar();in=getchar();
	while(in!='\n')
	{
		jiemi(in);	//解密
		in=getchar();
	}
}
void jiemi(char c)
{
	bool small;
	if(c<'a')small=false;
	else small=true;
	if(key[k]=='\0')k=0;//循环使用密钥
	char m=c-key[k++];//密文减密钥
	if(m<'A' || m<'a' && small)m+=26;//是否超出字母范围(1.1.)
	printf("%c",m);
}

没毛病啊……

(一看就会,一写就错)
2020/8/9 00:19
加载中...