编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过100个字符。根据给定的句子加密函数原型SentenceEncoding,编写函数SenaceEncoding调用给定的字符加密函数Chax Encoding完成句子加密。然后,编写主程序提示用户输入英文句子,然后调用函数SentenceEncoding对包子加密,最后输出加密后的向子。字符加密规则为大写字母和小写字母均加密为其补码,我们定义ASCII码值相加为'A'+’2’即155的两个大写字母互为补码,ASCII码值相助加 为'a'+’'即219的两个小写字母互为补码。空格用@代替,句号以#代替,其它字符用包点代替。 函数原型: void SentenceEncoding(char*soure, char*code); 功能:对待加密字符串3ource加密后保存加密字符串到Code. 参数:char*soure,指向待加密句子的字符串指针; char*code 指向加密字符串的字符串指针; 字符加密函数代码。 char Char Encoding(char ch) char encode =0; if(ch>=A* 丝 ch<全’') encode=(A'+2')-ch; 1 else if(ch2=.a.Ach='z.) encode =a'+.z'-ch; else 一 switch(ch) Case '':encode=.@': break; case.':encode= #’: break; default:encode = break;
时间: 2024-03-29 10:39:54 浏览: 111
好的,我明白了您的问题。下面是代码实现:
```c
#include <stdio.h>
char CharEncoding(char ch) {
char encode = 0;
if (ch >= 'A' && ch <= 'Z')
encode = ('A' + '2') - 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;
}
void SentenceEncoding(char *source, char *code) {
int i = 0;
while (source[i] != '\0') {
code[i] = CharEncoding(source[i]);
i++;
}
code[i] = '\0';
}
int main() {
char source[101], code[101];
printf("请输入待加密的英文句子(长度不超过100个字符):\n");
fgets(source, 101, stdin);
SentenceEncoding(source, code);
printf("加密后的字符串为:%s\n", code);
return 0;
}
```
您可以将以上代码复制到编译器中运行,输入待加密的英文句子后,即可输出加密后的字符串。代码中,先定义了一个字符加密函数CharEncoding,用于将单个字符加密为补码,然后将该函数作为参数传递给待加密字符串的加密函数SentenceEncoding。函数SentenceEncoding使用while循环遍历待加密字符串中的每个字符,然后将该字符传递给函数CharEncoding进行加密,加密后的补码保存在加密后的字符串中。最后,主程序输出加密后的字符串。
阅读全文