绝对零基础的C语言科班作业⑦(数组)(斐波那契数列)(冒泡排序)

ACM练习题-毕达哥拉斯三角形 题目描述: 著名数学家毕达哥拉斯可能从来都不曾想过有人居然会问他这样的一个问题:给出一个整数,存在多少个三角形,它的某一边的长度等于这个整数,而且其他边的长度也是整数。既然毕达哥拉斯不可能预见到有计算机的出现,如果他回答不出来,那谁又能责怪他呢?但是现在既然你有了计算机,那么回答不出来就说不过去了。  输入格式: 第一行有一个整数n,代表有多少个数据(1≤ n ≤20)。接下来又 阅读详情

一(一维数组)

①(代码)反序输出

任务描述

编程读入若干整数,按相反顺序输出。

输入格式:

第一行是一个整数N(N<=100),表示这一组数据的个数。接下来的一行是N个整数,用空格或回车分隔。

输出格式:

按输入顺序的相反顺序输出所有数据,用逗号分隔。

输入样例:

3

5 10 8

输出样例:

8,10,5

任务分析

题目要求读入n个数(n<=1000),按反序输出。这样就需要首先读入所有的数,然后再按要求的反序输出。而需要读入的数据最多可能有1000个,数量还不固定,如何存储这些数据呢?我们总不能定义1000个变量吧,用传统的单变量存储这些数据是不现实的。

相关知识 一维数组

前面我们使用的变量都属于简单变量,C语言中还提供了构造数据类型(如数组、结构体、共用体)和指针等。所谓构造数据类型,就是由基本数据类型按照一定规则组合而成的新的数据类型。本章主要介绍C语言中数组的使用,包括一维数组、二维数组和字符数组的定义、使用等。

  • 1.认识数组 C语言提供了一个构造类型的数据结构——数组。 数组是一种特殊的构造数据类型,它是一组由若干个相同类型的变量构成的集合,这些变量具有一个相同的名字——数组名,各个变量之间用下标(序号)来区分。每个变量称为这个数组的元素,数组的下标是从0开始计数的。 例如,有个名字为a的整型(int)数组,共有10个元素,则在C语言中这10个数组元素的名字分别为a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]。 一个数组的所有元素在内存中是顺序存放的,比如刚刚提到的数组a,在内存中共占据连续的40个字节的空间(假定每个int型数据占4个字节),前4个字节用来存放a[0],接下来的4个字节用来存放a[1],以此类推。 数组是具有一定顺序关系的若干个相同类型变量的集合体,数组属于构造类型。如果数组元素之间只通过一个下标分量来相互区分,那它就是一维数组。

  • 2.一维数组的定义 一维数组是只有一个下标的数组,通过一个下标序号就能确定数组元素。数组和其它普通变量一样,在程序中必须先定义后引用。 一维数组定义的一般形式为: 类型说明符 数组名[整型常量表达式]; 例如: int a[10]; /* 数组名为a,类型为整型,有10个元素 */ float f[20]; /* 数组名为f,类型为单精度实型,有20个元素 */ char ch[20]; /* 数组名为ch,类型为字符型,有20个元素 */ 功能说明: (1)类型说明符定义了数组元素的类型,该数组的所有元素必需具有相同的数据类型。 (2)数组名和变量名的命名规则相同,都是标识符。 (3)整型常量表达式表明数组的长度(元素个数),要放在方括号内,且必须是常量表达式(C99标准之前)。表达式的值定义了该数组一共有多少个元素。 (4)数组元素的下标从0开始,所以上文中数组a的元素有a[0]、a[1]、a[2]、a[3]、a[4]、a[5]、a[6]、a[7]、a[8]、a[9]共10个元素;数组f的元素有f[0]、f[1]、f[2]、… … f[19]共20个元素。

  • 3.一维数组元素的引用 数组必须先定义后引用。可以像使用变量一样使用数组的元素。我们一次只能引用一个数组元素,而不能一次引用整个数组(字符数组除外)。 引用数组元素的一般形式是: 数组名[下标] 下标可以是整型常量或整型表达式,例如下列语句是合法的: a[0]=5; a[1]=a[0]*5+9; a[a[0]]=6;

  • 4.一维数组的遍历 对数组中的每个元素依次访问一遍,称为对数组的遍历。程序中通常在循环结构里让循环变量(计数器)从0开始,每次循环后加1,直到数组最大下标的方法来遍历整个数组。

程序代码
#include<stdio.h>
int main()
{
    int a[1010], i, n;     //定义数组,长度比题目要求的最大长度多10个
    scanf("%d", &n);      //首先读入n,表示实际数据的个数
    for (i = 0;i < n;i++)      //依次读入每个数据放入数组中(遍历)
    {
        scanf("%d", &a[i]);      //读入整数赋值给a[i]
    }
    for (i = n - 1;i >= 0;i--)    //反向输出穷举下标i从n-1到0(遍历)
    {
        if (i < n - 1)printf(",");   //第二项开始前面输出逗号
        printf("%d", a[i]);      //输出a[i]
    }
    return 0;
}

代码分析

  • 1.程序中定义int型数组a有1010个元素,因为题目要求最多有1000个数据需要存储,所以我们在定义数组的时候至少要定义1000个元素的数组,为了保险起见,我们在定义数组时可以多定义一些元素,避免数据装不下的情况。

  • 2.第一个for循环,通过穷举i从0到n-1,遍历a[0]到a[n-1],读入每一个数据到a[i]中。这样就实现了读入n个数据,存储到n个变量(数组元素)中。

  • 3.第二个for循环,通过穷举i从n-1到0,遍历a[n-1]到a[0],输出每一个a[i]。从而实现反序输出。 从以上代码可以看出,数组是一组具有相同名字的变量的集合,通过下标区分。 有了数组,我们就可以对多个变量(数组元素)依次统一处理了,例如代码中的遍历输入和遍历输出。这也正式数组存在的意义。

②(代码)输出第n个素数

任务描述

编程找出前1000个素数存放到数组中,然后输入一个整数N,输出第N个素数的值。

输入格式:

输入有多组数据,为若干个空格分隔的整数。

输出格式:

对于输入数据中每个n,输出第n个素数的值,多个输出之间以逗号分隔。

输入样例:

1 2 3 4 5 4 3

输出样例:

2,3,5,7,11,7,5

#include<stdio.h>
#include<math.h>
int main()
{
    int a[1000]; //存放前1000个素数
    int i, m; // m表示需要判断的数
    int count = 0; //统计个数
    int n; //输入 数据
    char x;
    for (m = 2;; m++)
    {
        for (i = 2; i <= sqrt(m); i++)
        {
            if (m % i == 0)
            {
                break;
            }
        }
        if (i > sqrt(m))
        {
            a[count++] = m;
        }
        if (count > 1000)
        {
            break;
        }
    }
    int b = 0;
    while (scanf("%d ", &n) != EOF) //输入 n组数据
    {
        if (b)
        {
            printf(",");
        }
        printf("%d", a[n - 1]);  //从第二个数开始输出,和%d
        b++;
    }
    return 0;
}
相关知识 一维数组的初始化

数组元素可以通过赋值语句来进行直接赋值,也可以在定义数组的同时对其进行初始化赋值。

  • (1)在定义数组时对数组全部元素进行初始化。例如: int a[10]={0,1,2,3,4,5,6,7,8,9}; 将数组元素的初值用逗号分隔依次放在一对大括号内。初值与数组元素是一一对应的(多余的元素会被忽略),所以经过上述初始化后,数组元素a[0]~a[10]的值依次为0~9。

  • (2)在定义数组时对数组部分元素进行初始化。例如: int a[10]={0,1,2,3,4}; 数组定义了10个元素,初始化列表中只给出了5个值,这5个值依次赋给a[0]至a[4],其余数组元素的值系统自动赋值为0。

  • (3)如果数组在定义时没有进行初始化操作,那么它所有元素的初始值为一个随机值。

  • (4)定义数组时给没有指定数组长度,根据初值数量自动确定长度。例如:

  • int c[ ]={1,2,3,4,5,6,7,8,9,10}; 数组的长度将根据初始化元素值的数量自动识别为10。

代码分析案例 请分析以下代码的执行结果

//一维数组的初始化示例代码
#include<stdio.h>
int main()
{
    int a[10],i;
    int b[10]={1,2,3,4};
    int c[]={1,2,3,4,5,6,7,8,9,10};
    printf("\n数组a:");  
    for(i=0;i<10;i++)
    {
        printf("%d ", a[i]);
    }

    printf("\n数组b:");  
    for(i=0;i<10;i++) 
    {
        printf("%d ", b[i]);
    }

    printf("\n数组c:");  
    for(i=0;i<10;i++) 
    {
        printf("%d ", c[i]);
    }
    return 0;  
}

执行程序输出:

数组a:2879 54540 4204204 0 654650 87897 5256 -545 8 2550

数组b:1 2 3 4 0 0 0 0 0 0

数组c:1 2 3 4 5 6 7 8 9 10

代码分析:

对于未进行任何初始化赋值的数组元素,和未初始化的变量是同一情况,其值是不确定的。此例程序在不同机器上会得到不同的输出结果。定义数组a时未赋初值,所有元素的值不确定。定义数组b时给部分元素赋了初值,其余元素做清0处理(赋0值)。定义数组c时给没有指定数组长度,根据初值数量自动确定长度为10。

相关知识 数组在内存
  • 1.数组在内存中连续存放 数组的所有元素总是被安排在一块连续的存储空间,数组元素在内存中顺次存放,它们的地址是连续的。C语言还规定,数组名就是数组的首地址,也可以理解为数组名就是数组中第1个元素(下标为0)的地址。

代码分析案例 请分析以下代码的执行结果

// 数组元素在内存中连续存放
#include<stdio.h>
int main()
{
    int a[10], k;
    for (k = 0;k < 10;k++) a[k] = k;
    {
        printf("Array address:%x\n", a);
    }
    for (k = 0;k < 10;k++)
    {
        printf("a[%d]=%d,Memory address:%x\n", k, a[k], &a[k]);
    }
    return 0;
}

执行程序输出:

Array address:22fe20

a[0]=0,Memory address:22fe20

a[1]=1,Memory address:22fe24

a[2]=2,Memory address:22fe28

a[3]=3,Memory address:22fe2c

a[4]=4,Memory address:22fe30

a[5]=5,Memory address:22fe34

a[6]=6,Memory address:22fe38

a[7]=7,Memory address:22fe3c

a[8]=8,Memory address:22fe40

a[9]=9,Memory address:22fe44

程序分析:

本例程序中通过%x格式说明符以16进制整数形式输出内存地址值(内存地址值其实是一个无符号整数)。通过输出可以看出,数组名就是数组的首地址,每个元素占4个字节,从a[0]至a[9]共10个元素在内存中存放在连续的存储空间。


  • 2.数组长度 定义数组时,要求数组长度是一个常量表达式,表示数组的长度(元素个数)。下列数组的定义是合法的。

int b[10 + 20];              //相当于  int b[30];
double d[10 + 20 / 6];         //相当于  double d[13];
int c['A'];                //相当于  int c[65];
int x[(int)5.6];           //相当于  int x[5];

下面程序代码的数组定义也是合法的:

#define N 10
int main()
{
    int a[N], b[N + 10];       //预处理后替换成 int a[10],b[20];
}

下面两种定义数组的情况是错误的,将产生编译错误:


  • 3.数组大小 我们可以使用sizeof(数组名)来测试数组整体大小,例如: 如果有定义int a[10];double b[20];那么sizeof(a)的值为40,说明数组a在内存中整体占40个字节的空间。sizeof(b)的值为160,说明数组b在内存中整体占160个字节的空间。

二(一维数组的应用)

①(代码)斐波那契数列

任务描述:

斐波那契(Fibonacci)数列是这样一个数列:1、1、2、3、5、8、13、21、……, 这个数列前两项是1,从第三项开始,每一项都等于前两项之和。 编程读入两个正整数A和B,输出Fibonacci数列的第A项到第B项。

输入格式:

一行中给出2个不超过90的正整数A和B(A<=B)。

输出格式:

输出Fibonacci数列的第A项到第B项,5个数一行,行内数据以一个空格分隔。

输入样例:

1 8

输出样例:

1 1 2 3 5

8 13 21

输入样例:

76 90

输出样例:

3416454622906707 5527939700884757 8944394323791464 14472334024676221 23416728348467685

37889062373143906 61305790721611591 99194853094755497 160500643816367088 259695496911122585

420196140727489673 679891637638612258 1100087778366101931 1779979416004714189 2880067194370816120

任务分析

我们可以定义一个数组,事先将Fibonacci数列的前90个元素存储进去,然后我们想输出哪段元素都可以轻易实现。因为数组元素的值到下标90附近时会很大,所以数据类型我们定义成long long型。

程序代码

#include<stdio.h>
#define N 90
int main()
{
    long long int a, b, i, k, f[N + 5] = { 0 };  //定义数组长度为95(比90稍多一点)
    f[1] = f[2] = 1;            //前两项f[1]和f[2]赋值1
    for (i = 3;i <= N;i++)       //计算f[3]到f[N]
    {
        f[i] = f[i - 1] + f[i - 2];
    }
    scanf("%ld%ld", &a, &b);  //读入a和b

    for (k = 0, i = a;i <= b;i++, k++)  //输出f[a]到f[b]
    {
        if (k % 5 > 0)
        {
            printf(" ");     //控制空格的输出
        }
        printf("%lld", f[i]);
        if (k % 5 == 4 && i < b) 
        {
            printf("\n");   //控制回车的输出
        }
    }
    return 0;
}

②(代码)三角形数

任务描述:

传说古希腊毕达哥拉斯(约公元前570-约公元前500年)学派的数学家经常在沙滩上研究数学问题,他们在沙滩上画点或用小石子来表示数。比如,他们研究过1,3,6,10,15,21,28,36,45,55,66,78,91……这些数被称为三角形数。

编程将前50个三角形数存入数组,然后输出。每10个一行。

输出样例:

1 3 6 10 15 21 28 36 45 55

66 78 91 105 120 136 153 171 190 210

231 253 276 300 325 351 378 406 435 465

496 528 561 595 630 666 703 741 780 820

861 903 946 990 1035 1081 1128 1176 1225 1275

#include<stdio.h>
int main()
{
    int i, j = 2, arr[50];
    for (i = 1;i < 50;i++)
    {
        arr[0] = 1;
        arr[i] = arr[i - 1] + j;
        j++;
    }
    for (i = 0;i < 50;i++)
    {
        if (i == 9 || i == 19 || i == 29 || i == 39)
        {
            printf("%d\n", arr[i]);
        }
        else
        {
            printf("%d ", arr[i]);
        }
    }
    return 0;
}

③(代码)数组元素逆置

任务描述

编程读入10个整数存入数组中,正序输出后,将数组元素逆序重置后再输出。

输入样例:

42 75 29 66 79 55 53 43 27 41

输出样例:

42,75,29,66,79,55,53,43,27,41

41,27,43,53,55,79,66,29,75,42

#include<stdio.h>
int main()
{
    int a, arr[10];
    for (int i = 0;i < 10;i++)
    {
        scanf("%d", &a);
        arr[i] = a;
        if (i != 9)
        {
            printf("%d,", arr[i]);
        }
        else
        {
            printf("%d", arr[i]);
        }
    }
    printf("\n");
    int left = 0, right = sizeof(arr) / sizeof(arr[0]) - 1;
    while (left <= right)
    {
        int tmp = arr[left];
        arr[left] = arr[right];
        arr[right] = tmp;
        left++;
        right--;
    }
    for (int i = 0;i < 10;i++)
    {
        if (i != 9)
        {
            printf("%d,", arr[i]);
        }
        else
        {
            printf("%d", arr[i]);
        }
    }
    return 0;
}

④(代码)大赛(冒泡排序)

任务描述:

8号选手参加校园歌手大赛,编程读入20个整数(70-100之间)并存入数组中做为20个评委的打分,请按题目要求编程实现输出样例要求的功能(最后得分为去掉最高分和最低分后的平均分)。

输入样例:

82 89 83 70 94 90 86 73 79 83 89 97 95 93 82 94 96 94 91 84

输出样例:

去掉一个最高分:97分

去掉一个最低分:70分

8号选手最后得分:87.611分

#include<stdio.h>
int main()
{
    int a, arr[20] = { 0 };
    for (int i = 0;i < sizeof(arr) / sizeof(arr[0]);i++)
    {
        scanf("%d", &a);
        arr[i] = a;
    }
    int i = 0, j = 0;
    for (i = 0;i < sizeof(arr) / sizeof(arr[0]) - 1;i++) //冒泡排序,后面写到函数中
    {
        int flag = 1;//优化
        for (j = 0;j < sizeof(arr) / sizeof(arr[0]) - 1 - i;j++)
        {
            if (arr[j] > arr[j + 1])
            {
                int tmp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = tmp;
                flag = 0;
            }
        }
        if (flag)
        {
            break;
        }
    }
    printf("去掉一个最高分:%d分\n", arr[19]);
    printf("去掉一个最低分:%d分\n", arr[0]);
    arr[19] = 0;
    arr[0] = 0;
    int s = 0;
    for (i = 0;i < sizeof(arr) / sizeof(arr[0]);i++)
    {
        s += arr[i];
    }
    float average = s / 18.0;
    printf("8号选手最后得分:%.3f分", average);
    return 0;
}

⑤(代码)大赛新规则

任务描述

8号选手参加校园歌手大赛,编程读入20个整数(0-100之间)并存入数组中做为评委打分。最后得分计算规则:先计算20个数的平均分,然后去掉所有与平均分相差10分以上的分数,最后把剩下的分数再取平均做为最后得分。如果没有剩下分数,此次打分无效。

输入样例:

86 87 83 70 99 94 78 89 86 80 97 84 90 87 95 87 84 99 84 95

输出样例:

所有评委平均分:87.700分.

不合格得分:70 99 99 .

最后得分:87.412分.

输入样例:

72 72 73 71 71 72 73 71 71 72 98 98 97 100 99 97 97 99 99 99

输出样例:

所有评委平均分:85.050分.

不合格得分:72 72 73 71 71 72 73 71 71 72 98 98 97 100 99 97 97 99 99 99 .

无合格打分.

#include<stdio.h>
int main()
{
    int i, j, c = 0, arr[20], r;
    float s = 0, s2 = 0, p, p2;
    for (i = 0;i < 20;i++)
    {
        scanf("%d", &j);
        arr[i] = j;
        s += arr[i];
    }
    p = s / 20;
    printf("所有评委平均分:%0.3f分.\n", p);
    printf("不合格得分:");
    for (i = 0;i < 20;i++)
    {
        if (arr[i] > p)
        {
            r = arr[i] - p;
        }
        else
        {
            r = p - arr[i];
        }
        if (r > 10)
        {
            printf("%d ", arr[i]);
            arr[i] = 0;
            c++;
        }
        else
        {
            continue;
        }
    }
    printf(".\n");
    for (i = 0;i < 20;i++)
    {
        s2 += arr[i];
    }
    if (s2 == 0)
    {
        printf("无合格打分.");
    }
    else 
    {
        p2 = s2 / (20 - c);
        printf("最后得分:%0.3f分.", p2);
    }
    return 0;
}

C语言- 利用数组计算斐波那契数列(数组) 什么??pta中的斐波那契数列竟然是这样写的??!!(滑稽,滑稽) 阅读详情

相关推荐

B站算法岗笔试复盘:KMP、KNN与粒子群等核心考点详解

数据结构与机器学习是算法工程师笔试的两大基石。从KMP算法的next数组手算,到KNN在分类、回归与缺失值填充中的应用,再到粒子群算法、模拟退火等优化方法的迭代原理,这些经典技术不仅考察候选人的理论功底,更映射出真实业务中推荐、审核、视频理解等场景的落地需求。理解算法背后的数学推导与工程取舍,掌握复杂度分析与边界处理,是应对大厂笔试的关键能力。本文以B站2019秋招技术岗(算法)第二套笔试题为例,系统梳理高频考点、常见避坑策略与备考路线,帮助读者在短时间内构建完整的算法知识框架,提升实战应试水平。

weixin_33829657的博客 439

校园歌手大赛

描述 8号选手参加校园歌手大赛,编程读入20个整数(70-100之间)并存入数组中做为20个评委的打分,请按题目要求编程实现输出样例要求的功能(最后得分为去掉最高分和最低分后的平均分)。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ 输入 20个整数。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬

专注于嵌入式开发领域 4817

2019快手测试岗笔试题深度拆解:从基础到思维的完整备战路线

软件测试是保障产品质量的关键环节,其核心不仅在于掌握用例设计、缺陷管理等基础理论,更在于构建系统化的知识体系与工程化思维。在测试工程师的校招笔试中,Linux命令、SQL查询、网络协议等计算机基础,以及自动化测试的工具选型与框架设计,都是衡量候选人实践能力的重要维度。深入理解这些技术背后的原理与适用场景,能够帮助候选人在真实项目中高效定位问题、设计全面用例、提升测试效率。从功能验证到性能分析,从手工执行到持续集成,测试工作贯穿于软件交付的全生命周期。本文以一份典型的2019年大厂测试岗笔试卷为例,按考点地图

weixin_33800463的博客 496

输出第N个素数

输出第n个素数

m0_74310050的博客 1849

PTA-条件与循环-求所有由1、2、3、4这4个数字组成的素数

求所有由1、2、3、4这4个数字组成的素数 题目: 编写程序prime.py,输出所有由1、2、3、4这4个数字组成的素数,并且在每个素数中每个数字只使用一次。 输入输出 输入格式: 包含4个一位数的元组 输出格式: 按从小到大顺序输出在一行上,每个素数之间用一个空格隔开 输入样例: (1,2,3,4) 输出样例(部分): 2 3 13 23 31 41 43 241 421 此题目要求作答者熟练掌握循环的使用。 import math # (1,2,3,4) x=eval(input()) x_list=[] def isPrime(n): m = math.ceil(math.

基于单片机的自动喷淋系统设计【毕业设计】

随着人民生活质量提高与生活节奏的加快,城市居民对于花草绿植的家庭培养与装饰需求增加,随之因浇灌植物的需要,智能浇花系统的市场逐渐扩大。现有自动浇花系统大部分只能通过设置固定浇水时间而难以实现适时、适量浇水,或在植物环境土壤含水量低时进行报警而并不能实际补水。为克服局限性而设计以单片机为控制中心的自动浇花系统。通过湿度传感器检测目标植物环境土壤湿度数据,再经ADCO832将其放大转换为数字量,由单片机读取输出向LCD1602 显示屏显示并通过比对键盘向单片机所设置的湿度范围而利用中断服务程序进行补水需求判断。

qq_48771816的博客 1711

软考初级程序员备考指南:从零基础到系统掌握计算机核心知识

计算机科学基础是软件开发的基石,涵盖了数据结构、算法、程序设计语言和计算机系统等核心原理。理解这些基础概念有助于构建系统的知识体系,提升问题解决能力,并为技术认证和职业发展奠定基础。在工程实践中,通过系统化的学习路径和实战练习,可以有效掌握这些知识。软考初级程序员认证正是评估这些基础能力的国家级考试,对零基础入门者、转行人员和在校学生具有重要价值。备考过程中,利用完整的教程资料和配套电子资源,结合三轮复习法,能够高效覆盖考试大纲,强化薄弱环节。特别是针对下午的程序设计题,搭建C语言环境并进行专项练习至关重要

weixin_33805743的博客 378

饥荒Mod 开发(二):Mod目录结构

饥荒中的每个Mod 都有一些固定的目录结构,各个目录的放着不同类型的文件。动画,图片,源代码等。我们最好是遵守Mod 开发中的各个目录结构,我用的是WeGame 安装的饥荒游戏,Mod 目录如下,这个目录下保存所有订阅的Mod。

小乖写代码 4629

C++零基础入门:从环境搭建到核心语法与面向对象编程

编程语言作为计算机科学的基础工具,其核心价值在于将人类逻辑转化为机器可执行的指令。C++作为一门高性能、高控制权的系统级编程语言,其设计哲学强调效率与灵活性,使其在游戏引擎、操作系统、高频交易等对性能要求极高的领域成为基石技术。理解C++的编译模型、内存管理机制和面向对象范式,是掌握现代软件工程中系统设计与性能优化的关键。本文以VSCode和MinGW-w64工具链为例,详细解析了C++开发环境的配置过程,并深入浅出地讲解了从基础语法到指针、引用、类与对象等核心概念,帮助初学者构建稳固的知识起点,并自然融入

weixin_30896511的博客 341

【OpenClaw从入门到精通】命令行操作指南——TUI模式高效管理OpenClaw(2026避坑版)

本文将详细介绍OpenClaw的命令行操作,重点介绍TUI(Text User Interface)模式的高效使用方法,以及在实际使用中需要避免的常见陷阱。通过本文的学习,你将掌握OpenClaw命令行的精髓,提升工作效率。

一键难忘的博客 1691

Proteus-51单片机-LCD1602显示DS1302时钟

本文详细介绍了如何使用Proteus仿真51单片机配合LCD1602显示DS1302时钟的步骤,包括DS1302时钟芯片的主要特性、引脚定义、外围电路以及LCD1602的原理和技术参数。此外,还讲解了LCD1602的指令集和显示字符的方法,并给出了初始化及显示操作的步骤。

让你爱上电路设计 6980

富士康秋招工程师笔试全拆解:题型、逻辑与备考策略

在制造业校招中,笔试是人才筛选的第一道关卡,其设计逻辑往往折射出企业对工程师的核心能力要求。数学与图形推理锻炼结构化思维,英语场景化表达考验实际沟通,专业基础题则划定岗位能力边界。理解这些考察维度,不仅能帮助求职者高效备考,也能为工程实践中的问题定位与方案权衡提供方法论支撑。本文以富士康2017年秋招工程师岗位笔试试卷为样本,系统拆解其模块构成、出题意图与作答策略,梳理常见失分点与备考误区,为准备制造业大厂校招的应届生和转岗者提供一份可落地的参考指南。

weixin_33851604的博客 326

RT-DETR训练前的准备,将数据集划分成训练集、测试集验证集(附完整脚本及使用说明)

在计算机视觉领域,当我们着手训练一个模型时,。其中,将数据集划分为和更是一项基础性且关键的操作。这篇博客分析了这一划分背后的原因、其重要意义以及如何通过代码实现,帮助大家更好地理解和运用这一技巧,。

Limiiiing的博客 906

B 站,强的离谱!

数据结构与算法计算机网络计算机组成操作系统数据库数据结构与算法 浙江大学 —— 数据结构最经典的视频就是《浙江大学 —— 数据结构》,视频是教科书级别的,所以学完就会建立数据结构的整个体系...

480

OpenClaw进阶实战(五):多模态能力扩展——让OpenClaw看懂图片、听懂语音

本文介绍了如何在OpenClaw中实现多模态能力,包括图像文字识别(OCR)、图像描述和语音识别(ASR)三种技能。通过PaddleOCR、BLIP和Whisper等开源工具,可以本地化部署这些功能,保护数据隐私。文章详细展示了三个独立技能模块的实现代码,并提出了一个"多模态智能管家"方案,能自动识别消息类型(文本/图片/语音)并调用相应处理技能。该方案适用于电商客服、会议纪要等真实业务场景,使AI助手具备"眼睛"和"耳朵"的多模态交互能力。

PeterPan的博客 160

opencv案例实战——银行卡模式匹配识别

在之前的几篇文章中我们已经介绍了opencv的一些基础知识,本篇文章我们将结合一个案例运用之前的知识并且学习opencv中模式匹配的应用,用到的知识点如果有不清楚的可以查看上面列出来的系列文章。具体代码会放在最后。

艾醒的博客 1339

双非本科,一个月Python 从入门到精通,成功拿到了20家公司offer,我是如何做到的

个人自我介绍 鄙人出生于南方小乡镇,为了走出小镇,在当地够拼够努力,不是自夸,确确实实也算得上“别人家的小孩”,至少在学习这件事情少,没有要家里人操过心。 但高考不是特别顺利,只考了一个非985和211的本科,具体哪个学校就不说了。我的主要编程语言是C,大一到大三基本都是打游戏去了,直到大四上学期,同学们都拿到了很多公司的offer,而我也出去面试了几圈,当然也是一无所获。 奋发学习 也许是受到了刺激,看着同学都拿到了offer,在寝室谈笑风声,而我自己又前途堪忧。我毅然选择了python这个科目。因为简单

Javachichi的博客 458

android 如何分析应用的内存(十六)——使用AS查看Android堆

在前面,先介绍了如何使用jdb和VS code查看应用栈相关内容。本文将介绍,如何查看堆中的内容。

安仔的博客 4254

阅片无数。。。

大家好,我是厂长。我发现 B 站真的是学习的好地方,有不少视频真的很优质。废话不多说,直接开车啦!数据结构与算法计算机网络计算机组成操作系统数据库数据结构与算法 浙江大学 —— 数据结构最...

tanqingbo的博客 1027

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C++校招笔试核心考点:从constexpr到多线程与图像处理

C++作为系统级编程语言,其底层原理与工程实践紧密相关。在面向高性能计算与客户端开发的岗位中,理解constexpr的编译期计算、掌握移动语义的资源管理,以及正确处理多线程下的并发问题,是区分开发者水平的关键。本文从这些基础概念切入,逐步解析其背后的工作原理与技术价值,并探讨快速幂、基础排序和最小公倍数等经典算法在工程场景中的实际应用。同时,结合图像处理中的内存布局与滤波操作,展示C++技能如何落地于真实业务。最后,以美图2017年秋招C++笔试题为例,分析其考察重点与候选人分层逻辑,为备战C++开发岗位的

weixin_34357887的博客 465

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

360校招前端客观题备考指南:核心考点与刷题策略

前端技术岗位的校招笔试中,客观题是检验候选人基础知识体系的第一道门槛。这类题目覆盖面广,从JavaScript数据类型、闭包、原型链、事件循环到浏览器渲染机制、HTTP缓存策略、CSS布局与BFC,再到Vue/React框架原理和数据结构算法基础,无一不在考察开发者对底层原理的理解深度。扎实掌握这些核心概念,不仅有助于应对笔试,更能提升日常开发中排查问题与性能优化的能力。例如理解事件循环的执行顺序可避免异步代码陷阱,深入HTTP缓存机制能有效优化首屏加载速度。围绕360前端校招客观题,梳理题型分布、高频考点

weixin_34194087的博客 339

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

vivo校招在线编程笔试复盘:考点、时间管理与避坑指南

在线编程笔试是技术校招中常见的筛选环节,它和本地IDE开发有着本质区别:限时作答、自动判题、标准输入输出,任何细节失误都可能导致失分。理解在线判题系统的运行原理,掌握高效的输入输出处理技巧,是应对这类考试的基础能力。其技术价值在于考察候选人的算法功底、代码规范性和边界条件意识,应用场景覆盖互联网公司技术岗的批量筛选。从字符串处理、状态模拟到动态规划与贪心,考点分布有迹可循。合理的时间分配、正确的做题顺序以及考前限时模拟训练,能够显著提升通过率。本文以vivo 2020届校招在线编程笔试A卷为例,完整复盘从开

weixin_34221654的博客 226

找出前1000个素数

快速求素数,缩短时间,利用根号

weixin_61009782的博客 590

42、用数组输出10行杨辉三角形

【代码】42、用数组输出10行杨辉三角形。

m0_74282485的博客 469

数组元素逆置

描述 编程读入10个整数存入数组中,正序输出后,将数组元素逆序重置后再输出。‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬ 输入输出示例 #include<stdio.h> #define N 10 void reverse(int a[])//实现数组元素的逆序存放 { int i; for(i=9;i>=0;i--)..

专注于嵌入式开发领域 1548
上一篇: C语言初阶②(分支语句和循环语句)编程练习
下一篇: 绝对零基础的C语言科班作业⑧函数(日期间隔,约数个数,素分解式,亲和数对,孪生素数对,计算器)
GR鲸鱼
GR鲸鱼 新星创作者: C/C++技术领域 新星创作者: C/C++技术领域
博客等级 码龄4年 6227粉丝 228原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GR鲸鱼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值