当前位置: 首页 > news >正文

C语言典型例题59

《C程序设计教程(第四版)——谭浩强》

题目:


例题4.11 译密码。为使电文保密,往往按一定规律将其转换为密码,收报人再按约定的规律将其译回原文。
例如,可以按以下规律将电文变为密码:
将字母A变成字母E,a变为e,即变成其后的第4个字母,W变为A,X变为B,Z变为D


代码:

//《C程序设计教程(第四版)——谭浩强》
//例题4.11 译密码。为使电文保密,往往按一定规律将其转换为密码,收报人再按约定的规律将其译回原文。
//例如,可以按以下规律将电文变为密码:
//将字母A变成字母E,a变为e,即变成其后的第4个字母,W变为A,X变为B,Z变为D#include <stdio.h>
#include <stdlib.h>int bianyi(char arr1[]);//将密码编译为原文int main()
{char arr[100];//充足的原文空间int size=0;int panduan=0;char arr1[]={};char arr1_1[]={};int ch='a';printf("请输入你的编译原文:\n");scanf("%99s",&arr);// 限制输入字符的数量,防止溢出,最多99个字符 + '\0'//	printf("%s\n",arr);size=sizeof(arr)/sizeof(arr[0]);
//	printf("%d\n",size);int i=0;for(i=0;i<=size;i++){if(arr[i]=='\0'){break;}if((arr[i]>=65 && arr[i]<=90)||(arr[i]>=97 && arr[i]<=122)){panduan=1;if((arr[i]>=65 && arr[i]<=86)||(arr[i]>=97 && arr[i]<=118)){arr1[i]=arr[i]+4;}else{if(arr[i]>=87 && arr[i]<=90){arr1_1[i]=90-arr[i]-3;arr1[i]=65+abs(arr1_1[i]);}else{arr1_1[i]=122-arr[i]-3;arr1[i]=97+abs(arr1_1[i]);}}}else{panduan=0;break;}}//判断密码是否接受,是否无效,当panduan为1时,接受密码;当panduan为0时,输出无效!!!	if(panduan==1){printf("将译文转化为密码的内容是:%s\n",arr1);}else{printf("!!!您的原文输入无效,请重新输入!!!\n");}printf("\n");printf("**********************************************\n");printf("你是否为收报人,是否想对接受到的密码进行编译!\n");printf("********************注意**********************\n");printf("******编译请按y键,不想编译为原文请按n键******\n");printf("**********************************************\n");printf("\n");getchar();ch=getchar();if(ch=='y'){printf("编译的原文:\n");bianyi(arr1);}else{printf("结束程序\n");}return 0;
}int bianyi(char arr1[])//将密码编译为原文
{int panduan1=0;
//	char arr1_2[];
//	printf("%s",arr1);int j=0;for(j=0;j<=100;j++){if(arr1[j]=='\0'){break;}if((arr1[j]>=65 && arr1[j]<=90)||(arr1[j]>=97 && arr1[j]<=122)){panduan1=1;if((arr1[j]>=69 && arr1[j]<=90)||(arr1[j]>=101 && arr1[j]<=122)){arr1[j]=arr1[j]-4;}else{if(arr1[j]>=65 && arr1[j]<=68){arr1[j]=arr1[j]+22;}else{arr1[j]=arr1[j]+22;}}}}//判断密码是否接受,是否无效,当panduan1为1时,接受密码;当panduan1为0时,输出无效!!!	if(panduan1==1){printf("将译文重新转化为密码:%s\n",arr1);}return 0;
}

运行结果:

编写代码中遇到的问题:

数组名本身就是地址,不需要使用取地址符&

【错误做法】

【正确做法】


http://www.mrgr.cn/news/18074.html

相关文章:

  • 嵌入式是用C++还是用C的架构 怎么选?
  • springboot+vue 进销存管理系统
  • 使用 nuxi dev 启动 Nuxt 应用程序的详细指南
  • 笔记:Sysinternals 是什么, 常见的 Sysinternals 工具有哪些
  • 分布式事务Seata
  • python 并发100个请求
  • ANet-1E1S1智能网关:物联网时代的能源计量新纪元,断点续传引领高效运维
  • 基于Video-Retalking-Gradio的AI数字人
  • 什么是短视频矩阵?一个人能做好短视频矩阵营销吗?
  • kafka快速上手
  • NFTScan | 08.26~09.02 NFT 市场热点汇总
  • 第十三节:学习Springboot整合mybatis——完整篇(自学Spring boot 3.x的第三天)
  • 人工智能在现代科技中的应用和未来发展趋势。
  • 如何找回误删的文件?4个常用文件恢复方法!
  • P2147 [SDOI2008] 洞穴勘测(LCT)
  • Harbor部署docker私人仓库
  • springboot篇
  • 【原创】edge-tts与基于mpv的edge-playback,使命令行和Python的Text To Speech唾手可得
  • stm32f103VET6和stm32f103C8T6有什么区别?
  • 半导体是什么?