首页 > 试题广场 >

有一行电文,已按下面规律译成密码: A→Z a

[问答题]

有一行电文,已按下面规律译成密码:

AZ     az

BY     by

CX     cx

即第1个字母变成第26个字母,第i个字母变成第(26-i+1)个字母,非字母字符不

变。要求编程序将密码译回原文,并输出密码和原文。

推荐

1.a-c

#include<stdio.h>

int main()

{int j,n;

char ch[80],tran[80];

printf("input cipher code:");

gets(ch);

printf("\ncipher code  :%s",ch);

j=0;

while(ch[j]!=’\0’)

{if((ch[j]>=’A’)&&(ch[j]<=’Z’))

tran[j]=155-ch[j]:

else if((ch[j]>=’a’)&&(ch[j]<='z’))

tran[j]=219-ch[j]:

else

tran[j]=ch[j]:

j++;

}

n=j;

printf("\noriginal text");

for (j=0;j<n;j++)

putchar(tran[j]);

printf("\n');

return 0;

}

2.b

#include<stdio.h>

int main()

{int j,n;

char ch[80];

printf("input cipher code:\n");

gets(ch);

printf("\ncipher code:%s\n",ch);

j=0;

while(ch[j]!=’\0’)

{if((ch[j]>=’A’)&&(ch[j]<=’Z’))

ch[j]=155-ch[j];

edse if((ch[j]>=’a’)&&(ch[j]<=’z’)

ch[j]=219-ch[j]:

else

ch[j]=ch[j]:

j++;

}

n=j;

printf("original text:");

for (j=0;j<n;j++)

putchar(ch[j]);

printf("\n”);

return 0;

}


发表于 2018-03-25 10:37:26 回复(1)
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
void readcode(char line[]){
 for(int i = 0; ; i ++){
  char c = getchar();
  if(c == EOF || c == '\n'){
   line[i] = 0;
   break;
  }
  line[i] = c;
 }
}
char* translate(char line[]){
 int length = strlen(line);
 char* trans = malloc(sizeof(char) * length);
 for(int i = 0; i < length; i ++){
  if(line[i] >= 65 && line[i] <= 90)
   * (trans + i) = (char)(155 - line[i]);
  else if(line[i] >= 97 && line[i] <= 122)
   * (trans + i) = (char)(219 - line[i]);
  else
   * (trans + i) = line[i];
 }
 return trans;
}
int main(){
 char line[1000];
 readcode(line);
 char* trans = translate(line);
 puts(line);
 puts(trans);
}
发表于 2020-01-01 14:34:03 回复(0)