《C语言程序设计》(五)数组与结构类型 - 知识点训练卷 重庆市计算机类 考纲百套卷 第56卷

2024-08-09
| 2份
| 14页
| 159人阅读
| 2人下载

内容正文:

编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共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)程序输出是什么?请给出解释。 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

《C语言程序设计》(五)数组与结构类型 - 知识点训练卷 重庆市计算机类 考纲百套卷 第56卷
1
《C语言程序设计》(五)数组与结构类型 - 知识点训练卷 重庆市计算机类 考纲百套卷 第56卷
2
《C语言程序设计》(五)数组与结构类型 - 知识点训练卷 重庆市计算机类 考纲百套卷 第56卷
3
所属专辑
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。