内容正文:
《编程语言基础-C语言》高等教育出版社(第5版)
第五章 数组 章节过关卷(二)(原卷版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、以下关于数组的叙述中,正确的是( )
A. 数组元素的下标可以是浮点数
B. 数组定义后,其长度可以改变
C. 数组名代表数组的首地址
D. 数组元素在内存中是随机存储的
2、若有定义 int a[5];,则对数组元素引用正确的是( )
A. a[0]
B. a[5]
C. a[1.5]
D. a(-1)
3、以下定义中,将数组所有元素初始化为0的是( )
A. int a[5] = 0;
B. int a[5] = {0};
C. int a[5] = {1};
D. int a[5] = {5,0};
4、以下程序段的输出结果是( )
int a[5] = {1, 3, 5, 7, 9};
int i;
for (i = 0; i < 5; i++)
a[i] = a[i] / 2;
printf("%d", a[2]);
A. 2
B. 3
C. 4
D. 5
5、以下程序段的功能是( )
int a[10], i, s = 0;
for (i = 0; i < 10; i++)
s += a[i];
printf("%d", s);
A. 求数组最大值
B. 求数组最小值
C. 求数组元素之和
D. 求数组平均值
6、若有定义 int a[2][3];,则以下能正确表示数组元素个数的是( )
A. 2+3
B. 2*3
C. (2+3)*2
D. (2*3)/2
7、以下二维数组定义中,错误的是( )
A. int a[][3] = {1,2,3,4,5};
B. int a[2][3] = {1,2,3,4,5,6};
C. int a[2][3] = {{1,2},{3,4}};
D. int a[2][] = {{1,2},{3,4}};
8、若有定义 int a[2][3] = {{1,2,3},{4,5}};,则 a[1][2] 的值为( )
A. 0
B. 5
C. 4
D. 随机值
9、以下程序段的输出结果是( )
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int i, j, s = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
if (i + j == 2) s += a[i][j];
printf("%d", s);
A. 9
B. 12
C. 15
D. 18
10、以下对二维数组a中元素的引用,与a[1][2]等价的是( )
A. *(a[1] + 2)
B. *(*(a + 1) + 2)
C. *(a + 1)[2]
D. A和B都正确
11、以下关于字符数组的叙述,正确的是( )
A. 字符数组只能存储字符,不能存储数字
B. 字符数组的每个元素只能存放一个字符
C. 字符数组必须以'\0'结尾
D. 字符数组的长度必须大于字符串长度
12、以下字符串的长度是( )
char s[] = "C\tProgram\0ming";
A. 11
B. 12
C. 9
D. 10
13、以下程序段的输出结果是( )
char s[20] = "University";
s[5] = '\0';
printf("%s", s);
A. Unive
B. University
C. Univer
D. 编译错误
14、以下能正确将字符串"Hello"复制到字符数组s中的是( )
A. char s[5]; s = "Hello";
B. char s[6]; strcpy(s, "Hello");
C. char s[5]; strcpy(s, "Hello");
D. char s[6]; s = "Hello";
15、以下程序段执行后,输出结果是( )
char s1[20] = "abc", s2[20] = "ABC";
strcat(s1, s2);
printf("%d", strcmp(s1, "abcABC"));
A. 0
B. 正数
C. 负数
D. 不确定
16、以下函数调用中,能正确输出数组a中所有元素的是( )
void print(int a[], int n) {
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
main() {
int a[5] = {1,2,3,4,5};
print(a, 5);
}
A. print(a, 5)
B. print(a[0], 5)
C. print(&a, 5)
D. print(a[5], 5)
17、以下程序段的功能是( )
int a[10] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int i, k = 0;
for (i = 1; i < 10; i++)
if (a[i] > a[k]) k = i;
printf("%d", k);
A. 输出最大值
B. 输出最大值所在下标
C. 输出最小值
D. 输出最小值所在下标
18、若有定义 int a[3][4];,则数组a中第2行第3列元素在内存中的位置相对于数组首地址的偏移量是(假设int占2字节)( )
A. 4
B. 8
C. 12
D. 16
19、以下程序段执行后,输出结果是( )
char str[20] = "C Language";
str[2] = '\0';
printf("%s", str + 3);
A. Language
B. C L
C. anguage
D. 编译错误
20、以下程序段中,能正确统计字符串s中数字字符个数的是( )
char s[100];
gets(s);
int count = 0;
for (int i = 0; s[i] != '\0'; i++)
if (_______) count++;
A. s[i] >= '0' || s[i] <= '9'
B. s[i] >= '0' && s[i] <= '9'
C. s[i] >= 0 && s[i] <= 9
D. s[i] >= '0' & s[i] <= '9'
21、以下程序段的输出结果是( )
int i, j, a[2][2] = {1, 2, 3, 4};
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
a[j][i] = a[i][j];
for (i = 0; i < 2; i++)
printf("%d", a[i][i]);
A. 13
B. 14
C. 24
D. 23
22、以下关于数组初始化的叙述,错误的是( )
A. 静态数组未初始化时,元素值为0
B. 局部数组未初始化时,元素值为随机值
C. 可以使用memset函数将数组元素全部置0
D. 数组初始化时,如果提供的初始值个数少于数组长度,多余元素自动赋0
23、以下程序段的输出结果是( )
int a[5] = {10, 20, 30, 40, 50};
int *p = a;
printf("%d", *(p + 3) - *p);
A. 10
B. 20
C. 30
D. 40
24、以下程序段执行后,数组b中元素的值是( )
int a[5] = {2, 4, 6, 8, 10}, b[5], i;
for (i = 0; i < 5; i++)
b[i] = a[i] + i;
A. {2,4,6,8,10}
B. {2,5,8,11,14}
C. {3,6,9,12,15}
D. {0,2,4,6,8}
25、以下程序段用于将字符串s中的大写字母转换为小写字母,划线处应填( )
char s[100];
gets(s);
for (int i = 0; s[i] != '\0'; i++)
if (s[i] >= 'A' && s[i] <= 'Z')
__________;
puts(s);
A. s[i] = s[i] + 32
B. s[i] = s[i] - 32
C. s[i] = s[i] + 'a' - 'A'
D. A和C均正确
二、多选题(本题共5小题,每题4分,共20分)
1、以下关于一维数组的初始化,正确的有( )
A. int a[5] = {0, 0, 0};
B. int a[5] = {1, 2, 3, 4, 5};
C. int a[5] = {1, 2, 3, 4, 5, 6};
D. int a[5] = {1};
2、以下选项中,能正确引用二维数组a中元素的有( )
A. a[1][2]
B. *(a[1] + 2)
C. *(*(a + 1) + 2)
D. *(a + 1)[2]
3、以下关于字符串处理函数的功能,描述正确的有( )
A. strlen(s) 返回字符串s的长度,不包括'\0'
B. strcmp(s1, s2) 比较两个字符串,相等时返回0
C. strcpy(s1, s2) 将s2复制到s1,包括'\0'
D. strcat(s1, s2) 将s2连接到s1末尾,s1必须有足够空间
4、以下程序段中,能够实现数组a中元素逆序存放的有( )
A.
for (i = 0; i < n/2; i++) {
t = a[i];
a[i] = a[n-1-i];
a[n-1-i] = t;
}
B.
int b[n];
for (i = 0; i < n; i++) b[i] = a[n-1-i];
for (i = 0; i < n; i++) a[i] = b[i];
C.
for (i = 0; i < n; i++) a[i] = a[n-1-i];
D.
for (i = 0; i < n/2; i++) {
a[i] = a[i] + a[n-1-i];
a[n-1-i] = a[i] - a[n-1-i];
a[i] = a[i] - a[n-1-i];
}
5、以下关于数组作为函数参数的叙述,正确的有( )
A. 形参数组和实参数组共享同一段内存
B. 在函数内部,sizeof(形参数组名) 得到的是指针的大小
C. 传递数组时,通常需要额外传递数组长度
D. 形参数组的第一维长度可以省略
三、判断题(本题共10小题,每题2分,共20分)
1、数组元素的下标可以是负整数。( )
2、二维数组在内存中是按列优先顺序存储的。( )
3、使用strcpy函数时,目标字符数组的长度必须大于等于源字符串的长度。( )
4、对于字符数组,可以用赋值语句直接给数组名赋值字符串。( )
5、定义数组时,如果对数组进行初始化,可以省略数组长度。( )
6、静态局部数组未初始化时,其元素值是不确定的。( )
7、字符串函数strlen计算的是字符数组的长度(包括'\0')。( )
8、对于二维数组int a[2][3],a[0]和&a[0][0]的值相同。( )
9、在函数内部,使用sizeof运算符对形参数组名操作,得到的是整个数组的字节数。( )
10、char s[10] = "Hello"; 等价于 char s[10] = {'H','e','l','l','o','\0'};。( )
四、填空题(本题共5小题,每题2分,共10分)
1、若有定义 int a[3][2] = {{1,2},{3,4}};,则 a[2][1] 的值为 ( )。
2、以下程序段的功能是统计字符串中空格字符的个数,请填空( )。
char s[100];
gets(s);
int i, count = 0;
for (i = 0; s[i] != '\0'; i++)
if (_______) count++;
printf("%d", count);
3、以下程序段执行后,输出结果为 ( )。
char s[20] = "abcde";
strcpy(s + 2, "xyz");
printf("%s", s);
4、以下程序段执行后,数组a中元素的值按行输出为 ( )。
int a[2][3] = {0};
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
a[i][j] = i + j;
5、以下程序段用于求二维数组a中所有元素的最大值,请填空( )。
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int i, j, max;
max = _________;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
if (a[i][j] > max) max = a[i][j];
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
《编程语言基础-C语言》高等教育出版社(第5版)
第五章 数组 章节过关卷(二)(解析版)
考试时间:90分钟 满分:100分
姓名 班级 学号
一、单项选择题(本题共25小题,每题2分,共50分)
1、以下关于数组的叙述中,正确的是( )
A. 数组元素的下标可以是浮点数
B. 数组定义后,其长度可以改变
C. 数组名代表数组的首地址
D. 数组元素在内存中是随机存储的
【答案】C
【解析】数组名是一个地址常量,代表数组首元素地址;下标必须是整型表达式,A错误;数组长度在定义后固定,B错误;数组元素在内存中连续存储,D错误。
2、若有定义 int a[5];,则对数组元素引用正确的是( )
A. a[0]
B. a[5]
C. a[1.5]
D. a(-1)
【答案】A
【解析】下标范围0~4,A正确;B越界;C下标必须为整型;D语法错误。
3、以下定义中,将数组所有元素初始化为0的是( )
A. int a[5] = 0;
B. int a[5] = {0};
C. int a[5] = {1};
D. int a[5] = {5,0};
【答案】B
【解析】{0}使第一个元素为0,其余自动为0,整个数组为0。A语法错误;C只有a[0]=1;D初始化值过多。
4、以下程序段的输出结果是( )
int a[5] = {1, 3, 5, 7, 9};
int i;
for (i = 0; i < 5; i++)
a[i] = a[i] / 2;
printf("%d", a[2]);
A. 2
B. 3
C. 4
D. 5
【答案】A
【解析】数组元素依次为:1/2=0(整数除法),3/2=1,5/2=2,7/2=3,9/2=4,a[2]=2。
5、以下程序段的功能是( )
int a[10], i, s = 0;
for (i = 0; i < 10; i++)
s += a[i];
printf("%d", s);
A. 求数组最大值
B. 求数组最小值
C. 求数组元素之和
D. 求数组平均值
【答案】C
【解析】循环累加每个元素到s,输出总和。
6、若有定义 int a[2][3];,则以下能正确表示数组元素个数的是( )
A. 2+3
B. 2*3
C. (2+3)*2
D. (2*3)/2
【答案】B
【解析】二维数组元素个数 = 行数 × 列数 = 2×3=6。
7、以下二维数组定义中,错误的是( )
A. int a[][3] = {1,2,3,4,5};
B. int a[2][3] = {1,2,3,4,5,6};
C. int a[2][3] = {{1,2},{3,4}};
D. int a[2][] = {{1,2},{3,4}};
【答案】D
【解析】二维数组中可以省略行的长度,不能省略列的长度。
8、若有定义 int a[2][3] = {{1,2,3},{4,5}};,则 a[1][2] 的值为( )
A. 0
B. 5
C. 4
D. 随机值
【答案】A
【解析】第二行初始化{4,5},只有两个值,第三个元素自动补0,所以a[1][2]=0。
9、以下程序段的输出结果是( )
int a[3][3] = {1,2,3,4,5,6,7,8,9};
int i, j, s = 0;
for (i = 0; i < 3; i++)
for (j = 0; j < 3; j++)
if (i + j == 2) s += a[i][j];
printf("%d", s);
A. 9
B. 12
C. 15
D. 18
【答案】C
【解析】i+j=2的元素有:(0,2)=3,(1,1)=5,(2,0)=7,和为3+5+7=15。
10、以下对二维数组a中元素的引用,与a[1][2]等价的是( )
A. *(a[1] + 2)
B. *(*(a + 1) + 2)
C. *(a + 1)[2]
D. A和B都正确
【答案】D
【解析】A:a[1]是第二行首地址,加2得a[1][2]地址,再取内容;B:a+1指向第二行,*(a+1)得第二行首地址,加2再取内容;C:(a+1)[2]相当于a[3],越界。
11、以下关于字符数组的叙述,正确的是( )
A. 字符数组只能存储字符,不能存储数字
B. 字符数组的每个元素只能存放一个字符
C. 字符数组必须以'\0'结尾
D. 字符数组的长度必须大于字符串长度
【答案】B
【解析】字符数组每个元素存放一个字符(可以是数字字符或ASCII码),A错;字符数组不一定需要'\0'结尾(只有作为字符串时才需要),C错;数组长度可以等于字符串长度+1,并非必须大于,D错。
12、以下字符串的长度是( )
char s[] = "C\tProgram\0ming";
A. 11
B. 12
C. 9
D. 10
【答案】C
【解析】字符串中'\0'是结束符,之前字符为'C','\t','P','r','o','g','r','a','m'共9个。
13、以下程序段的输出结果是( )
char s[20] = "University";
s[5] = '\0';
printf("%s", s);
A. Unive
B. University
C. Univer
D. 编译错误
【答案】A
【解析】将s[5](即第6个字符,原为'r')改为'\0',字符串提前结束,输出"Unive"。
14、以下能正确将字符串"Hello"复制到字符数组s中的是( )
A. char s[5]; s = "Hello";
B. char s[6]; strcpy(s, "Hello");
C. char s[5]; strcpy(s, "Hello");
D. char s[6]; s = "Hello";
【答案】B
【解析】A数组长度不足且不能直接赋值;C长度不足("Hello"需6字节含'\0');D不能直接赋值;B正确。
15、以下程序段执行后,输出结果是( )
char s1[20] = "abc", s2[20] = "ABC";
strcat(s1, s2);
printf("%d", strcmp(s1, "abcABC"));
A. 0
B. 正数
C. 负数
D. 不确定
【答案】A
【解析】strcat后s1="abcABC",与"abcABC"相等,strcmp返回0。
16、以下函数调用中,能正确输出数组a中所有元素的是( )
void print(int a[], int n) {
for (int i = 0; i < n; i++)
printf("%d ", a[i]);
}
main() {
int a[5] = {1,2,3,4,5};
print(a, 5);
}
A. print(a, 5)
B. print(a[0], 5)
C. print(&a, 5)
D. print(a[5], 5)
【答案】A
【解析】数组名作为参数传递首地址,正确。B传递元素值;C传递数组地址(类型不匹配);D越界。
17、以下程序段的功能是( )
int a[10] = {3, 1, 4, 1, 5, 9, 2, 6, 5, 3};
int i, k = 0;
for (i = 1; i < 10; i++)
if (a[i] > a[k]) k = i;
printf("%d", k);
A. 输出最大值
B. 输出最大值所在下标
C. 输出最小值
D. 输出最小值所在下标
【答案】B
【解析】k记录当前最大值的下标,遍历后k为最大值的下标。
18、若有定义 int a[3][4];,则数组a中第2行第3列元素在内存中的位置相对于数组首地址的偏移量是(假设int占2字节)( )
A. 4
B. 8
C. 12
D. 16
【答案】C
【解析】行优先存储,第2行(下标1)第3列(下标2)前面有1整行(4个元素)加2个元素,共6个元素,偏移6*2=12字节。
19、以下程序段执行后,输出结果是( )
char str[20] = "C Language";
str[2] = '\0';
printf("%s", str + 3);
A. Language
B. C L
C. anguage
D. 编译错误
【答案】C
【解析】str[2]设为'\0',str+3指向原第4个字符,所以输出字符串时,输出从字符a及之后的字母。
20、以下程序段中,能正确统计字符串s中数字字符个数的是( )
char s[100];
gets(s);
int count = 0;
for (int i = 0; s[i] != '\0'; i++)
if (_______) count++;
A. s[i] >= '0' || s[i] <= '9'
B. s[i] >= '0' && s[i] <= '9'
C. s[i] >= 0 && s[i] <= 9
D. s[i] >= '0' & s[i] <= '9'
【答案】B
【解析】判断字符是否为数字字符,应同时满足大于等于'0'且小于等于'9'。A逻辑或错误;C比较ASCII码与数字0-9,不正确;D位运算错误。
21、以下程序段的输出结果是( )
int i, j, a[2][2] = {1, 2, 3, 4};
for (i = 0; i < 2; i++)
for (j = 0; j < 2; j++)
a[j][i] = a[i][j];
for (i = 0; i < 2; i++)
printf("%d", a[i][i]);
A. 13
B. 14
C. 24
D. 23
【答案】B
【解析】先给a赋值:a[0][0]=1, a[0][1]=2, a[1][0]=3, a[1][1]=4。然后双重循环将a[i][j]赋给a[j][i],相当于转置,a[0][0]=a[0][0]=1,a[1][0]=a[0][1]=2,a[0][1]=a[1][0]=2,a[1][1]=a[1][1]=4。最终a[0][0]=1, a[1][1]=4,输出"14"。
22、以下关于数组初始化的叙述,错误的是( )
A. 静态数组未初始化时,元素值为0
B. 局部数组未初始化时,元素值为随机值
C. 可以使用memset函数将数组元素全部置0
D. 数组初始化时,如果提供的初始值个数少于数组长度,多余元素自动赋0
【答案】A
【解析】静态数组(全局或static)未初始化默认为0;局部数组未初始化是随机值,A错误。23、以下程序段的输出结果是( )
int a[5] = {10, 20, 30, 40, 50};
int *p = a;
printf("%d", *(p + 3) - *p);
A. 10
B. 20
C. 30
D. 40
【答案】C
【解析】*(p+3)=a[3]=40,*p=a[0]=10,差为30。
24、以下程序段执行后,数组b中元素的值是( )
int a[5] = {2, 4, 6, 8, 10}, b[5], i;
for (i = 0; i < 5; i++)
b[i] = a[i] + i;
A. {2,4,6,8,10}
B. {2,5,8,11,14}
C. {3,6,9,12,15}
D. {0,2,4,6,8}
【答案】B
【解析】b[i]=a[i]+i,依次:2+0=2,4+1=5,6+2=8,8+3=11,10+4=14。
25、以下程序段用于将字符串s中的大写字母转换为小写字母,划线处应填( )
char s[100];
gets(s);
for (int i = 0; s[i] != '\0'; i++)
if (s[i] >= 'A' && s[i] <= 'Z')
__________;
puts(s);
A. s[i] = s[i] + 32
B. s[i] = s[i] - 32
C. s[i] = s[i] + 'a' - 'A'
D. A和C均正确
【答案】D
【解析】大写转小写加32,或通过差值计算,A和C均正确。
二、多选题(本题共5小题,每题4分,共20分)
1、以下关于一维数组的初始化,正确的有( )
A. int a[5] = {0, 0, 0};
B. int a[5] = {1, 2, 3, 4, 5};
C. int a[5] = {1, 2, 3, 4, 5, 6};
D. int a[5] = {1};
【答案】ABD
【解析】A部分初始化,多余元素为0;B完全初始化;D第一个元素为1,其余0;C初始值过多,编译错误。
2、以下选项中,能正确引用二维数组a中元素的有( )
A. a[1][2]
B. *(a[1] + 2)
C. *(*(a + 1) + 2)
D. *(a + 1)[2]
【答案】ABC
【解析】D中(a+1)[2]等价于a[3],再取内容可能越界,且不等价于a[1][2]。
3、以下关于字符串处理函数的功能,描述正确的有( )
A. strlen(s) 返回字符串s的长度,不包括'\0'
B. strcmp(s1, s2) 比较两个字符串,相等时返回0
C. strcpy(s1, s2) 将s2复制到s1,包括'\0'
D. strcat(s1, s2) 将s2连接到s1末尾,s1必须有足够空间
【答案】ABCD
【解析】所有描述均正确。
4、以下程序段中,能够实现数组a中元素逆序存放的有( )
A.
for (i = 0; i < n/2; i++) {
t = a[i];
a[i] = a[n-1-i];
a[n-1-i] = t;
}
B.
int b[n];
for (i = 0; i < n; i++) b[i] = a[n-1-i];
for (i = 0; i < n; i++) a[i] = b[i];
C.
for (i = 0; i < n; i++) a[i] = a[n-1-i];
D.
for (i = 0; i < n/2; i++) {
a[i] = a[i] + a[n-1-i];
a[n-1-i] = a[i] - a[n-1-i];
a[i] = a[i] - a[n-1-i];
}
【答案】ABD
【解析】A标准交换;B借助辅助数组;D通过加减交换;C错误,会丢失数据。
5、以下关于数组作为函数参数的叙述,正确的有( )
A. 形参数组和实参数组共享同一段内存
B. 在函数内部,sizeof(形参数组名) 得到的是指针的大小
C. 传递数组时,通常需要额外传递数组长度
D. 形参数组的第一维长度可以省略
【答案】ABCD
【解析】数组名作参数传递地址,形参是指针,因此A正确;sizeof得到指针大小,B正确;长度信息丢失,需额外传递,C正确;形参第一维可省略,D正确。
三、判断题(本题共10小题,每题2分,共20分)
1、数组元素的下标可以是负整数。( )
【答案】×
【解析】下标必须是非负整数(≥0)。
2、二维数组在内存中是按列优先顺序存储的。( )
【答案】×
【解析】按行优先存储。
3、使用strcpy函数时,目标字符数组的长度必须大于等于源字符串的长度。( )
【答案】√
【解析】需包括结束符,即长度 ≥ strlen(src)+1。
4、对于字符数组,可以用赋值语句直接给数组名赋值字符串。( )
【答案】×
【解析】数组名是地址常量,不可赋值,只能用strcpy或初始化。
5、定义数组时,如果对数组进行初始化,可以省略数组长度。( )
【答案】√
【解析】编译器根据初始化值的个数自动确定长度。
6、静态局部数组未初始化时,其元素值是不确定的。( )
【答案】×
【解析】静态局部数组(static)未初始化时,元素自动初始化为0。
7、字符串函数strlen计算的是字符数组的长度(包括'\0')。( )
【答案】×
【解析】strlen计算字符串长度,不包括'\0'。
8、对于二维数组int a[2][3],a[0]和&a[0][0]的值相同。( )
【答案】√
【解析】a[0]是第0行首地址,与第0行第0列地址相同。
9、在函数内部,使用sizeof运算符对形参数组名操作,得到的是整个数组的字节数。( )
【答案】×
【解析】形参数组名退化为指针,sizeof得到指针大小(通常4或8字节)。
10、char s[10] = "Hello"; 等价于 char s[10] = {'H','e','l','l','o','\0'};。( )
【答案】√
【解析】字符串初始化自动添加'\0',剩余元素补0,但这里数组长度10,后面元素自动为0。
四、填空题(本题共5小题,每题2分,共10分)
1、若有定义 int a[3][2] = {{1,2},{3,4}};,则 a[2][1] 的值为 ( )。
【答案】0
【解析】第三行未初始化,自动补0,a[2][1]=0。
2、以下程序段的功能是统计字符串中空格字符的个数,请填空( )。
char s[100];
gets(s);
int i, count = 0;
for (i = 0; s[i] != '\0'; i++)
if (_______) count++;
printf("%d", count);
【答案】s[i] == ' '
【解析】判断字符是否为空格。
3、以下程序段执行后,输出结果为 ( )。
char s[20] = "abcde";
strcpy(s + 2, "xyz");
printf("%s", s);
【答案】abxyz
【解析】从s[2]开始复制"xyz",覆盖原"cde",结果为"abxyz"。
4、以下程序段执行后,数组a中元素的值按行输出为 ( )。
int a[2][3] = {0};
int i, j;
for (i = 0; i < 2; i++)
for (j = 0; j < 3; j++)
a[i][j] = i + j;
【答案】0 1 2 1 2 3
【解析】a[0][0]=0, a[0][1]=1, a[0][2]=2; a[1][0]=1, a[1][1]=2, a[1][2]=3。
5、以下程序段用于求二维数组a中所有元素的最大值,请填空( )。
int a[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12};
int i, j, max;
max = _________;
for (i = 0; i < 3; i++)
for (j = 0; j < 4; j++)
if (a[i][j] > max) max = a[i][j];
【答案】a[0][0]
【解析】max初始化为第一个元素。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$