【C语言蓝桥杯每日一题】——等差数列

简介: 这道题,我用到了C语言中的qsort库函数,它是一种基于快排算法思想的排序函数。首先,想让大家认识一下qsort库函数的大概样子,和如何使用。

微信图片_20230427214238.gif

😎博客昵称:博客小梦

😊最喜欢的座右铭:全神贯注的上吧!!!

😊作者简介:一名热爱C/C++,算法等技术、喜爱运动、热爱K歌、敢于追梦的小博主!

😘博主小留言:哈喽!😄各位CSDN的uu们,我是你的博客好友小梦,希望我的文章可以给您带来一定的帮助,话不多说,文章推上!欢迎大家在评论区唠嗑指正,觉得好的话别忘了一键三连哦!😘


微信图片_20230427160707.gif


前言🙌


   哈喽各位友友们😊,我今天又学到了很多有趣的知识,现在迫不及待的想和大家分享一下!😘我仅已此文,和大家分享【C语言蓝桥杯每日一题】——等差数列~ 都是精华内容,可不要错过哟!!!😍😍😍


等差数列🙌


微信图片_20230428183101.png


这道题,我用到了C语言中的qsort库函数,它是一种基于快排算法思想的排序函数。首先,想让大家认识一下qsort库函数的大概样子,和如何使用。


微信图片_20230428183112.png微信图片_20230428183120.png


这个qsort库函数有四个参数:


  • 1.void *base : 指向一个需要比较的一组数据的空间的指针;
  • 2.size_t num: 比较的元素个数;
  • 3.size_t width:元素的大小(字节);
  • 4.int (__cdecl *compare )(const void *elem1, const void *elem2 ) :
  • 一个函数指针。
  • 5.这个函数设计的返回值和strcmp函数的设计思路一致。


解题思路分析:😍


1.首选认真将题目看完,因为是涉及到等差数列,所以要回想起等差数列的一些性质。

2.由等差数列的 an = a1 + (n - 1) x d; 我们可以推出 项数 n =( ( an - a1)

/ d ) + 1 。

3.一般刷题网站都是支持变长数组语法的,所以我这里利用变长数组创建一个存放n个整型变量的数组。

4.然后利用qsort将数组进行一个升序排序(qsort库函数本身设计就是进行一个升序排序)。

5.然后寻找相邻两个数的最小差值作为这个数组的公差。因为满足这个就能保证所有其他元素设计成最短的符合条件的等差数列。


解题源代码分享:😍


#include <stdio.h>
#include <stdlib.h>
int compare(const void* e1, const void* e2)
{
    return *(int*)e1 - *(int*)e2;
}
int min(int a, int b)
{
    return a < b ? a : b;
}
int main(int argc, char* argv[])
{
    int n = 0;
    scanf("%d", &n);
    int arr[n];
    int i = 0;
    int d = 0;
    for (i = 0; i < n; i++)
    {
        scanf("%d", &arr[i]);
    }
    qsort(arr, n, sizeof(int), compare);
    d = arr[1] - arr[0];
    for (i = 1; i < n - 1; i++)
    {
        d = min(arr[i + 1] - arr[i], d);
    }
    if (d == 0)
        printf("%d", n);
    else
        printf("%d", ((arr[n - 1] - arr[0]) / d) + 1);
    return 0;
}


程序输出结果验证: 😊


微信图片_20230428183128.png


总结撒花💞


   本篇文章旨在分享【C语言蓝桥杯每日一题】——等差数列。希望大家通过阅读此文有所收获!😘如果我写的有什么不好之处,请在文章下方给出你宝贵的意见😊。如果觉得我写的好的话请点个赞赞和关注哦~😘😘😘

相关文章
|
12天前
|
人工智能 算法 测试技术
2023年第15届蓝桥杯模拟赛第二期(c语言)
2023年第15届蓝桥杯模拟赛第二期(c语言)
|
4月前
|
存储 算法 前端开发
2019蓝桥杯大赛省赛Java大学B组 数列求值
2019蓝桥杯大赛省赛Java大学B组 数列求值
19 0
|
4月前
|
Java
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
P9242 [蓝桥杯 2023 省 B] 接龙数列JAVA,边权为1的最短路问题,洛谷P9242 [蓝桥杯 2023 省 B] 接龙数列​编辑力扣1926.迷宫离入口最近的出口力扣433.
|
5月前
|
C语言
斐波那契数列(C语言)
斐波那契数列(C语言)
斐波那契数列(C语言)
|
5月前
|
C语言
每天一道C语言编程(3):有规律的数列输出
每天一道C语言编程(3):有规律的数列输出
52 0
|
5月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 Fibonacci数列
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 Fibonacci数列
37 0
|
5月前
|
算法 搜索推荐 程序员
C语言第三十一练——递归求解n位斐波那契数列
C语言第三十一练——递归求解n位斐波那契数列
46 0
|
5月前
|
Java C语言 C++
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 数列特征
第十四届蓝桥杯集训——练习解题阶段(无序阶段)-基础练习 数列特征
31 0
|
5月前
|
存储 算法 C语言
C语言练习记录(蓝桥杯练习)(小蓝数点)
C语言练习记录(蓝桥杯练习)(小蓝数点)
|
5月前
|
算法 C语言
C语言汉诺塔数列(循环版,递归版)
C语言汉诺塔数列(循环版,递归版)
66 0