自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 动态数组的应用

用动态内存分配函数 malloc()来申请 n 个 int 型的内存空间,然后将指针 p 指向该空间的首地址,输入 n 个学生的成绩存放到该动态数组中,再将动态数组中存放的学生成绩逐个累加到求和变量 sum 中,最后求平均值并输出。小民班级的学生人数为 n,班长又求助小民完成以下任务:输入班级 n 个学生的综测成绩, 要求用动态数组来存放学生综测成绩,计算并输出班级综测成绩平均分。第二行,n 个整数,表示 n 个学生的综测成绩,成绩位于[0,100]区间。

2025-04-21 23:40:32 179

原创 通用排序函数

本题是函数指针作为函数参数的应用。首先学生的学号和成绩分别用两个一维数组存放, 然后可以选择任一种稳定的排序算法(以冒泡排序为例)实现按成绩排序,排序函数的形参采用函数指针,根据实参采用的函数名不同,从而来实现按成绩升序排序或降序排序。最后一行,1 个正整数 choice,表示排序方式是按成绩升序还是按成绩降序,choice=1 表 示按成绩升序排序,choice=2 表示按成绩降序排序,如果有成绩相同的,则要求按学号和成绩 的输入先后顺序排列。第一行数据,1 个正整数 n,2≤n≤60,表示学生人数。

2025-04-21 23:39:53 190

原创 字符串拷贝函数

自定义字符串拷贝函数 MyStrcpy(),定义两个字符指针变量 a 和 b 作为函数的形参,用两 个数组名作为函数的实参。函数体中循环将字符指针变量 b 指向的字符逐个复制到字符指针变量 a 指向的内存区域,直到字符指针 b 指向的字符是字符串结束标志符。main()函数 输入一个字符串 b,通过调用函数 MyStrcpy(a,b),将字符串 b 的内容复制到字符串 a 中,并输出字符串 a。一行,字符串 b,字符串长度不超过 80。一行,字符串 a,表示复制到的字符串。

2025-04-21 23:39:11 229

原创 求最高成绩函数

本题可以将指针变量作为自定义函数 FindMax()的函数形参,将 main()函数中存放最高分和学号的变量的地址作为实参来调用 FindMax()函数。在函数 FindMax()中用指针变量来间接修改最高分变量和学号变量的值,最后在 main()函数中输出最高分和学号。接下来的 n 行,每行 2 个整数,表示每个学生的学号和综测成绩,学号范围为 1~9999, 成绩范围为 0~100。一行,2 个正整数,分别表示最高分和对应的学号。第一行,1 个正整数 n,2≤n≤60,表示学生人数。

2025-04-21 23:38:30 144

原创 两数交换函数

定义两数交换函数,函数用指针变量作为参数。在主函数中输入两个整数,然后调用该函数实现两数交换,最后输出交换后的数据。一行,2 个正整数 n 和 m,n≤10000,m≤10000。一行,2 个正整数,分别表示交换后的数据。

2025-04-21 23:37:46 152

原创 求数组最大值和最小值

小民接到一个简单的编程任务:求整数数组的最大值和最小值并输出。要求自定义一个函数求整型数组的最大值和最小值,然后在 main()函数调用这个函数实现求解。第二行,n 个整数,每个整数 x 取值范围:-10000≤x≤10000。一行,2 个整数,分别表示输入的 n 个整数的最大值和最小值。第一行,整数个数 n,2≤n≤20。

2025-04-21 23:37:05 221

原创 字符串逆置

在学习数据结构与算法时,大家经常会遇到逆置问题。(3)在 main()函数中调用函数 MakeReverse(),将输入的字符串逆置。(1)定义函数 MakeReverse()实现字符串逆置;(2)在 main()函数中完成字符串的输入和输出;第一行,1 个字符串,字符串长度不超过 50。一行,1 个字符串,逆置后的字符串。

2025-04-21 23:36:13 137

原创 回文字符串

在例题 3.1 中已经通过操作数组下标来实现判定回文字符串的算法。在学习了字符指针的相关知识后,老师又要求小民通过操作字符指针来判定字符串是否是回文。一行,1 个字符串,如果输入字符串是回文,则输出 Yes,否则输出 No。一行,1 个字符串,字符串长度不超过 50。

2025-04-21 23:35:30 178

原创 结构体数组的应用

小民是学校篮球队队员,教练求助小民完成以下队员信息管理任务:输入球员人数 n,再 输入每个球员的姓名和号码,然后按与输入相反的顺序输出每个球员的姓名和号码。接下来 n 行,每行 1 个字符串 name 和 1 个正整数 num,分别表示球员的姓名和号码;1≤ name 的长度≤20,姓名中不会出现空格,1≤num≤100。n 行,每行 1 个字符串和 1 个正整数,分别表示球员的姓名和号码。第一行,1 个正整数 n,2≤n≤20,表示球员人数。

2025-04-21 23:34:23 134

原创 指针数组的应用

根据新需求,教练又求助小民完成以下队员信息管理任务:输入球员人数 n,再输入 n 个 球员姓名,然后将球员姓名升序排序,要求使用函数 malloc()来申请动态数组存放队员的姓名 字符串。接下来 n 行,每行 1 个字符串,表示球员的姓名,球员的姓名长度不超过 20,并且球员姓名中不包含空格。第一行,1 个正整数 n,2≤n≤20,表示球员人数。n 行,每行 1 个字符串,表示升序排序后球员的姓名。

2025-04-21 23:30:23 323

原创 通用函数的应用

为了提高信息管理效率,教练再次求助小民完成以下队员信息管理任务:输入球员人数, 再输入每个球员的姓名和号码,然后输入排序方式(输入 1 表示按球员号码升序排序,输入 2 表示按球员号码降序排序),最后输出排序后的球员姓名和号码。要求用结构体数组来存放球员的姓名和号码,分别用三个函数来实现结构体数组的输入、排序和输出,要求用结构体指针作为函数的形参,同时排序函数必须是通用函数,即该函数既能实现按球员号码升序排序,也能实现按球员号码降序排序。第一行,1 个正整数 n,2≤n≤20,表示球员人数。

2025-04-21 23:28:32 674

原创 数字接龙 --C

暑假,小民和弟弟一起玩数字接龙游戏。将 n 个正整数 A1,…,An以任意次序排列首尾连接,拼接成一个新的整数,接龙而成的整数更大者获胜。请你帮助小民编写一个程序构造出最大的整数。第二行,有 n 个整数,表示给出的 n 个整数 Ai。第一行,有 1 个整数,表示数字个数 n。一行,1 个正整数,表示拼接的最大整数。

2025-04-12 16:25:52 282 1

原创 选拔赛排名

小民想通过选拔赛加入学校程序设计竞赛实验班,他了解到选拔赛规则如下:每位选手具有参与度积分、积分赛积分、现场赛积分 3 项成绩,然后按一定的排序规则来排位,最后排位前 5 名的学生入选实验班。第二排序规则为如果两位选 手的总积分相同,再按现场赛积分从高到低排序;第三排序规则为如果两位选手的总积分和现场赛积分都相同,则按参赛编号从低到高排序。排序完成后,每位选手的排位都是唯一确定的。说明:第 k 行的 3 个数字依次表示参赛编号为 k-1 选手的参与度积分、积分赛积分和现场赛积分。

2025-04-12 16:25:15 489

原创 抽查作业 --C

本题是计数排序的应用。对原有算法进行如下修改:升序(或降序)遍历 count[]数组中的所有元素,当其值大于等于 1(表示该元素出现过)时,输出且只输出一次该数组元素的下标,如此便可以实现“去重”;他会拿到老师用计算机随机生成的 n 个整数(2≤n≤100),每个整数取值范围为[1, 1000],该整数正好对应学生学号。第二行,用空格隔开的 m 个正整数,表示从小到大排序后的各个随机数。第一行,1 个正整数,表示所生成的随机数的个数 n。第一行,1 个正整数 m,表示不相同的随机数的个数。

2025-04-12 16:24:39 222

原创 排队游戏 --C

游戏的规则是小民是指挥官,其他每位同学的背后被贴上了一个整数作为编号,随后并排排成一行并且不许相互交流。小民可以走到每位同学背后看他们的编号,但是他只能指挥让相邻的两位同学交换位置。知道初始的编号顺序后,请你帮小民计算,他最少需要进行多少次指挥交换位置就能将同学们完成按编号升序排列。冒泡排序就是通过比较及交换相邻两个数来实现排序的,符合本题排序要求,所以应用 冒泡排序可实现该问题求解。第一行,1 个正整数 ,表示排队的总人数n,n<=10000。第二行,用空格分隔的n 个不同的正整数,表示初始的排队顺序。

2025-04-12 16:23:59 271

原创 求数列第 k 大数

【题目描述】 小民学习了排序算法,于是他想借助这些算法编程完成以下任务:从输入的 n 个不相等的正整数中查找出第 k 大的数。【输入格式】 第一行,1 个正整数 n。 第二行,n 个正整数,用空格隔开。 第三行,1 个正整数 k,表示待查找的第几大的数,1≤k<=n【输出格式】 一行,输出 1 个正整数,表示第 k 大的数。

2025-04-12 16:23:18 197

原创 计数排序 --C

计数排序(Counting Sort)是一种非比较排序算法,于 1954 年由哈罗德·H·苏沃德(Harold H. Seward)提出。该算法不进行对排序数据的比较,而是利用数组下标确定元素的正确位置, 主要适用于对一定范围内的整数排序,其时间复杂度为 O(n+k)(k 是相应的整数取值范围)。在有限的取值范围下(k 不是特别大),其排序速度优于任何比较排序算法。1行,n 个整数,表示排序后的数列,整数之间用空格隔开。第二行,n 个正整数,用空格隔开。第一行,1 个正整数 n。

2025-04-11 15:28:40 143

原创 二路归并排序

该算法的基本思路:首先,把包含 n 个数据的待排序序列看成 n 个容量为 1 的有序序列;然后,两两进行归并,得到⌈n/2⌉(向上取整)个容量为 2 或 1 的有序序列;接下来,继续迭代执行对有序序列两两的归并;直到最终合并成为 1 个容量为 n 的有序序列为止。归并排序(MergeSort)是将两个或两个以上的有序序列合并成为一个有序序列的排序方法。1行,n 个整数,表示排序后的数列,整数之间用空格隔开。第二行,n 个正整数,用空格隔开。第一行,1 个正整数 n。

2025-04-11 15:28:08 588

原创 快速排序 --C

该算法的基本思路:通过一趟排序处理在待排序序列中定一个“基准”(pivot,也称“基数”或“枢轴”)并最终将其放到适合的位置上,从而实现将该序列分隔成两个独立的部分;其中一个部分(为方便后面的讲解,先称之为“较小数据部分”)的所有数据比另一个部分(相 应称之为“较大数据部分”)的任何一个数据都小。快速排序(Quick Sort)属于比较排序中的交换排序,可视为“冒泡排序”的一种改进。1行,n 个整数,表示排序后的数列,整数之间用空格隔开。第二行,n 个正整数,用空格隔开。第一行,1 个正整数 n。

2025-04-11 15:26:25 423

原创 简单插入排序

该算法的基本思想:把序列分为前、后两个部分,前面为已排序序列部分,后面为未排序序列部分,初始状态时,已排序部分只有 1 个元素(这样的序列必然是有序的),然后从未排序部分取出第 1 个数据元素,在已排序序列中从后向前扫描,找到适合该数据元素的位置并插入;以此方法不断地重新构建有序序列,直至未排序序列部分没有数据元素为止。简单插入排序(Insertion Sort)也称为直接插入排序,是一种简单直观的排序算法。行,n 个整数,表示排序后的数列,整数之间用空格隔开。第二行,n 个正整数,用空格隔开。

2025-04-11 15:25:46 198

原创 冒泡排序 --c

该算法的基本思路:通过遍历多趟数列的未排序部分,并对相邻的数据两两进行比较, 如果先后次序不符合排序要求,就将两个数据的位置进行交换。每趟遍历及处理后,原先未排序部分的最大/最小元素(升序/降序)被排到靠近已排序部分的一端(也可以理解为该数据被 排到了已排序部分的恰当位置上)。在整个排序过程 中,较小(或较大)的数据会慢慢向数列的某端移动,犹如“气泡”朝着“顶部”“上浮”,故 得名“冒泡排序”。1行,n 个整数,表示排序后的数列,整数之间用空格隔开。第二行,n 个正整数,用空格隔开。

2025-04-11 15:25:15 175

原创 简单选择排序

该算法的基本思路:把序列分为前、后两个部分(前面为已排序部分,后面为未排序部分),初始状态时,已排序部分有 0 个元素。首先从未排序序列部分找到最小/最大元素(升序/降序),放到已排序部分作为此序列的起始位置;接下来,再从剩余未排序元素中继续寻找最小/最大元素,然后放到已排序序列的末尾(即未排序部分中最靠近已排序序列的位置上);重 复执行上述处理过程,直至完成该数列的未排序序列最后 2 个数据的处理(换言之,整个序列 的所有元素都放到已排序序列中)。1行,n 个整数,表示排序后的数列,整数之间用空格隔开。

2025-04-11 15:24:32 287

原创 小民与运动会

一行,5 个整数(用空格隔开,0 表示不参加,1 表示参加),依次表示 A~E 同学是否参加运动会。(5)如果 E 参加,那么 A 和 D 也都参加。(3)C 和 D 或者都参加,或者都不参加;(4)D 和 E 中至少有一个人参加;(2)B 和 C 至多有一个人参加;(1)A 参加时,B 也参加;

2025-04-07 21:25:11 534

原创 小民与狼人杀

为了增加参与感,法官破例下场给了提示:“四个玩家之中有三个人说的是真话,一个人说的是假话。”你能帮助小民分析出谁是狼人吗?小民和他的小伙伴们在玩狼人杀,场上只剩下了四个人,现在到了紧张刺激的发言投票阶段。一行,1 个字符(A~D),表示狼人的编号。玩家 D 发言:“C 是在冤枉好人。玩家 C 发言:“狼人肯定是 D。玩家 A 发言:“我不是狼人。玩家 B 发言:“C 是狼人。

2025-04-04 15:05:44 163 1

原创 海盗比酒量

过程如下:打开一瓶酒,所有在场的人平分喝下,有几个人倒下了;直到开了第 4 瓶酒,坐着的人已经所剩无几,海盗船长也在其中。他在航海日志中写到:“昨天,我正好喝了一瓶酒,奉劝大家, 开船不喝酒,喝酒别开船。”请小民根据这些信息,编程推断一开始在船上有多少人,每一轮喝下来后还剩多少人。根据题意,枚举喝第 1、2、3、4 瓶酒的人数,可用 4 层循环实现;喝第 3 瓶酒人数 n3 的取值 范围为 3~n2-1。喝第 4 瓶酒人数 n4 的取值范围为 2~n3-1。例如:有一种可能是 20,5,4,2,0……

2025-04-04 15:04:51 361

原创 小民与美食

(2)1≤方案总数≤5,按字典序排列输出所有搭配方案,最后一行输出方案总数;(3)方案总数>5,按字典序排列输出前 5 种搭配方案,最后一行输出方案总数;(2)1≤方案总数≤5,按字典序排列输出所有搭配方案,最后一行输出方案总数;(3)方案总数>5,按字典序排列输出前 5 种搭配方案,最后一行输出方案总数;注意:每行用空格隔开,依次输出 8 种菜品的取菜价格,表示 1 种取菜方案。注意:每行用空格隔开,依次输出 8 种菜品的取菜价格,表示 1 种取菜方案。(1)方案总数=0,输出 0;

2025-04-04 15:04:21 362

原创 火柴棒等式

给出 n 根火柴棍,可以拼出多少个形如“A+B=C”的等式?等式中的 A、B、C 是用火柴棍拼出的整数(若该数非零,则最高位不能是 0)。用火柴棍拼数字 0~9 的方法如图 6.6 所示。(2)如果 A≠B,则 A+B=C 与 B+A=C 视为不同的等式(A、B、C≥0);一行,1 个整数 n,n≤24,表示火柴棍总数。一行,1 个整数,表示能拼成的不同等式的数目。(1)加号与等号各自需要两根火柴棍;(3)n 根火柴棍必须全部用上。(NOIP 2008 年提高组)

2025-04-04 15:03:39 252

原创 涂旗子 --C

现有一个棋盘状的布,分成了 n 行 m 列的格子,每个格子是白色蓝色红色之一,小民希望把这个布改成符合要求的画,方法是在一些格子上涂颜料,盖住之前的颜色。小民很懒,希望涂最少的格子使这块布成为一幅符合要求的画。接下来是 n×m 的矩阵,矩阵的每一个小方块是 W(白)、B(蓝)、R(红)中的一个。(1)最上方若干行(至少一行)的格子全部是白色的;(2)接下来若干行(至少一行)的格子全部是蓝色的;(3)剩下的行(至少一行)全部是红色的。一行,1 个整数,表示至少需要涂多少块。第一行,2 个整数 n、m。

2025-04-04 15:02:33 162

原创 最大子段和

老师要求小民完成一道经典的枚举算法题:给出一个长度为 n 的整型序列 ai值(1≤i≤n), 求出该序列中连续且非空的一个和最大的子段,并输出该和值。样例 1 说明:该系列的[3,5]子段的数据和值最大,即{3,-1,2},其和为 4。第二行,n 个整数,第 i 个整数表示序列的第 i 个数字 ai。第一行,整数 n,1≤n≤100,表示序列的长度。一行,1 个整数,表示该序列的最大子段和。

2025-04-04 15:01:56 223

原创 方形统计 --C

有一个 n×m 方格的棋盘(图 6.3),求其方格包含多少个正方形和长方形(不包含正方形)。一行,2 个正整数,分别表示方格包含多少个正方形和长方形(不包含正方形)。一行,2 个正整数 n 和 m,n ≤5000,m≤5000。(NOIP 1997 年普及组)

2025-04-04 15:01:19 148

原创 六角填数 --C

如图 6.1 所示,填入数字 1~12,使得每条直线上的数字之和都相同。图中,已经填好了 3 个数字,请计算星号位置所代表的数字是多少?一行,1 个整数,表示星号位置所代表的数字。(蓝桥杯2014 年省赛)

2025-04-04 15:00:30 255

原创 三连击 --C

9 共 9 个数分成三组,分别组成 3 个三位数,且使这 3 个三位数的比例是 1:2:3,试求出所有满足条件的 3 个三位数。若干行,每行 3 个数字,按照每行第一个数字升序排列。(NOIP 1998 年普及组)

2025-04-04 14:59:33 245

原创 瓷砖铺设 --C

小民家有一面长为 n,高为 2 的墙壁需要铺设瓷砖,现有两种规格的瓷砖:一种是覆盖 2 个单元的 1×2(长×高)型的,另一种是覆盖 3 个单元 L 型的。铺设时瓷砖可以旋转使用,这两种瓷砖可能的铺设样例如图 5.4 所示。由于结果很大,所以只要求输出最后 44 位。如果答案少于 44 位,就直接输出就可以,不用加前导 00,如 𝑁=3N=3 时输出 55。一行,1 个整数,表示铺设方案数量。输出覆盖方法的最后 44 位,如果不足 44 位就输出整个答案。一行,1 个整数 n,1≤n≤50,表示墙壁的长。

2025-04-01 21:12:32 533

原创 组合的应用

在递归函数中循环变量 i 值从 num 变到 n-1,循环体首先判定 data[i] 如果未被选取过,则选取它,标记 visit[i]为 true,接着判定是否已经取够 k 个数据,如果取够就处理求和、判断素数及统计问题,若还没取够 k 个数据,则递归继续选数 Cmb (i+1,sum+1),递归中要记得回溯visit[i]为 false。,xn},现在他需要从中选出 k 个数进行组合,然后对各组合元素求和,统计和值为素数的组合个数。第一行,整数 n 和 k,1≤n≤20,k≤n。

2025-04-01 21:11:48 340

原创 数的计算 --C

比赛要求选手计算出符合上述操作产生的数的个数(包含输入的正整数 n),小民打算利用计算机编程求解该问题,他应如何设计算法呢?(2)在它的左边加上一个正整数,但该正整数不能超过原数的一半;(3)加上数后,继续按此规则进行处理,直到不能再加正整数为止。当 n 为偶数时,f(n)=f(n-1)+f(n/2);一行,1 个整数,表示具有该性质的数的个数。当 n 为奇数时,f(n)=f(n-1)。一行,1 个正整数 n,1≤n≤1000。(2)第一轮操作:16、26、36;(3)第二轮操作:126、136。

2025-04-01 21:11:14 216

原创 小民走台阶(!!!有问题)

根据本题的数据范围,必须选择double 型变量来存储走台阶的方法总数。小民的教室在楼上,需要走 n 阶台阶才能到达。小民好奇地想知道到达教室一共有多少种不同的上台阶方法,请你帮助小民编程求解该问题。一行,1 个整数 n,1≤n≤1000,表示到达教室的台阶数。一行,1 个整数,表示到达教室上台阶的方法总数。(1)1 台阶1 台阶1 台阶1 台阶;(2)2 台阶1 台阶1 台阶;(3)1 台阶2 台阶1 台阶;(4)1 台阶1 台阶2 台阶;(5)2 台阶2 台阶。

2025-04-01 21:10:41 402

原创 RPG 涂色难题

最近小民接到一个涂色任务:有排成一行的 n 个方格,用红(Red)、粉(Pink)、绿(Green) 三色涂每个格子,每格涂一色,要求任何相邻的方格不能同色,且首尾两格也不能同色。小民想知道有多少种涂色方案能满足要求,请你帮助小民编程求解该问题。一行,1 个整数 n,1≤n≤50,表示要涂色的排成一行的 n 个方格。一行,1 个整数,表示满足要求的涂色方案数。解题方法一:用循环结构实现求解。解题方法二:用递归函数实现求解。

2025-04-01 21:09:54 211

原创 直线分割圆

最近小民遇到一个复杂的数学问题:在一个平面上有一个圆和 n 条直线,这些直线中每一条在圆内同其他直线相交,假设没有 3 条直线相交于一点的情况,试问这 n 条直线会将圆分成多少个区域。请你帮助小民编程求解该问题。一行,1 个整数,表示 n 条直线将圆分成的区域数。一行,1 个整数 n,表示有 n 条直线。解题方法一:用简化的递推公式实现求解。解题方法二:用递归函数实现求解。

2025-04-01 21:09:18 128

原创 骨牌问题 --C

有 1×n 的一个长方形,现需要用 3 种规格(1×1、1×2、1×3)的骨牌铺满该长方形,每种规格的骨牌可无限量供应,求铺满长方形共有多少种不同铺法。例如当 n=3 时,表示有长方形为1×3 的方格,此时用 1×1、1×2 和 1×3 的骨牌铺满该方格,共有 4 种铺法,如图 5.3 所示。一行,1 个整数 n,表示 1×n 的长方形需要铺设骨牌。一行,1 个整数,表示铺满长方形共有多少种不同铺法。解题方法一:用循环结构实现求解。解题方法二:用递归函数实现求解。

2025-04-01 21:08:47 237

原创 小民与信封

小民写了 n 封信,编号为 1~n,这 n 封信要对应装到编号为 1~n 的信封中。在装信封时,小民想知道所有信都装错了信封的可能性有多少种?请你帮助小民编程求解该问题。一行,1 个整数 n,表示小民有 n 封信(编号 1~n)和 n 个信封(编号 1~n)。一行,1 个整数,表示小民把所有信都装错信封的情况数。解题方法一:用循环结构实现求解。解题方法二:用递归函数实现求解。

2025-04-01 21:08:02 154

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除