😁本文作者:大家好,我是原始豌豆,欢迎来到牛客网刷题解析第七期,感谢你阅读本文欢迎评论,收藏,点赞哦。
😂内容专栏:这里是《牛客网在线编程》专栏,笔者用重金(时间和精力)打造,每道题目提供多种解法,从基础到拓展,希望可以帮到读者们。
😘写作不易:本文对每道题目提供了多种解法并加上了详细的注释,意在帮助读者锻炼思维灵活性,提高分析、解决问题的能力💓)。
开端
在这篇文章中,我将分享刷题过程中的一些感悟、技巧和策略。我会详细解析173道语法题,通过实例来展示如何理解和运用C语言的语法规则。同时,我也会分享一些个人的学习心得和经验,希望能帮助到同样热爱编程的你。
挑战自己的极限,收获编程的乐趣,让我们一起踏上这段奇妙的C语言刷题之旅吧!!!!
题目目录
牛客网语法篇基础语法116-140题(C语言实现)
题目网址链接请点这✌️
标注*符号的题目为重点题目
本页目录跳转请点下方
🍕BC116 [NOIP2013]记数问题*
🍔BC117 逆序输出
🍟BC118 N个数之和
🌭BC119 最高分与最低分之差
🍿BC120 争夺前五名
🧂BC121 有序序列合并
🥓BC122 有序序列判断
🥓BC123 有序序列插入一个整数
🥓BC124 序列中删除指定数字*
🥓BC125 序列中整数去重
🥓BC127筛选求素数法
🥓BC133 回型矩阵 *
🥓BC134 蛇型矩阵*
🥓BC136 判断上三角矩阵*
🥓BC139 矩阵交换
🥓BC140 杨辉三角
题目
🍕BC116 [NOIP2013]记数问题
解法一
先利用循环产生1~n个数字,再把每个数字不断循环取余数,每个余数都和输入的X匹配,相同则计数器+1,不同继续循环到当前数字为0为止。
#include <stdio.h>
int main() {
int n, x;//定义两个整数变量n和x,以及。
int count = 0;//计数器变量count和临时变量tmp
int tmp = 0;
scanf("%d %d", &n, &x);
for (int i = 1; i <= n; i++) {
//使用一个外部的for循环,循环变量为i,从1迭代到n。
for ( tmp = i; tmp != 0; tmp /= 10) {
//在外部循环的每一次迭代中,使用一个内部的for循环,循环变量为tmp,初始值为当前的i。这个内部循环会一直执行,直到tmp变为0。
if (tmp % 10 == x)//在内部循环中,如果tmp除以10的余数等于x,则将计数器count增加1。
count++;
}
}
printf("%d", count);
return 0;
}
🍔BC117 逆序输出
解法一
利用数组储存输入的数字,再逆序打印数组
#include <stdio.h>
int main() {
int n=0;int arr[10]={
0};//数组初始化
for(int i=0;i<10;i++)
{
scanf("%d",&n);
arr[i]=n;//把每个元素存到数组里
}
for(int i=9;i>=0;i--)
{
printf("%d ",arr[i]);//把数组每个元素倒序打印
}
return 0;
}
🍟BC118 N个数之和
解法一
创建变长数组储存输入的数字,再累加数组每个元素的值
#include <stdio.h>
int main() {
int n=0,sum=0;
scanf("%d",&n);
int arr[n];//变长数组不能初始化
for(int i=0;i<n;i++)
{
scanf("%d",&arr[i]);//循环存入数字
sum+=arr[i];//累加
}
printf("%d",sum);
return 0;
}
解法一
输入几个整数就循环几次,每次拿一个变量接收,然后sum+=这个变量
#include<stdio.h>
int main() {
int n,num;
int sum = 0;//sum初始化为0
scanf("%d", &n);
while (n--) {
//n为0时循环结束
scanf("%d", &num);
sum += num;//累加
}
printf("%d", sum);
}
🌭BC119 最高分与最低分之差
解法一
利用变长数组存储每一个数,与最大值最小值进行比较,不断更新最大最小值,最后打印最大值与最小值的差。
#include <stdio.h>
int main() {
int n = 0;
int sum = 0;
int lower = 100, higher =0.00; // 定义两个变量lower和higher,用于存储数据中的最小值和最大值,初始值分别为100和0
scanf("%d", &n);// 从标准输入读取一个整数n,表示数组的长度
int arr[n];//变长数组不能初始化,C99标准以后支持变长数组
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);//输入n个数据,存入数组,存放时每个数据都跟最大最小值比较一下
if (arr[i] <lower)// 如果读取的数据小于当前最小值,则更新最小值
lower = arr[i];
if (arr[i] >higher)//如果读取的数据大于当前最大值,则更新最大值
higher = arr[i];
sum += arr[i];
}
printf("%d", higher-lower);// 输出最大值-最小值的差
return 0;
}
解法二
通过循环每次比较输入的数值和最大最小值的大小,然后更新最大或最小值
//因为有输入缓冲区,所以数据不用存放在数组里
#include <stdio.h>
int main() {
int n = 0;
int sum = 0.0;
int score = 0.0;
int lower = 100.0,higher = 0.0;// 定义变量lower和higher,用于存储数据中的最小值和最大值,初始值分别为100和0
scanf("%d", &n);// 从标准输入读取一个整数n,表示数据的数量
for (int i = 0; i < n