编写加密程序,将用户输入的一个英文句子加密为加密字符串,然后输出加密字符串。假设句子长度不超过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>/*功能:对待加密字符串source加密后保存加密字符串到code.参数:char *soure,指向待加密句子的字符串指针;char *code 指向加密字符串的字符串指针;字符加密规则为大写字母和小写字母均加密为其补码, 我们定义ASCII码值相加为’A’+’Z’即155的两个大写字母互为补码,ASCII码值相加为’a’+’z’即219的两个小写字母互为补码。空格用@代替,句号以#代替,其它字符用句点代替。*/void SentenceEncoding(char *soure,char *code);//字符加密函数代码char CharEncoding(char ch);int main(int argc, const char * argv[]) {printf("Input source sentence:");char a[100],b[100];gets(a);printf("\n");//第一次居然把puts放这了SentenceEncoding(a, b);printf("Encoded sentence:");puts(b);return 0;}/*功能:对待加密字符串source加密后保存加密字符串到code.参数:char *soure,指向待加密句子的字符串指针;char *code 指向加密字符串的字符串指针;*/void SentenceEncoding(char *soure,char *code){int i = 0;for ( i = 0; *(soure+i) != '\0'; i++) {if (*(soure+i) > 'A' && *(soure+i) < 'Z') {*(code+i) = 155 - *(soure+i);}else if (*(soure+i) > 'a' && *(soure+i) < 'z')*(code+i) = 219 - *(soure+i);else*(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;}
运行结果:
需要注意的地方:
字符串传入函数的时候可以用数组,也可以直接用指针puts函数请放到处理后的字符串那里,否则会出现空行什么也没有在作业系统里发现字符串的 ‘\0’ 必须要自己输入否则之后还有可能有随机出现的值,要尽可能主动发现并避免【请看两次代码的区别】
【请看两次代码的区别】
编写加密程序 将用户输入的一个英文句子加密为加密字符串 然后输出加密字符串。假设句子长度不超过100个字符。每日一题----字符串加密类型