#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跳过后面的代码执行,进行下一回循环。
结语:本篇文章就到此结束了,本文主要是练习一维数组题目,后续的题目练习难度会慢慢上来,但总体来说不会太难,喜欢的朋友们,一起来学习吧!欢迎三连~