有一行电文,已按下面规律译成密码:
A->Z a->z
B->Y b->y
C->X c->x
......
即第一个字母变成第26个字母,第i个字母变成第(26-i+1)个字母。非字母
字符不变,要求编程将密码译回原文,并输出密码和原文。
main()
{
char *str="aabbcc112546XXXyyyzzz";//密码
printf("密码:%s\n",str);
//解密
printf("原文:");
int i=0;
while(str[i]!='\0')
{
if(str[i]>64&&str[i]<91)
{
printf("%c",(26-(str[i]-64)+1)+64);
i++;
continue;
}
if(str[i]>96&&str[i]<123)
{
printf("%c",(26-(str[i]-96)+1)+96);
i++;
continue;
}
printf("%c",str[i]);
i++;
}
printf("\n");
}
{
char *str="aabbcc112546XXXyyyzzz";//密码
printf("密码:%s\n",str);
//解密
printf("原文:");
int i=0;
while(str[i]!='\0')
{
if(str[i]>64&&str[i]<91)
{
printf("%c",(26-(str[i]-64)+1)+64);
i++;
continue;
}
if(str[i]>96&&str[i]<123)
{
printf("%c",(26-(str[i]-96)+1)+96);
i++;
continue;
}
printf("%c",str[i]);
i++;
}
printf("\n");
}
温馨提示:答案为网友推荐,仅供参考
第1个回答 2007-05-25
#include <stdio.h>
void translate(char *code)//将密码字符串code打印并翻译
{
puts(code);//打印密码
while (*code)//逐位翻译并打印密码
{
if (*code>='a' && *code<='z') putchar('z'-*code+'a');
else if (*code>='A' && *code<='Z') putchar('Z'-*code+'A');
else putchar(*code);
code++;
}
putchar('\n');
}
void translate(char *code)//将密码字符串code打印并翻译
{
puts(code);//打印密码
while (*code)//逐位翻译并打印密码
{
if (*code>='a' && *code<='z') putchar('z'-*code+'a');
else if (*code>='A' && *code<='Z') putchar('Z'-*code+'A');
else putchar(*code);
code++;
}
putchar('\n');
}
第2个回答 2007-05-25
void f(char*str)
{ int *pi;
*pi=str;
count=0
while(*pi&&*pi!='\0')
{if(*pi==32) count++;
pi++
}
if(*pi=='\0') count++;
return count;
}
{ int *pi;
*pi=str;
count=0
while(*pi&&*pi!='\0')
{if(*pi==32) count++;
pi++
}
if(*pi=='\0') count++;
return count;
}