• 2024年湖北专升本C语言模拟试卷(1)


    2024年湖北专升本C语言模拟试卷(1)

    一、填空(10道,在____处填答案,一处2分)
    1、如果想要释放通过 malloc 分配的动态内存,应该使用的函数是 _____。
    2、在C语言中,使用 strcat 函数连接两个字符串时,需要确保目标字符串有足够的空间来存储连接后的字符串。strcat 函数的原型在 string.h 头文件中,它的原型是 _____。
    3、在C语言中,union 允许在同一内存位置存储不同的数据类型。union 的大小至少是其最大成员的大小。假设有一个 union 如下定义:
    union Data {
        int i;
        float f;
        char str[20];
    };
    这个 union 的大小至少是 _____ 字节。
    4、在C语言中,宏定义可以通过 #define 指令实现。如果有一个宏定义如下:
    #define PI 3.14159
    那么在代码中使用这个宏,可以通过 _____ 来替换其定义的值。
    5、若已知 a=10, b=15, c=1。 则表达式 a*b&&c 的运算结果为________。
    6、若有以下定义和语句:int a[5]={9,8,7,6,5}; *p; p=&a[3];则*--p 的值是_________。
    7、#include
    main()
    {char a[10]=”123456789”,*p; p=&a[4]; puts(p); }
    以上程序的输出结果为___________。
    8、C 语言的数组名是一个________常量, 不能对它进行加减和赋值等运算。
    9、判断字符型变量 ch 是否为大写字母的表达式是________。
    10、说明 char s1[]=“china” ,s2[10]; 要将 s1 的值复制到 s2 中的正确语句是________。
    二、程序改错(10道,一处4分)
    1、
    #include
    int main() {
        int arr[5] = {1, 2, 3, 4, 5};
        printf("%d", arr[5]); 
    }
    2、
    #include
    int main() {
        int a = 10, b = 20;
        if (a = b) {
            printf("a等于b\n");
        } else {
            printf("a不等于b\n");
        }
        return 0;
    }
    3、
    #include
    #include

    int main() {
        int *p = malloc(sizeof(int));
        *p = 100;
        printf("p = %d\n", *p);
        return 0;
    }
    4、
    #include
    int main() {
    int num = 5;
    printf("The number is %s\n", num); 
    return 0;
    }
    5、
    #include

    int main() {
        int a = 5;
        int *p = NULL;
        printf("%d", *p); 
        return 0;
    }
    6、
    #include

    int main() {
        struct Point {
            int x;
            int y;
        };

        struct Point *ptr;
        ptr->x = 5;
        ptr->y = 10;

        printf("Coordinates: (%d, %d)", ptr->x, ptr->y);
        return 0;
    }
    7、
    #include

    struct Person {
        char name[20];
        int age;
    };

    int main() {
        struct Person person1;
        person1.name = "John";
        person1.age = 30;

        printf("Name: %s, Age: %d", person1.name, person1.age);
        return 0;
    }
    8、
    #include

    int main() {
        int a = 5, b = 10;
        int *ptr = &a;
        *ptr = &b;

        printf("a: %d, b: %d", a, b);
        return 0;
    }
    9、
    #include

    int main() {
        struct Student {
            char name[20];
            int age;
        };

        struct Student *ptr;
        ptr->name = "Alice";
        ptr->age = 25;

        printf("Student: %s, Age: %d", ptr->name, ptr->age);
        return 0;
    }

    10、
    #include

    int main() {
        struct Date {
            int day;
            int month;
            int year;
        };

        struct Date *ptr;
        ptr->day = 10;
        ptr->month = 4;
        ptr->year = 2024;

        printf("Date: %d/%d/%d", ptr->day, ptr->month, ptr->year);
        return 0;
    }
    三、程序阅读(8道,一处5分)
    1.有下列程序
    void main()
    {  
    int n=0,m=1,x=0;
    if (!n)  x=1;
    if (m)  x=2;
    if (x)  x=3; 
    printf(“%d\n”,x);
    }
    执行后的结果是________。
    2. 有以下程序
    void main()
    {
        char v2[] = "0010110101000001", * p;
        unsigned int v10, t;
        v10 = 0;                    
        p = v2;                     
        while (*p != '\0')
        {
            t = *p - '0';
            v10 = v10 * 2 + t;
            p++;                    
        }
        printf("\n%s 转换为整数: %u\n", v2, v10);
    }
    执行后的结果是________。
    3. 以下程序
    int main() {
        char s[] = "6789";
        s[1] = '\0'; 
        printf("%s\n", s); 
        return 0; 
    }
    执行后的结果是________。
    4. 有以下程序
    int main() {
        int a = 4, b = 3, c = 2, t = 0;
        if (b > a && a < c) {
            t = a;
            a = c;
            c = t;
        }
        printf("%d ", c);
        return 0; 
    }
    执行后的结果是________。
    5. 有以下程序
    #include
    void main()
    {
        int i, j, flag, n;
        n = 0;
        i = 2016;
        while (n < 1 && i--)
        {
            flag = 0;
            for (j = 2; j < i; j++)
                if (i % j == 0)
                {
                    flag = 1;
                    break;
                }
            if (flag == 0)
            {
                n = n + 1;
                printf("%d\n", i);
            }
            i = i + 2;
        }
    }
     执行后的结果是________。
    6. 有以下程序
    void main()
    {  int a=1,b=3,c=5;
       int *p1=&a,*p2=&b,*p=&c;
       *p=*p1*(*p2);
       printf("%d\n",c);
    }
    执行后的结果是________。
    7. 有以下程序
    #include

    void main()
    {
        char a[6] = "54321", temp;
        int i, k;
        for (i = 1; i <= 5; i++)
        {
            printf("%s\n", a);
            temp = a[0];
            for (k = 0; k < 4; k++)
                a[k] = a[k + 1];
            a[4] = temp; 
        }
    }
    执行后的结果是________。
    8. 有以下程序
    #include
    void main()
    {
        int i, g, s, b, count;
        count = 0;                      
        for (i = 100; i <= 999; i++)
        {
            g = i % 10;
            s = i / 10 % 10;
            b = i / 100;               
            if ((g + s) * b == 28)
            {
                count++;
            }
        }
        printf("%d\n", count);
    }
    执行后的结果是________。
    四、大题(5道,一处10分)
    1、
    古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
    2、
    求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时共有5个数相加),几个数相加有键盘控制。
    3、
    一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如6=1+2+3.编程找出1000以内的所有完数。
    4、
    有形如:ax3+bx2+cx+d=0这样的一个一元三次方程。
    给出该方程中各项的系数(a,b,c,d均为实数),并约定该方程存在三个不同实根(根的范围在 −100至 100 之间),且根与根之差的绝对值 ≥1。
    要求由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。
    提示:记方程 f(x)=0,若存在 2个数 x1和 x2,且 x1 输入格式:共一行,包含四个实数 a,b,c,d。
    输出格式:由小到大依次在同一行输出这三个实根(根与根之间留有空格),并精确到小数点后 2 位。
    数据范围:−20≤a,b,c,d≤20
    输入样例:1 -5 -4 20
    输出样例:-2.00 2.00 5.00
    5、
    某班有 n个学生,学习能力分别为 a1,a2,…,an。
    为了保证全班学生都能跟得上讲课,该班的讲课速度恰好等于班级内学习能力最低的学生的学习能力。

    请你计算并输出,该班的讲课速度。

    输入格式:第一行包含整数 n。
            第二行包含 n个整数 a1,a2,…,an。
    输出格式:一个整数,表示该班的讲课速度。
    数据范围
    前 3个测试点满足 1≤n≤10。
    所有测试点满足 1≤n≤100,1≤ai≤100。
    输入样例:
    3
    4 5 6
    输出样例:
    4

    参考答案

    1. 一、填空(10道,在____处填答案,一处2分)
    2. 1、free
    3. 2char *strcat(char *dest, const char *src);
    4. 320
    5. 4、PI
    6. 51
    7. 67
    8. 756789
    9. 8、指针
    10. 9、ch >= 'A' && ch <= 'Z'
    11. 10strcpy(s2, s1);
    12. 二、程序改错(10道,一处4分)
    13. 1
    14. #include
    15. int main() {
    16. int arr[5] = {1, 2, 3, 4, 5};
    17. printf("%d", arr[4]);
    18. return 0;
    19. }
    20. 2
    21. #include
    22. int main() {
    23. int a = 10, b = 20;
    24. if (a == b) {
    25. printf("a等于b\n");
    26. } else {
    27. printf("a不等于b\n");
    28. }
    29. return 0;
    30. }
    31. 3
    32. #include
    33. #include
    34. int main() {
    35. int *p = malloc(sizeof(int));
    36. *p = 100;
    37. printf("p = %d\n", *p);
    38. free(p);
    39. return 0;
    40. }
    41. 4
    42. #include
    43. int main() {
    44. int num = 5;
    45. printf("The number is %d\n", num);
    46. return 0;
    47. }
    48. 5
    49. #include
    50. int main() {
    51. int a = 5;
    52. int *p = &a;
    53. printf("%d", *p);
    54. return 0;
    55. }
    56. 6
    57. #include
    58. struct Point {
    59. int x;
    60. int y;
    61. };
    62. int main() {
    63. struct Point point = {5, 10};
    64. struct Point *ptr = &point;
    65. printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y);
    66. return 0;
    67. }
    68. 7
    69. #include
    70. #include
    71. struct Person {
    72. char name[20];
    73. int age;
    74. };
    75. int main() {
    76. struct Person person1;
    77. strcpy(person1.name, "John");
    78. person1.age = 30;
    79. printf("Name: %s, Age: %d\n", person1.name, person1.age);
    80. return 0;
    81. }
    82. 8
    83. #include
    84. int main() {
    85. int a = 5, b = 10;
    86. int *ptr = &a;
    87. ptr = &b;
    88. printf("a: %d, b: %d", a, b);
    89. return 0;
    90. }
    91. 9
    92. #include
    93. struct Student {
    94. char name[20];
    95. int age;
    96. };
    97. int main() {
    98. struct Student student = {"Alice", 25}; // 初始化一个Student结构体实例
    99. struct Student *ptr = &student; // 将指针指向这个实例
    100. printf("Student: %s, Age: %d\n", ptr->name, ptr->age);
    101. return 0;
    102. }
    103. 10
    104. #include
    105. struct Date {
    106. int day;
    107. int month;
    108. int year;
    109. };
    110. int main() {
    111. struct Date date = {10, 4, 2024};
    112. struct Date *ptr = &date;
    113. printf("Date: %d/%d/%d\n", ptr->day, ptr->month, ptr->year);
    114. return 0;
    115. }
    116. 三、程序阅读(8道,一处5分)
    117. 13
    118. 211585
    119. 36
    120. 42
    121. 52017
    122. 63
    123. 754321,43215,32154,21543,15432
    124. 818
    125. 四、大题(5道,一处10分)
    126. 1
    127. #include
    128. int fibonacci(int n) {
    129. if (n <= 1)
    130. return n;
    131. else
    132. return fibonacci(n - 1) + fibonacci(n - 2);
    133. }
    134. int main() {
    135. int months;
    136. printf("请输入月份:");
    137. scanf("%d", &months);
    138. int i, rabbits = 0, prev_rabbits = 1, temp;
    139. for (i = 0; i < months; i++) {
    140. temp = rabbits;
    141. rabbits += prev_rabbits;
    142. prev_rabbits = temp;
    143. }
    144. printf("第 %d 个月的兔子总数为 %d 对。\n", months, rabbits);
    145. return 0;
    146. }
    147. 2
    148. #include
    149. int main() {
    150. int a, n;
    151. printf("请输入数字 a 和相加的个数 n:");
    152. scanf("%d %d", &a, &n);
    153. int i;
    154. long long int sum = 0, term = 0;
    155. for (i = 1; i <= n; i++) {
    156. term = term * 10 + a;
    157. sum += term;
    158. }
    159. printf("表达式的值为:%lld\n", sum);
    160. return 0;
    161. }
    162. 3
    163. #include
    164. int main() {
    165. int i, j, sum;
    166. printf("1000以内的完数有:\n");
    167. for (i = 2; i <= 1000; i++) {
    168. sum = 1; // 初始化为1,因为1是所有数的因子
    169. // 找出因子并求和
    170. for (j = 2; j <= i / 2; j++) {
    171. if (i % j == 0) {
    172. sum += j;
    173. }
    174. }
    175. // 如果因子和等于数本身,则打印该数
    176. if (sum == i) {
    177. printf("%d ", i);
    178. }
    179. }
    180. printf("\n");
    181. return 0;
    182. }
    183. 4
    184. #include
    185. #include
    186. double a, b, c, d, A, B, T, h, x1, x2, x3;
    187. int main()
    188. {
    189. scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
    190. A = b * b - 3 * a * c;
    191. B = b * c - 9 * a * d;
    192. T = (2 * A * b - 3 * a * B) / (2 * pow(A * A * A, 0.5));
    193. h = acos(T);
    194. x1 = (-b - pow(A, 0.5) * cos(h / 3) * 2) / 3 / a;
    195. x2 = (-b + pow(A, 0.5) * (cos(h / 3) - sqrt(3) * sin(h / 3))) / (3 * a);
    196. x3 = (-b + pow(A, 0.5) * (cos(h / 3) + sqrt(3) * sin(h / 3))) / (3 * a);
    197. printf("%.2lf %.2lf %.2lf", x1, x2, x3);
    198. return 0;
    199. }
    200. 5
    201. #include
    202. int main() {
    203. int n;
    204. printf("请输入学生数量:");
    205. scanf("%d", &n);
    206. int abilities[n];
    207. printf("请输入学生的学习能力:");
    208. for(int i = 0; i < n; i++) {
    209. scanf("%d", &abilities[i]);
    210. }
    211. // 找到最小的学习能力
    212. int min_ability = abilities[0];
    213. for(int i = 1; i < n; i++) {
    214. if(abilities[i] < min_ability) {
    215. min_ability = abilities[i];
    216. }
    217. }
    218. printf("该班的讲课速度为:%d\n", min_ability);
    219. return 0;
    220. }

  • 相关阅读:
    算法leetcode|88. 合并两个有序数组(rust重拳出击)
    设计一个时间类
    StretchBlt()、Bitblt用法详解
    在 Python 中使用 Pillow 进行图像处理【2/4】
    汽车3D HMI图形引擎选择
    【阿卡乐谱】【日常分享】超级强大的简谱-大海啊,故乡
    柯桥会计培训|中级会计职称,考过中级,可以从事哪些工作?
    Abnova丨培养细胞总 RNA 纯化试剂盒中英文说明书
    【趣味随笔】移动机器人基础(导航方式、自主导航、硬件系统结构分布)
    如何爬出 Kotlin 协程死锁的坑?
  • 原文地址:https://blog.csdn.net/m0_74293254/article/details/138200061