在主程序中以自己的姓名拼音的连续大写英文字母初始化一个my_name[ ]字符数组,作为原码,以自己的9位学号为密钥定义整形数组变量key[9],编写加密函数void encrypt(char*p,int n),其中n为名字my_name[ ]字符数组的元素个数,对my_name逐个字符进行加密变换,即my_name[1]=my_name[1]+ key[1],my_name字符超出9个的尾部不做变换,在主程序中调用encrypt函数,并输出加密后的字符数组元素。编写程序并完成上机调试实现以上功能要求。(希望有人可以answer一下me,三克油!♥)
1条回答 默认 最新
- a5156520 2022-06-23 10:27关注
我的思路如下:
1、定义一个全局整数数组key,用于向加密函数cnrypt传入学号。
2、定义加密函数encrypt, 用一个while循环遍历姓名字符串,当姓名字符串结束或达到第9个字符后停止加密过程,
循环体用于加密姓名字符串的前9个字符,用姓名字符串当前字符加上学号数组相应位置的整数赋值给姓名字符串的相应元素。
3、mian函数先获取姓名字符串输入(可以直接用姓名字符串初始化姓名字符数组),
然后获取学号,把学号每一位分解存储学号数组(这里可以直接用学号初始化学号数组),
然后调用加密函数encrypt加密姓名字符串,
最后打印加密后的姓名字符串。
代码如下:#include <stdio.h> #include <string.h> //存储学号,这里可以直接初始化为自己的学号,因为encrypt函数没有int指针参数,所以这里定义一个全局int数组,用于把学号传入函数 int key[9]; void encrypt(char *p,int n){ int i=0; while(i<n&&i<9){ p[i] = p[i]+key[i]; i++; } //p[n]='\0'; } int main(void){ char my_name[20]; //存储姓名 ,这里可以直接初始化为自己的姓名 printf("请以大写字母形式输入姓名的拼音:\n"); gets(my_name); //获取姓名 // puts(my_name); // while(getchar()!='\n'){ // continue; // } int id; printf("请输入9位的学号:\n"); scanf("%d",&id); //获取学号,可以在int数组key定义时直接初始化 int i=8; int temp; while(id!=0){ //把学号的每一位分解出来赋值给学号数组 temp= id%10; id/=10; key[i]=temp; i--; } //调用加密函数 encrypt(my_name,strlen(my_name)); //打印加密后的姓名字符串 printf("加密后的姓名字符串为:%s\n",my_name); return 0; }
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报 编辑记录
悬赏问题
- ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
- ¥20 软件测试决策法疑问求解答
- ¥15 win11 23H2删除推荐的项目,支持注册表等
- ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
- ¥15 qt6.6.3 基于百度云的语音识别 不会改
- ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单
- ¥15 神经网络怎么把隐含层变量融合到损失函数中?
- ¥15 lingo18勾选global solver求解使用的算法
- ¥15 全部备份安卓app数据包括密码,可以复制到另一手机上运行
- ¥20 测距传感器数据手册i2c