第一行输入一个长度为
的字符串
,代表给定的明文字符串;
第二行输入一个长度为
的字符串
,代表给定的密文字符串。
除此之外,保证字符串
和
中仅包含英文字母和数字。
第一行输出一个字符串,代表加密后的
。
第二行输出一个字符串,代表解密后的
。
abcdefg1 0BCDEFGH
BCDEFGH2 9abcdefg
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 明文转密文
char *ming_to_mi(const char *p, int len) {
int i;
char *str =(char *)malloc(2000 * sizeof(char));
for(i = 0; i < len; i++) {
// 大写字母
if(isupper(p[i])) {
str[i] = ((p[i]-'A'+1) % 26 + 'a');
}
// 小写字母
if(islower(p[i])) {
str[i] = ((p[i]-'a'+1) % 26 + 'A');
}
// 数字
if(isdigit(p[i])) {
str[i] = ((p[i]-'0'+1) % 10 + '0');
}
}
str[i] = '\0';
return str;
}
// 密文转明文
char *mi_to_ming(const char *p, int len) {
int i;
char *str =(char *)malloc(2000 * sizeof(char));
for(i = 0; i < len; i++) {
// 大写字母
if(isupper(p[i])) {
str[i] = ((p[i]-'A'+25) % 26 + 'a');
}
// 小写字母
if(islower(p[i])) {
str[i] = ((p[i]-'a'+25) % 26 + 'A');
}
// 数字
if(isdigit(p[i])) {
str[i] = ((p[i]-'0'+9) % 10 + '0');
}
}
str[i] = '\0';
return str;
}
int main() {
char *ming, *mi, mingbuf[2000], mibuf[2000];
scanf("%s%s", mingbuf, mibuf);
ming = mi_to_ming(mibuf, (int)strlen(mibuf));
mi = ming_to_mi(mingbuf, (int)strlen(mingbuf));
printf("%s\n%s\n", mi, ming);
free(ming);
free(mi);
return 0;
} #include <stdio.h>
#include <ctype.h>
int main()
{
char st[2002] = {0}; // 为中间的\0和最后的空格预留2个位置
char ch;
int i = 0;
while ((ch = getchar()) != '\n') // 加密
{
if (isalpha(ch))
{
if (isupper(ch))
{
st[i++] = ch == 'Z' ? 'a' : ch + ('a' - 'A') + 1;
}
else
{
st[i++] = ch == 'z' ? 'A' : ch - ('a' - 'A') + 1;
}
}
else
{
st[i++] = ch == '9' ? '0' : ch + 1;
}
}
st[i++] = 0;
while ((ch = getchar()) != '\n') // 解密
{
if (isalpha(ch))
{
if (isupper(ch))
{
st[i++] = ch == 'A' ? 'z' : ch + ('a' - 'A') - 1;
}
else
{
st[i++] = ch == 'a' ? 'Z' : ch - ('a' - 'A') - 1;
}
}
else
{
st[i++] = ch == '0' ? '9' : ch - 1;
}
}
st[i] = ' ';
i = -1;
while (st[++i] != ' ')
{
if (st[i] == '\0')
{
printf("\n");
continue;
}
printf("%c", st[i]);
}
return 0;
} #include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
void encode(char* str, _Bool encode) {
int i;
if (encode == 1) {
for (i = 0; i < strlen(str); i++) {
if (islower(str[i])) {
str[i] = str[i] - 'a' + 'A' + 1;
if (str[i] > 'Z')
str[i] = 'A';
} else if (isupper(str[i])) {
str[i] = str[i] + 'a' - 'A' + 1;
if (str[i] > 'z')
str[i] = 'a';
} else if (isdigit(str[i])) {
str[i] = str[i] + 1;
if (str[i] > '9')
str[i] = '0';
}
}
for (i = 0; i < strlen(str); i++)
putchar(str[i]);
printf("\n");
} else if (encode == 0) {
for (i = 0; i < strlen(str); i++) {
if (islower(str[i])) {
str[i] = str[i] - 'a' + 'A' - 1;
if (str[i] < 'A')
str[i] = 'Z';
} else if (isupper(str[i])) {
str[i] = str[i] + 'a' - 'A' - 1;
if (str[i] < 'a')
str[i] = 'z';
} else if (isdigit(str[i])) {
str[i] = str[i] - 1;
if (str[i] < '0')
str[i] = '9';
}
}
for (i = 0; i < strlen(str); i++)
putchar(str[i]);
printf("\n");
}
}
int main() {
char instr[1001];
char outstr[1001];
while (scanf("%s %s", instr, outstr) != EOF) { // 注意 while 处理多个 case
encode(instr, 1);
encode(outstr, 0);
}
return 0;
} #include <stdio.h>
#include <string.h>
int main() {
char str0[1001] = {'\0'},str1[1001] = {'\0'};
gets(str0);
gets(str1);
for(int i = 0 ; i < strlen(str0) ; i++){
if(str0[i] >= 'a' && str0[i] <= 'z'){
if(str0[i] == 'z') str0[i] = 'A';
else str0[i] = str0[i]-31;
}else if (str0[i] >= 'A' && str0[i] <= 'Z') {
if(str0[i] == 'Z') str0[i] = 'a';
else str0[i] = str0[i]+33;
}else if (str0[i] >= '0' && str0[i] <= '9') {
if(str0[i] == '9') str0[i] = '0';
else str0[i] = str0[i]+1;
}
}
printf("%s\n",str0);
for(int i = 0 ; i < strlen(str1) ; i++){
if(str1[i] >= 'a' && str1[i] <= 'z'){
if(str1[i] == 'a') str1[i] = 'Z';
else str1[i] = str1[i]-33;
}else if (str1[i] >= 'A' && str1[i] <= 'Z') {
if(str1[i] == 'A') str1[i] = 'z';
else str1[i] = str1[i]+31;
}else if (str1[i] >= '0' && str1[i] <= '9') {
if(str1[i] == '0') str1[i] = '9';
else str1[i] = str1[i]-1;
}
}
printf("%s\n",str1);
return 0;
} #include <string.h>
#include <stdio.h>
#include <stdlib.h>
#define N 1001
void Lock(char s[], int len)
{
for(int i = 0; i < len; i++){
if(s[i] >= 'A' && s[i] < 'Z'){
printf("%c", s[i]+33);
}else if(s[i] == 'Z'){
printf("%c", 'a');
}else if(s[i] >= 'a' && s[i] < 'z'){
printf("%c", s[i]-31);
}else if(s[i] == 'z'){
printf("%c", 'A');
}else if(s[i] >= '0' && s[i] < '9'){
printf("%c", s[i]+1);
}else if(s[i] == '9'){
printf("%c", '0');
}else{
printf("%c", s[i]);
}
}
printf("\n");
}
void Unlock(char s[], int len)
{
for(int i = 0; i < len; i++){
if(s[i] > 'A' && s[i] <= 'Z'){
printf("%c", s[i]+31);
}else if(s[i] == 'A'){
printf("%c", 'z');
}else if(s[i] > 'a' && s[i] <= 'z'){
printf("%c", s[i]-33);
}else if(s[i] == 'a'){
printf("%c", 'Z');
}else if(s[i] > '0' && s[i] <= '9'){
printf("%c", s[i]-1);
}else if(s[i] == '0'){
printf("%c", '9');
}else{
printf("%c", s[i]);
}
}
printf("\n");
}
int main()
{
char unpasswd[N],passwd[N];
scanf("%s",unpasswd);
scanf("%s",passwd);
Lock(unpasswd, strlen(unpasswd));
Unlock(passwd, strlen(passwd));
return 0;
}
#include <stdio.h>
#include <string.h>
char trans(char a){
if(a<='9'&&a>='0'){
int b=a-'0';
b=(b+1)%10;
a=b+'0';
}
else {
if (a=='z') a='A';
else if (a=='Z') a='a';
else if (a<='z'&&a>='a') a=a+1-'a'+'A';
else a=a+1+'a'-'A';
}
return a;
}
char detrans(char a){
if(a<='9'&&a>='0'){
int b=a-'0';
b=(b+9)%10;
a=b+'0';
}
else {
if (a=='A') a='z';
else if (a=='a') a='Z';
else if (a<='z'&&a>='a') a=a-1-'a'+'A';
else a=a-1+'a'-'A';
}
return a;
}
int main() {
char a1[1001],a2[1001];
scanf("%s",a1);
scanf("%s",a2);
for(int i=0; i<strlen(a1); i++){
a1[i]=trans(a1[i]);
}
for(int i=0; i<strlen(a2); i++){
a2[i]=detrans(a2[i]);
}
printf("%s\n%s",a1,a2);
return 0;
} #include <stdio.h>
#include <string.h>
void encode(char* a) {
int len = strlen(a);
for (int i = 0; i < len; i++) {
if (a[i] == 'Z') {
a[i] = 'a';
} else if (a[i] == 'z') {
a[i] = 'A';
} else if (a[i] >= 'a' && a[i] < 'z') {
a[i] += 'A' - 'a' + 1;
} else if (a[i] >= 'A' && a[i] < 'Z') {
a[i] += 'a' - 'A' + 1;
} else if (a[i] == '9') {
a[i] = '0';
} else if (a[i] >= '0' && a[i] < '9') {
a[i] += 1;
}
}
}
void decode(char* b) {
int len = strlen(b);
for (int i = 0; i < len; i++) {
if (b[i] == 'a') {
b[i] = 'Z';
} else if (b[i] == 'A') {
b[i] = 'z';
} else if (b[i] > 'a' && b[i] <= 'z') {
b[i] += 'B' - 'b' - 1;
} else if (b[i] > 'A' && b[i] <= 'Z') {
b[i] += 'b' - 'B' - 1;
} else if (b[i] == '0') {
b[i] = '9';
} else if (b[i] > '0' && b[i] <= '9') {
b[i] -= 1;
}
}
}
int main() {
char a[1001] = {};
char b[1001] = {};
scanf("%s", a);
scanf("%s", b);
encode(a);
decode(b);
printf("%s\n", a);
printf("%s", b);
return 0;
} //查表法
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
//加密函数:直接用两个密码表,对好位置,检查一下
//输入一个字符,检查原码表,找到输入字符对应的下标
//将密码表对应下标的字符赋值给输入字符
void jiami(char* input){
char yuan[63]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"};
char mi[63]={"bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890"};
// printf("%c",*input);
for(int i=0;i<63;i++){
if(yuan[i]==*input){
*input=mi[i];
return;
}
}
}
//解密函数,原理同上
void jiemi(char* input){
char yuan[63]={"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"};
char mi[63]={"bcdefghijklmnopqrstuvwxyzaBCDEFGHIJKLMNOPQRSTUVWXYZA1234567890"};
// printf("%c",*input);
for(int i=0;i<63;i++){
if(mi[i]==*input){
*input=yuan[i];
return;
}
}
}
//如果萌新不习惯用指针的话,使用char型函数返回密码值,然后在主函数进行赋值也是可以的
//也就是 char jiami(char input)
//主函数中
// for(int i=0;i<len;i++){
// char temp=jiami(ch[i]);
// ch[i]=temp;
// }
int main(){
//加密第一行字符
char ch[1002];
gets(ch);
int len=strlen(ch);
for(int i=0;i<len;i++){
jiami(&ch[i]);
}
printf("%s\n",ch);//注意换行
//解密第二行字符
char ch2[1002];
gets(ch2);
len=strlen(ch2);
for(int i=0;i<len;i++){
jiemi(&ch2[i]);
}
printf("%s",ch2);
return 0;
} #include<stdio.h>
#include<string.h>
int main(){
void encrypt(); //声明加密函数
void decrypt(); //声明解密函数
char str1[1001]={'\0'};
char str2[1001]={'\0'};
scanf("%s",str1);
scanf("%s",str2);
encrypt(str1);
decrypt(str2);
}
void encrypt(char str[1001]){
int len = strlen(str);
for(int i=0;i<len;i++){
if(str[i]>='a'&&str[i]<='y')
printf("%c",str[i]-32+1);
else if(str[i]>='A'&&str[i]<='Y')
printf("%c",str[i]+32+1);
else if(str[i]=='z')
printf("A");
else if(str[i]=='Z')
printf("a");
else if(str[i]>='0'&&str[i]<='8')
printf("%c",str[i]+1);
else if(str[i]=='9')
printf("0");
}printf("\n");
}
void decrypt(char str[1001]){
int len = strlen(str);
for(int i=0;i<len;i++){
if(str[i]>='b'&&str[i]<='z')
printf("%c",str[i]-32-1);
else if(str[i]>='B'&&str[i]<='Z')
printf("%c",str[i]+32-1);
else if(str[i]=='A')
printf("z");
else if(str[i]=='a')
printf("Z");
else if(str[i]>='1'&&str[i]<='9')
printf("%c",str[i]-1);
else if(str[i]=='0')
printf("9");
}printf("\n");
} #include <stdio.h>
#include <string.h>
#define N1 1000
#define N2 ('a'-'A')
char* encrypt(char str1[],int len1)
{
char *p=str1;
int i;
for(i=0;i<len1;i++)
{
if(str1[i]>='a'&&str1[i]<='z')
{
if(str1[i]=='z')
{
str1[i]='A';
}
else
{
str1[i]+=1-N2;
}
}
else if(str1[i]>='A'&&str1[i]<='Z')
{
if(str1[i]=='Z')
{
str1[i]='a';
}
else
{
str1[i]+=1+N2;
}
}
else if(str1[i]>='0'&&str1[i]<='9')
{
if(str1[i]=='9')
{
str1[i]='0';
}
else
{
str1[i]+=1;
}
}
}
return p;
}
char* decrypt(char str2[],int len2)
{
char *p=str2;
int i;
for(i=0;i<len2;i++)
{
if(str2[i]>='a'&&str2[i]<='z')
{
if(str2[i]=='a')
{
str2[i]='Z';
}
else
{
str2[i]-=1+N2;
}
}
else if(str2[i]>='A'&&str2[i]<='Z')
{
if(str2[i]=='A')
{
str2[i]='z';
}
else
{
str2[i]+=N2-1;
}
}
else if(str2[i]>='0'&&str2[i]<='9')
{
if(str2[i]=='0')
{
str2[i]='9';
}
else
{
str2[i]-=1;
}
}
}
return p;
}
int main()
{
char str1[N1],str2[N1];
scanf("%s",str1);
scanf("%s",str2);
int len1=strlen(str1),
len2=strlen(str2);
printf("%s\n",encrypt(str1,len1));
printf("%s\n",decrypt(str2,len2));
return 0;
}
这题很简单,为啥通过率这么低
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#define Size 1024
char *jiami(char a[Size])
{
int len=strlen(a);
char *b=(char*)malloc(Size*sizeof(char));
for(int i=0;i<len;i++){
if(a[i]=='z')b[i]='A';
else if(a[i]=='Z')b[i]='a';
else if(a[i]=='9')b[i]='0';
else if(a[i]>='a'&&a[i]<'z')b[i]=a[i]-31;
else if(a[i]>='A'&&a[i]<'Z')b[i]=a[i]+33;
else if(a[i]>='0'&&a[i]<'9')b[i]=a[i]+1;
}
return b;
}
char *jiemi(char a[Size])
{
int len=strlen(a);
char *b=(char*)malloc(Size*sizeof(char));
for(int i=0;i<len;i++){
if(a[i]=='a')b[i]='Z';
else if(a[i]=='A')b[i]='z';
else if(a[i]=='0')b[i]='9';
else if(a[i]>'a'&&a[i]<='z')b[i]=a[i]-33;
else if(a[i]>'A'&&a[i]<='Z')b[i]=a[i]+31;
else if(a[i]>'0'&&a[i]<='9')b[i]=a[i]-1;
}
return b;
}
int main()
{
char a[Size]={'\0'};
char d[Size]={0};
while(scanf("%[^\n]",a)!=EOF){
scanf("%*[^\n]");scanf("%*c");
char *b=jiami(a);
printf("%s\n",b);
scanf("%[^\n]",d);
scanf("%*[^\n]");scanf("%*c");
char *c=jiemi(d);
printf("%s\n",c);
}
return 0;
} #define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
int main()
{
char a[1002];
char b[1002];
int s1, s2,i;
while (scanf("%s", a) != EOF)
{
scanf("%s", b);
s1 = strlen(a);
s2 = strlen(b);
for (i = 0; i < s1; i++)
{
if (a[i] >= 'a' && a[i] <= 'z')
{
a[i] = a[i] - 32;
if (a[i] == 'Z')
a[i] = 'A';
else
a[i] = a[i] + 1;
}
else if (a[i] >= 'A' && a[i] <= 'Z')
{
a[i] = a[i] + 32;
if (a[i] == 'z')
a[i] = 'a';
else
a[i] = a[i] + 1;
}
else if (a[i] >= '0' && a[i] <= '9')
{
if (a[i] == '9')
a[i] = '0';
else
a[i] = a[i] + 1;
}
}
for (i = 0; i < s2; i++)
{
if (b[i] >= 'a' && b[i] <= 'z')
{
b[i] = b[i] - 32;
if (b[i] == 'A')
b[i] = 'Z';
else
b[i] = b[i] - 1;
}
else if (b[i] >= 'A' && b[i] <= 'Z')
{
b[i] = b[i] + 32;
if (b[i] == 'a')
b[i] = 'z';
else
b[i] = b[i] - 1;
}
else if (b[i] >= '0' && b[i] <= '9')
{
if (b[i] == '0')
b[i] = '9';
else
b[i] = b[i] - 1;
}
}
printf("%s\n", a);
printf("%s\n", b);
}
return 0;
}