• 牛客网刷题记录 || 第一番


    🛒本文收录于专栏【牛客网刷题记录】
    📢专栏目的是对于刷题过程的记录,题型的列举和讲解,会持续输出,欢迎免费订阅!!

    这是牛客网刷题记录专栏第一篇博文,先给大家简单介绍一下牛客网,牛客网是一个集笔面试系统、题库、课程教育、社群交流、招聘内推于一体的优质网站牛客网题库中包含几万道题目,注重通过边学边练的模式揽获编程人员的喜爱
    在这里插入图片描述

    牛客网干净整洁的界面,人性化的布局,高质量的题库题解,丰富的大厂面试题,让我想把它分享给大家,推荐大家来牛客网刷题,链接我就放在这了有需要自取👉点击开始刷题

    小Tips:注册完之后,不用填信息直接点X,开启刷题之旅~


    C语言入门

    🔥1.复制部分字符串

    在这里插入图片描述

    👌描述

    键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len),将此字符串中从第 m 个字符开始的剩余全部字符复制成为另一个字符串,并将这个新字符串输出。要求用指针处理字符串

    输入描述:
    键盘输入一个长度为len(1 <= len < 30)的字符串,再输入一个正整数 m(1 <= m <= len)

    输出描述:
    输出复制的新字符串

    示例1:

    输入:helloworld
    6
    输出:world
    
    • 1
    • 2
    • 3

    👌代码

    #include 
    using namespace std;
    
    int main() {
    
        char str[30] = { 0 };
        cin.getline(str, sizeof(str));
    
        int m;
        cin >> m;
    
        // write your code here......
        char *p = NULL;
        p = &str[m-1];
        cout << p;
    
    
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19

    在这里插入图片描述

    👌题解

    *p 和p[]一个意思,p是一个char数组的首地址,然后把str[m-1]的地址取出来赋值给p,就可以打印出来m-1后的字符串,很nice

    在这里插入图片描述


    🔥2.牛牛的排序

    在这里插入图片描述

    👌描述

    牛牛试图给一个长度为 n 整数数组排序,即实现一个 void sort(int *array,int n)

    输入描述:
    第一行输入一个正整数 n ,表示数组长度。
    第二行输入 n 个正整数,表示数组中每个元素的值

    输出描述:
    输出排序后的数组

    示例1:

    输入:
    5
    2 9 8 1 3
    输出:
    1 2 3 8 9
    
    • 1
    • 2
    • 3
    • 4
    • 5

    👌代码

    #include 
    
    using namespace std;
    
    int main() {
        int n=0,v=0;
        cin>>n;
        int arr[n];
        for(int i=0;i<n;i++){
            cin>>v;
            arr[i]=v;
        }
        sort(arr,  n);
    }
    
    void sort(int *array,int n)
    {
        for(int i=0;i<n;i++){
            for(int j=0;j<n-i-1;j++){
                if(array[j]>array[j+1]){
                    int t=array[j];
                    array[j]=array[j+1];
                    array[j+1]=t;
                }
            }
        }
        for(int i=0;i<n;i++){
            cout<<array[i]<<" ";
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30

    👌题解

    这个牛牛排序,就是一个数组排序问题,用到了冒泡排序一个很关键和实用的排序方法,for循环控制一下输入输出就ok了,相信大家都能看懂的


    C++入门

    🔥3.输出水仙花数

    在这里插入图片描述

    👌描述

    在控制台输出所有的“水仙花数”

    水仙花数是指一个三位数,其各位数字的立方和等于该数本身

    举例:
    153就是一个水仙花数
    153 = 111 + 555 + 333 = 1 + 125 + 27 = 153

    输入描述:

    输出描述:
    输出所有的“水仙花数”,每个“水仙花数”占一行,格式如下:
    xxx
    yyy
    zzz

    👌代码

    #include 
    using namespace std;
    
    bool Nacissistic(int num){
    
    	int t = num;
    	int a = num % 10;
    	num /= 10;
    	int b = num % 10;
    	num /= 10;
    	int c = num % 10;
    
    	if (t == a*a*a + b*b*b + c*c*c)
    		return true;
    	else
    		return false;
    }
    int main() {
    	int num;
    	for (num = 100; num <= 999; num++){
    		if (Nacissistic(num)){
    			cout << num << endl;
    		}
    	}
    	return 0;
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27

    👌题解

    要知道水仙花数只会是三位数,要把所有的三位数,对每一个三位数检查是否是水仙花数,用对10取余求得个位数字,让其除以10以后再对10取余求得10位数字,最后再除以10以后对10取余求得百位数字。三个数字各自的三次方求和与原数比较,如果相等则是水仙花数,输出该数
    在这里插入图片描述


    🔥4.计算小球走过的路程和反弹高度

    在这里插入图片描述

    👌描述

    一球从 h 米高度自由落下,每次落地后反跳回原高度的一半再落下,求它在第 n 次落地时共经过了多少米?第 n 次返弹多高?

    输入描述:
    输入小球下落的高度和落地的次数(先输入小球初始高度再输入反弹次数)

    输出描述:
    输出小球第 n 次 落地时经过的距离和第 n 次反弹的高度(保留小数点后1位)

    示例1:
    输入:
    100 1
    输出:
    100.0 50.0

    示例2:
    输入:
    100 3
    输出:
    250.0 12.5

    👌代码

    #include 
    #include 
    using namespace std;
    
    int main() {
    
        // 下落的高度和落地的次数
        double h;
        int n;
    
        cin >> h;
        cin >> n;
        
    	// write your code here......
        //记录第n次反弹时总共走过的记录
        double temp=0;
        for(int i=1;i<=n;i++){
            h/=2;
            temp+=h*3;
        }
        //减去最后反弹的高度h
        cout<<fixed<<setprecision(1)<<temp-h<<" "<<h<<endl;
        return 0;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    👌题解

    利用循环计算每次反弹时的高度(记为h),以及经过了多少米(记为temp),由于要输出的是第n次落地时走了多少米,所以temp要减去最后反弹的高度h


    还是推荐大家来牛客网一起刷题哦~👉点击开始刷题

  • 相关阅读:
    JAVA常用工具类
    《MySQL实战45讲》——学习笔记14 “count(*)的原理、与count(1)/count(id)的区别“
    【Linux权限:系统中的数字锁与安全之门】
    Visual Studio 中将TAB设置为空格
    A-level化学例题分析(二)
    谷歌AudioLM :通过歌曲片段生成后续的音乐
    【云原生 • Docker】docker 环境搭建、docker 与容器常用指令大全
    U81206:链式前向星模板题
    Python函数式编程(一)概念和itertools
    java计算机毕业设计springboot+vue小微企业人才推荐系统
  • 原文地址:https://blog.csdn.net/m0_64996150/article/details/125742395