| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> C语言——一维数组算法问题 -> 正文阅读 |
|
[数据结构与算法]C语言——一维数组算法问题 |
问题1:将数组中的数逆序存放本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放, 再按顺序输出数组中的元素。 算法描述:1.向数组a中输入元素;? ? ? ? ? ? ? ??2.定义一个新数组new,将数组a中的元素倒序存放;? ? ? ? ? ? ? ??3.将数组b正序输出,注意结尾无空格的格式问题。代码实现 :?
运行结果:
? 问题2:求数组中最大值及其下标本题要求编写程序,找出给定的n个数中的最大值及其对应的最小下标(下标从0开始)。 输入格式: 输入在第一行中给出一个正整数n(1<n≤10)。第二行输入n个整数,用空格分开。 输出格式: 在一行中输出最大值及最大值的最小下标,中间用一个空格分开。 算法描述:1.向数组中存放元素;??????????????????2.把数组中第一个元素先定义一个变量保存住;? ? ? ? ? ? ? ? ? 3.遍历数组,如果比保存第一个元素的变量大,那就赋值给那个变量,?????????????????????直到变量值变为最大;??????????????????4.定义一个变量用来记录最大值的下标。代码实现:
运行结果:? 问题3:找出不是两个数组的共有元素本题要求给定两个整型数组,本题要求找出不是两者共有的元素。 算法描述:1.分别定义两数组并输入值;??????????????????2.用数组a中元素对比数组b中元素,非共有值放入c中(此处可以用一个? ? ? ? ? ? ? ? ? ? ? ? ? ? ?标志变量flag,标志 是否有共有值);??????????????????3.用数组b中元素对比数组a中元素,重复“2”操作;??????????????????4.最后先输出数组c中第一个元素,然后判断元素是否与之前录入元素? ? ? ? ? ? ? ? ? ? 重复。??????????????????5.最后打印出来数组c中的元素,也就是非共有值,此处注意格式问题。代码实现:
运行结果:? 问题4:找出出现次数最多的数本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。 算法描述:1.定义两个数组,一个用来存放元素,另一个用来当计数器,此数组注意需? ? ? ? ? ? ? ? ? ? ? ?要初始化;??????????????????2.在这个数组中找到重复的,然后把计数器数组赋值+1;? ? ? ? ? ? ? ? ? 3.一直遍历找到重复最多的,找到后把计数器数组元素赋值给变量max(也? ? ? ? ? ? ? ? ? ? ? ?就是出现次 数),计数器数组下标就是出现次数最多数的下标。代码实现:
运行结果:? 问题5:数组中插入数字并排序本题要求给出n个元素的数组,从小到大排列,再输入一个num,插入到数组中, 使得新数组依旧是从小到大的顺序(用一个数组完成)。 算法描述:1.定义一个数组并存放元素,单独记录好倒数第二个元素;??????????????????2.输入要插入的数字,注意可以考虑特殊情况,如果插入的数大于原本倒数? ? ? ? ? ? ? ? ? ? ? ?第二个数,就可以 直接插入赋值为最后一个元素;??????????????????3.再来考虑一般情况,遍历数组,如果原本的数大于要插入的数,先保存住? ? ? ? ? ? ? ? ? ? ? ?原来的数字,然 后把插入的数放入到原来的数的位置;??????????????????4.插入之后,原本的数就到了后一位,需要把后一位的位置保存住,把原本? ? ? ? ? ? ? ? ? ? ? ?的数放到后一 位,再把位置赋上原本数的值;?????????????????5.最后遍历输出数组元素 。代码实现 :
运行结果:? ? 问题6:数组循环右移问题一个数组A中存有N(>0)个整数,在不允许使用另外数组的前提下,将每个整数循环向右移M(≥0)个位置,即将A中的数据由(A0A1?*AN?1)变换为(AN?M?AN?1A0A1?AN?M?1)(最后M个数循环移至最前面的M*个位置)。如果需要考虑程序移动数据的次数尽量少,要如何设计移动的方法? 输入格式: 每个输入包含一个测试用例,第1行输入N(1≤N≤100)和M(≥0);第2行输入N个整数,之间用空格分隔。 输出格式: 在一行中输出循环右移M位以后的整数序列,之间用空格分隔,序列结尾不能有多余空格。 输入样例: 6 2 1 2 3 4 5 6 结尾无空行 输出样例: 5 6 1 2 3 4 结尾无空行 算法描述:1.定义数组并存入元素,输入要移动的值;??????????????????2.注意先处理一下移动的值,让他和数组中元素的总个数取个余;??????????????????3.优先考虑特殊情况:如果移动的值为0,那直接打印;? ? ? ? ? ? ? ? ? 4.移动k个,先把最后k个值放到前面,做特殊处理,方便剩余的元素打印;? ? ? ? ? ? ? ? ? 5.然后再注意格式问题,打印出除最后一个以外的数字+空格,最后在打印? ? ? ? ? ? ? ? ? ? ? ?最后一个数。代码实现:
运行结果:? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年2日历 | -2025/2/23 7:07:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |