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

#C语言——刷题攻略:牛客编程入门训练(十三):一维数组(二),轻松拿捏!

🔥@晨非辰Tong:个人主页 

👀专栏:《C语言》《C语言刷题合集》

💪学习阶段:C语言方向初学者

“人理解迭代,神理解递归。”


前言:在学习编程语言的同时,千万别忘了刷刷题来巩固一下学到的知识,对于牛客网_编程入门系列,小子会持续更新分享刷题过程,其中包括一些基础板块的题目,本次将呈现7道题。

~~注意部分标题括号内代表对题目涉及到的知识进行说明!


🌟博主简介:


1.  牛客_BC120 争夺前五名_简单

#include <stdio.h>
int main() 
{int n = 0, temp = 0;scanf("%d", &n);int arr[50] = {0};//输入for(int i = 0; i < n; i++){scanf("%d", &arr[i]);}//比较排序for(int i = 0; i < n - 1; i++)//整体循环次数,相邻两两比较,完成排序的不再对比,次数递减{for(int j = 0; j < n - 1; j++)//每次将未排序数的最小数移到最后,每次比较不再与已排序的比较,比较次数递减{if(arr[j] < arr[j + 1])//将小数往后拿(直接是未排序数的最小数){temp = arr[j+1];arr[j+1] = arr[j];arr[j] = temp;}}}//输出for(int k = 0; k < 5; k++){printf("%d ", arr[k]);}return 0;
}

思路——

--其余像示例1,不符合条件语句,就进行下组数比较。


2.  牛客_BC121 有序序列合并_简单

#include <stdio.h>
int main() 
{int N = 0;scanf("%d", &N);int arr[50] = {0};//一个数据if(N <= 1){printf("sorted");}//输入for(int i = 0; i< N; i++){scanf("%d", &arr[i]);}int flag1 = 1;//标志升序//判断升序for(int j = 0; j < N-1; j++)//N-1:两个相邻数为一对,共N-1对{if(arr[j] > arr[j+1]){flag1 = 0;break;//有不符合升序,直接跳出}}if(flag1){printf("sorted");return 0;//升序,直接结束}//没结束只能判断降序或乱序int flag2 = 1;//标志降序//判断for(int k = 0; k < N-1; k++){if(arr[k] < arr[k+1]){flag2 = 0;break;}}if(flag2){printf("sorted");}else {printf("unsorted");}return 0;
}

思路——

--本题为简单的相邻数值的比较,主要是有序分为正序或者倒序,需要先做判断。


3.  牛客_BC123 有序序列插入一个整数_简单

#include <stdio.h>
int main() 
{int N = 0;scanf("%d", &N);int arr[51] = {0};//输入升序数值for(int i = 0; i < N; i++){scanf("%d", &arr[i]);}int num = 0;scanf("%d", &num);//开始比较大小int i = 0;for(i = 0; i < N; i++){if(num <= arr[i]){break;}}//i就是num要插入位置的下标//将后面数值后移一位,自最后一位开始for(int j = N; j > i; j--){arr[j] = arr[j - 1];}arr[i] = num;//输出for(int k = 0; k < N + 1; k++){printf("%d ", arr[k]);}return 0;
}

思路——

--因为不支持变长数组,只能将数组大小定义为最大规定再加1位(变长数组实现写法大家都懂),这是为了方便将数值向后移。

--先进行比较,锁定num应该插入的位置的下标,然后将数值向后移,最后将num插入空出的位置。


4.  牛客_BC124 序列中删除指定数字_简单

#include <stdio.h>
int main()
{int N = 0;scanf("%d", &N);int arr[50] = { 0 };//输入for (int i = 0; i < N; i++){scanf("%d", &arr[i]);}int num = 0;scanf("%d", &num);//开始遍历寻找numint j = 0;for (int i = 0; i < N; i++){if (arr[i] == num){continue;//匹配成功,跳过这次数值暑促,相当于删除数值}printf("%d ", arr[i]);}return 0;
}

思路——

--本题思路简单,就是在输出数组时,匹配到num,continue跳过后面的代码执行,进行下一回循环。


结语:本篇文章就到此结束了,本文主要是练习一维数组题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~ 

http://www.dtcms.com/a/395416.html

相关文章:

  • 2.16Vue全家桶-Vuex状态管理
  • 【SSR】SSR 性能问题
  • 《UE教程》第二章第四回——父类蓝图
  • GORM库用法查漏补缺
  • C++11 移动语义与右值
  • FPGA学习笔记——图像处理之对比度调节(直方图均衡化)
  • 如何进行人脸识别
  • 计算机视觉笔试选择题:题组1
  • 第八篇:常量表达式:从const到constexpr的革命
  • RV1126 NO.30:RV1126多线程获取音频AI的PCM数据
  • 基于蚁群算法解决车辆路径问题(VRP)的MATLAB实现
  • C语言自学--C语⾔内存函数
  • 磁带记录仪:从磁带到数字的数据存储之旅
  • 【运维】Ubuntu上WebDAV挂载与自动同步完整指南
  • Ubuntu之旅-04 Docker
  • python(73) 引用.dll文件并调用函数
  • Chrome 学习小记5——demo:(动态壁纸基础)
  • 手写 Android Dex VMP 壳:自定义虚拟机 + 指令解释执行全流程
  • 【Netty】创建一个 SSL 处理器,实现客户端与服务器之间的安全通信
  • 13 Python数据结构与算法
  • 爱:宇宙的心跳
  • Python字节数据写入文本文件完全指南:从基础到高级实战
  • 零基础Windows10安装LLVM
  • selenium三种等待方式详解
  • Leetcode总结速记
  • 手写 Android Dex VMP 壳:指令流 AES 加密 + 动态加载全流程
  • 视频融合平台EasyCVR国标GB28181视频诊断功能详解与实践
  • ORACLE adg 备库也能单独提取AWR报告
  • Angular由一个bug说起之十九:Angular 实现可拓展 Dropdown 组件
  • Kafka核心架构与高效消息处理指南