求求帮帮看看,思路不知道有没有缺陷
查看原帖
求求帮帮看看,思路不知道有没有缺陷
153533
one_leukocyte楼主2022/8/12 20:41
#include<stdio.h>//P1079
#include<string.h>
int flag;
char key[1000],word[1000];
int main()
{
	gets(key);
	gets(word);
	flag=0;
	int i=0;
	while(word[i]!='\0'){
		int temp;
		if(key[flag]>='A'&&key[flag]<='Z')
			temp=key[flag]-'A';
		if(key[flag]>='a'&&key[flag]<='z')
			temp=key[flag]-'a';
//		printf("%d\n",temp);测试
		if(word[i]>='a'&&word[i]<='z'){
			if(word[i]-temp>='a'&&word[i]-temp<='z')
				word[i]-=temp;	
			if(word[i]-temp<'a')
				word[i]-=temp-26;
		}
		if(word[i]>='A'&&word[i]<='Z'){
			if(word[i]-temp>='A'&&word[i]-temp<='Z')
				word[i]-=temp;	
			if(word[i]-temp<'A')
				word[i]-=temp-26;
		}
		flag++;
		if(key[flag]=='\0')
			flag=0;
		i++;
	}
	printf("%s\n",word);
	return 0;
}

思路: 将密钥转化为每次应该减去的数字 分开判断密文大小写情况 如果减的超了就加回去 最后输出

2022/8/12 20:41
加载中...