0
点赞
收藏
分享

微信扫一扫

一文彻底搞懂大模型 - LLM四阶段技术

作业一

数组练习

  1. 选择题

1.1、若有定义语句:int a[3][6]; ,按在内存中的存放顺序,a 数组的第10个元素是
解析:
解答:

B

1.2、有数组 int   a[5] = {10,20,30,40,50},  以下表达式编译错误是____________。
解析:
解答:

A

1.3、以下错误的定义语句是 _______   
解析:
解答:

C

1.4、int i,x[3][3]={1,2,3,4,5,6,7,8,9};则下面语句
解析:
解答:

D

1.5、表达式“sizeof(int [1][2])/sizeof(int)”的值为_____
解析:
解答:

A

1.6有以下程序
解析:
解答:

C

1.7、有以下程序
解析:
解答:

1.8  数组  int  a[5] = {10, 20, 30, 40,50}, 有以下语句,其输出_______
解析:
解答:

C

1.9  有以下程序
解析:
解答:

 A

 1.10   有数组  int  a[3][4] = {10,20,30,40,50,60,70,80,90,100,110,120},执行以下语句输出的是_______________
解析:
解答:

D

2、填空题

    2.1、有以下程序
解析:
解答:

141340

    2.2、执行以下程序的输出结果是_                   .
解析:
解答:

3715

2.3、下面程序运行的结果为_________。
解析:
解答:

358

2.4、有以下程序
解析:
解答:

1523

2.5下面程序运行的结果为_________。
解析:
解答:

5 4 8 2 0

   2.6有以下程序
解析:
解答:

3

 3、编程题

3.1、 一个班10个学生的成绩,存放在一个一维数组中,要求找出其中成绩最高的学生的成绩和该生的序号。试编程。(试着用下标法和地址法两种方法表示数组)
代码解答:

下标法:

#include <stdio.h>

int main() {
    int scores[10] = {85, 92, 78, 90, 88, 95, 82, 80, 91, 89}; // 假设的成绩
    int maxScore = scores[0]; // 假设第一个学生成绩为最高分
    int maxIndex = 0; // 最高分的序号(下标)

    // 找到最高分和对应的序号
    for (int i = 1; i < 10; i++) {
        if (scores[i] > maxScore) {
            maxScore = scores[i]; // 更新最高分
            maxIndex = i; // 更新最高分序号
        }
    }

    // 输出结果
    printf("最高成绩: %d\n", maxScore);
    printf("该生的序号: %d\n", maxIndex + 1); // 序号从 1 开始

    return 0;
}

地址法:

#include <stdio.h>

int main() {
    int scores[10] = {85, 92, 78, 90, 88, 95, 82, 80, 91, 89}; // 假设的成绩
    int maxScore = *scores; // 假设第一个学生成绩为最高分
    int maxIndex = 0; // 最高分的序号(下标)

    // 找到最高分和对应的序号
    for (int i = 1; i < 10; i++) {
        if (*(scores + i) > maxScore) {
            maxScore = *(scores + i); // 更新最高分
            maxIndex = i; // 更新最高分序号
        }
    }

    // 输出结果
    printf("最高成绩: %d\n", maxScore);
    printf("该生的序号: %d\n", maxIndex + 1); // 序号从 1 开始

    return 0;
}

3.2、有5个学生上4门课程,要求输入全部学生的各门课程成绩,然后输出各门课程的平均成绩,并按照各个学生的平均成绩排序(成绩最高的学生排在数组最前面,最低学生排在数组最后面的行) (试着用下标法和地址法两种方法表示数组)。

代码解答:

下标法:

#include <stdio.h>

#define STUDENTS 5
#define SUBJECTS 4

int main() {
    int scores[STUDENTS][SUBJECTS]; // 存储学生成绩
    float avgScores[STUDENTS]; // 存储每个学生的平均成绩
    float subjectAverages[SUBJECTS] = {0}; // 存储每门课程的平均成绩

    // 输入学生的成绩
    for (int i = 0; i < STUDENTS; i++) {
        printf("输入第 %d 个学生的4门课程成绩:\n", i + 1);
        for (int j = 0; j < SUBJECTS; j++) {
            printf("课程 %d: ", j + 1);
            scanf("%d", &scores[i][j]);
        }
    }

    // 计算每个学生的平均成绩
    for (int i = 0; i < STUDENTS; i++) {
        float total = 0;
        for (int j = 0; j < SUBJECTS; j++) {
            total += scores[i][j];
        }
        avgScores[i] = total / SUBJECTS;
    }

    // 计算每门课程的平均成绩
    for (int j = 0; j < SUBJECTS; j++) {
        float total = 0;
        for (int i = 0; i < STUDENTS; i++) {
            total += scores[i][j];
        }
        subjectAverages[j] = total / STUDENTS;
    }

    // 按照学生的平均成绩排序(简单选择排序)
    for (int i = 0; i < STUDENTS - 1; i++) {
        for (int j = i + 1; j < STUDENTS; j++) {
            if (avgScores[i] < avgScores[j]) {
                // 交换平均成绩
                float temp = avgScores[i];
                avgScores[i] = avgScores[j];
                avgScores[j] = temp;

                // 同时交换对应的成绩
                for (int k = 0; k < SUBJECTS; k++) {
                    int tempScore = scores[i][k];
                    scores[i][k] = scores[j][k];
                    scores[j][k] = tempScore;
                }
            }
        }
    }

    // 输出每门课程的平均成绩
    printf("\n各门课程的平均成绩:\n");
    for (int j = 0; j < SUBJECTS; j++) {
        printf("课程 %d: %.2f\n", j + 1, subjectAverages[j]);
    }

    // 输出每个学生的成绩和平均成绩
    printf("\n学生的成绩及平均成绩:\n");
    for (int i = 0; i < STUDENTS; i++) {
        printf("第 %d 个学生成绩: ", i + 1);
        for (int j = 0; j < SUBJECTS; j++) {
            printf("%d ", scores[i][j]);
        }
        printf(" | 平均成绩: %.2f\n", avgScores[i]);
    }

    return 0;
}

地址法:

#include <stdio.h>

#define STUDENTS 5
#define SUBJECTS 4

int main() {
    int scores[STUDENTS][SUBJECTS]; // 存储学生成绩
    float avgScores[STUDENTS]; // 存储每个学生的平均成绩
    float subjectAverages[SUBJECTS] = {0}; // 存储每门课程的平均成绩

    // 输入学生的成绩
    for (int i = 0; i < STUDENTS; i++) {
        printf("输入第 %d 个学生的4门课程成绩:\n", i + 1);
        for (int j = 0; j < SUBJECTS; j++) {
            printf("课程 %d: ", j + 1);
            scanf("%d", (*(scores + i) + j)); // 地址法输入
        }
    }

    // 计算每个学生的平均成绩
    for (int i = 0; i < STUDENTS; i++) {
        float total = 0;
        for (int j = 0; j < SUBJECTS; j++) {
            total += *(*(scores + i) + j); // 地址法计算
        }
        avgScores[i] = total / SUBJECTS;
    }

    // 计算每门课程的平均成绩
    for (int j = 0; j < SUBJECTS; j++) {
        float total = 0;
        for (int i = 0; i < STUDENTS; i++) {
            total += *(*(scores + i) + j); // 地址法计算
        }
        subjectAverages[j] = total / STUDENTS;
    }

    // 按照学生的平均成绩排序(简单选择排序)
    for (int i = 0; i < STUDENTS - 1; i++) {
        for (int j = i + 1; j < STUDENTS; j++) {
            if (avgScores[i] < avgScores[j]) {
                // 交换平均成绩
                float temp = avgScores[i];
                avgScores[i] = avgScores[j];
                avgScores[j] = temp;

                // 同时交换对应的成绩
                for (int k = 0; k < SUBJECTS; k++) {
                    int tempScore = *(*(scores + i) + k);
                    *(*(scores + i) + k) = *(*(scores + j) + k);
                    *(*(scores + j) + k) = tempScore;
                }
            }
        }
    }

    // 输出每门课程的平均成绩
    printf("\n各门课程的平均成绩:\n");
    for (int j = 0; j < SUBJECTS; j++) {
        printf("课程 %d: %.2f\n", j + 1, subjectAverages[j]);
    }

    // 输出每个学生的成绩和平均成绩
    printf("\n学生的成绩及平均成绩:\n");
    for (int i = 0; i < STUDENTS; i++) {
        printf("第 %d 个学生成绩: ", i + 1);
        for (int j = 0; j < SUBJECTS; j++) {
            printf("%d ", *(*(scores + i) + j)); // 地址法输出
        }
        printf(" | 平均成绩: %.2f\n", avgScores[i]);
    }

    return 0;
}

作业二

指针练习

  1. 选择题

1.1、若有下面的变量定义,以下语句中合法的是(    )。
解析:
解答:

A

1.2、有以下程序
解析:
解答:

D

1.3、有以下程序
解析:
解答:

C

1.4、有以下程序
解析:
解答:

A

1.5、有以下程序
解析:
解答:

A

1.6、有以下程序
解析:
解答:

A

1.7、设有如下定义语句 int m[ ]={2,4,6,8},   *k=m;

解析:
解答:

 A

1.8、若有定义语句:int year=2009,*p=&year;,以下不能使变量 year 中的值增至 2010 的语 句是(  )。
解析:
解答:

 D

1.9、设有定义:double x[10],*p=x;,以下能给数组 x 下标为 6 的元素读入数 据的正确语句是
解析:
解答:

 C

1.10、若有定义语句:char s[3][10],   (*k)[3],   *p; ,则以下赋值语句正确的是____
解析:
解答:

 B

1.11、有定义语句:int *p[4]; 以下选项中与此语句等价的是
解析:
解答:

 C

1.12、若有定义语句:int a[4][10], *p, *q[4]; 且 0≤i<4,则错误的赋值 是
解析:
解答:

A

1.13、若有以下定义
解析:
解答:

B

1.14、有以下程序
解析:
解答:

D

1.15、设char  *s = “\ta\017bc”;则指针变量s指向的字符串所占的字节数是_______
解析:
解答:

A

1.16、  若有定义语句:char s[3][10],  (*k)[3],   *p;,则以下赋值语句正确的是 A)p=s; B)p=k; C)p=s[0]; D)k=s;
解析:
解答:

C

2、填空题

2.1以下程序的输出结果是_______
解析:
解答:

6

2.2、以下程序段的定义语句中,x[1]的初值是_____,程序运行后输出的内容是_______
解析:
解答:

2        2468

    2.3  以下程序段的输出结果是( )
解析:
解答:

rgb

       2.4、以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。 请在输出语句中填写代表最大值的输出项。
解析:
解答:

*s,s-a

2.5 有以下程序,输出结果为_________
解析:
解答:

2,5

2.6  以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。 请在输出语句中填写代表最大值的输出项。
解析:
解答:

*s,s-a

3、编程题

3.1、 有一个整型数组int [10] = {10,20,30,40,50,60,70,80,90,100};标准输入一个整型数值m(0<m<10) ,使前面10-m个数值向后移动m个位置,最后m个数变成前面的m个数
代码解答: 
#include <stdio.h>

int main() {
    int arr[10] = {10, 20, 30, 40, 50, 60, 70, 80, 90, 100};
    int m;

    // 输入m的值,确保0 < m < 10
    printf("请输入一个整数 m (0 < m < 10): ");
    scanf("%d", &m);
    
    // 检查输入的合法性
    if (m <= 0 || m >= 10) {
        printf("输入不合法!m的值必须在0到10之间。\n");
        return 1; // 结束程序
    }

    // 移动数组
    // 从后往前移动
    for (int i = 9; i >= m; i--) {
        arr[i] = arr[i - m];
    }

    // 将最后m个数变成前面的m个数
    for (int i = 0; i < m; i++) {
        arr[i] = 10 * (i + 1); // 将前m个数设为10, 20, 30, ...
    }

    // 输出结果
    printf("移动后的数组为:");
    for (int i = 0; i < 10; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}

                     

作业三

结构体共用体练习

  1. 选择题

   1.1、设有以下语句:
解析:
解答 :

D

1.2、下列关于结构的说法错误的是______.
解析:
解答 :

D

1.3、以下结构体类型说明和变量定义中,正确的是______。
解析:
解答 :
C
1.4、设有以下说明语句:
解析:
解答 :

C

1.5、根据下面的定义,能打印出字母M的语句是____________。
解析:
解答 :

D

1.6、若有如下定义:
解析:
解答 :

C

1.7、下面程序的运行结构是____________。
解析:
解答 :

D

1.8、若有以下定义和语句:
解析:
解答 :

D

1.9、设有以下定义和语句,以下引用形式不合法的是____________。
解析:
解答 :

D

1.10、设有如下定义:
解析:
解答 :

C

1.11、若有以下程序段:
解析:

此时 p 指向 s[0],(*p).m 是 s[0].m,即 &a,值为 1。

解答 :

AD

1.12、若有以下说明和语句,则对pup中sex域的正确引用方式是____________
解析:
解答 :

D

1.13、以下程序的输出结果是____________。
解析:
解答 :

C

1.14、若有以下说明和语句,则下面表达式中值为1002的是____________。
解析:
解答 :

D

1.15、以下对结构体变量stu1中成员age的非法引用是____________。
解析:
解答 :

B

1.16、 设有以下说明和定义语句,则下面表达式中值为3的是____________
解析:
解答 :

D

1.17、若有以下定义和语句:
解析:
解答 :

B

1.18、以下程序在32位操作系统的运行结果是____________。
解析:
解答 :

B

1.19、以下程序的运行结果是____________
解析:
解答 :

A

1.20、下面对typedef的叙述中不正确的是____________
解析:
解答 :

B

1.21、下面程序在64位操作系统的运行结果是____________。
解析:
解答 :

B

二、填空题

2.1、有结构体
解析:

要定义一个包含结构体 ST 类型元素的数组 s,需要将结构体 ST 的定义放在数组定义之前

解答 :

struct ST

2.2、 以下程序的运行结果是____________。
解析:

没传地址,所以原变量不变

解答 :

10 x

2.3、以下程序的运行结果是_____
解析:

e.in.x 被赋值为 e.a 和 e.b 的乘积,即 1 * 2 = 2。

e.in.y 被赋值为 e.a 和 e.b 的和,即 1 + 2 = 3。

解答 :

2,3

2.4、 以下程序的输出结果是____________。
解析:

fun1是值传送,原变量不变,fun2是地址传送原变量发生改变

解答 :

B, 98.5
C, 92.5

2.8、若已定义:
解析:
解答 :

16,6.0

2.9、以下程序的运行结果是____________。
解析:
解答 :

5,5

2.10、以下程序的运行结果为____________
解析:
解答 :

19 83.5zhang
19 83.5zhang
yhang

2.11、设有以下定义和语句,请在printf语句的【】中天上能够正确输出的变量及相应的格式说明。
解析:
解答 :

printf("%f", num.x);

2.12、以下程序的运行结果是____________。
解析:
解答 :

3,3

2.13、以下程序的运行结果是____________。
解析:
解答 :

7,11

2.14、以下程序的运行结果是____________
解析:
解答 :

4,8

2.15、以下程序的运行结果为____________。
解析:
解答 :

1234
12
34
12ff

2.16、以下程序的输出结果为____________
解析:
解答 :

2 5
dime dollar
 

2.17、以下程序的输出结果是____________。
解析:
解答 :

a = 5      b = 6
2*INT = 6.00
 

举报

相关推荐

0 条评论