假设句子长度不超过100个字符。根据给定的句子加密函数原型SentenceEncoding,编写函数SentenceEncoding调用给定的字符加密函数CharEncoding完成句子加密。然后,编写主程序提示用户输入英文句子,然后调用函数SentenceEncoding对句子加密,最后输出加密后的句子。字符加密规则为大写字母和小写字母均加密为其补码, 我们定义ASCII码值相加为’A’+’Z’即155的两个大写字母互为补码,ASCII码值相加为’a’+’z’即219的两个小写字母互为补码。空格用@代替,句号以#代替,其它字符用句点代替。
函数原型:
void SentenceEncoding(char *soure,char *code);
功能:对待加密字符串source加密后保存加密字符串到code.
参数:char *soure,指向待加密句子的字符串指针;
char *code 指向加密字符串的字符串指针;
代码:
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define N 100
char CharEncoding(char ch);
void SentenceEncoding(char *soure,char *code);
int main()
{
char soure[N],code[N];
printf("Input source sentence:");
gets(soure);
SentenceEncoding(soure,code);
printf("Encoded sentence:");
puts(code);
return 0;
}
void SentenceEncoding(char *soure,char *code)
{
int i;
for(i=0;soure[i]!='\0';i++)
{
code[i]=CharEncoding(soure[i]);
}
code[i]='\0';
}
char CharEncoding(char ch)
{
char encode = 0;
if(ch>='A' && ch<='Z')
{
encode = ('A'+'Z')- ch;
}
else if(ch>='a' && ch<= 'z' )
{
encode = 'a'+'z'-ch;
}
else
{
switch(ch)
{
case ' ': encode = '@';
break;
case '.': encode = '#';
break;
default: encode = '.';
break;
}
}
return encode;
}