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

16. 《C语言》——【牛客网BC124 —— BC130题目讲解】

在这里插入图片描述


亲爱的读者,大家好!我是一名正在学习编程的高校生。在这个博客里,我将和大家一起探讨编程技巧、分享实用工具,并交流学习心得。希望通过我的博客,你能学到有用的知识,提高自己的技能,成为一名优秀的程序员。如果你有任何疑问或建议,请随时在评论区留言,让我们一起成长进步!现在,让我们开始这场知识之旅吧!
在这里插入图片描述



🌏个人主页: FEN03
📑收入专栏: C语言

在这里插入图片描述



文章目录

  • 📚前言
  • 🐄牛客网题目
    • 🥩BC124 序列中删除指定数字
    • 🥩BC125 序列中整数去重
    • 🥩BC126 小乐乐查找数字
    • 🥩BC127 筛选法求素数
    • 🥩BC128 班级成绩输入输出
    • 🥩BC129 矩阵元素定位
    • 🥩BC130 最高身高
  • 👋👋🏻👋🏼结束语


📚前言

本章主要内容为,讲解牛客网BC124 ~ BC130题目,如有错误❌,还请指出,本人会虚心接受,感谢~🌹


🐄牛客网题目

🥩BC124 序列中删除指定数字


题目要求:

描述
有一个整数序列(可能有重复的整数),现删除指定的某一个整数,输出删除指定数字之后的序列,序列中未被删除数字的前后位置没有发生改变。

数据范围:序列长度和序列中的值都满足 1≤n≤50

输入描述:
第一行输入一个整数(0≤N≤50)。
第二行输入N个整数,输入用空格分隔的N个整数。
第三行输入想要进行删除的一个整数。

输出描述:
输出为一行,删除指定数字之后的序列。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

代码如下:

//BC124 序列中删除指定数字
#include<stdio.h>
void S_arr(int arr[], int n)
{//对数组,输入值for (int i = 0; i < n; i++){scanf("%d", &arr[i]);}
}void Print_arr(int arr[], int n, int k)
{//对数组进行遍历,如果不等于k,就打印for (int i = 0; i < n; i++){if (arr[i] != k){printf("%d ", arr[i]); }}
}int main()
{int n = 0; int arr[100] = { 0 };int k = 0;scanf("%d", &n); S_arr(arr, n); //输入数组scanf("%d", &k); Print_arr(arr, n, k); //判断数组并且打印return 0; 
}

运行结果…

在这里插入图片描述

🤔🤔分析:

  1. 按照题目要求, 第一行需要输入一个整数, 则可以创建一个整型变量; 第二行输入N个整数, 输入用空格分隔, 我们可以创建一个arr整型数组, 把N个整数存放在arr里; 第三行是输入要删除的一个整数, 我们直接创建一个整型变量即可。
  2. 为了完成这一题, 我们可以分为2个函数即可。
  3. S_arr(arr, n); 实现的是遍历数组,对数组输入值。
  4. Print_arr(arr, n, k); 完成的是在数组中查找要删除的值,只要不等于删除值的都打印出来。

🥩BC125 序列中整数去重


题目要求:

描述
输入n个整数的序列,要求对这个序列进行去重操作。所谓去重,是指对这个序列中每个重复出现的整数,只保留该数第一次出现的位置,删除其余位置。

输入描述:
输入包含两行,第一行包含一个正整数n(1 ≤ n ≤ 1000),表示第二行序列中数字的个数;第二行包含n个整数(范围1~5000),用空格分隔。

输出描述:
输出为一行,按照输入的顺序输出去重之后的数字,用空格分隔。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

代码如下:


//BC125 序列中整数去重 
#include<stdio.h>
void Input_arr(int arr[], int n)
{for (int i = 0; i < n; i++){scanf("%d", &arr[i]); }
}void Jud_arr(int arr[], int n)
{int flag = 0; for (int i = 0; i < n; i++){//比较除了本身外其他的元素。for (int j = i+1; j < n; j++){if (arr[i] == arr[j]){arr[j] = -1;}}}
}void Print(int arr[], int n)
{for (int i = 0; i < n; i++){if (arr[i] != -1) {printf("%d ", arr[i]);  } }
}int main()
{int n = 0; int arr[1500] = { 0 }; scanf("%d", &n);Input_arr(arr, n); //数组输入Jud_arr(arr, n);   //对数组元素判断Print(arr, n);	   //打印数组元素return 0; 
}

运行结果…

在这里插入图片描述

🤔🤔分析:

  1. 在题目要求中,输入包含2行,第一行是输入一个正整数那么我们可以直接创建一个整型变量,第二行是包含着n个整数, 那么我们需要创建一个arr整型数组来接收;
    输出为去除重复值之后,数组的元素。
  2. 为了完成, 我们分装为3个函数。
  3. Input_arr(arr, n); 完成的是遍历数组,给数组输入值。
  4. Jud_arr(arr, n); 完成的是每一个数组元素,除了自身外,与其他元素进行比较, 如果2个元素相等,那么把该元素设置为-1。
  5. Print(arr, n); 完成的是对去除掉重复值后,数组元素的打印。

🥩BC126 小乐乐查找数字


题目要求:

描述
给定n个整数和一个整数x,小乐乐想从n个整数中判断x出现几次,请编程帮他实现。

输入描述:
共3行
第一行,一个整数,表示n(1 <= n <= 100)。
第二行,共输入n个整数,两个整数之间用空格分隔。
第三行,输入一个整数,表示要查找的整数x。

输出描述:
一行,表示整数x出现的次数。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

代码如下:


//BC126 小乐乐查找数字 
#include<stdio.h>
void Input_arr(int arr[], int n)
{for (int i = 0; i < n; i++){scanf("%d", &arr[i]); }
}void Jud_arr(int arr[], int n, int k)
{int count = 0;//创建一个计数器 for (int i = 0; i < n; i++){//遍历arr中的元素,如果元素与k相等,计数器++if (arr[i] == k)count++; }printf("%d\n", count);  
}int main() 
{int n = 0;int arr[1000] = { 0 };int k = 0; scanf("%d", &n); Input_arr(arr, n); //输入数组 scanf("%d", &k); Jud_arr(arr, n, k); //判断数组中的元素return 0; 
}

运行结果…

在这里插入图片描述

🤔🤔🤔分析:

  1. 题目要求, 输入3行,第一行输入一个整数, 我们可以创建一个整型变量; 第二行一共输入n个整数, 那么为了存储n个整数,我们可以创建一个arr整型数组; 第三行输入一个要查找的整型值,我们可以创建一个整型变量。
  2. 为了解决该题,我们可以分装成2个函数。
  3. Input_arr(arr, n); 该函数完成的是遍历数组,给数组输入值。
  4. Jud_arr(arr, n, k); 该函数完成的是在数组元素中, 对与查找值相同的元素进行统计,最终输出即可。

🥩BC127 筛选法求素数


题目要求:

描述
用筛选法求n以内的素数。筛选法求解过程为:将2~n之间的正整数放在数组内存储,将数组中2之后的所有能被2整除的数清0,再将3之后的所有能被3整除的数清0 ,以此类推,直到n为止。数组中不为0 的数即为素数。

输入描述:
多组输入,每行输入一个正整数(不大于100)。

输出描述:
针对每行输入的整数n,输出两行,第一行,输出n之内(包括n)的素数,用空格分隔,

第二行,输出数组中2之后被清0 的个数。每行输出后换行。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:


//BC127 筛选法求素数
#include<stdio.h>
int main() 
{int n = 0;int count = 0; while (scanf("%d", &n) != EOF){int i = 0; for (i = 2; i < n; i++){int j = 0; for (j = 2; j < i; j++) {if (i % j == 0)break; }if (i == j){printf("%d ", i); count++; //统计素数}}printf("\n"); printf("%d\n", n - count - 1);  }return 0; 
}

运行结果…

在这里插入图片描述

🤔🤔分析:

  1. 给定一个数n,在2~n之间的正整数,如果是素数,就统计起来并且打印出来,然后用n - 统计值 - 1,输出统计值即可。

🥩BC128 班级成绩输入输出


题目要求:

描述
输入一个班级5个学生各5科成绩,输出5个学生各5科成绩及总分。

输入描述:
五行,每行输入一个学生各5科成绩(浮点数表示,范围0.0~100.0),用空格分隔。

输出描述:
五行,按照输入顺序每行输出一个学生的5科成绩及总分(小数点保留1位),用空格分隔。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

代码如下:

//BC128 班级成绩输入输出 
#include<stdio.h>
int main()
{double arr[5][5] = { 0 };for (int i = 0; i < 5; i++){for (int j = 0; j < 5; j++){scanf("%lf", &arr[i][j]); }}for (int i = 0; i < 5; i++){double sum = 0.0;for (int j = 0; j < 5; j++) {printf("%.1lf ", arr[i][j]);   sum += arr[i][j];    }printf("%.1lf\n", sum);   }return 0; 
}

运行结果…

在这里插入图片描述

🤔🤔🤔分析:

  1. 题目最终考察的就是二维数组的输入和输出,以及如何限制小数点位。
  2. 我们主要看输出,每输出一行,都会把总分给输出,那么需要一个变量sum来统计这一行的总分。当到了下一行sum的总值会初始化为0,最终不断的重复,直到循环结束。
  3. 在%后加一个小数点,就可以控制小数位的输出。

🥩BC129 矩阵元素定位


题目要求:

描述
KiKi得到了一个n行m列的矩阵,现在他想知道第x行第y列的值是多少,请你帮助他完成这个任务。

数据范围:1≤n,m≤5 ,矩阵中的值满足 1≤val≤25

输入描述:
第一行包含两个数n和m,表示这个矩阵包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示矩阵中的元素。接下来一行输入x和y,用空格分隔,表示KiKi想得到的元素的位置。(1≤x≤n≤10,1≤y≤m≤10)

输出描述:
一行,输出一个整数值,为KiKi想知道的值。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

#include<stdio.h>
void Input_arr(int arr[][100], int n, int m)
{for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}
}int main()
{int n = 0;int m = 0;int x = 0;int y = 0;int arr[100][100] = { 0 };scanf("%d %d", &n, &m);Input_arr(arr, n, m);scanf("%d %d", &x, &y);printf("%d\n", arr[x - 1][y - 1]);return 0;
}

运行结果…

在这里插入图片描述

🤔🤔分析:

  1. 这个题目其实就是在一个二维数组中,输入要找的值对应的下标-1,最终打印出该值即可。

🥩BC130 最高身高


题目要求:

描述
KiKi想从n行m列的方阵队列中找到身高最高的人的位置,请你帮助他完成这个任务。

输入描述:
第一行包含两个整数n和m,表示这个方阵队列包含n行m列。从2到n+1行,每行输入m个整数(范围-231~231-1),用空格分隔,共输入n*m个数,表示方阵中的所有人的身高(保证输入身高都不相同)。(1≤x≤n≤10,1≤y≤m≤10)

输出描述:
一行,输出两个整数,用空格分隔,表示方阵中身高最高的人所在的行号和列号。

示例1

在这里插入图片描述


⬇️⬇️⬇️讲解:

代码如下:


//BC130 最高身高 
#include<stdio.h>
void Input_arr(int arr[100][100], int n, int m)
{for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){scanf("%d", &arr[i][j]);}}
}void Find_height_arr(int arr[100][100], int n, int m)
{int h = arr[0][0];for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (arr[i][j] > h){h = arr[i][j];}}}for (int i = 0; i < n; i++){for (int j = 0; j < m; j++){if (arr[i][j] == h){printf("%d %d\n", i + 1, j + 1);}}}
}int main()
{int n = 0;int m = 0;int arr[100][100] = { 0 };scanf("%d %d", &n, &m);Input_arr(arr, n, m);Find_height_arr(arr, n, m);return 0;
}

运行结果…

在这里插入图片描述

🤔🤔分析:

  1. 创建2个整型变量,是用来控制二维数组的行和列的。随后,Input_arr(arr, n, m); 完成的是对二维数组输入值 。
  2. Find_height_arr(arr, n, m); 完成的是对二维数组中元素的比较,也就是用打擂台方法,最终最大值给h,随后遍历二维数组中的元素如果等与h就打印出来,并且对应的下标需要+1。

👋👋🏻👋🏼结束语

非常感谢您花时间阅读我的博客,希望我的分享能为您带来收获。如果您对本文有任何想法或疑问,欢迎在评论区留言交流。如果您喜欢我的博客,请继续关注,我会定期更新更多精彩内容。最后,别忘了行动起来的力量,让我们一起实践这些方法,见证自己的成长和进步!

再见,祝您生活愉快!

在这里插入图片描述


http://www.lryc.cn/news/369667.html

相关文章:

  • Docker 国内镜像源更换
  • python07
  • 【CTS】android CTS测试
  • 【雷丰阳-谷粒商城 】【分布式基础篇-全栈开发篇】【08】【商品服务】Object划分_批量删除
  • JAVA开发 PDF文件生成表格,表格根据内容自动调整高度
  • OSINT技术情报精选·2024年6月第1周
  • 惊艳的短视频:成都科成博通文化传媒公司
  • 消费增值模式引领业绩飙升与用户活跃
  • 二叉树从入门到AC(3)完全二叉树与堆
  • AI写作:如何让创作过程更流畅?
  • 2024中国海洋装备展暨航海装备大会(福州海峡国际会展中心)
  • CyberDAO:引领Web3时代的DAO社区文化
  • 测试面试点
  • Nginx配置详细解释:(4)高级配置
  • OceanBase 4.3 特性解析:列存技术
  • ARM32开发--PWM与通用定时器
  • debugger(七):栈帧(backtrace)
  • kafka-重试和死信主题(SpringBoot整合Kafka)
  • electron-Vue: Module parse failed: Unexpected character ‘ ‘
  • 贪心算法-数组跳跃游戏(mid)
  • C++经典150题
  • 超详解——Python 序列详解——基础篇
  • DVWA-DC-6
  • ubuntu早期版本以及18.04后的版本,通过rc.local配置开机自启
  • 【环境搭建】1.阿里云ECS服务器 安装jdk8
  • idea插件开发之定义侧边栏
  • HarmonyOS未来五年的市场展望
  • R语言:什么是向量化操作(Vectorization)?
  • Python 机器学习 基础 之 【实战案例】中药数据分析项目实战
  • python中报错“ModuleNotFoundError: No module named ‘docx2txt‘”