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.