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<stdio.h>
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<stdio.h>
int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printf("%d", arr[5]); 
}
2、
#include<stdio.h>
int main() {
    int a = 10, b = 20;
    if (a = b) {
        printf("a等于b\n");
    } else {
        printf("a不等于b\n");
    }
    return 0;
}
3、
#include<stdio.h>
#include <malloc.h>

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

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

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 <stdio.h>

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 <stdio.h>

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

    printf("a: %d, b: %d", a, b);
    return 0;
}
9、
#include <stdio.h>

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 <stdio.h>

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 <stdio.h>
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 <stdio.h>

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 <stdio.h>
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<x2,f(x1)×f(x2)<0,则在 (x1,x2)之间一定有一个根。
输入格式:共一行,包含四个实数 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

参考答案

一、填空(10道,在____处填答案,一处2分)
1、free
2、char *strcat(char *dest, const char *src);
3、20
4、PI
5、1
6、7
7、56789
8、指针
9、ch >= 'A' && ch <= 'Z'
10、strcpy(s2, s1);
二、程序改错(10道,一处4分)
1、
#include<stdio.h>

int main() {
    int arr[5] = {1, 2, 3, 4, 5};
    printf("%d", arr[4]);
    return 0;
}
2、
#include<stdio.h>

int main() {
    int a = 10, b = 20;
    if (a == b) {
        printf("a等于b\n");
    } else {
        printf("a不等于b\n");
    }
    return 0;
}
3、
#include<stdio.h>
#include <malloc.h>

int main() {
    int *p = malloc(sizeof(int));
    *p = 100;
    printf("p = %d\n", *p);
    free(p); 
    return 0;
}
4、
#include<stdio.h>

int main() {
    int num = 5;
    printf("The number is %d\n", num);
    return 0;
}
5、
#include<stdio.h>

int main() {
    int a = 5;
    int *p = &a;
    printf("%d", *p); 
    return 0;
}
6、
#include <stdio.h>

struct Point {
    int x;
    int y;
};

int main() {
    struct Point point = {5, 10}; 
    struct Point *ptr = &point; 
    printf("Coordinates: (%d, %d)\n", ptr->x, ptr->y);
    return 0;
}
7、
#include <stdio.h>
#include <string.h>

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

int main() {
    struct Person person1;
    
    strcpy(person1.name, "John");

    person1.age = 30; 

    printf("Name: %s, Age: %d\n", person1.name, person1.age);
    return 0;
}
8、
#include <stdio.h>

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

    printf("a: %d, b: %d", a, b);
    return 0;
}
9、
#include <stdio.h>

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

int main() {
    struct Student student = {"Alice", 25}; // 初始化一个Student结构体实例
    struct Student *ptr = &student; // 将指针指向这个实例

    printf("Student: %s, Age: %d\n", ptr->name, ptr->age);
    return 0;
}
10、
#include <stdio.h>

struct Date {
    int day;
    int month;
    int year;
};

int main() {
    struct Date date = {10, 4, 2024}; 
    struct Date *ptr = &date; 

    printf("Date: %d/%d/%d\n", ptr->day, ptr->month, ptr->year);
    return 0;
}
三、程序阅读(8道,一处5分)
1、3
2、11585
3、6
4、2
5、2017
6、3
7、54321,43215,32154,21543,15432
8、18
四、大题(5道,一处10分)
1、
#include <stdio.h>

int fibonacci(int n) {
    if (n <= 1)
        return n;
    else
        return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int months;
    printf("请输入月份:");
    scanf("%d", &months);

    int i, rabbits = 0, prev_rabbits = 1, temp;
    for (i = 0; i < months; i++) {
        temp = rabbits;
        rabbits += prev_rabbits;
        prev_rabbits = temp;
    }

    printf("第 %d 个月的兔子总数为 %d 对。\n", months, rabbits);

    return 0;
}
2、
#include <stdio.h>

int main() {
    int a, n;
    printf("请输入数字 a 和相加的个数 n:");
    scanf("%d %d", &a, &n);

    int i;
    long long int sum = 0, term = 0;
    for (i = 1; i <= n; i++) {
        term = term * 10 + a;
        sum += term;
    }

    printf("表达式的值为:%lld\n", sum);

    return 0;
}
3、
#include <stdio.h>

int main() {
    int i, j, sum;

    printf("1000以内的完数有:\n");
    for (i = 2; i <= 1000; i++) {
        sum = 1; // 初始化为1,因为1是所有数的因子

        // 找出因子并求和
        for (j = 2; j <= i / 2; j++) {
            if (i % j == 0) {
                sum += j;
            }
        }

        // 如果因子和等于数本身,则打印该数
        if (sum == i) {
            printf("%d ", i);
        }
    }

    printf("\n");

    return 0;
}
4、
#include <stdio.h>
#include <math.h>

double a, b, c, d, A, B, T, h, x1, x2, x3;

int main()
{
    scanf("%lf %lf %lf %lf", &a, &b, &c, &d);
    A = b * b - 3 * a * c;
    B = b * c - 9 * a * d;
    T = (2 * A * b - 3 * a * B) / (2 * pow(A * A * A, 0.5));
    h = acos(T);
    x1 = (-b - pow(A, 0.5) * cos(h / 3) * 2) / 3 / a;
    x2 = (-b + pow(A, 0.5) * (cos(h / 3) - sqrt(3) * sin(h / 3))) / (3 * a);
    x3 = (-b + pow(A, 0.5) * (cos(h / 3) + sqrt(3) * sin(h / 3))) / (3 * a);
    printf("%.2lf %.2lf %.2lf", x1, x2, x3);

    return 0;
}

5、
#include <stdio.h>

int main() {
    int n;
    printf("请输入学生数量:");
    scanf("%d", &n);

    int abilities[n];

    printf("请输入学生的学习能力:");
    for(int i = 0; i < n; i++) {
        scanf("%d", &abilities[i]);
    }

    // 找到最小的学习能力
    int min_ability = abilities[0];
    for(int i = 1; i < n; i++) {
        if(abilities[i] < min_ability) {
            min_ability = abilities[i];
        }
    }

    printf("该班的讲课速度为:%d\n", min_ability);

    return 0;
}

相关推荐

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

    2024-04-26 04:30:02       16 阅读
  2. 2024湖北C语言模拟试卷1

    2024-04-26 04:30:02       17 阅读
  3. 英语语法学习

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

    2024-04-26 04:30:02       20 阅读

最近更新

  1. TCP协议是安全的吗?

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

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

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

    2024-04-26 04:30:02       18 阅读

热门阅读

  1. vue 手写手动轮播 且图片宽度不一样

    2024-04-26 04:30:02       17 阅读
  2. C#中=> “Lambda运算符”

    2024-04-26 04:30:02       30 阅读
  3. 关于Gitea 的简单介绍

    2024-04-26 04:30:02       13 阅读
  4. 反序列bit

    2024-04-26 04:30:02       11 阅读
  5. gitlab 16.2.4 恢复

    2024-04-26 04:30:02       13 阅读
  6. “生成元”问题——穷举生成“查找表”

    2024-04-26 04:30:02       38 阅读
  7. C++之const

    2024-04-26 04:30:02       24 阅读
  8. 阿里云直播推流和播流地址的生成方法PHP

    2024-04-26 04:30:02       15 阅读