假設句子長度不超過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;
}