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

2024-08-09
| 2份
| 16页
| 109人阅读
| 2人下载

内容正文:

编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。 本试卷是重庆市《计算机类考纲百套卷》的第54卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的3-4要求编写。其两点要求是:3.掌握一维数组的输入输出操作;4.会使用字符数组实现字符串的相关处理操作;说明:测试字符串长度,字符数统计,数字串到数值数据的转换。 重庆市《计算机类考纲百套卷》 第54卷 C语言程序设计 (五)数组与结构类型 知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、填空题(本大题共15小题,每题2分,共30分) 1. 声明一个具有10个整数元素的一维数组,正确的语法是______。 【答案】int arr[10]; 2. 要输出数组arr中所有元素的值,可以使用以下循环结构______。 【答案】for(int i = 0; i < 10; i++) 3. 字符串"Hello World"在内存中以字符______结尾,以表示字符串的结束。 【答案】'\0' 4. 假设有一个字符串str,要计算它的长度,可以使用的函数是______。 【答案】strlen(str); 5. 要将一个字符串复制到另一个字符数组中,可以使用的函数是______。 【答案】strcpy(dest, src); 6. 假设有一个字符数组char ch[50],要将用户输入的字符串存储到这个数组中,可以使用的函数是______。 【答案】scanf("%49s", ch); 7. 如果要将字符串str1和str2连接到一个新字符串str3中,可以使用的函数是______。 【答案】strcat(str3, str2); 8. 假设要查找字符'a'在字符串str中首次出现的位置,可以使用的函数是______。 【答案】strchr(str, 'a'); 9. 当使用数组名作为函数调用时的实参时,实际上传递给形参的是数组的______。 【答案】首地址 10. 若定义了double x[3][5];则数组中列下标的______为4。 【答案】上限 11. 若有说明:int a[][][3]={ {1,2,3}, {4,5}, {6,7} };则数组a的______维的大小为3。 【答案】第一 12. 设int a=12,则表达式a/=a+a运算后,a的值是______。 【答案】2 13. 设y为int型变量,请写出描述“y是奇数”的表达式______。 【答案】(y%2) == 1 14. 设有数组a[10],数组元素a[3]的地址可以写成______或______。 【答案】a+3,&a[3] 15. 数组由数组名和下标构成,其数组元素的______类型是相同的。 【答案】数据 二、单项选择题(本大题共15小题,每题2分,共30分) 1. 在C语言中,以下对一维数组初始化的说法正确的是( )。 A. 只能在定义数组时进行初始化,之后无法更改 B. 可以在定义数组时进行初始化,也可以在后续代码中进行赋值 C. 只能在后续代码中进行赋值,不能在定义数组时进行初始化 D. 一维数组无法进行初始化 【答案】B 2. C语言中的一维数组初始化必须满足的条件是( )。 A. 初始化值的个数不能超过数组的大小 B. 初始化值的个数必须与数组的大小相同 C. 初始化值的个数可以少于或等于数组的大小 D. 不需要满足任何条件,初始化个数没有限制 【答案】C 3. 以下选项中,哪种初始化方式对字符数组是不合法的?( ) A. char str[] = {'H', 'e', 'l', 'l', 'o'}; B. char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; C. char str[5] = "Hello"; D. char str[] = "Hello"; 【答案】C 4. 下列哪种初始化方式对整型数组是合法的?( ) A. int arr[] = {1, 2, 3}; B. int arr[3]; C. int arr[3] = {1, 2, 3, 4}; D. int arr[3] = {1, 2}; 【答案】A 5. 在定义一维数组时可以省略数组大小,( )。 A. 但必须在初始化时指定数组大小 B. 但无法进行初始化 C. 但此时数组大小默认为0 D. 但必须在后续代码中进行赋值来确定数组大小 【答案】A 6. 以下选项中,哪种方式不是常用的对整型数组进行初始化的方式?( ) A. int arr[5] = {0}; B. int arr[5] = {1, 2, 3, 4, 5}; C. int arr[5] = {1, 2}; D. int arr[5] = {0, 0, 0, 0, 0}; 【答案】C 7. 在C语言的一维数组中,以下选项中的值会被默认初始化为0的是( )。 A. float数组 B. char数组 C. int数组 D. string数组 【答案】C 8. 关于字符数组的大小,以下哪个说法是正确的?( ) A. 可以通过输入的字符个数确定 B. 可以通过字符串的长度确定 C. 可以通过用户的选择确定 D. 数组大小只能在编译时确定 【答案】D 9. 初始化字符数组为空字符串的正确方法是?( ) A. char str[] = ""; B. char str[1] = ""; C. char str[1] = {'\0'}; D. char str[0] = {'\0'}; 【答案】A 10. 在字符数组的初始化过程中,如果字符数超过了数组的大小,会导致以下哪种情况?( ) A. 编译错误 B. 输出错误结果 C. 只在运行时出错 D. 覆盖数组后面的内存 【答案】D 11. 若要从键盘输入一个字符串,并存储在字符数组中,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. gets(str); C. fgets(str, sizeof(str), stdin); D. puts(str); 【答案】C 12. 以下哪个函数不适合用于从键盘输入字符串?( ) A. scanf() B. gets() C. fgets() D. puts() 【答案】B 13. 若要从键盘连续输入一行字符串,直到遇到换行符为止,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. gets(str); C. fgets(str, sizeof(str), stdin); D. puts(str); 【答案】C 14. 使用scanf() 函数读取字符串时,遇到空格会发生以下哪种情况?( ) A. 将空格作为字符串的一部分 B. 停止读取,将空格视为输入结束标志 C. 跳过空格并继续读取后续字符 D. 引发编译错误 【答案】B 15. 若要从键盘输入字符串,并跳过前导空白字符,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. scanf(" %s", str); C. scanf(" %s", str); D. scanf("\t%s", str); 【答案】B 三、判断题(本大题共6小题,每题2分,共12分) 1. 一维数组可以通过循环结构进行输入输出操作。( ) 【答案】√ 2. 字符数组只能存储单个字符,不能用于实现字符串的相关处理操作。( ) 【答案】× 3. 字符串的长度可以通过计算数组中元素的个数来确定。( ) 【答案】× 4. 字符数组在进行字符串操作时,必须以'\0'作为字符串的结束标志。( ) 【答案】√ 5. 将数字串转换为数值数据时,可以逐个字符进行转换,然后将结果累加。( ) 【答案】√ 6. C语言提供了专门的字符串处理函数strlen(),用于计算字符串的实际长度(不包括结尾符'\0')。( ) 【答案】√ 四、程序填空题(本大题共2小题,每题8分,共16分) 1.编写一个C程序,用于输入一个字符串,并计算其长度(不包括结束符'\0')。请填空完成以下代码。 #include <stdio.h> int main() { char str[100]; int length = 0; printf("请输入一个字符串:"); // 填空处1 scanf(____); // 填空处2 while (str[length] != ____ ) { length++; } printf("字符串的长度是:%d ", length); return 0; } 【答案】scanf("%s", str); while (str[length] != '\0') 2.编写一个C程序,将一个数字字符串转换为对应的整数值。请填空完成以下代码。 #include <stdio.h> #include <stdlib.h> int main() { char numStr[100]; int num; printf("请输入一个数字字符串:"); // 填空处1 scanf(____); // 填空处2 num = ____ (numStr); printf("数字字符串对应的整数值是:%d ", num); return 0; } 【答案】 scanf("%s", numStr); num = atoi(numStr); 五、阅读程序题(本大题共12分) 1.阅读以下C语言程序,回答问题。 #include <stdio.h> #include <string.h> int main() { char str[100]; int i, length, digitCount = 0; long num = 0; // 输入字符串 printf("请输入一个字符串:"); gets(str); // 计算字符串长度 length = strlen(str); printf("字符串的长度为:%d ", length); // 统计字符串中数字字符的个数,并将数字串转换为数值数据 for(i = 0; i < length; i++) { if(str[i] >= '0' && str[i] <= '9') { digitCount++; num = num * 10 + (str[i] - '0'); } } printf("字符串中数字字符的个数为:%d ", digitCount); printf("数字串转换为的数值数据为:%ld ", num); return 0; } (1)该程序的功能是什么? (2)请解释变量digitCount和num的作用。 (3)程序中for循环的作用是什么? (4)如果输入的字符串为"abc123def456",程序输出的结果是什么? 【答案】 (1)该程序的功能是输入一个字符串,计算字符串的长度,统计字符串中数字字符的个数,并将字符串中的数字串转换为数值数据。 (2)变量digitCount用于统计字符串中数字字符的个数;变量num用于存储转换后的数值数据。 (3)for循环的作用是遍历字符串中的每个字符,判断是否为数字字符,如果是,则统计数字字符的个数,并将数字串转换为数值数据。 (4)如果输入的字符串为"abc123def456",程序输出的结果为: 字符串的长度为:12 字符串中数字字符的个数为:6 数字串转换为的数值数据为:123456 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$ 编写说明:重庆市《计算机类考纲百套卷》依据重庆市《高等职业教育分类考试专业综合理论测试计算机类考试说明》编写,本套试卷共88份分为三个部分,第一部分是根据考试说明的各章节的要求,编写了58份知识点训练卷,第二部分是针对每门课程的重点内容,编写的20份常考题训练卷,第三个部分是参考近几年重庆市计算机类专业理论考试真题,编写了10份专业综合训练卷。 本试卷是重庆市《计算机类考纲百套卷》的第54卷,是知识点训练卷,按考纲中《C语言程序设计》---(五)数组与结构类型的3-4要求编写。其两点要求是:3.掌握一维数组的输入输出操作;4.会使用字符数组实现字符串的相关处理操作;说明:测试字符串长度,字符数统计,数字串到数值数据的转换。 重庆市《计算机类考纲百套卷》 第54卷 C语言程序设计 (五)数组与结构类型 知识点训练卷 考试时间60分钟 满分100分 班级 姓名 学号 成绩 一、填空题(本大题共15小题,每题2分,共30分) 1. 声明一个具有10个整数元素的一维数组,正确的语法是______。 2. 要输出数组arr中所有元素的值,可以使用以下循环结构______。 3. 字符串"Hello World"在内存中以字符______结尾,以表示字符串的结束。 4. 假设有一个字符串str,要计算它的长度,可以使用的函数是______。 5. 要将一个字符串复制到另一个字符数组中,可以使用的函数是______。 6. 假设有一个字符数组char ch[50],要将用户输入的字符串存储到这个数组中,可以使用的函数是______。 7. 如果要将字符串str1和str2连接到一个新字符串str3中,可以使用的函数是______。 8. 假设要查找字符'a'在字符串str中首次出现的位置,可以使用的函数是______。 9. 当使用数组名作为函数调用时的实参时,实际上传递给形参的是数组的______。 10. 若定义了double x[3][5];则数组中列下标的______为4。 11. 若有说明:int a[][][3]={ {1,2,3}, {4,5}, {6,7} };则数组a的______维的大小为3。 12. 设int a=12,则表达式a/=a+a运算后,a的值是______。 13. 设y为int型变量,请写出描述“y是奇数”的表达式______。 14. 设有数组a[10],数组元素a[3]的地址可以写成______或______。 15. 数组由数组名和下标构成,其数组元素的______类型是相同的。 二、单项选择题(本大题共15小题,每题2分,共30分) 1. 在C语言中,以下对一维数组初始化的说法正确的是( )。 A. 只能在定义数组时进行初始化,之后无法更改 B. 可以在定义数组时进行初始化,也可以在后续代码中进行赋值 C. 只能在后续代码中进行赋值,不能在定义数组时进行初始化 D. 一维数组无法进行初始化 2. C语言中的一维数组初始化必须满足的条件是( )。 A. 初始化值的个数不能超过数组的大小 B. 初始化值的个数必须与数组的大小相同 C. 初始化值的个数可以少于或等于数组的大小 D. 不需要满足任何条件,初始化个数没有限制 3. 以下选项中,哪种初始化方式对字符数组是不合法的?( ) A. char str[] = {'H', 'e', 'l', 'l', 'o'}; B. char str[6] = {'H', 'e', 'l', 'l', 'o', '\0'}; C. char str[5] = "Hello"; D. char str[] = "Hello"; 4. 下列哪种初始化方式对整型数组是合法的?( ) A. int arr[] = {1, 2, 3}; B. int arr[3]; C. int arr[3] = {1, 2, 3, 4}; D. int arr[3] = {1, 2}; 5. 在定义一维数组时可以省略数组大小,( )。 A. 但必须在初始化时指定数组大小 B. 但无法进行初始化 C. 但此时数组大小默认为0 D. 但必须在后续代码中进行赋值来确定数组大小 6. 以下选项中,哪种方式不是常用的对整型数组进行初始化的方式?( ) A. int arr[5] = {0}; B. int arr[5] = {1, 2, 3, 4, 5}; C. int arr[5] = {1, 2}; D. int arr[5] = {0, 0, 0, 0, 0}; 7. 在C语言的一维数组中,以下选项中的值会被默认初始化为0的是( )。 A. float数组 B. char数组 C. int数组 D. string数组 8. 关于字符数组的大小,以下哪个说法是正确的?( ) A. 可以通过输入的字符个数确定 B. 可以通过字符串的长度确定 C. 可以通过用户的选择确定 D. 数组大小只能在编译时确定 9. 初始化字符数组为空字符串的正确方法是?( ) A. char str[] = ""; B. char str[1] = ""; C. char str[1] = {'\0'}; D. char str[0] = {'\0'}; 10. 在字符数组的初始化过程中,如果字符数超过了数组的大小,会导致以下哪种情况?( ) A. 编译错误 B. 输出错误结果 C. 只在运行时出错 D. 覆盖数组后面的内存 11. 若要从键盘输入一个字符串,并存储在字符数组中,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. gets(str); C. fgets(str, sizeof(str), stdin); D. puts(str); 12. 以下哪个函数不适合用于从键盘输入字符串?( ) A. scanf() B. gets() C. fgets() D. puts() 13. 若要从键盘连续输入一行字符串,直到遇到换行符为止,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. gets(str); C. fgets(str, sizeof(str), stdin); D. puts(str); 14. 使用scanf() 函数读取字符串时,遇到空格会发生以下哪种情况?( ) A. 将空格作为字符串的一部分 B. 停止读取,将空格视为输入结束标志 C. 跳过空格并继续读取后续字符 D. 引发编译错误 15. 若要从键盘输入字符串,并跳过前导空白字符,以下哪个函数调用是正确的?( ) A. scanf("%s", str); B. scanf(" %s", str); C. scanf(" %s", str); D. scanf("\t%s", str); 三、判断题(本大题共6小题,每题2分,共12分) 1. 一维数组可以通过循环结构进行输入输出操作。( ) 2. 字符数组只能存储单个字符,不能用于实现字符串的相关处理操作。( ) 3. 字符串的长度可以通过计算数组中元素的个数来确定。( ) 4. 字符数组在进行字符串操作时,必须以'\0'作为字符串的结束标志。( ) 5. 将数字串转换为数值数据时,可以逐个字符进行转换,然后将结果累加。( ) 6. C语言提供了专门的字符串处理函数strlen(),用于计算字符串的实际长度(不包括结尾符'\0')。( ) 四、程序填空题(本大题共2小题,每题8分,共16分) 1.编写一个C程序,用于输入一个字符串,并计算其长度(不包括结束符'\0')。请填空完成以下代码。 #include <stdio.h> int main() { char str[100]; int length = 0; printf("请输入一个字符串:"); // 填空处1 scanf(____); // 填空处2 while (str[length] != ____ ) { length++; } printf("字符串的长度是:%d ", length); return 0; } 2.编写一个C程序,将一个数字字符串转换为对应的整数值。请填空完成以下代码。 #include <stdio.h> #include <stdlib.h> int main() { char numStr[100]; int num; printf("请输入一个数字字符串:"); // 填空处1 scanf(____); // 填空处2 num = ____ (numStr); printf("数字字符串对应的整数值是:%d ", num); return 0; } 五、阅读程序题(本大题共12分) 1.阅读以下C语言程序,回答问题。 #include <stdio.h> #include <string.h> int main() { char str[100]; int i, length, digitCount = 0; long num = 0; // 输入字符串 printf("请输入一个字符串:"); gets(str); // 计算字符串长度 length = strlen(str); printf("字符串的长度为:%d ", length); // 统计字符串中数字字符的个数,并将数字串转换为数值数据 for(i = 0; i < length; i++) { if(str[i] >= '0' && str[i] <= '9') { digitCount++; num = num * 10 + (str[i] - '0'); } } printf("字符串中数字字符的个数为:%d ", digitCount); printf("数字串转换为的数值数据为:%ld ", num); return 0; } (1)该程序的功能是什么? (2)请解释变量digitCount和num的作用。 (3)程序中for循环的作用是什么? (4)如果输入的字符串为"abc123def456",程序输出的结果是什么? 原创精品资源学科网独家享有版权,侵权必究! 学科网(北京)股份有限公司 $$

资源预览图

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