当前位置: 首页 > news >正文

【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]);//输出没有被标记的字符}
}

相关文章:

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

本文结合PTA专项练习带领读者掌握数组&#xff0c;刷题为主注释为辅&#xff0c;在代码中理解思路&#xff0c;其它不做过多叙述。 目录 7-1 字符串逆序7-2 字符串替换7-3 统计字符出现次数7-4 IP地址转换7-1 删除重复字符7-2 说反话-加强版7-3 数组-回文串7-4 数组-无聊的菇菇…...

Mysql MMM

MMM概述 MMM(Master-Master replication manager for MvSQL&#xff0c;MySQL主主复制管理器&#xff09; 是一套支持双主故障切换和双主日常管理的脚本程序。 MMM 使用 Perl 语言开发&#xff0c;主要用来监控和管理MySQL Master-Master&#xff08;双主&#xff09;复制&…...

GDPU 数据结构 天码行空10

目录 数据结构实验十 树遍历应用一、【实验目的】二、【实验内容】三、【实验源代码】⭐ CPP版⭐ c语言版 四、实验结果 数据结构实验十 树遍历应用 一、【实验目的】 1、了解树的建立方法 2、掌握树与二叉树的转化及其遍历的基本方法 3、掌握递归二叉树遍历算法的应用 二、…...

CD36 ; + Lectin;

CD2 LIMP-2&#xff0c; LGP85 SR-BI&#xff0c; CD36&#xff1b; 清道夫受体蛋白CD36超家族的成员是 脂质代谢 和 先天免疫 的重要调节因子。它们识别正常和修饰的脂蛋白&#xff0c;以及与病原体相关的分子模式。 该家族由三个成员组成&#xff1a; SR-BI &am…...

Git 分支管理

目录 列出分支 删除分支 分支合并 合并冲突 几乎每一种版本控制系统都以某种形式支持分支&#xff0c;一个分支代表一条独立的开发线。 使用分支意味着你可以从开发主线上分离开来&#xff0c;然后在不影响主线的同时继续工作。 Git 分支实际上是指向更改快照的指针。 有…...

Vue23全局事件总线

Vue2&3全局事件总线 Vue2全局事件总线 功能&#xff1a;可以解决所有组件之间通信传数据的问题原理&#xff1a;通过一个共享对象&#xff0c;将所有组件全部绑定到对象上&#xff0c;即可通过这个对象实现组件与组件之间的传递数据&#xff0c;而这个共享对象叫做全局事件…...

GEM5 Garnet DVFS / NoC DVFS教程:ruby.clk_domain ruby.voltage_domain

简介 gem5中的 NoC部分是Garnet实现的&#xff0c;但是Garnet并没有单独的时钟域&#xff0c;而是保持ruby一致&#xff0c;要做noc的DVFS&#xff0c;便是要改ruby的 改电压 #这里只是生成一个随便变量名&#xff0c;存一下值。改是和频率一起的 userssaved_voltage_domain…...

java命令 jmap 堆参数分析

jmap -heap pid 展示pid的整体堆信息 bash-4.4# jmap -heap 10 Attaching to process ID 10, please wait... Debugger attached successfully. Server compiler detected. JVM version is 25.172-b11using thread-local object allocation. Garbage-First (G1) GC with 8 th…...

OpenCV C++ 图像处理实战 ——《OCR字符识别》

OpenCV C++ 图像处理实战 ——《OCR字符识别》 一、结果演示二、tesseract库配置2.1下载编译三、OCR字符识别3.1 文本检测方式3.1.1 RIL_BLOCK3.1.2 RIL_PARA3.1.3 RIL_TEXTLINE3.1.4 RIL_WORD3.1.5 RIL_SYMBOL3.2 英文文本检测3.3 中英文本检测四、源码测试图像下载总结一、结…...

在MySQL中创建新的数据库,可以使用命令,也可以通过MySQL工作台

摘要:在本教程中,你将学习如何使用MySQL CREATE DATABASE语句在MySQL数据库服务器上创建新数据库。 MySQL CREATE DATABASE语句简介 要在MySQL中创建新数据库,可以使用CREATE DATABASE语句。以下说明了CREATE DATABASE语句的基本语法: CREATE DATABASE [IF NOT EXISTS] …...

2311rust到31版本更新

1.27.1稳定版 在此修补程序前,下例在编译器内部恐慌. fn main() {let a vec!["".to_string()];a.iter().enumerate().take_while(|(_, &t)| false).collect::<Vec<_>>(); }1.27.1拒绝上述代码,并显示以下错误消息: error[E0507]: cannot move ou…...

【Python百宝箱】视觉算法秀:Python图像处理舞台上的巅峰对决

前言 在数字化时代&#xff0c;图像处理技术已经成为科技和计算机领域中不可或缺的一部分。从医学影像到计算机视觉&#xff0c;图像处理为我们提供了无限的可能性。Python作为一种灵活而强大的编程语言&#xff0c;在图像处理领域表现出色&#xff0c;拥有丰富的库和工具。本…...

Flutter 中在单个屏幕上实现多个列表

今天&#xff0c;我将提供一个实际的示例&#xff0c;演示如何在单个页面上实现多个列表&#xff0c;这些列表可以水平排列、网格格式、垂直排列&#xff0c;甚至是这些常用布局的组合。 下面是要做的&#xff1a; 实现 让我们从创建一个包含产品所有属性的产品模型开始。 …...

YOLOv8 加持 MobileNetv3,目标检测新篇章

🗝️YOLOv8实战宝典--星级指南:从入门到精通,您不可错过的技巧   -- 聚焦于YOLO的 最新版本, 对颈部网络改进、添加局部注意力、增加检测头部,实测涨点 💡 深入浅出YOLOv8:我的专业笔记与技术总结   -- YOLOv8轻松上手, 适用技术小白,文章代码齐全,仅需 …...

.gitignore 文件——如何在 Git 中忽略文件和文件夹详细教程

文章目录 什么是 .gitignore 文件&#xff1f;.gitignore 文件是用来做什么的&#xff1f;如何创建一个 .gitignore 文件&#xff1f;在 .gitignore 文件中应包括什么&#xff1f;如何在 Git 中忽略一个文件和文件夹如何忽略以前提交的文件 什么是 .gitignore 文件&#xff1f;…...

【数据结构(二)】单链表(3)

文章目录 1. 链表介绍2. 单链表应用实例2.1. 顺序添加方式2.1.1. 思路分析2.1.2. 代码实现 2.2. 按照编号顺序添加方式2.2.1. 思路分析2.2.2. 代码实现 3. 单链表节点的修改3.1. 思路分析3.2. 代码实现 4. 单链表节点的删除4.1. 思路分析4.2. 代码实现 5. 单链表常见面试题5.1.…...

创新案例|云服务平台HashiCorp是如何构建开源社区实现B2B增长飞轮

社区文化是HashiCorp企业文化的重要组成部分。虽然众多公司声称自己是社区驱动&#xff0c;但实际付诸行动的很少。与众不同的是&#xff0c;HashiCorp从一开始就将社区视为战略方针的核心&#xff0c;这也影响和塑造了公司今天的发展方向。社区不仅是执行策略之一&#xff0c;…...

2024年软件测试面试必看系列,看完去面试你会感谢我的!!

朋友圈点赞的测试用例 功能测试 1点赞后是否显示结果 2.点赞后是否可以取消; 3.点赞取消后是否可以重复点赞; 4.共同好友点赞后&#xff0c;是否有消息提醒; 5.非共同好友点赞后&#xff0c;是否有消息提醒; 6.点击点赞人昵称&#xff0c;是否可以跳转到他/她的主页; 7.自己能…...

01ctfer 文件上传

01ctfer 文件上传 启动靶场 访问该地址 代码审计 <?php header("Content-Type:text/html; charsetutf-8"); // 每5分钟会清除一次目录下上传的文件 require_once(pclzip.lib.php);if(!$_FILES){echo <!DOCTYPE html> <html lang"zh">…...

2.2 调用星火大模型的API

调用星火大模型的API 1 申请API调用权限&#xff1a;2 调用原生星火 API3 统一API调用方式 项目仓库地址&#xff1a;https://github.com/datawhalechina/llm-universe 讯飞星火认知大模型&#xff0c;由科大讯飞于2023年5月推出的中文大模型&#xff0c;也是国内大模型的代表…...

HSTracker:macOS上炉石传说玩家的免费智能助手终极指南

HSTracker&#xff1a;macOS上炉石传说玩家的免费智能助手终极指南 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker 还在为炉石传说对战中记不住对手卡牌而烦恼吗&#x…...

H.Test.DefaultApplicationBase-默认应用组合

H.Test.DefaultApplicationBase 示例项目学习教程 一、概述 H.Test.DefaultApplicationBase 展示了如何使用 WPF-Control 框架的默认应用组合&#xff08;Default ApplicationBase&#xff09;。这是一个"开箱即用"的应用模板&#xff0c;一键注册所有常用服务和模块…...

体验低延迟与高稳定性的大模型 API 聚合服务调用感受

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 体验低延迟与高稳定性的大模型 API 聚合服务调用感受 在集成大模型能力到实际应用的过程中&#xff0c;开发者最关心的往往是两个核…...

如何快速获取Steam游戏清单:Onekey工具的终极使用指南

如何快速获取Steam游戏清单&#xff1a;Onekey工具的终极使用指南 【免费下载链接】Onekey Onekey Steam Depot Manifest Downloader 项目地址: https://gitcode.com/gh_mirrors/one/Onekey 还在为Steam游戏清单的繁琐获取过程而烦恼吗&#xff1f;Onekey作为一款完全免…...

九大网盘直链解析工具:如何让文件传输效率提升300%以上

九大网盘直链解析工具&#xff1a;如何让文件传输效率提升300%以上 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 &#xff0c;支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

为内容创作平台集成 AI 功能时利用 Taotoken 实现模型灵活调度

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 为内容创作平台集成 AI 功能时利用 Taotoken 实现模型灵活调度 在内容创作或媒体类平台中集成 AI 辅助功能&#xff0c;如文章生成…...

UE动画师避坑指南:状态机(State Machine)乱成一团麻?试试这3个整理技巧和最佳实践

UE动画师高效工作指南&#xff1a;状态机结构化管理的3个核心策略当项目进入中后期开发阶段&#xff0c;动画蓝图的状态机往往会变成一团纠缠不清的"意大利面条"。每次添加新功能都像是在已经混乱的线团上再打一个结&#xff0c;最终导致团队协作效率直线下降。我曾参…...

《AI推理优化实战:从高延迟高成本到高效低耗,企业级AI落地必备技术》

随着大模型、AI应用规模化落地&#xff0c;行业发展重心已经从“模型训练”全面转向“模型推理”。2026年AI产业的核心痛点不再是模型训练精度不足&#xff0c;而是推理成本过高、响应延迟过长、算力资源浪费。很多企业落地AI应用时&#xff0c;面临大模型推理速度慢、并发量低…...

卡梅德生物技术快报|真核蛋白表达信号肽筛选实验全流程复盘

从事分子生物学实验的科研人员&#xff0c;在开展真核蛋白表达实验时&#xff0c;经常遇到目的蛋白分泌量低、胞内滞留、活性丧失等问题。信号肽作为调控蛋白分泌的核心元件&#xff0c;其选型直接决定真核蛋白表达的成败与效率。本文基于经典科研实验&#xff0c;完整复盘 8 种…...

Unity版本选择避坑指南:LTS稳定幻觉与个人版合规雷区

1. 为什么Unity版本选择不是“装最新版就完事”&#xff1f;刚接触Unity的新手&#xff0c;十有八九会直接去官网下载那个醒目的“Download Latest Version”按钮——毕竟谁不想用上最酷的HDRP、最顺的DOTS、最全的AI工具链&#xff1f;我带过三届Unity训练营&#xff0c;每届都…...