弯道超车必做好题集锦三(C语言编程题)
目录
前言:
1.单词倒排
方法1:scanf匹配特定字符法
方法2: 双指针法
2.统计每个月兔子的总数
方法1:斐波那契数列
方法2:斐波那契的递归
3.珠玑妙算
方法:遍历
4.寻找奇数(单身狗)
方法1:遍历法
方法2:异或运算法
5.截取字符串
前言:
编程想要学的好,刷题少不了,我们不仅要多刷题,还要刷好题!为此我开启了一个弯道超车必做好题锦集的系列,此为第三篇编程题篇,每篇大约5题左右。该系列会不定期更新,敬请期待!
1.单词倒排
方法1:scanf匹配特定字符法
#include <stdio.h>
int main()
{char str[1000][1000];int i = 0;while (1){if (scanf("%[a-zA-Z]", str[i])){i++;}if (getchar() == '\n'){break;}}while(i){printf("%s ", str[--i]);}return 0;
}
解析:
方法2: 双指针法
解题思路:
- 整体思想是
双指针法
,因此定义一对快慢指针p1,p2.- 首先寻找一个单词的
末尾
,因此当s[p1]不是字母时p1就要--,循环终止时只要p1将指向一个单词的末尾(还有单词的话),此时将用p2记录下这个单词的结尾。- 继续寻找单词的
开头
,因此当s[p1]为字母的时候就让p1--,最终p1+1指向该单词的开头,我们从p1+1遍历到p2,依次打印即可。
scanf函数不能接受带空格的字符串,所以要使用gets
函数
#include<stdio.h>
#include<string.h>
#include<ctype.h>
int main()
{char s[10000];gets(s);int len = strlen(s);int p1 = len - 1, p2 = len;while (p1>=0){while (p1 >= 0 && !isalpha(s[p1])){p1--;} p2 = p1;while (p1 >= 0 && isalpha(s[p1])){p1--;} int i;for (i = p1 + 1; i <= p2; i++){printf("%c", s[i]);} printf(" ");}return 0;
}
2.统计每个月兔子的总数
方法1:斐波那契数列
我们可以先来推导一下
第一个月 只有一只
第二个月 只有一只
第三个月 原先的一只生出一只共2只
第四个月 最开始的一只又生出一只 共3只
第五个月 第一只生一只,第二只到第三月 生一只,共5只
第六个月 第一只生一只,第二只生一只,第三只生一只,共8只
1 1 2 3 5 8……
可以发现f(n) = f(n-1)+f(n-2)
本质上是斐波那契数列
#include<stdio.h>
int main()
{int arr[31],i = 0,n;arr[0] = 1; arr[1] = 1;scanf("%d", &n);for (i = 2; i < n; i++){arr[i] = arr[i - 1] + arr[i - 2];}printf("%d", arr[n - 1]);return 0;
}
方法2:斐波那契的递归
#include<stdio.h>
int fb(int n)
{if (n == 1 || n == 2){return 1;}return fb(n - 1) + fb(n - 2);
}int main()
{int n = 0;scanf("%d", &n);printf("%d", fb(n));return 0;
}
3.珠玑妙算
珠玑妙算https://leetcode.cn/problems/master-mind-lcci/
方法:遍历
int* masterMind(char* solution, char* guess, int* returnSize) {int* ret = (int*)malloc(sizeof(int) * 2);ret[0] = 0; ret[1] = 0;int i = 0,j=0;for (i = 0; i < 4; i++){if (solution[i] == guess[i]){ret[0]++;solution[i] = ' ';guess[i] = ' ';}}for (i = 0; i < 4; i++){if (solution[i]!=' '){for (j = 0; j < 4; j++){if (solution[i] == guess[j]){ret[1]++;guess[j] = ' ';break;}}}}*returnSize = 2;return ret;
}
解析:
solution: RGBY
guess: GGRR
先遍历一遍guess,每个字符一一对应
R-G G-G B-R Y-R
我们把相同的当成一次猜中,即G==G,即为一次,并把这两个字符抵消
然后我们再次遍历guess中的每一位,这时候我们需要在整个solution中搜索是否有这个字符,如果有则抵消solution和guess中的字符,并当成一次伪猜中,然后下一个字符照旧
4.寻找奇数(单身狗)
方法1:遍历法
#include<stdio.h>
int main()
{int n = 0, arr[2000000],i=0,count=0,j=0,flg=0;scanf("%d", &n);for (i = 0; i < n; i++){scanf("%d", &arr[i]);}for (i = 0; i < n-1; i++){if (arr[i] < 0){continue;}count = 1;for (j = i+1; j < n; j++){if (arr[j]>0 && arr[i] == arr[j]){arr[j] = arr[j] * -1;count++;}}if (count % 2 != 0){flg = arr[i];break;}}printf("%d",flg);return 0;
}
但会超时
方法2:异或运算法
总结:利用异或运算可以算出出现奇数次的数字
#include<stdio.h>
int main()
{int n = 0;int ans = 0;scanf("%d",&n);for(int i = 0; i < n; i++){int tmp = 0;scanf("%d",&tmp);ans ^= tmp;}printf("%d\n", ans);return 0;
}
5.截取字符串
解析:
截取字符串前 n 个字符,只需要将数组 n 下标位置的数据替换为字符串结尾标志即可
#include <stdio.h>
int main()
{
char str[101];
scanf("%s", str) > 0;
int n;
scanf("%d", &n);
str[n] = '\0';
printf("%s\n", str);
return 0;
}
以上为我个人的小分享,如有问题,欢迎讨论!!!
都看到这了,不如关注一下,给个免费的赞
相关文章:

弯道超车必做好题集锦三(C语言编程题)
目录 前言: 1.单词倒排 方法1:scanf匹配特定字符法 方法2: 双指针法 2.统计每个月兔子的总数 方法1:斐波那契数列 方法2:斐波那契的递归 3.珠玑妙算 方法:遍历 4.寻找奇数(单身狗&#…...

JavaScript基础语法03——JS注释、结束符
哈喽,大家好,我是雷工! 今天继续学习JavaScript基础语法知识,注释和结束符,以下为学习笔记。 一、JavaScript注释 JavaScript注释有什么作用? JavaScript注释可以提高代码的可读性,能够帮助像…...

常见路由跳转的几种方式
常见的路由跳转有以下四种: 1. <router-link to"跳转路径"> /* 不带参数 */ <router-link :to"{name:home}"> <router-link :to"{path:/home}"> // 更建议用name // router-link链接中,带/ 表示从根…...

25.选择排序,归并排序,基数排序
目录 一. 选择排序 (1)简单选择排序 (2)堆排序 二. 归并排序 三. 基数排序 四. 各种排序方法的比较 (1)时间性能 (2)空间性能 (3)排序方法的稳定性能…...
DataX DorisWriter 插件DorisStreamLoadObserver类详细解读
DorisStreamLoadObserver 类是一个用于将数据加载到 Doris(以前称为 Palo)数据库中并监视加载过程的 Java 类。该类提供了一组方法,用于构建 HTTP 请求、处理 HTTP 响应以及监控数据加载的状态。以下是每个方法的具体作用: Doris…...

leetcode:1710. 卡车上的最大单元数(python3解法)
难度:简单 请你将一些箱子装在 一辆卡车 上。给你一个二维数组 boxTypes ,其中 boxTypes[i] [numberOfBoxesi, numberOfUnitsPerBoxi] : numberOfBoxesi 是类型 i 的箱子的数量。numberOfUnitsPerBoxi 是类型 i 每个箱子可以装载的单元数量。…...
Spring_JDBC的使用
Spring 是个一站式框架:Spring 自身也提供了控制层的 SpringMVC和持久层的 Spring JdbcTemplate。 配置信息 1.下载 Spring JdbcTemplate 的 jar 包,在pom.xml中导入 <dependency><groupId>org.springframework</groupId><artifactId>spr…...

【Python从入门到进阶】34、selenium基本概念及安装流程
接上篇《33、使用bs4获取星巴克产品信息》 上一篇我们介绍了如何使用bs4来解析星巴克网站,获取其产品信息。本篇我们来了解selenium技术的基础。 一、什么是selenium? Selenium是一种用于自动化Web浏览器操作的开源工具。它提供了一组API(应…...
如何确保ChatGPT在文本生成中遵循道德和伦理准则?
确保ChatGPT在文本生成中遵循道德和伦理准则是一个复杂而重要的任务。人工智能(AI)系统,特别是语言模型,具有强大的生成能力,但如果不受到道德和伦理准则的约束,可能会导致一系列问题,包括歧视、…...
RISC-V Linux系统rootfs制作
文章目录 1、下载2、配置与编译3、运行 buildroot 是一个构建嵌入式Linux系统的框架。整个 buildroot 是由Makefile(*.mk) 脚本和 Kconfig(Config.in) 配置文件构成的,因此可以像配置 Linux 内核一样执行 make menuconfig 进行配置,编译出一个完整的、可…...
git常用场景记录 | 拉取远程分支A合并到本地分支B
文章目录 git常用场景记录拉取远程分支A合并到本地分支B本地分支B存在未add与commit的代码 git常用场景记录 doing,最后更新9.1 拉取远程分支A合并到本地分支B 需求描述 在团队合作时,我自己的本地分支B功能已经实现并合并到feature,之后发现…...
如何利用Linux进行数据管理和分析?
Linux是一款非常强大的操作系统,它不仅可以帮助你管理数据,还可以让你成为一名数据分析大师。只要你会使用命令行,你就可以用Linux进行数据管理和分析。 现在,让我们来看看如何使用Linux进行数据管理。 使用sort命令对数据进行排…...
vue3封装echarts图表数据无法渲染到页面
问题是后端的数据已经成功返回到前端了,但是Echarts图表一直不能被渲染,卡了一个多小时,最后问gpt才解决(gptyyds!!!) methods: {loadGet() {this.$axios.get(this.$httpUrl /goods…...

MySQL索引,事务和存储引擎
一、索引 1、索引的概念 ●索引是一个排序的列表,在这个列表中存储着索引的值和包含这个值的数据所在行的物理地址(类似于C语言的链表通过指针指向数据记录的内存地址)。 ●使用索引后可以不用扫描全表来定位某行的数据,而是先…...

开发指导—利用CSS动画实现HarmonyOS动效(一)
注:本文内容分享转载自 HarmonyOS Developer 官网文档 一. CSS 语法参考 CSS 是描述 HML 页面结构的样式语言。所有组件均存在系统默认样式,也可在页面 CSS 样式文件中对组件、页面自定义不同的样式。请参考通用样式了解兼容 JS 的类 Web 开发范式支持的…...

电商项目part10 高并发缓存实战
缓存的数据一致性 只要使用到缓存,无论是本地内存做缓存还是使用 redis 做缓存,那么就会存在数据同步的问题。 先读缓存数据,缓存数据有,则立即返回结果;如果没有数据,则从数据库读数据,并且把…...

MongoDB实验——MongoDB shell操作
MongoDB shell操作 实验原理 MongoDB shell是一个可执行文件,是MongoDB自带的一个交互式JavaScript shell,位于MongoDB安装路径下的/bin文件夹中。要启动MongoDB shell,可执行命令mongo。这将在控制台提示符中启动该shell,Mongo…...

数据分析师职业发展道路,工作内容是什么?
很多同学问,参加数据分析就业班后之的就业发展道路是怎样的,工作又能做什么呢? 市面上的常见的工作类型有有运营类、技术类及分析类等,可以根据自己的意愿去做适合自己的工作,但是任何工作其实都是需要一技之长。…...
Vue3 + ts的使用
一. IDE的配置 1. VSCode 插件安装搜索builtin typescript 2. 点击“TypeScript and JavaScript Language Features”右下角的小齿轮,然后选择“Disable (Workspace)” 3. 重新加载工作空间。Takeover 模式将会在你打开一个 Vue 或者 TS 文件时自动启用。 二. 依赖的…...

CF Edu152 C
Problem - C - Codeforces 题意: 思路: 首先,观察样例可知 这种是等效的 推广一下 0000.....111111 ..l..............r...... 这种是等效的 容易想到维护后面第一个1的位置和前面第一个0的位置,然后把所有区间都等效一下&…...

LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/
使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题:docker pull 失败 网络不同,需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

Spring数据访问模块设计
前面我们已经完成了IoC和web模块的设计,聪明的码友立马就知道了,该到数据访问模块了,要不就这俩玩个6啊,查库势在必行,至此,它来了。 一、核心设计理念 1、痛点在哪 应用离不开数据(数据库、No…...
Java数值运算常见陷阱与规避方法
整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...

[ACTF2020 新生赛]Include 1(php://filter伪协议)
题目 做法 启动靶机,点进去 点进去 查看URL,有 ?fileflag.php说明存在文件包含,原理是php://filter 协议 当它与包含函数结合时,php://filter流会被当作php文件执行。 用php://filter加编码,能让PHP把文件内容…...
PostgreSQL——环境搭建
一、Linux # 安装 PostgreSQL 15 仓库 sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-$(rpm -E %{rhel})-x86_64/pgdg-redhat-repo-latest.noarch.rpm# 安装之前先确认是否已经存在PostgreSQL rpm -qa | grep postgres# 如果存在࿰…...

Chromium 136 编译指南 Windows篇:depot_tools 配置与源码获取(二)
引言 工欲善其事,必先利其器。在完成了 Visual Studio 2022 和 Windows SDK 的安装后,我们即将接触到 Chromium 开发生态中最核心的工具——depot_tools。这个由 Google 精心打造的工具集,就像是连接开发者与 Chromium 庞大代码库的智能桥梁…...

DeepSeek源码深度解析 × 华为仓颉语言编程精粹——从MoE架构到全场景开发生态
前言 在人工智能技术飞速发展的今天,深度学习与大模型技术已成为推动行业变革的核心驱动力,而高效、灵活的开发工具与编程语言则为技术创新提供了重要支撑。本书以两大前沿技术领域为核心,系统性地呈现了两部深度技术著作的精华:…...