【C/PTA】数组进阶练习(二)

本文结合PTA专项练习带领读者掌握数组,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。

目录

    • 7-1 字符串逆序
    • 7-2 字符串替换
    • 7-3 统计字符出现次数
    • 7-4 IP地址转换
    • 7-1 删除重复字符
    • 7-2 说反话-加强版
    • 7-3 数组-回文串
    • 7-4 数组-无聊的菇菇一族
    • 7-5 数组-文本加密
    • 7-6 数组-动车上

7-1 字符串逆序

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

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

在一行中输出逆序后的字符串。
输入样例:

Hello World!

输出样例:

!dlroW olleH

方法一:数组实现

#include <stdio.h>
int main()
{char c,a[80];int i=0;while((c=getchar())!='\n'){a[i]=c;i++;}for(int j=i-1;j>=0;j--){printf("%c",a[j]);}
}

方法二:引入gets及strlen

#include <stdio.h>
#include <string.h>
int main()
{char a[80];gets(a);for(int i=strlen(a)-1;i>=0;i--)printf("%c",a[i]);}

7-2 字符串替换

本题要求编写程序,将给定字符串中的大写英文字母按以下对应规则替换:

原字母 	对应字母
A 	Z
B 	Y
C 	X
D 	W
… 	…
X 	C
Y 	B
Z 	A

输入格式:

输入在一行中给出一个不超过80个字符、并以回车结束的字符串。
输出格式:

输出在一行中给出替换完成后的字符串。
输入样例:

Only the 11 CAPItaL LeTtERS are replaced.

输出样例:

Lnly the 11 XZKRtaO OeGtVIH are replaced.

#include <stdio.h>
int main()
{char c,a[80],b[80];int i=0;while((c=getchar())!='\n'){a[i]=c;i++;}for(int j=0;j<=i-1;j++){if(a[j]>='A'&&a[j]<='Z'){b[j]='A'+'Z'-a[j];}else b[j]=a[j];printf("%c",b[j]);}
}

7-3 统计字符出现次数

本题要求编写程序,统计并输出某给定字符在给定字符串中出现的次数。
输入格式:

输入第一行给出一个以回车结束的字符串(少于80个字符);第二行输入一个字符。
输出格式:

在一行中输出给定字符在给定字符串中出现的次数。
输入样例:

programming is More fun!
m

输出样例:

2

方法一:数组实现

#include <stdio.h>
int main()
{char a[80],c,d;int i=0,count=0;while((c=getchar())!='\n'){a[i]=c;i++;}d=getchar();for(int j=i-1;j>=0;j--){if(d==a[j])count++;}printf("%d",count);
}

方法二:引入gets及strlen

#include <stdio.h>
#include <string.h>
int main()
{char a[80],c;int count=0;gets(a);c=getchar();for(int i=0;i<strlen(a);i++){if(a[i]==c){count++;}}printf("%d",count);
}

7-4 IP地址转换

一个IP地址是用四个字节(每个字节8个位)的二进制码组成。请将32位二进制码表示的IP地址转换为十进制格式表示的IP地址输出。
输入格式:

输入在一行中给出32位二进制字符串。
输出格式:

在一行中输出十进制格式的IP地址,其由4个十进制数组成(分别对应4个8位的二进制数),中间用“.”分隔开。
输入样例:

11001100100101000001010101110010

输出样例:

204.148.21.114

#include <stdio.h>
#include <math.h>
int main()
{char a[33];int t=7;//当前处理的二进制位在8位中的位置int sum=0;//当前部分的十进制结果gets(a);for(int i=0;i<32;i++){a[i]=a[i]-48;//将字符型的'0'~'1'转换成对应的整型数0~1sum+=a[i]*pow(2,t);if(t==0)//如果是8位中的最后一位{printf("%d",sum);t=7;sum=0;if(i!=31)printf(".");}elset--;}
}

7-1 删除重复字符

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

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

输出去重排序后的结果字符串。
输入样例:

ad2f3adjfeainzzzv

输出样例:

23adefijnvz

#include <stdio.h>
#include <string.h>
int main()
{char a[80];gets(a);for(int i=0;i<strlen(a)-1;i++){for(int j=0;j<strlen(a)-1;j++){if(a[j]>a[j+1]){char t=a[j];a[j]=a[j+1];a[j+1]=t;}}}//冒泡排序得到abccc//如果前后不一致就打印出来 所以得到abcfor(int i=0;i<strlen(a);i++){if(a[i]!=a[i+1])printf("%c",a[i]);}}

7-2 说反话-加强版

给定一句英语,要求你编写程序,将句中所有单词的顺序颠倒输出。
输入格式:

测试输入包含一个测试用例,在一行内给出总长度不超过500 000的字符串。字符串由若干单词和若干空格组成,其中单词是由英文字母(大小写有区分)组成的字符串,单词之间用若干个空格分开。
输出格式:

每个测试用例的输出占一行,输出倒序后的句子,并且保证单词间只有1个空格。
输入样例:

Hello World Here I Come

输出样例:

Come I Here World Hello

#include<stdio.h>
#include<string.h>
int main()
{char a[500001],b[500001];gets(a);  // 输入字符串int i,c,j;int count=0;for(i=0;a[i]==' ';i++)  // 计算开头的连续空格数{count++;}for(i=strlen(a)-1;i>=0;){if(a[i]!=' '){c=0;b[0]='\0';while(a[i]!=' '&&i>=0)  // 提取单词{b[c++]=a[i--];}//类似于把come中e、m、o、c分别放入b数组//此时b数组为emoc,将其逆序输出即可for(j=c-1;j>=0;j--)  // 逆序输出单词{printf("%c",b[j]);}if(count==i+1) ;  // 如果开头有空格则不输出else printf(" ");  // 输出单词之间的空格}else i--;}
}

7-3 数组-回文串

回文串是正着读和反着读都一样的字符串,例如“level”“noon”这些都是回文串,
现在希望你能找出输入的所有字符串中的回文串。
输入格式:

第一行为一个正整数N(0 < N <= 1000),表示有N个字符串,

接下来N行每行都是一个字符串(每个字符串长度不超过1000)。
输出格式:

输出所有是回文串的字符串,每输出一个字符串输出一个回车,包括最后一个字符串。

输入样例1:
3
abcabc
AbbbbA
cccc

输出样例1:
AbbbbA
cccc

#include <stdio.h>
#include <string.h>
int main()
{int n;scanf("%d",&n);getchar();//读取数字到字符串的换行符 避免回车的影响for(int i=0;i<n;i++){char a[1001];gets(a);int len=strlen(a);if(a[len-1]=='\n')//将字符串到字符串的换行符去掉{a[len-1]='\0';len--;}int flag=0;for(int i=0;i<len/2;i++){if(a[i]!=a[len-i-1]){flag=1;break;}}if(flag==0)printf("%s\n",a);}
}

7-4 数组-无聊的菇菇一族

戈壁上只居住着菇菇一族们,于是菇菇们实在太无聊了,除了吃饭,睡觉,菇菇们天天都无所事事。于是菇菇们想出了一个方法来消磨时间。菇菇们分成几组,每组按一定顺序排列,按从最后一个到第一个的顺序报出菇菇们的名字。报错的一组菇菇将要接受打理节操田地一周的惩罚(太可怕了>.<)。你能帮帮他们么?
输入格式:

第一行包括一个正整数N,表示有N组菇菇。

接下来N行每行包含一个字符串(长度小于100,仅包含小写字母),每个字母表示一个菇菇的名字。
输出格式:

输出N行,每行为该组菇菇报名字的顺序。
输入样例:

2
abcd
sama

输出样例:

dcba
amas

#include <stdio.h>
#include <string.h>
int main()
{int n;scanf("%d",&n);getchar();for(int i=1;i<=n;i++){char a[100];gets(a);for(int i=strlen(a)-1;i>=0;i--){printf("%c",a[i]);}printf("\n");}
}

7-5 数组-文本加密

某特工提供了一段文本,按照以下规则对逐个字符进行加密(称为密文):首先将大小写进行切换(大写转换成小写、小写转换成大写),之后再将字母替换成字母表中两位之前的字母,如‘c’替换成‘a’,‘b’替换成‘z’,‘A’替换成‘Y’。同时,该特工也提供了该密文的解析,请判断该解析是否正确。
输入格式:

输入仅一行,包含两个字符串,中间以一个逗号“,”隔开。每个字符串的长度分别不超过10000个字符,仅包含26个字母(含大小写字母‘a’-‘z’和大写字母‘A’-‘Z’),且保证两个字符的长度相等。
输出格式:

判断密文解析是否正确,正确则输出“Yes”,错误则输出“No”。
输入样例:

ccAAbB,AAyyZz

输出样例:

Yes

#include <stdio.h>
#include <string.h>
#include <ctype.h>int main()
{char a[10001], b[10001], c[10001];scanf("%[^,],%s",a,b);int len=strlen(a);for (int i=0;i<len;i++) {// 切换大小写if (isupper(a[i])) c[i]=tolower(a[i]);elsec[i]=toupper(a[i]);// 字母替换if(isalpha(a[i]))if(c[i]=='A'||c[i]=='B'||c[i]=='a'||c[i]=='b')c[i]=c[i]+24;else if((c[i]>='C'&&c[i]<='Z')||(c[i]>='c'&&c[i]<='z'))c[i]=c[i]-2;}c[len] = '\0';if(strcmp(b,c)==0) {printf("Yes");}else {printf("No");}
}

7-6 数组-动车上

就这样,阿翔和阿花分手了,阿翔独自一人登上了开往福大的动车……

阿翔刚在自己的座位上坐下,便听到一声问候:“同学,你好。”阿翔扭过头一看,见身旁是一美女,内心暗喜,吞吞吐吐地说:“你……你好……请问有什么事么?”女生说:“能不能麻烦你和我的朋友换个位置?”阿翔一愣,顺着她所指方向望去,见一帅哥。阿翔强装笑颜,答道:“好的。”

阿翔坐在帅哥的座位上,耳边萦绕着那对情侣的欢声笑语。他默默地从书包里掏出那叠英语卷。这一次,为了证明自己的帅气,阿翔要更华丽地调教这些考卷——

对于一个字符串S,设其第i个字符为Si,将每k个连续字符划分为一组,则{S0,S1,…,S(k-1)}为第0组,{Sk,S(k+1),…,S(2k-1)}为第1组,以此类推。阿翔要做的就是将第i组(i从0开始)字符逆置i次(逆置即倒序,如将abc置为cba)。若字符串剩下的字符不够凑成一组,则不对这些字符进行操作。

输入格式:
第一行为一个正整数k(大小不限,可能超过字符串长度);
第二行为一个字符串(长度不超过100,不含空格)。

输出格式:
输出仅一行,即完成操作后所得的字符串。

输入样例:
5
qwertyuiopasdfghjkl

输出样例:
在这里给出相应的输出。例如:
qwertpoiuyasdfghjkl

#include <stdio.h>
#include <string.h>
int main()
{int k;char c[101];scanf("%d",&k);scanf("%s",c);int len=strlen(c);int a[101]={0};//用于记录字符是否被输出过int groupcount=len/k-1;//计算分组数量int j,i;for(j=0;j<=groupcount;j+=2){//输出每组的前k个字符for(i=j*k;i<(j+1)*k;i++){if(i>=len)break;printf("%c",c[i]);a[i]++;}//逆序输出每组的后k个字符for(i=(j+2)*k-1;i>=(j+1)*k;i--){if(i>=len)break;printf("%c",c[i]);a[i]++;}
}for(i=0;i<len;i++){if(a[i]==0)printf("%c",c[i]);//输出没有被标记的字符}
}

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

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

相关文章

2024全网最新最全的Pytest接口自动化测试框架教程

pytest编写的规则&#xff1a; 1、测试文件以test_开头&#xff08;以_test结尾也可以&#xff09; 2、测试类以Test开头&#xff0c;并且不能带有__init__方法 3、测试函数以test_开头 4、断言必须使用assert pytest.main([-s,-v]) &#xff1a;用来执行测试用例 -s 打印prin…

卷积神经网络(CNN)天气识别

文章目录 前期工作1. 设置GPU&#xff08;如果使用的是CPU可以忽略这步&#xff09;我的环境&#xff1a; 2. 导入数据3. 查看数据 二、数据预处理1. 加载数据2. 可视化数据3. 再次检查数据4. 配置数据集 三、构建CNN网络四、编译五、训练模型六、模型评估 前期工作 1. 设置GP…

11.10 校招 实习 内推 面经

绿*泡*泡&#xff1a; neituijunsir 交流裙 &#xff0c;内推/实习/校招汇总表格 1、校招丨海康机器人2024校招3大类岗位补录&#xff08;内推&#xff09; 校招丨海康机器人2024校招3大类岗位补录&#xff08;内推&#xff09; 2、校招&实习 | 华为数据存储研究部招聘…

SELinux零知识学习十九、SELinux策略语言之类型强制(4)

接前一篇文章&#xff1a;SELinux零知识学习十八、SELinux策略语言之类型强制&#xff08;3&#xff09; 二、SELinux策略语言之类型强制 2. 类型、属性和别名 &#xff08;4&#xff09;别名 别名是引用类型时的一个备选的名字&#xff0c;能够使用类型名的地方就可以使用别…

EEPROM与Flash的区别

EEPROM与Flash的区别 EEPROMEEPROM内部功能框图实现写入数据内部结构存储管在充电或放电状态下有着不同的阈值电压 问题点EEPROM是如何失效的呢&#xff1f;为何EEPROM不能做大呢&#xff1f; ------------------------------------------------------------------------------…

HTTP请求详解

HTTP请求格式 请求报文通常包含以下部分: 请求行(Request Line): 包括请求方法、请求的URL和协议版本。 示例:GET /index.html HTTP/1.1 请求头(Request Headers): 包含了一系列的键值对,用来描述客户端请求的相关信息,比如Accept(告诉服务器客户端能够处理的MIME类型…

Java多线程(3)

Java多线程(3) 深入剖析Java线程的生命周期&#xff0c;探秘JVM的线程状态&#xff01; 线程的生命周期 Java 线程的生命周期主要包括五个阶段&#xff1a;新建、就绪、运行、阻塞和销毁。 **新建&#xff08;New&#xff09;&#xff1a;**线程对象通过 new 关键字创建&…

tamarin运行

首先我们找到安装tamarin的文件位置&#xff0c;找到以后进入该文件夹下 ubuntuubuntu:~$ sudo find / -name tamarin-prover /home/linuxbrew/.linuxbrew/var/homebrew/linked/tamarin-prover /home/linuxbrew/.linuxbrew/Cellar/tamarin-prover /home/linuxbrew/.linuxbrew/…

mac下vue-cli从2.9.6升级到最新版本

由于mac之前安装了 vue 2.9.6 的版本&#xff0c;现在想升级到最新版本&#xff0c;用官方给的命令&#xff1a; npm uninstall vue-cli -g 发现不行。 1、究其原因&#xff1a;从vue-cli 3.0版本开始原来的npm install -g vue-cli 安装的都是旧版&#xff0c;最高到2.9.6。安…

基于Netty实现的简单聊天服务组件

目录 基于Netty实现的简单聊天服务组件效果展示技术选型&#xff1a;功能分析聊天服务基础设施配置&#xff08;基于Netty&#xff09;定义组件基础的配置&#xff08;ChatProperties&#xff09;定义聊天服务类&#xff08;ChatServer&#xff09;定义聊天服务配置初始化类&am…

后端接口错误总结

今天后端错误总结&#xff1a; 1.ConditionalOnExpression(“${spring.kafka.exclusive-group.enable:false}”) 这个标签负责加载Bean&#xff0c;因此这个位置必须打开&#xff0c;如果这个标签不打开就会报错 问题解决&#xff1a;这里的配置在application.yml文件中 kaf…

数据结构之双向带头循环链表函数功能实现与详细解析

个人主页&#xff1a;点我进入主页 专栏分类&#xff1a;C语言初阶 C语言程序设计————KTV C语言小游戏 C语言进阶 C语言刷题 数据结构初阶 欢迎大家点赞&#xff0c;评论&#xff0c;收藏。 一起努力&#xff0c;一起奔赴大厂。 目录 1.前言 2.带头双…

Linux Docker图形化工具Portainer如何进行远程访问?

文章目录 前言1. 部署Portainer2. 本地访问Portainer3. Linux 安装cpolar4. 配置Portainer 公网访问地址5. 公网远程访问Portainer6. 固定Portainer公网地址 前言 Portainer 是一个轻量级的容器管理工具&#xff0c;可以通过 Web 界面对 Docker 容器进行管理和监控。它提供了可…

Flutter最新稳定版3.16 新特性介绍

Flutter 3.16 默认采用 Material 3 主题&#xff0c;Android 平台预览 Impeller&#xff0c;DevTools 扩展等等 欢迎回到每季度一次的 Flutter 稳定版本发布&#xff0c;这次是 Flutter 3.16。这个版本将 Material 3 设为新的默认主题&#xff0c;为 Android 带来 Impeller 预览…

SpringBoot使用DevTools实现后端热部署

&#x1f4d1;前言 本文主要SpringBoot通过DevTools实现热部署的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是青衿&#x1f947; ☁️博客首页&#xff1a;CSDN主页放风讲故事 &#x1f304;每日一句&…

Windows使用ssh远程连接(虚拟机)Linux(Ubuntu)的方法

步骤 1.Windows下载一个SSH客户端软件 要使用SSH连接&#xff0c;当然得先有一个好用的客户端软件才方便。 我这里使用的是WindTerm&#xff0c;一个开源免费的SSH连接工具&#xff0c;用什么软件不是重点。 这里默认你已经生成过SSH的密钥了&#xff0c;如果没有&#xff0c…

C语言 字符函数汇总,模拟实现各字符函数(炒鸡详细)

目录 求字符串长度 strlen 示例 模拟实现strlen 长度不受限制的字符串函数 strcpy 示例 模拟实现strcpy strcat 模拟实现strcat strcmp 示例 模拟实现strcmp 长度受限制的字符串函数介绍 strncpy 示例 模拟实现strncpy strncat 示例 模拟实现strncat s…

前端js常用代码段总结

持续更新中… 以下内容仅供参考。如有错误&#xff0c;欢迎指正&#xff01; 判断一个对象是否拥有某个属性 场景介绍 1、项目中后端返回的字段&#xff0c;有些时候存在有些时候不存在&#xff0c;前端的逻辑需要依靠这个字段 方法总结 Reflect.has() 静态方法 Reflect.has…

Spring Boot 中使用 ResourceLoader 加载资源的完整示例

ResourceLoader 是 Spring 框架中用于加载资源的接口。它定义了一系列用于获取资源的方法&#xff0c;可以处理各种资源&#xff0c;包括类路径资源、文件系统资源、URL 资源等。 以下是 ResourceLoader 接口的主要方法&#xff1a; Resource getResource(String location)&am…

【Hello Go】Go语言异常处理

Go语言异常处理 异常处理error接口panicrecover延时调用错误问题 异常处理 error接口 Go语言引入了一个关于错误处理的标准模式 它是Go语言内建的接口类型 它的定义如下 type error interface {Error() string }Go语言的标准库代码包errors为用户提供了以下方法 package e…