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