【牛客网题目解析:从入门到精通】173道基础题详解 (第七期)

在这里插入图片描述

😁本文作者:大家好,我是原始豌豆,欢迎来到牛客网刷题解析第七期,感谢你阅读本文欢迎评论,收藏,点赞哦。
😂内容专栏:这里是《牛客网在线编程》专栏,笔者用重金(时间和精力)打造,每道题目提供多种解法,从基础到拓展,希望可以帮到读者们。
😘写作不易:本文对每道题目提供了多种解法并加上了详细的注释,意在帮助读者锻炼思维灵活性,提高分析、解决问题的能力💓)。

开端
     在这篇文章中,我将分享刷题过程中的一些感悟、技巧和策略。我会详细解析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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值