内容正文:
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第56卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的7-8要求编写。其两点要求是:7.掌握一级指针访问变量和数组元素的方法;8.掌握 typedef 定义类型的别名。
重庆市《计算机类考纲百套卷》 第56卷
C语言程序设计
(五)数组与结构类型 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 数组名表示的是数组第一个元素的______。
【答案】地址
2. 若 int a[10]; 则 a[0] 表示的是数组 a 的第______个元素。
【答案】1
3. 使用一级指针 p 访问数组元素 a[i] 的表达式是______。
【答案】*(p+i)
4. 若 char *p; 则 p 是一个指向______类型的指针。
【答案】字符
5. 使用 typedef 定义整型的别名为 INT,则定义语句为______。
【答案】typedef int INT;
6. 结构体类型的定义关键字是______。
【答案】struct
7. 若要定义一个指向整型数组的指针,可以使用______。
【答案】int (*p)[10];
8. 通过数组名和下标可以访问数组元素,例如 a[2] 表示访问数组 a 的第______个元素。
【答案】3
9. 若要定义一个指向字符的指针,可以使用______。
【答案】char *p;
10. 使用 typedef 定义一个指向长整型的指针别名为 LONG_PTR,定义语句为______。
【答案】typedef long *LONG_PTR;
11. 若 int a[5], *p=a; 则 p+1 表示的是数组 a 中第______个元素的地址。
【答案】2
12. 通过指针访问数组元素时,可以使用______运算符。
【答案】*
13. 若要定义一个结构体类型的别名,可以使用______关键字。
【答案】typedef
14. 数组的下标从______开始。
【答案】0
15. 若 struct Student { int age; char name[20]; }; 则使用 typedef 定义结构体 Student 的别名为 STU,定义语句为______。
【答案】typedef struct Student STU;
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 关于字符型数组和字符串的描述,以下哪项是不正确的?( )
A. 字符型数组中可能存放字符串
B. 可以对字符型数组进行整体输入、输出
C. 字符串函数声明在包ctype.h中
D. 字符串的结束符是'\0'
【答案】C
2. 定义如下变量和数组: int i; int x[6] ={1,2,3,4,5,6}; 则语句for(i=0;i<3;i++) printf("%d ",x[5-i]); 的输出结果是( )。
A. 1 2 3
B. 1 3 5
C. 2 4 6
D. 6 5 4
【答案】D
3. 以下对二维数组a进行正确初始化的是( )。
A. int a[2][3]={{1,2},{3,4},{5,6}}
B. int a[][3]={1,2,3,4,5,6}
C. int a[2][]={1,2,3,4,5,6}
D. int a[2][ ]={{1,2},{3,4}}
【答案】D
4. 下列程序的输出结果是( )。
char a[]="abcd", b[]="ABCD", str[50]="xyz";
strcpy(str, strcat(a, b));
printf("%s", str);
A. xyabcAB
B. abcABz
C. ABabcz
D. abcdABCD
【答案】A
5. 不能把字符串:Hello!赋给数组b的语句是( )。
A. char b[10]={'H','e','l','l','o','!'}
B. char b[5]="Hello!"
C. char b[10]; strcpy(b,"Hello!")
D. char b[10]="Hello!"
【答案】B
6. 下列对数组定义不正确的语句是( )。
A. int m[5];
B. char b[]={'h','e'};
C. int a[10]={1,6,8,4};
D. char p[];
【答案】A
7. 以下对二维数组a的正确定义是( )。
A. int a[3][]
B. float a(3,4)
C. double a[2][4]
D. float a(3)(4)
【答案】C
8. 给出以下定义:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
以下正确的叙述是( )。
A. 数组x和数组y等价
B. 数组x和数组y长度相等
C. 数组x的长度大于数组y的长度,因为还存储了一个结束符
D. 数组x的长度小于数组y的长度,因为还存储了一个结束符
【答案】C
9. 在int b[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是( )。
A. 0
B. 5
C. 6
D. 2
【答案】C
10. 下列初始化正确的是( )。
A. char s1[]="abcd"
B. char s2[3]="zxy"
C. char *p=1000
D. char s4[2][3]={{"xyz"},{"mnp"}}
【答案】A
11. 设有定义:char s[12]="string";则printf("%d
",strlen(s));的输出是( )。
A. 6
B. 7
C. 11
D. 12
【答案】A
12. 函数调用strcat(strcpy(str1,str2),str3)的功能是( )。
A. 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
B. 将字符串str1复制到字符串str2中后再连接到字符串str3之后
C. 将字符串str1复制到字符串str2中后再复制到字符串str3之后
D. 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中
【答案】A
13. 使用随机函数需要包含的头文件有( )。
A. #include<stdlib.h>
B. #include<time.h>
C. #include <conio.h>
D. A和B
【答案】D
14. 若有说明int a[3][4]={0};以下哪项叙述是正确的?( )
A. 只有元素a[0][0]可得到初值0
B. 此说明语句不正确
C. 数组a中各元素都可得到初值,但其值不一定为0
D. 数组a中每个元素均可得到初值0
【答案】D
15. 执行下面的程序段后,变量k的值是多少?( )
int k=3, s[2];
s[0]=k;
k=s[0]*10;
A. 不定值
B. 33
C. 30
D. 10
【答案】C
三、判断题(本大题共6小题,每题2分,共12分)
1. 使用一级指针可以直接访问数组中的元素。( )
【答案】√
2. 数组名是一个指向数组首元素的指针常量。( )
【答案】√
3. 使用typedef定义的类型别名可以改变原有类型的内存大小。( )
【答案】×
4. 通过一级指针访问数组元素时,需要显式地进行解引用操作。( )
【答案】√
5. typedef定义的类型别名可以用于结构体类型。( )
【答案】√
6. 使用typedef定义的类型别名可以增加代码的可读性和可维护性。( )
【答案】√
四、程序填空题(本大题共2小题,每题8分,共16分)
1.#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
________; // 填空处1
ptr = ________; // 填空处2
for (int i = 0; i < 5; i++) {
printf("%d ", *(ptr + i)); // 使用一级指针访问数组元素
}
return 0;
}
【答案】
填空处1:int *ptr
填空处2:arr
2.#include <stdio.h>
// 使用typedef定义一个新类型
typedef ________ MY_TYPE; // 填空处1
MY_TYPE add(MY_TYPE a, MY_TYPE b) {
return a + b;
}
int main() {
MY_TYPE x = 10, y = 20;
printf("Sum: %d
", add(x, y));
return 0;
}
【答案】
填空处1:int
五、阅读程序题(本大题共12分)
1.阅读以下C语言程序,回答问题。
#include <stdio.h>
typedef int* IntPtr;
int main() {
int a[5] = {1, 2, 3, 4, 5};
IntPtr p = a; // 使用 typedef 定义的别名
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i));
}
return 0;
}
(1)程序中的 typedef int* IntPtr; 是什么意思?
(2)程序输出是什么?请给出解释。
【答案】
(1)typedef int* IntPtr; 的意思是定义了一个名为 IntPtr 的类型别名,它代表 int* 类型,即指向整型的指针类型。
(2)程序输出是:1 2 3 4 5。解释如下:在 main 函数中,定义了一个整型数组 a 并初始化,然后定义了一个指向整型的指针 p,并将数组 a 的首地址赋值给 p。在 for 循环中,通过 *(p + i) 访问数组 a 的每个元素,并打印出来。因此,输出结果为数组 a 的元素值。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$
编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。
本试卷是重庆市《计算机类考纲百套卷》的第56卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的7-8要求编写。其两点要求是:7.掌握一级指针访问变量和数组元素的方法;8.掌握 typedef 定义类型的别名。
重庆市《计算机类考纲百套卷》 第56卷
C语言程序设计
(五)数组与结构类型 知识点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、填空题(本大题共15小题,每题2分,共30分)
1. 数组名表示的是数组第一个元素的______。
2. 若 int a[10]; 则 a[0] 表示的是数组 a 的第______个元素。
3. 使用一级指针 p 访问数组元素 a[i] 的表达式是______。
4. 若 char *p; 则 p 是一个指向______类型的指针。
5. 使用 typedef 定义整型的别名为 INT,则定义语句为______。
6. 结构体类型的定义关键字是______。
7. 若要定义一个指向整型数组的指针,可以使用______。
8. 通过数组名和下标可以访问数组元素,例如 a[2] 表示访问数组 a 的第______个元素。
9. 若要定义一个指向字符的指针,可以使用______。
10. 使用 typedef 定义一个指向长整型的指针别名为 LONG_PTR,定义语句为______。
11. 若 int a[5], *p=a; 则 p+1 表示的是数组 a 中第______个元素的地址。
12. 通过指针访问数组元素时,可以使用______运算符。
13. 若要定义一个结构体类型的别名,可以使用______关键字。
14. 数组的下标从______开始。
15. 若 struct Student { int age; char name[20]; }; 则使用 typedef 定义结构体 Student 的别名为 STU,定义语句为______。
二、单项选择题(本大题共15小题,每题2分,共30分)
1. 关于字符型数组和字符串的描述,以下哪项是不正确的?( )
A. 字符型数组中可能存放字符串
B. 可以对字符型数组进行整体输入、输出
C. 字符串函数声明在包ctype.h中
D. 字符串的结束符是'\0'
2. 定义如下变量和数组: int i; int x[6] ={1,2,3,4,5,6}; 则语句for(i=0;i<3;i++) printf("%d ",x[5-i]); 的输出结果是( )。
A. 1 2 3
B. 1 3 5
C. 2 4 6
D. 6 5 4
3. 以下对二维数组a进行正确初始化的是( )。
A. int a[2][3]={{1,2},{3,4},{5,6}}
B. int a[][3]={1,2,3,4,5,6}
C. int a[2][]={1,2,3,4,5,6}
D. int a[2][ ]={{1,2},{3,4}}
4. 下列程序的输出结果是( )。
char a[]="abcd", b[]="ABCD", str[50]="xyz";
strcpy(str, strcat(a, b));
printf("%s", str);
A. xyabcAB
B. abcABz
C. ABabcz
D. abcdABCD
5. 不能把字符串:Hello!赋给数组b的语句是( )。
A. char b[10]={'H','e','l','l','o','!'}
B. char b[5]="Hello!"
C. char b[10]; strcpy(b,"Hello!")
D. char b[10]="Hello!"
6. 下列对数组定义不正确的语句是( )。
A. int m[5];
B. char b[]={'h','e'};
C. int a[10]={1,6,8,4};
D. char p[];
7. 以下对二维数组a的正确定义是( )。
A. int a[3][]
B. float a(3,4)
C. double a[2][4]
D. float a(3)(4)
8. 给出以下定义:
char x[]="abcdefg";
char y[]={'a','b','c','d','e','f','g'};
以下正确的叙述是( )。
A. 数组x和数组y等价
B. 数组x和数组y长度相等
C. 数组x的长度大于数组y的长度,因为还存储了一个结束符
D. 数组x的长度小于数组y的长度,因为还存储了一个结束符
9. 在int b[][3]={{1},{3,2},{4,5,6},{0}};中b[2][2]的值是( )。
A. 0
B. 5
C. 6
D. 2
10. 下列初始化正确的是( )。
A. char s1[]="abcd"
B. char s2[3]="zxy"
C. char *p=1000
D. char s4[2][3]={{"xyz"},{"mnp"}}
11. 设有定义:char s[12]="string";则printf("%d
",strlen(s));的输出是( )。
A. 6
B. 7
C. 11
D. 12
12. 函数调用strcat(strcpy(str1,str2),str3)的功能是( )。
A. 将字符串str2复制到字符串str1中后再将字符串str3连接到字符串str1之后
B. 将字符串str1复制到字符串str2中后再连接到字符串str3之后
C. 将字符串str1复制到字符串str2中后再复制到字符串str3之后
D. 将字符串str2连接到字符串str1中后再将字符串str1复制到字符串str3中
13. 使用随机函数需要包含的头文件有( )。
A. #include<stdlib.h>
B. #include<time.h>
C. #include <conio.h>
D. A和B
14. 若有说明int a[3][4]={0};以下哪项叙述是正确的?( )
A. 只有元素a[0][0]可得到初值0
B. 此说明语句不正确
C. 数组a中各元素都可得到初值,但其值不一定为0
D. 数组a中每个元素均可得到初值0
15. 执行下面的程序段后,变量k的值是多少?( )
int k=3, s[2];
s[0]=k;
k=s[0]*10;
A. 不定值
B. 33
C. 30
D. 10
三、判断题(本大题共6小题,每题2分,共12分)
1. 使用一级指针可以直接访问数组中的元素。( )
2. 数组名是一个指向数组首元素的指针常量。( )
3. 使用typedef定义的类型别名可以改变原有类型的内存大小。( )
4. 通过一级指针访问数组元素时,需要显式地进行解引用操作。( )
5. typedef定义的类型别名可以用于结构体类型。( )
6. 使用typedef定义的类型别名可以增加代码的可读性和可维护性。( )
四、程序填空题(本大题共2小题,每题8分,共16分)
1.#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
________; // 填空处1
ptr = ________; // 填空处2
for (int i = 0; i < 5; i++) {
printf("%d ", *(ptr + i)); // 使用一级指针访问数组元素
}
return 0;
}
2.#include <stdio.h>
// 使用typedef定义一个新类型
typedef ________ MY_TYPE; // 填空处1
MY_TYPE add(MY_TYPE a, MY_TYPE b) {
return a + b;
}
int main() {
MY_TYPE x = 10, y = 20;
printf("Sum: %d
", add(x, y));
return 0;
}
五、阅读程序题(本大题共12分)
1.阅读以下C语言程序,回答问题。
#include <stdio.h>
typedef int* IntPtr;
int main() {
int a[5] = {1, 2, 3, 4, 5};
IntPtr p = a; // 使用 typedef 定义的别名
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i));
}
return 0;
}
(1)程序中的 typedef int* IntPtr; 是什么意思?
(2)程序输出是什么?请给出解释。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
$$