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

【时时三省】(C语言基础)数组习题

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省

习题1:

用筛选法求100之内的素数。

解题思路:

1. 初始化标记数组:创建一个大小为101(因为要判断1 - 100这100个数,下标从0 - 100 )的整型数组 isPrime ,将数组中所有元素初始化为1 。这里 isPrime[i] 的值为1表示假设数i是素数,为0表示不是素数。同时,明确0和1不是素数,将 isPrime[0] 和 isPrime[1] 置为0 。

2. 筛选非素数:从2开始遍历到\sqrt{100}(也就是10 ) 。对于当前遍历到的数i,如果 isPrime[i] 为1(说明i目前被认为是素数),那么就从i \times i开始,以i为步长,将后续的数(即i的倍数)在 isPrime 数组中对应的元素置为0 ,因为这些数是合数不是素数。例如,当i = 2时,把4、6、8等都标记为非素数;当i = 3时,把9、12等标记为非素数。

3. 输出素数:遍历 isPrime 数组,从下标2到100 ,如果 isPrime[i] 的值为1,就说明数i是素数,将其输出。

编写程序:

运行结果 :

习题2: 

用选择法对10个整数排序。

解题思路:

选择排序(Selection Sort)的基本思想是:每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完 。具体步骤如下:

1. 设数组为 arr[10]  ,外循环控制排序趟数,从第0个元素到第8个元素,共进行9趟排序( for(i = 0; i < 9; i++)  ) 。因为每进行一趟排序就确定一个元素的最终位置,经过9趟就能将10个元素排好序。

2. 对于每一趟排序(假设第 i 趟),先假定第 i 个元素是最小的,记录其下标 min_index = i  。

3. 内循环从 i + 1 到第9个元素遍历( for(j = i + 1; j < 10; j++)  ),在这个过程中寻找比当前假定最小元素更小的元素,如果找到,更新最小元素的下标 min_index = j  。

4. 内循环结束后,将找到的最小元素(下标为 min_index  )与第 i 个元素交换位置,这样第 i 个位置就放置了当前这一趟排序中最小的元素。

编写程序:

运行结果:

习题3:

求一个3×3的整型矩阵对角线元素之和。

解题思路:

对于一个3\times3的整型矩阵,其对角线分为主对角线(从左上角到右下角)和副对角线(从右上角到左下角)。要求对角线元素之和,需要分别遍历主对角线和副对角线元素并累加。主对角线元素的行下标和列下标相等(即 arr[i][i]  , i 从0到2 );副对角线元素的行下标和列下标之和为矩阵阶数减1(即 arr[i][2 - i]  , i 从0到2 ) 。然后将主对角线元素和与副对角线元素和相加,得到最终结果。

编写程序:

运行结果:

习题4:

有一个已排好序的数组,要求输入一个数后,按原来排序的规律将它插入数组中。

解题思路:

1. 输入与准备:首先定义一个已排好序的数组(假设为升序),以及要插入的数。这里需要明确数组的长度,方便后续操作。

2. 查找插入位置:通过遍历已排序数组,从数组开头开始比较要插入的数和数组元素。当找到第一个大于等于要插入数的元素时,该位置就是要插入数的位置。

3. 移动元素:确定插入位置后,从数组末尾开始,将插入位置及之后的元素依次向后移动一位,为插入新数腾出位置。

4. 插入新数:将新数放入确定好的插入位置。

编写程序:

运行结果:

习题5:

将一个数组中的值按逆序重新存放。例如,原来顺序为8,6,5,4,1。要求改为1,4,5,6,8。

解题思路:

对于将数组中的值按逆序重新存放,核心思路是通过首尾元素交换的方式来实现。可以设置两个指针(或下标),一个指向数组开头,一个指向数组末尾,然后交换这两个位置的元素,接着让指向开头的指针后移一位,指向末尾的指针前移一位,重复交换操作,直到两个指针相遇(数组元素个数为奇数时)或者交叉(数组元素个数为偶数时)。

编写程序:

运行结果:

http://www.xdnf.cn/news/7105.html

相关文章:

  • Linux虚拟文件系统(1)
  • 《沙尘暴》观影记:当家庭成为人性的修罗场
  • 记录一次修改nacos安全问题导致服务调用出现404
  • 【Canvas与诗词】醉里挑灯看剑 梦回吹角连营
  • DeepSeek 赋能脑科学:解锁神经科学研究与应用的新密码
  • 一文讲解Function Calling是什么?
  • vmware虚拟机运行多个产生卡顿问题
  • python打卡第29天
  • Python——一些琐碎知识点
  • Java八股文——Java基础篇
  • 刷题心得:荷兰国旗问题与三指针法题目背景
  • AM32电调学习解读七:其他代码文件介绍
  • 2901. 最长相邻不相等子序列 II
  • Seata源码—6.Seata AT模式的数据源代理一
  • 2025.05.17得物机考笔试真题第二题
  • React 19中useContext不需要Provider了。
  • Java基础知识总结(超详细整理)
  • 32LED心形灯程序源代码
  • 常见的 HTTP 接口(请求方法)
  • PCB设计(十九)PCB设计中NPN/PNP选型策略
  • Window远程连接Linux桌面版
  • 掘金欧洲宠物经济新蓝海:比利时天然宠粮市场爆发与跨境新机遇
  • c++从入门到精通(六)--特殊工具与技术-完结篇
  • Azure 机器学习初学者指南
  • Nacos数据写入流程
  • 深入理解EKS 工作节点的网络架构
  • Cadence学习笔记之---PCB器件放置与布局
  • SSM框架整合:从入门到实战
  • 大模型微调步骤整理
  • Flink CEP是什么?