当前位置: 首页 > 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;
}

运行结果:

编写代码中遇到的问题:

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

【错误做法】

【正确做法】

相关文章:

  • python 并发100个请求
  • IoT客户端+联邦学习微调大模型
  • 音视频入门基础:WAV专题(7)——FFmpeg源码中计算WAV音频文件每个packet的size值的实现
  • 【硬件知识】从零开始认识GPU
  • 【QT】学习笔记:导出资源中静态文件
  • JMeter 工具安装以及简单使用
  • 【网络安全】Bingbot索引投毒实现储存型XSS
  • 公司一般注册什么样的域名后缀?
  • 仿论坛项目--开发社区首页
  • Opencv中的直方图(1)计算反向投影直方图函数calcBackProject()的使用
  • 洛谷8.30
  • 盲盒小程序开发,探索市场发展优势
  • 基于 OpenCV 的数字图像处理实验平台设计
  • 自己开发完整项目一、登录功能-05(动态权限控制)
  • 创建型设计模式-原型模式(prototype)- python实现
  • Java 最常见的 200+ 面试题:面试必备
  • Node 版本管理
  • Python 使用 Tornado 框架实现 WebHook 自动部署 Git 项目
  • ReactNativeweexDeviceOne对比
  • Zepto.js源码学习之二
  • 阿里云购买磁盘后挂载
  • 前端面试之CSS3新特性
  • 前端知识点整理(待续)
  • 算法-图和图算法
  • nb
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • ​油烟净化器电源安全,保障健康餐饮生活
  • !!Dom4j 学习笔记
  • #每日一题合集#牛客JZ23-JZ33
  • (cljs/run-at (JSVM. :browser) 搭建刚好可用的开发环境!)
  • (JS基础)String 类型
  • (Ruby)Ubuntu12.04安装Rails环境
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (四)库存超卖案例实战——优化redis分布式锁
  • (转)总结使用Unity 3D优化游戏运行性能的经验
  • (自适应手机端)行业协会机构网站模板
  • .net core 管理用户机密
  • .net 调用海康SDK以及常见的坑解释
  • .net 生成二级域名
  • .net 写了一个支持重试、熔断和超时策略的 HttpClient 实例池
  • .NET 指南:抽象化实现的基类
  • .Net(C#)自定义WinForm控件之小结篇
  • .NET企业级应用架构设计系列之开场白
  • /etc/shadow字段详解
  • @Autowired标签与 @Resource标签 的区别
  • @configuration注解_2w字长文给你讲透了配置类为什么要添加 @Configuration注解
  • [22]. 括号生成
  • [Arduino学习] ESP8266读取DHT11数字温湿度传感器数据
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [dts]Device Tree机制
  • [elastic 8.x]java客户端连接elasticsearch与操作索引与文档
  • [hibernate]基本值类型映射之日期类型
  • [HOW TO]怎么在iPhone程序中实现可多选可搜索按字母排序的联系人选择器
  • [JavaScript]_[初级]_[关于forin或for...in循环语句的用法]
  • [JS]Math.random()随机数的二三事