C语言典型例题59

news2024/11/14 14:29:46

《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.coloradmin.cn/o/2098241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

我不是非酋之-天空概率

最近入坑了dnf手游&#xff0c;染上了合天空&#xff0c;大黑蛋子一个&#xff0c;突发奇想&#xff0c;模拟下合天空概率&#xff0c;看看是否真的有20%。 梳理代码逻辑如下&#xff1a; 不考虑礼包和其他东西 条件&#xff1a; 合成概率20%&#xff0c;每次需要2个装扮和一个…

格式化的磁盘数据能恢复吗?五个看完即可掌握的恢复方法

磁盘是大多数电子设备都必须具有的一个存储介质&#xff0c;在平时使用的过程中&#xff0c;很多用户为了途一时的方便&#xff0c;经常会需要一键将磁盘里面的数据执行格式化&#xff0c;以实现清空或者删除的情况。然而&#xff0c;在执行完具体的操作后&#xff0c;过了一段…

Vue(十三) 路由、路由嵌套、query、param传参、propos、replace属性。编程式路由导航,特有的生命周期函数,路由守卫

文章目录 路由1. 基本使用2. 多级(嵌套)路由3. 路由query传参4. 命名路由5. 路由param传参6. propos属性7. replace属性8. 编程式路由导航9. 缓存路由组件10. actived&#xff0c;deactived生命周期函数11. 路由守卫1、全局路由2、独享路由3、组件内路由守卫 12. 路由器工作的两…

干货含源码!如何用Java后端操作Docker(命令行篇)

目录 干货含源码&#xff01;如何用Java后端操作Docker&#xff08;命令行篇&#xff09; 一、为什么要用后端程序操作Docker 二、安装Docker 1、安装Docker 2、启动Docker 三、使用Java后端操作docker 1、构建docker镜像并生成容器 2、执行完毕后删除容器和镜像 3、在…

怎么删除谷歌浏览器的下载记录

定期删除谷歌浏览器的下载记录&#xff0c;对于保护个人隐私和提升浏览器性能都非常的重要。为了帮助大家安全的进行谷歌浏览器下载记录的清除&#xff0c;本文为大家分享了实用的操作方法&#xff0c;一起来看看吧。 删除谷歌浏览器下载记录的原因说明 1、保护隐私&#xff1…

【算法 动态规划 简单多状态 dp 问题】打家劫舍题型

打家劫舍题型 按摩师 (easy)解题思路代码 打家劫舍II &#xff08;medium&#xff09;解题思路代码 删除并获得点数&#xff08;medium&#xff09;解题思路代码 按摩师 (easy) 题目链接 该题是打家劫舍的变形 解题思路 状态表示 分析: 注意题目, 对于当天的预约, 可以接受…

车辆远控功能自动化测试方案:打造高效可靠的测试流程

随着汽车逐步走向智能化、网联化&#xff0c;整车的功能已经不再局限于驾驶员在车内进行本地操作。在远离车辆时&#xff0c;驾驶员也可以通过手机APP下发控制指令来实现对车辆的远程控制。 近几年&#xff0c;伴随远控功能项不断增多&#xff0c;其功能逻辑也越来越复杂&…

python开发--信息的增删改

部门信息的增删改 1. 增加 点击新建部门 跳转到新建部门页面&#xff1a;http://127.0.0.1:8000/depart/add/ 在views.py里面增加如下代码&#xff0c;可以将用户输入的信息添加到数据库中 def depart_add(request):if request.method GET:return render(request, depart…

STL之my_list容器

前言&#xff1a;各位老铁好久不见了&#xff0c;今天分享的知识是自己实现一个简单的list容器&#xff0c;为什么我先跳过vector容器的自我实现呢&#xff1f;我个人觉得vector相对于list的自我实现简单一点&#xff0c;所以今天先分享实现my_list的知识 我们要实现my_list&a…

machine learning - 2

泛化误差 也可以认为是预测时的误差。 训练误差 并不是越小越好&#xff0c;太小会过拟合。 获得测试集合的方法&#xff1a; 1&#xff09;&#xff1a; 2&#xff09;&#xff1a;例如&#xff1a;k-折交叉验证法&#xff0c; 就的每k个数据取一个座位测试集 3&#xff0…

nginx容器映射配置文件后,启动一直报错提示:failed (13: Permission denied)的排查

问题现象&#xff1a; 使用harbor 的install.sh 创建docker-compose之后&#xff0c;出现nginx容器一直重启。 查看日志发现是&#xff1a;配置文件无权限。报错信息如下&#xff1a; Sep 2 16:43:13 172.28.0.1 nginx[1344]: 2024/09/02 08:43:13 [emerg] 1#0: open() “/e…

网站网站建设公司用什么

随着互联网的飞速发展&#xff0c;网站已经成为企业的重要门面和宣传工具。为了在网上展示自己的品牌形象和吸引更多的客户&#xff0c;越来越多的企业选择找专业的网站建设公司进行网站建设。那么&#xff0c;网站建设公司主要使用什么技术和方法呢&#xff1f; 首先&#xff…

四、基本电路设计笔记——4.1 DC-DC稳压电路

目录 4.1 DC-DC稳压电路 4.1.1 基于MT2492的DC-DC稳压电路 &#xff08;1&#xff09;芯片参数 &#xff08;2&#xff09;芯片引脚 &#xff08;3&#xff09;输出电压设置 4.1.2 基于MT2499A的DC-DC稳压电路 &#xff08;1&#xff09;芯片参数 &#xff08;2&#xf…

【Redis】Redis 主从复制

文章目录 1 前言2 主从模式介绍3 配置 Redis 主从结构3.1 建立复制3.2 断开复制3.3 其他特性3.4 拓扑结构 4 Redis 主从复制原理4.1 复制过程4.2 PSYNC 数据同步4.3 PSYNC 运行流程 5 主从复制流程5.1 全量复制流程5.2 部分复制流程5.3 实时复制流程 1 前言 分布式系统中存在一…

鸿誉移民:定制化移民服务,吹响全球高效率移民的嘹亮号角!

鸿誉移民&#xff1a;定制化移民服务&#xff0c;吹响全球高效率移民的嘹亮号角&#xff01; 作为国内知名海外移民服务机构&#xff0c;鸿誉移民历经多年行业沉淀&#xff0c;拥有着极其丰富的移民咨询以及移民办理经验&#xff0c;并以咨询及时精准&#xff0c;签证快捷、通…

Bean 的实例化(创建 | 获取)

Spring为Bean提供了多种实例化方式&#xff0c;包括如下4种方式&#xff1a; 第一种&#xff1a;通过构造方法实例化第二种&#xff1a;通过简单工厂模式实例化第三种&#xff1a;通过factory-bean实例化&#xff08;工厂方法模式实例化&#xff09;第四种&#xff1a;通过Fact…

智能未来:低代码与AI如何重塑企业应用开发

引言 在当今瞬息万变的商业环境中&#xff0c;企业面临着前所未有的挑战与机遇。数字化转型已经成为各行各业的必然趋势&#xff0c;而在这一过程中&#xff0c;应用开发的效率与智能化程度成为企业竞争力的重要衡量标准。传统的开发模式往往需要大量的时间和资源&#xff0c;而…

【Godot4.3】基于ShapePoints的Polygon2D扩展

概述 这同样是来自2023年7月份的一项实验性工作&#xff0c;基于最初版本的ShapePoints静态函数库&#xff0c;实现了对Polygon2D节点的扩展&#xff0c;用于创建参数化图形的Polygon2D节点。 Polygon2D节点本身只能通过顶点绘制工具&#xff0c;创建很随意的多边形。通过Sha…

MySQL数据库管理系统下载安装

一. MySQL概述&#xff1a; 1.数据库相关概念 数据库&#xff1a;存储数据的仓库&#xff0c;数据是有组织地进行存储&#xff08;DataBase 简DB&#xff09;数据库管理系统&#xff1a;操纵和管理数据库的大型软件 &#xff08;DataBase Management System 简DBMS)SQL:操…

一分钟创建自己的分班查询系统,家长扫码即可进群

开学后&#xff0c;老师们的忙碌也达到了顶峰。整理教材、准备课程计划、布置教室&#xff0c;这些工作已经让人应接不暇&#xff0c;更别提还要处理分班事宜。以往&#xff0c;老师们需要一个个通知家长分班结果&#xff0c;这不仅耗时耗力&#xff0c;还容易出错。家长们也常…