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

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

一、单选(10道)
1、在 C 语言中,用于表示“与”逻辑运算的符号是?()
a) &&
b) ||
c) !
d) &
2、在 C 语言中,以下哪个选项正确定义了一个具有三个参数的函数指针?()
a) int (*funcPtr)();
b) int (*funcPtr)(int, float);
c) int funcPtr(int, float);
d) int funcPtr(int, int, int);
3、在 C 语言中,下列哪个关键字用于定义一个常量?()
a) var
b) const
c) let
d) final
4、在 C 语言中,以下哪个关键字用于在条件语句中执行一段代码块,只要条件为真就会一直执行?()
a) for
b) while
c) do
d) switch
5、在 C 语言中,以下哪个运算符用于获取变量的地址?()
a) *
b) &
c) ->
d) ~
6、下列哪个函数用于在 C 语言中从标准输入读取一个字符?()
a) scanf()
b) gets()
c) getchar()
d) read()
7、下列哪个函数用于在 C 语言中将一个整数转换为字符串?()
a) itoa()
b) atoi()
c) sprintf()
d) strcat()
8、在 C 语言中,以下哪个选项正确地声明了一个指向整型数组的指针?()
a) int *ptr[];
b) int (*ptr)[];
c) int *ptr();
d) int ptr[]();
9、在 C 语言中,以下哪个选项是有效的动态内存分配语句?()
a) malloc(sizeof(int));
b) calloc(sizeof(int));
c) realloc(sizeof(int));
d) free(sizeof(int));
10、下列哪个选项能够正确交换两个整型变量的值?()
a)void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}
b)void swap(int *a, int *b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}
c)int swap(int a, int b) {
    return b, a;
}
d)int swap(int &a, int &b) {
    int temp = a;
    a = b;
    b = temp;
}
二、填空(10道,在____处填答案)
1、
以下程序运行后的输出结果是____。
void swap(int x,int y)
{ int t;
t=x;x=y;y=t;
printf("%d %d ",x,y);
}
main()
{ int a=3,b=4;
swap(a,b);
printf("%d %d\n",a,b);
}
2、
以下程序运行后的输出结果是____。
int fun(int n)
{ switch(n)
{ case 0: return 0;
case 1: return 1;
case 2: return 1;
default: return fun(n-1)+fun(n-2);
}
}
main()
{ int n=7,s;
s=fun(n);
printf("%d\n",s);
}
3、
输入一个字符串,将其倒序后输出
main()
{ int i,j;
char st[60],ch;
scanf("%s",st);
for(i=0,j=____;____;i++,j--)
{     ch=st[i];
    ________;
    st[j]=ch;
}
printf("%s\n",st);
}
4、
输入字符串,将其中的非数字字符删除后,输出整个字符串
main()
{ char st[80];
int i=0,j=0;
scanf("%s",st);
while(st[i])
{ if(________)
st[____]=st[i];
i++;
}
________;
printf("%s\n",st);
}
5、
有以下结构体说明,请填空,以完成对结构体数组 t 定义:
struct STR
{ char a;
int b;
float c;
double d;
};
________t[20];
6、
在 C 语言中,有如下语句:
struct cat
{ int a[10];
char ch;
float f;
double *p;
} cat1;
则结构体变量 cat1 占用内存的字节数为____。
7、
在 C 语言中,有如下语句:
struct std
{ char ch;
int a[2];
float t;
double f
} std1;
则结构体变量 std1 占用内存的字节数为____。
8、
以下程序运行后的输出结果是____。
main()
{ char str[][20]={"China","Beijing"},*p=str;
printf("%s\n",p+20);
}
9、
以下程序运行后的输出结果是____。
main()
{ char a[]={‘\1’,‘ \2’,‘ \3’,‘ \4’,‘ \0’};
printf("%d %d\n",sizeof(a),strlen(a)); }
10、
以下程序运行后的输出结果是____。
main()
{ char *s1="12345",*s2="1234";
printf("%d\n",strlen(strcat(s1,s2)));
}
三、程序改错(10道)
1、错误的程序:
#include <stdio.h>

int main()
{
    float radius;
    printf("输入圆的半径: ");
    scanf("%f", &radius);
    area = 3.14 * radius * radius;
    printf("Area of the circle is: %f\n", area);
    return 0;
}
2、错误的程序:
#include <stdio.h>

int main() {
    int n;
    printf("输入一个数字:");
    scanf("%d", n);
    if (n % 2 == 0) {
        printf("%d 是偶数\n", n);
    } else {
        printf("%d 是奇数\n", n);
    }
    return 0;
}
3、错误的程序:
#include <stdio.h>

int main() {
    int num;
    printf("Enter a number: ");
    scanf("%d", &num);
    if (num % 2) {
        printf("%d is odd\n", num);
    } else {
        printf("%d is even\n", num);
    }
    return 0;
}
4、错误的程序:
#include <stdio.h>

int main() {
    int a = 5, b = 10;
    printf("Sum of a and b is: %d\n", sum(a, b));
    return 0;
}

int sum(int x, int y) {
    return x + y;
}
5、错误的程序:
#include <stdio.h>

void increment(int *x) {
    x++;
}

int main() {
    int num = 5;
    increment(num);
    printf("Incremented value: %d\n", num);
    return 0;
}
6、错误的程序:
#include <stdio.h>

void printArray(int arr[]) {
    int i;
    for (i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    printArray(arr);
    return 0;
}
7、错误的程序:
#include <stdio.h>

int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", &n);
    if (n > 0);
    printf("%d is positive\n", n);
    else if (n < 0);
    printf("%d is negative\n", n);
    else
    printf("%d is zero\n", n);
    return 0;
}
8、错误的程序:
#include <stdio.h>

int main() {
    int n;
    printf("Enter a number: ");
    scanf("%d", n);
    printf("Square of %d is: %d\n", n, square(n));
    return 0;
}

int square(int x) {
    return x * x;
}
9、错误的程序:
#include <stdio.h>

int main() {
    int x = 5;
    int y = 10;
    swap(&x, &y);
    printf("x: %d, y: %d\n", x, y);
    return 0;
}

void swap(int a, int b) {
    int temp = a;
    a = b;
    b = temp;
}
10、错误的程序:
#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    printf("Sum of array elements: %d\n", sum(arr));
    return 0;
}

int sum(int arr[]) {
    int sum = 0;
    for (int i = 0; i < sizeof(arr) / sizeof(arr[0]); i++) {
        sum += arr[i];
    }
    return sum;
}
四、程序阅读(4道)
1、
#include <stdio.h>

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int *ptr = arr;

    printf("结果为: ");
    for (int i = 0; i < 5; ++i) {
        printf("%d ", *ptr);
        ptr++;
    }
    printf("\n");

    return 0;
}
结果为:
2、
#include <stdio.h>

int main() {
    int num=10;
    int sum = 0;

    for (int i = 1; i <= num; ++i) {
        sum += i;
    }

    printf("结果为%d\n",sum);

    return 0;
}
结果为:
3、
#include <stdio.h>

int main() {
    int n=10;
    int fib[50];

    fib[0] = 0;
    fib[1] = 1;

    for (int i = 2; i < n; ++i) {
        fib[i] = fib[i - 1] + fib[i - 2];
    }

    printf("结果为: ");
    for (int i = 0; i < n; ++i) {
        printf("%d ", fib[i]);
    }
    printf("\n");

    return 0;
}
结果为:
4、
#include <stdio.h>

int main() {
    int num=123456789, reversedNum = 0, remainder;

    while (num != 0) {
        remainder = num % 10;
        reversedNum = reversedNum * 10 + remainder;
        num /= 10;
    }

    printf("结果为: %d\n", reversedNum);

    return 0;
}
结果为:
五、大题(5道)
1、在歌星大奖赛中, 有 10 个评委为参赛的选手打分, 分数为 1~100 分。 选手最后得分为: 去掉一个最高分和一个最低分后其余 8 个分数的平均值。 请编写一个程序实现。
2、100!的尾数有多少个零?
3、问 555555 的约数中最大的三位数是多少?
4、求 13 的 13 次方的最后三位数
5、设有一个数列包含10个数,已经按升序排好。现要求编写一程序,它能够从指定位置开始的n个数按逆序,重新排列并输出新的完整数列。
进行逆序处理时要求使用指针方法(例如原数列为2,4,6,8,10,12,14,16,18,20,若要求从第4个数开始的5个数按逆序重新排列,则得到新数列为2,4,6,16,14,12,10,8,18,20)。

参考答案

一、单选(10道)
1-5:ABBBB
6-10:CABAB
二、填空(10道,在____处填答案)
1、4 3 
	3 4
2、13
3、j = strlen(st) - 1; 
	i < j;  
	st[i]=st[j]
4、isdigit(st[i]
	j
	st[j] = '\0';
5、struct STR
6、56
7、24
8、Beijing
9、5 4
10、9
三、程序改错(10道)
1、错误:变量 area 未声明。应添加 float area;。
2、错误:scanf 应使用 &n。
3、错误:条件判断中应使用 n % 2 == 1 而不是 num % 2。
4、错误:函数 sum 未声明。int sum(int x, int y);
5、错误:
	1.void increment(int *x) {
		(*x)++; // 解引用指针并递增值
	}
	2.increment(&num); // 传递 num 的地址给 increment() 函数
6、错误:
#include <stdio.h>

void printArray(int arr[], int length) {
    int i;
    for (i = 0; i < length; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");
}

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    int length = sizeof(arr) / sizeof(arr[0]); 
    printArray(arr, length);
    return 0;
}
7、错误:if 语句后不应有分号。
8、错误:1.函数 square 未声明。    2.scanf("%d", &n);
9、错误:
#include <stdio.h>

// 声明 swap 函数,参数为指针
void swap(int *a, int *b);

int main() {
    int x = 5;
    int y = 10;
    swap(&x, &y); // 传递变量地址
    printf("x: %d, y: %d\n", x, y);
    return 0;
}

// 定义 swap 函数,参数为指针
void swap(int *a, int *b) {
    int temp = *a; // 使用 * 解引用指针获取值
    *a = *b; // 使用 * 解引用指针修改值
    *b = temp; // 使用 * 解引用指针修改值
}
10、错误:
#include <stdio.h>

// 声明 sum 函数,并传入数组和数组长度
int sum(int arr[], int length);

int main() {
    int arr[] = {1, 2, 3, 4, 5};
    // 传递数组和数组长度
    printf("Sum of array elements: %d\n", sum(arr, sizeof(arr) / sizeof(arr[0])));
    return 0;
}

// 定义 sum 函数,接收数组和数组长度
int sum(int arr[], int length) {
    int sum = 0;
    // 使用传入的数组长度来遍历数组
    for (int i = 0; i < length; i++) {
        sum += arr[i];
    }
    return sum;
}

四、程序阅读(4道)
1、结果为: 1 2 3 4 5
2、结果为55
3、结果为: 0 1 1 2 3 5 8 13 21 34
4、结果为: 987654321
五、大题(5道)
1、

#include <stdio.h>

/**
 * 计算给定分数数组的平均值。
 * @param scores 整型数组,包含需要计算平均值的分数。
 * @param size 整数,表示数组的大小。
 * @return 返回计算得到的平均值,类型为浮点数。
 */
float calculateAverage(int scores[], int size);

/**
 * 对给定的分数数组进行冒泡排序,使得数组元素按升序排列。
 * @param scores 整型数组,包含需要排序的分数。
 * @param size 整数,表示数组的大小。
 */
void sortScores(int scores[], int size);

int main() {
    int scores[10];

    // 读取10位评委的分数
    printf("请输入 10 个评委的分数(1~100):\n");
    for (int i = 0; i < 10; i++) {
        printf("评委 %d 的分数:", i + 1);
        scanf("%d", &scores[i]);
    }

    // 对分数数组进行排序
    sortScores(scores, 10);

    // 计算并输出去除一个最高分和一个最低分后的平均分
    float average = calculateAverage(scores + 1, 8); // 从第2个分数开始计算,共8个分数
    printf("选手的最终得分为:%.2f\n", average);

    return 0;
}

/**
 * 计算给定分数数组的和,并返回其平均值。
 * @param scores 整型数组,包含需要计算平均值的分数。
 * @param size 整数,表示数组的大小。
 * @return 返回计算得到的平均值,类型为浮点数。
 */
float calculateAverage(int scores[], int size) {
    int sum = 0;
    for (int i = 0; i < size; i++) {
        sum += scores[i];
    }
    return (float)sum / size;
}

/**
 * 实现冒泡排序算法,对给定的分数数组进行排序。
 * @param scores 整型数组,包含需要排序的分数。
 * @param size 整数,表示数组的大小。
 */
void sortScores(int scores[], int size) {
    for (int i = 0; i < size - 1; i++) {
        for (int j = 0; j < size - i - 1; j++) {
            if (scores[j] > scores[j + 1]) {
                // 交换相邻两个分数,以实现升序排序
                int temp = scores[j];
                scores[j] = scores[j + 1];
                scores[j + 1] = temp;
            }
        }
    }
}

2、

#include <stdio.h>

/**
 * 计算 n! 中包含的因子 x 的个数
 * @param n 待计算的阶乘数
 * @param x 要统计的因子
 * @return 返回 n! 中包含的因子 x 的个数
 */
int countFactors(int n, int x) {
    int count = 0; // 初始化统计个数为 0
    while (n > 0) { // 当 n 大于 0 时循环计算
        n /= x; // n 除以 x,将 n 中的 x 因子去除
        count += n; // 将去除 x 因子后的 n 加到 count 上,统计 x 的个数
    }
    return count; // 返回统计结果
}

int main() {
    // 计算 100! 中包含的因子 5 的个数
    int zeros = countFactors(100, 5); // 调用函数计算 100! 中包含的因子 5 的个数

    printf("100! 的尾数中有 %d 个零。\n", zeros); // 打印结果

    return 0; // 程序正常结束
}

3、

#include <stdio.h>

/**
 * 主函数,寻找555555的最大三位数约数。
 * 无参数。
 * 无返回值。
 */
int main() {
    int number = 555555; // 待查找约数的数值
    int max_three_digit_divisor = -1; // 初始值设为 -1,表示未找到满足条件的约数

    // 从较大的三位数开始逐步向下测试,寻找能整除555555的最大三位数
    for (int divisor = 999; divisor >= 100; --divisor) {
        if (number % divisor == 0) {
            max_three_digit_divisor = divisor; // 找到能整除的最大的三位数
            break; // 找到满足条件的约数后退出循环
        }
    }

    // 判断是否找到了满足条件的约数,并输出结果
    if (max_three_digit_divisor != -1) {
        printf("555555 的约数中最大的三位数是 %d\n", max_three_digit_divisor);
    } else {
        printf("555555 没有三位数约数。\n");
    }

    return 0; // 程序正常结束
}

4、

#include <stdio.h>

int main() {
    int base = 13; // 底数
    int exponent = 13; // 指数
    int result = 1; // 用于存储最终结果

    // 使用循环计算底数的指数次幂,并保留最后三位数
    for (int i = 0; i < exponent; ++i) {
        result *= base; // 依次将底数乘以自身,累乘得到指数次幂
        result %= 1000; // 取模运算,保留最后三位数
    }

    // 打印结果
    printf("13 的 13 次方的最后三位数为:%d\n", result);

    return 0; // 程序正常结束
}

5、

#include <stdio.h>

/**
 * 反转数组中的元素。
 * @param arr 指向要反转的数组的指针。
 * @param start 反转的起始位置。
 * @param n 要反转的元素个数。
 * 说明:此函数将数组 arr 中从位置 start 开始的 n 个元素进行反转。
 */
void reverseArray(int *arr, int start, int n) {
    int *left = arr + start;  // 定义左指针,指向反转的起始位置
    int *right = left + n - 1; // 定义右指针,指向反转的结束位置

    while (left < right) { // 当左指针小于右指针时循环,进行元素交换
        int temp = *left;
        *left = *right;
        *right = temp;
        left++; // 左指针向右移动
        right--; // 右指针向左移动
    }
}

int main() {
    int arr[10] = {}; // 定义一个长度为 10 的数组
    int start, n; // 定义起始位置和要反转的元素个数

    printf("输入数组元素:\n");
    for (int i = 0; i < 10; i++) { // 循环读取数组元素
        scanf("%d", &arr[i]);
    }
    printf("输入起始位置:");
    scanf("%d", &start);

    printf("输入要反转的元素数: ");
    scanf("%d", &n);

    // 检查输入的起始位置和元素个数是否合法
    if (start < 0 || start >= 10 || n < 0 || start + n > 10) {
        printf("Invalid input\n");
        return 1; // 输入不合法,退出程序
    }

    reverseArray(arr, start, n); // 调用函数反转数组

    printf("反向数组: ");
    for (int i = 0; i < 10; i++) { // 打印反转后的数组
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0; // 程序正常结束
}

相关推荐

  1. 2024湖北C语言模拟试卷

    2024-04-25 01:16:01       17 阅读
  2. 2024湖北C语言模拟试卷(1)

    2024-04-25 01:16:01       17 阅读
  3. 英语语法学习

    2024-04-25 01:16:01       20 阅读
  4. C语言笔记-02 标识符 命名规范 关键字

    2024-04-25 01:16:01       20 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-25 01:16:01       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-25 01:16:01       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-25 01:16:01       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-25 01:16:01       18 阅读

热门阅读

  1. K8S CronJob计划任务

    2024-04-25 01:16:01       11 阅读
  2. Docker搭建MinIO私有对象存储

    2024-04-25 01:16:01       11 阅读
  3. 软设之I/O数据传输控制方式

    2024-04-25 01:16:01       11 阅读
  4. VUE之旅—day1

    2024-04-25 01:16:01       10 阅读
  5. Cracking the Data Modeling Interview: Part 1 an Overview

    2024-04-25 01:16:01       12 阅读
  6. matlab2C【g=g1(465:615,200:350);】

    2024-04-25 01:16:01       12 阅读
  7. 力扣练习题(2024/4/21)

    2024-04-25 01:16:01       11 阅读
  8. 关于电脑蓝屏解决方法(ST-LINK/ J-Link)

    2024-04-25 01:16:01       12 阅读
  9. yarn的安装于配置

    2024-04-25 01:16:01       14 阅读
  10. auto关键字的妙用

    2024-04-25 01:16:01       10 阅读