C语言-第十八周做题总结-数组3

id:454 A.字符串逆序

题目描述

输入一个字符串,对该字符串进行逆序,输出逆序后的字符串。

输入

输入在一行中给出一个不超过80个字符长度的、以回车结束的非空字符串。

输出

在一行中输出逆序后的字符串。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 先用一个while循环持续输入字符
  • 如果输入的字符为换行符,则退出循环,若不是,则将字符赋值给数组
  • 因为最后一个字符为’\0’,所以for循环的起始下标是倒数第二个,每次循环下标减一,直到下标小于0

代码

#include <stdio.h>
#include <stdlib.h>
# define MAX 80

int main(int argc, char *argv[])
{
	int i, j;
	char ch, a[MAX];
	i = 0;
	while (ch = getchar())
	{
		if (ch == '\n')
		{
			break;
		}
		a[i] = ch;
		i++;
	}
	for (j = i - 1; j >= 0; j--)
	{
		printf("%c", a[j]);
	}
	return 0;
}

id:452 B.查找指定字符

题目描述

本题要求编写程序,从给定字符串中查找某指定的字符。

输入

输入的第一行是一个待查找的字符。第二行是一个以回车结束的非空字符串(不超过80个字符)。

输出

如果找到,在一行内按照格式“index = 下标”输出该字符在字符串中所对应的最大下标(下标从0开始);否则输出"Not Found"。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 先输入要查找的字符,然后要注意此时输入了一个换行符,也是字符,要用getchar();把它舍弃
  • 然后用一个while循环持续读入字符,将读入的字符赋值给数组,如果读入的字符为换行符,则结束循环
  • 接着用for循环来查找字符串中所要查找的字符,遍历整个数组,看是不是有相等的,若有,则将此下标赋值给一个变量,若之后又出现相同的字符,则可更新这个变量的值,若这个变量的值没有改变,即还是赋初值,则输出Not Found,否则,输出这个最大的下标

代码

#include <stdio.h>
#include <stdlib.h>
# define MAX 80

int main(int argc, char *argv[])
{
	int i, t;
	char n, ch, a[MAX];
	i = 0;
	t = 0;
	scanf("%c", &n);
	getchar();
	while (ch = getchar())
	{
		a[i] = ch;
		i++;
		if (ch == '\n')	
		{
			break;
		}
	}
	for (i = 0; a[i] != '\n'; i++)
	{
		if (a[i] == n)
		{
			t = i;
		}
	}
	if (t == 0)
	{
		printf("Not Found");
	}
	else
	{
		printf("index = %d", t);
	}
	return 0;
}

id:781 C.凯撒密码

题目描述

为了防止信息被别人轻易窃取,需要把电码明文通过加密方式变换成为密文。输入一个以回车符为结束标志的字符串(少于80个字符),再输入一个整数offset,用凯撒密码将其加密后输出。恺撒密码是一种简单的替换加密技术,将明文中的所有字母都在字母表上偏移offset位后被替换成密文,当offset大于零时,表示向后偏移;当offset小于零时,表示向前偏移。

输入

输入第一行给出一个以回车结束的非空字符串(少于80个字符);第二行输入一个整数offset。

输出

输出加密后的结果字符串。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 用一个while循环用来持续读入不是换行符的字符,并将其赋值给数组
  • 然后读入偏移量,再用一个for循环来将数组的字符都进行偏移
  • 分为两种情况,字符为大写字母和小写字母,若为大写字母,又分为两种情况,偏移量大于零和小于零,若偏移量大于零,则将每个数组的值改变为,将原本数组的值减去字符A的得到的是与字符A的偏差,然后将这个偏差值加上偏移量,再将这个和求余26,将所得的值加上字符A极为偏移后的新的字符;若偏移量小于零,将原本数组的值减去字符A的得到的是与字符A的偏差,然后将这个偏差值加上偏移量,再加上26(因为a的后面是z),将这个和求余26,将所得的值加上字符A极为偏移后的新的字符。小写字母的处理方法雷同
  • 最后用循环来输出字符串,循环的条件是数组的值不为’\0’

代码

#include <stdio.h>
#include <stdlib.h>
# define MAX 80

int main(int argc, char *argv[])
{
	int offset, i;
	char a[MAX], ch;
	i = 0;
	while ((ch = getchar()) != '\n')
	{
		a[i] = ch;
		i++;
	}
	scanf("%d", &offset);
	for (i = 0; a[i] != '\0'; i++)
	{
		if (a[i] >= 'A' && a[i] <= 'Z')
		{
      		if (offset >= 0)
      		{
      			a[i] = 'A' + (a[i] - 'A' + offset) % 26;
			}
			else
			{
				a[i] = 'A' + (a[i] - 'A' + offset + 26) % 26;
			}
		}
		else if (a[i] >= 'a' && a[i] <= 'z')
		{
			if (offset > 0)
			{
				a[i] = 'a' + (a[i] - 'a' + offset) % 26;
			}
			else
			{
				a[i] = 'a' + (a[i] - 'a' + offset + 26) % 26;
			}
		}
	}
	for (i = 0; a[i] != '\0'; i++)
	{
		printf("%c", a[i]);
	}
	return 0;
}

id:448 D.输出大写英文字母

题目描述

本题要求编写程序,顺序输出给定字符串中所出现过的大写英文字母,每个字母只输出一遍;若无大写英文字母则输出“Not Found”。

输入

输入为一个以回车结束的字符串(少于80个字符)。

输出

按照输入的顺序在一行中输出所出现过的大写英文字母,每个字母只输出一遍。若无大写英文字母则输出“Not Found”。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 先定义两个变量,一个用于存储输入的变量,一个用于存储已经输出的变量
  • 首先用while循环持续输入不是换行符的字符,然后赋值给数组
  • 然后用一个for循环来遍历整个数组,循环的条件是这个数组的值不是\0,接着用一个判断语句判断这个数组的字符是不是大写字母
  • 若是,则再用一个for循环,这个循环的目的是遍历整个用于存储输出过的字符的数组,若输入的字符与输出过的字符相等,则结束循环,并让表示这两个数组的字符相等的变量值变为1(赋初值为0),若这个变量为0,则表示这个数组的值没有输出过,则将这个数组的值赋值给表示输出过的字符的数组,并将这个字符输出,然后让表示这个字符串中存在有大写字母的变量赋值为1(赋初值为0),然后将表示这个字符与输出过的数组的字符相等的变量重新赋值为0,用于下一次判断
  • 若表示这个字符串中存在有大写字母的变量值为0,则输出Not Found
  • 注意:需要将表示输出过的字符的数组赋值为0,需要用到一个头文件

代码

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
# define MAX 80

int main(int argc, char *argv[])
{
	int i, j, k, x, y;
	char a[MAX], b[MAX], ch;
	memset(b, 0, sizeof(b));
	i = 0;
	j = 0;
	k = 0;
	x = 0;
	y = 0;
	
	while ((ch = getchar()) != '\n')
	{
		a[i] = ch;
		i++;
	}
	for (i = 0; a[i] != '\0'; i++)
	{
		if (a[i] >= 'A' && a[i] <= 'Z')
		{
			for (k = 0; b[k] != '\0'; k++)
			{
				if (a[i] == b[k])
				{
					y = 1;
					break;
				}
			}
			if (y == 0)
			{
				b[j] = a[i];
				printf("%c", a[i]);
				j++;
				x = 1;
			}
			y = 0;
		}
	}
	if (x == 0)
	{
		printf("Not Found");
	}
	return 0;
}

id:447 E.删除重复字符

题目描述

本题要求编写程序,将给定字符串去掉重复的字符后,按照字符ASCII码顺序从小到大排序后输出。

输入

输入是一个以回车结束的非空字符串(少于80个字符)。

输出

输出去重排序后的结果字符串。

输入样例

在这里插入图片描述

输出样例

在这里插入图片描述

题解

  • 先定义两个数组,一个数组用于存储输入的字符串,一个数组用于存储已经输出过的字符串
  • 用for循环处理字符串的输入并赋值给数组,循环的条件是输入的字符不是换行符,循环内部是空语句,所以用一个分号即可,循环结束后,将\0赋值给输入完字符串后下一个数组
  • 接着再用一个for循环,目的是遍历整个字符串数组,循环的条件是数组的字符不是\0,定义一个变量表示字符串中的最小值,让这个最小值赋初值为127(因为127是ASCII码表中的最大值),再用一个for循环用来将整个字符串中的字符与当前字符做对比,定义一个用来表示当前字符没有被输出过的变量,赋初值为0,然后再用一个for循环,目的是遍历整个表示已经输出过的字符的数组,在这个循环中,判断当前字符是否已经被输出过,若是,则将表示这个已经被输出过的变量赋值为1,然后结束当前循环,接着判断用于表示当前字符是否被输出过的变量的值是否改变(值为1)以及当前变量是否小于最小值,若这个字符没有被输出过,且这个字符小于最小值,则更新这个最小值,赋值为当前字符
  • 遍历完整个目的是对比整个数组后,得到的最小值的字符会被成功赋值到表示最小值的变量中,如果这个变量不等于127,则输出这个变量,然后将这个变量复制到表示已经输出过的数组中,便于下次遇到相同的字符时不再输出

代码

#include <stdio.h>
#include <stdlib.h>
# define MAX 80

int main(int argc, char *argv[])
{
	int i, k, x, y, j;
	char a[MAX], b[MAX], ch, min;
	x = 0;
	
	for (i = 0; (a[i] = getchar()) != '\n'; i++)
	{
		;
	}
	a[i] = '\0';
	for (k = 0; a[k] != '\0'; k++)
	{
		min = 127;
		for (i = 0; a[i] != '\0'; i++)
		{
			y = 0;
			for (j = 0; j < x; j++)
			{
				if (a[i] == b[j])
				{
					y = 1;
					break;
				}
			}
			if (y != 1 && min > a[i])
			{
				min = a[i];
			}
		}
		if (min != 127)
		{
			printf("%c", min);
			b[x] = min;
			x++;
		}
	}
	return 0;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/298983.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

gRCP - 面向未来的第二代 RPC 技术,解析 HTTP2.0 和 Protobuf

目录 一、gRCP - 面向未来的第二代 RPC 技术 1.1、gRPC 简介 1.1.1、gRPC 是个啥&#xff1f; 1.1.2、gRPC 核心设计思路 1.1.3、gRPC 和 ThriftRPC 区别 1.1.4、为什么使用 gRPC&#xff1f;&#xff08;好处&#xff09; 1.2、HTTP2.0 协议 1.2.1、回顾 HTTP1.0 和 H…

C# Entity Framework 中不同的数据的加载方式

延迟加载 延迟加载是指在访问导航属性时&#xff0c;Entity Framework 会自动查询数据库并加载相关数据。这种方式在我们需要访问导航属性时比较方便&#xff0c;因为我们无需手动加载相关数据&#xff0c;而且只会在需要时才会进行查询&#xff0c;从而减少了不必要的开销。但…

基于商品列表的拖拽排序后端实现

目录 一&#xff1a;实现思路 二&#xff1a;实现步骤 二&#xff1a;实现代码 三&#xff1a;注意点 一&#xff1a;实现思路 后台实现拖拽排序通常需要与前端进行配合&#xff0c;对商品的列表拖拽排序&#xff0c;前端需要告诉后端拖拽的元素和拖动的位置。 这里我们假…

【远程计算机,这可能是由于 Credssp 加客数据库修正】解决方案

1、winR打开运行窗口 输入gpedit.msc命令&#xff0c;若找不到&#xff0c;可以进行如下文件编辑格式为cmd echo offpushd "%~dp0"dir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Win…

Linux stm32串口下载程序

一、工具 使用stm32flash进行串口下载 二、stm32flash安装 sudo apt-get install stm32flash 三、查看串口设备名称 先拔掉串口运行下面指令&#xff0c;获得所有设备名称,插上串口再运行一次&#xff0c;新增的就是串口设备名称&#xff0c;记住串口设备名称&#xff0c;以…

Linux目录结构及路径描述方式

1.Linux目录结构 Linux与Windows不同&#xff0c;Linux没有盘符这个概念, 只有一个根目录 /, 所有文件都在它下面 2.Linux路径的描述方式 在Linux系统中&#xff0c;路径之间的层级关系&#xff0c;使用&#xff1a;/ 来表示 在Windows系统中&#xff0c;路径之间的层级关系…

echarts图表会残留上一条数据的折线 setOption参数的第二个坑

记一下小坑 因为我的echarts图表的 series 是循环渲染上去的 所以他可能会有一条 或多条 我展示完多条的图表后 关闭 打开单条数据的图表 发现 他会残留上一个图表的数据 显示多条 之前我还以为是后端返回错了 但是log打印和查看请求数据 确实发现是我这边的问题 原因&#…

第二百四十三回 再分享一个Json工具

文章目录 1. 概念介绍2. 分析与比较2.1 分析问题2.2 比较差异 3. 使用方法4. 内容总结 我们在上一章回中介绍了"分享三个使用TextField的细节"相关的内容&#xff0c;本章回中将再 分享一个Json插件.闲话休提&#xff0c;让我们一起Talk Flutter吧。 1. 概念介绍 我…

系列二、GitHub中的Alpha、Beta、RC、GA、Release等各个版本

一、GitHub中的Alpha、Beta、RC、GA 1.1、概述 1.2、参考 https://www.cnblogs.com/huzhengyu/p/13905129.html

软件测试/测试开发丨Pytest结合数据驱动

安装yaml pip install pyyaml pytest结合数据驱动yaml 工程目录结构 数据准备 读取excel文件 openpyxl库的安装 openpyxl库的操作 pytest结合csv实现数据驱动 csv文件介绍 pytest结合json实现数据驱动 最后感谢每一个认真阅读我文章的人&#xff0c;礼尚往来总是要有的&…

第15课 利用openCV实现人脸识别

这节课&#xff0c;我们再来看一个简单且实用的例子&#xff1a;人脸识别。这个小例子可以让你进一步领略openCV的强悍。 1.复制demo14并改名为demo15。 2.修改capImg函数&#xff1a; int fmle::capImg() {// 加载人脸检测分类器cv::CascadeClassifier faceCascade;faceCas…

RT_Thread 调试笔记:时间相关,时钟管理函数,延时,定时器、 毫秒转换为时分秒 等

说明&#xff1a;记录日常使用 RT_Thread 开发时做的笔记。 持续更新中&#xff0c;欢迎收藏。 1. 延时函数 1. us延时函数 rt_hw_us_delay(rt_uint32_t us);//输如数据是us rt_hw_us_delay(200);//输入数据是us 2. ms延时函数 rt_thread_mdelay(1000);//输入数据是ms 2…

Java:IO流详解

文章目录 基础流1、IO概述1.1 什么是IO1.2 IO的分类1.3 顶级父类们 2、字节流2.1 一切皆为字节2.2 字节输出流 OutputStream2.3 FileOutputStream类2.3.1 构造方法2.3.2 写出字节数据2.3.3 数据追加续写2.3.4 写出换行 2.4 字节输入流 InputStream2.5 FileInputStream类2.5.1 构…

特征工程筛选重要变量

特征筛选主要分为3个方法&#xff1a;过滤法、嵌入法&#xff08;经典的一些树模型比如xgboost&#xff09;、包裹法&#xff08;经典的RFECV&#xff0c;RFE递归特征消除法&#xff09; 过滤法更快速&#xff0c;但更粗糙。 包装法和嵌入法更精确&#xff0c;比较适合具体到算…

自动驾驶:低阶可部署的单目测距算法-基于YOLO与透视变换

一、开发环境 部署平台&#xff1a;英伟达的Jetson Nano 环境&#xff1a;Linux ROS 语言&#xff1a;C 设备&#xff1a;1920*1080像素的摄像头、开发板。 模型&#xff1a;yolo-v8s 二、单目测距实现思路 0、标定相机和车辆&#xff08;假设已经标定完成&#xff09; 1、通…

Linux习题6

解析&#xff1a;排序必须得是rwx,所以B不对 解析&#xff1a; /etc/resolv.conf&#xff1a;是DNS配置文件。在网卡配置文件中进行配置&#xff0c;默认情况下&#xff0c;网卡配置文件DNS优于/etc/resolv.conf。 /etc/hostname&#xff1a;在centos7&#xff0c;配置主机名…

【ZooKeeper高手实战】ZAB协议:ZooKeeper分布式一致性的基石

&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308;&#x1f308; 欢迎关注公众号&#xff08;通过文章导读关注&#xff1a;【11来了】&#xff09;&#xff0c;及时收到 AI 前沿项目工具及新技术 的推送 发送 资料 可领取 深入理…

小白入门基础 - Restful

一&#xff1a;REST与RESTful&#xff1a; REST&#xff1a;表现层状态转移&#xff0c;资源在网络中以某种形式进行状态转移。 RESTful是基于REST理念的一套开发风格&#xff0c;是具体的开发规则。 服务器端只返回数据&#xff0c;以json或者xml的格式。 RESTful开发规范&a…

DockerUI本地如何部署并结合内网穿透实现远程访问管理界面

文章目录 前言1. 安装部署DockerUI2. 安装cpolar内网穿透3. 配置DockerUI公网访问地址4. 公网远程访问DockerUI5. 固定DockerUI公网地址 前言 DockerUI是一个docker容器镜像的可视化图形化管理工具。DockerUI可以用来轻松构建、管理和维护docker环境。它是完全开源且免费的。基…

项目管理进阶之PDCA

前言 项目管理进阶系列&#xff0c;今天开始发布第一篇喽。 博主其实一直在构思&#xff0c;如何开启这个系列&#xff0c;但是我们通常项目管理讲的“五大过程十大领域”&#xff0c;往往太书面了。因此尝试从中抓取几个核心&#xff0c;以供有志之士参考。 那么&#xff0c…
最新文章