间谍题(转换字符)

2024-03-20 01:20
文章标签 转换 字符 间谍

本文主要是介绍间谍题(转换字符),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

/*. R国和S国正陷入战火之中,双方都互派间谍,潜入对方内部,伺机行动。历尽艰险后,潜伏于S国的R国间
谍小C终于摸清了S国军用密码的编码规则: 加密信息中的字母转换成其后的第四个字母,例如 A变成E(a变
成e),Z变成D,非字母字符不变;同时将密文每两个字符之间插入一个空格。例如,China转换成原信息为
G l m r e 。
*/
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void change(char b[]);
void insert(char str[]);
int main(void)
{int i;char a[100];                                       //定义一个足够长的数组printf("请输入字符串:\n");gets_s(a);change(a);insert(a);system("pause");return 0;
}void change(char b[])                                   //当数组作为函数参数时,传递的时地址,若是有返回值的参数,返回的也是个地址
{                                                       //若在该函数中改变了数组元素,那么数组在主函数中也改变了int i = 0;while(b[i] != '\0')                                 //当不确定数组长度时for循环不好上手,改用while控制循环条件{if (b[i] <= '9' && b[i] >= '0')                 //当b[i]中的是数字时b[i]不改变b[i] = b[i];if (b[i] <= 'V' && b[i] >= 'A' || b[i] <= 'v' && b[i] >= 'a')   //当b[i]中的元素是A(a)-V(v)时将该字符后移4位b[i] += 4;if (b[i] > 'V' && b[i] <= 'Z' || b[i] > 'v' && b[i] <= 'z')     //当b[i]中的元素是V(b)-Z(z)时往前移22位b[i] -= 22;                                       i++;}
}
void insert(char str[])
{int i;for (i = strlen(str); i > 0; i--)                                    {str[2 * i] = str[i];                                            //将数组加倍,并将原数组元素保存在现在数组的偶数位str[2 * i - 1] = ' ';                                           //将数组元素的奇数位全赋值为空格}puts(str);                                                          //直接在insert函数中打印改变后的字符串
}

该题主函数很简单,调用change和insert两个函数,重要的是如何通过函数改变数组b[i]。若b[i]在change中未发生变化,则在insert中输出的结果还是change之前的字符串。数组作为函数参数被调用时,调用的是该数组的地址,在函数中改变每个数组元素地址中所存放的元素的值,则在返回时可以改变数组元素的大小,在调用函数的过程中,数组的地址始终不被改变。

另一个值得注意的是当数组的长度未知时,for循环不再顺手,则可用while循环

while(b[i] != '\0'

在字符串中的元素不等于空字符时一直循环,直到数组元素全部被操作才跳出。

最终的运行结果如下

 

这篇关于间谍题(转换字符)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/827852

相关文章

Linux使用dd命令来复制和转换数据的操作方法

《Linux使用dd命令来复制和转换数据的操作方法》Linux中的dd命令是一个功能强大的数据复制和转换实用程序,它以较低级别运行,通常用于创建可启动的USB驱动器、克隆磁盘和生成随机数据等任务,本文... 目录简介功能和能力语法常用选项示例用法基础用法创建可启动www.chinasem.cn的 USB 驱动

Java 字符数组转字符串的常用方法

《Java字符数组转字符串的常用方法》文章总结了在Java中将字符数组转换为字符串的几种常用方法,包括使用String构造函数、String.valueOf()方法、StringBuilder以及A... 目录1. 使用String构造函数1.1 基本转换方法1.2 注意事项2. 使用String.valu

Go语言使用Buffer实现高性能处理字节和字符

《Go语言使用Buffer实现高性能处理字节和字符》在Go中,bytes.Buffer是一个非常高效的类型,用于处理字节数据的读写操作,本文将详细介绍一下如何使用Buffer实现高性能处理字节和... 目录1. bytes.Buffer 的基本用法1.1. 创建和初始化 Buffer1.2. 使用 Writ

Python 标准库time时间的访问和转换问题小结

《Python标准库time时间的访问和转换问题小结》time模块为Python提供了处理时间和日期的多种功能,适用于多种与时间相关的场景,包括获取当前时间、格式化时间、暂停程序执行、计算程序运行时... 目录模块介绍使用场景主要类主要函数 - time()- sleep()- localtime()- g

JAVA中整型数组、字符串数组、整型数和字符串 的创建与转换的方法

《JAVA中整型数组、字符串数组、整型数和字符串的创建与转换的方法》本文介绍了Java中字符串、字符数组和整型数组的创建方法,以及它们之间的转换方法,还详细讲解了字符串中的一些常用方法,如index... 目录一、字符串、字符数组和整型数组的创建1、字符串的创建方法1.1 通过引用字符数组来创建字符串1.2

Java将时间戳转换为Date对象的方法小结

《Java将时间戳转换为Date对象的方法小结》在Java编程中,处理日期和时间是一个常见需求,特别是在处理网络通信或者数据库操作时,本文主要为大家整理了Java中将时间戳转换为Date对象的方法... 目录1. 理解时间戳2. Date 类的构造函数3. 转换示例4. 处理可能的异常5. 考虑时区问题6.

基于C#实现将图片转换为PDF文档

《基于C#实现将图片转换为PDF文档》将图片(JPG、PNG)转换为PDF文件可以帮助我们更好地保存和分享图片,所以本文将介绍如何使用C#将JPG/PNG图片转换为PDF文档,需要的可以参考下... 目录介绍C# 将单张图片转换为PDF文档C# 将多张图片转换到一个PDF文档介绍将图片(JPG、PNG)转

PDF 软件如何帮助您编辑、转换和保护文件。

如何找到最好的 PDF 编辑器。 无论您是在为您的企业寻找更高效的 PDF 解决方案,还是尝试组织和编辑主文档,PDF 编辑器都可以在一个地方提供您需要的所有工具。市面上有很多 PDF 编辑器 — 在决定哪个最适合您时,请考虑这些因素。 1. 确定您的 PDF 文档软件需求。 不同的 PDF 文档软件程序可以具有不同的功能,因此在决定哪个是最适合您的 PDF 软件之前,请花点时间评估您的

C# double[] 和Matlab数组MWArray[]转换

C# double[] 转换成MWArray[], 直接赋值就行             MWNumericArray[] ma = new MWNumericArray[4];             double[] dT = new double[] { 0 };             double[] dT1 = new double[] { 0,2 };

string字符会调用new分配堆内存吗

gcc的string默认大小是32个字节,字符串小于等于15直接保存在栈上,超过之后才会使用new分配。