内容正文:
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第10卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握字符数组的定义及引用。
山东省《软件与应用技术类考纲百套卷》 第10卷
《C语言程序设计》
字符数组的定义及引用 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下字符数组定义语句中,正确的是( )
A. char str [10];
B. char str (10);
C. char str [5.0];
D. char str [n];
【答案】A
【解析】字符数组定义格式为类型名 数组名[常量表达式];,长度必须是整型常量。B 用括号错误;C 用浮点数错误;D 用变量错误。
2.以下字符数组初始化语句中,正确的是( )
A. char str [3]={'a','b','c','d'};
B. char str [5]={'a','b','c','d','e'};
C. char str []={};
D. char str [5]={'a',,'c'};
【答案】B
【解析】初始化元素个数不能超过数组长度,A 错误;不能省略所有元素,C 错误;不能连续出现逗号,D 错误;B 是完整初始化,所有元素都被赋值。
3.若有定义char str[]="abc";,则数组 str 的长度是( )
A. 3
B. 4
C. 5
D. 不确定
【答案】B
【解析】字符串 "abc" 包含 4 个字符:'a'、'b'、'c' 和结束符 '\0',因此数组长度为 4。
4.在 C 语言中,字符数组名str代表的是( )
A. 数组全部元素的值
B. 数组最后一个元素的值
C. 数组最后一个元素的地址
D. 数组第一个元素的地址
【答案】D
【解析】字符数组名是常量指针,指向数组第一个元素的首地址,与普通数组名含义相同。
5.若有定义char str[5]={'a','b'};,则数组元素str[3]的值是( )
A. '\0'
B. 'b'
C. ' '
D. 随机值
【答案】A
【解析】字符数组部分初始化时,未显式初始化的元素自动赋值为 '\0'。
6.若有定义char str[10]="abc";,则strlen(str)的值是( )
A. 10
B. 3
C. 4
D. 不确定
【答案】B
【解析】strlen函数计算字符串的有效长度,不包括结束符 '\0',因此 "abc" 的长度为 3。
7.若有定义char str[]="hello";,则数组元素str[1]的值是( )
A. 'h'
B. 'l'
C. 'e'
D. 'o'
【答案】C
【解析】数组下标从 0 开始,str [0]='h',str [1]='e',str [2]='l',str [3]='l',str [4]='o'。
8.以下输入字符数组的语句中,正确的是( )
A. char str [10]; scanf ("% c", str);
B. char str [10]; scanf ("% s", &str);
C. char str [10]; scanf ("% d", str);
D. char str [10]; scanf ("% s", str);
【答案】D
【解析】用%s格式符输入字符串时,参数直接写数组名,不需要加&。A 用%c只能输入单个字符;B 多了&;C 用%d输入整数错误。
9.以下字符数组定义语句中,错误的是( )
A. char str [3]="abc";
B. char str [4]="abc";
C. char str []="abc";
D. char str [5]={'a','b','c','\0'};
【答案】A
【解析】字符串 "abc" 需要 4 个字节存储(含 '\0'),A 选项数组长度为 3,空间不足,会导致越界错误。
10.以下关于字符数组与字符串的描述中,正确的是( )
A. 字符数组就是字符串
B. 字符串必须以 '\0' 结尾,字符数组不一定
C. 字符数组必须以 '\0' 结尾
D. 字符串可以用赋值运算符直接赋值,字符数组不行
【答案】B
【解析】字符串是特殊的字符数组,必须以 '\0' 结尾;普通字符数组可以不包含 '\0',但不能当作字符串使用。
11.执行以下程序段后,输出结果是( )
char str[]="abcde";
for(int i=0;str[i]!='\0';i++)
printf("%c", str[i]+1);
A. abcde
B. bcdef
C. edcba
D. 编译错误
【答案】B
【解析】循环遍历字符串,每个字符的 ASCII 码加 1 后输出,'a'+1='b','b'+1='c',依此类推,结果为 bcdef。
12.执行以下程序段后,输出结果是( )
char str[5]={'a','b','\0','c','d'};
printf("%s", str);
A. abcd
B. ab\0cd
C. ab
D. 编译错误
【答案】C
【解析】printf用%s输出字符串时,遇到 '\0' 就停止,因此只输出 '\0' 前面的 'ab'。
13.以下给字符数组赋值的语句中,正确的是( )
A. char str [10]; str [0]='a'; str [1]='b'; str [2]='\0';
B. char str [10]; str="abc";
C. char str1 [10]="abc", str2 [10]; str2=str1;
D. char str [10]={'a','b','c'}; str="def";
【答案】A
【解析】字符数组不能直接用赋值运算符=赋值,只能逐个元素赋值或初始化时赋值。B、C、D 都错误地使用了=赋值。
14.若有定义char str[5];,以下数组元素引用中,错误的是( )
A. str [0]='a';
B. str [4]='e';
C. str [5]='f';
D. str [2]=str [0]+1;
【答案】C
【解析】字符数组下标范围是 0 到长度 - 1,str [5] 下标越界,会导致运行错误。
15.若有定义char str[]="";,则数组 str 的长度是( )
A. 0
B. 1
C. 2
D. 不确定
【答案】B
【解析】空字符串 "" 包含一个字符 '\0',因此数组长度为 1。
16.执行以下程序段后,输出结果是( )
char str[]="hello\0world";
printf("%s", str);
A. hello
B. helloworld
C. hello\0world
D. 编译错误
【答案】A
【解析】字符串中第一个 '\0' 就是结束符,后面的内容不会被输出,因此只输出 "hello"。
17.以下关于字符数组初始化的描述中,正确的是( )
A. 可以用字符串常量初始化字符数组
B. 只能用字符常量逐个初始化字符数组
C. 初始化时必须指定数组长度
D. 初始化时元素个数必须等于数组长度
【答案】A
【解析】可以用字符串常量直接初始化字符数组,系统会自动添加 '\0'。B 错误,也可以用字符串初始化;C 错误,可以省略长度;D 错误,可以部分初始化。
18.若有定义char str[]="abcdef";,则sizeof(str)的值是( )
A. 6
B. 7
C. 8
D. 不确定
【答案】B
【解析】sizeof计算数组所占的总字节数,"abcdef" 包含 7 个字符(6 个字母 + 1 个 '\0'),因此 sizeof (str)=7。
19.以下循环中,能正确遍历字符串所有字符的是( )
A. for (int i=0;i<sizeof (str);i++) printf ("% c", str [i]);
B. for (int i=0;i<strlen (str)+1;i++) printf ("% c", str [i]);
C. for (int i=0;str [i]!='\0';i++) printf ("% c", str [i]);
D. for (int i=0;i<10;i++) printf ("% c", str [i]);
【答案】C
【解析】遍历字符串的标准写法是判断字符是否为 '\0',遇到结束符停止。A 会输出 '\0' 及后面的垃圾值;B 多输出了 '\0';D 固定循环 10 次,可能越界或输出不完整。
20.若用scanf("%s", str)输入字符串,以下说法正确的是( )
A. 可以输入包含空格的字符串
B. 输入的字符串会自动添加 '\0'
C. 输入时必须加 & 符号
D. 输入的字符串长度可以超过数组长度
【答案】B
【解析】scanf("%s")输入字符串时,会自动在末尾添加 '\0';A 错误,遇到空格就停止输入;C 错误,数组名本身是地址,不需要 &;D 错误,长度超过数组会导致越界。
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,程序运行后的结果为______
#include <stdio.h>
int main()
{
char str[]="Hello World";
int count=0,i=0;
while(str[i]!='\0')
{
if(str[i]=='o')
count++;
i++;
}
printf("count=%d
", count);
return 0;
}
【答案】count=2
2.阅读以下 C 语言程序,程序运行后的结果为______
#include <stdio.h>
int main()
{
char str[]="12345";
int i,temp;
for(i=0;i<2;i++)
{
temp=str[i];
str[i]=str[4-i];
str[4-i]=temp;
}
printf("%s
", str);
return 0;
}
【答案】54321
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入一个字符串,计算并输出该字符串的长度(不包括结束符 '\0')。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
char str[100];
int len=0,i=0;
printf("请输入一个字符串:");
scanf("%s", ____1____);
while(str[i]!='\0')
{
____2____;
____3____;
}
printf("字符串长度为:%d
", ____4____);
return 0;
}
【答案】
1.str
2.len++(或len=len+1、len+=1)
3.i++(或i=i+1、i+=1)
4.len
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:输入一个不超过 100 个字符的字符串
统计并输出字符串中大写字母的个数。
【答案】
#include <stdio.h>
int main()
{
char str[100];
int count=0,i=0;
printf("请输入一个字符串:");
scanf("%s", str);
while(str[i]!='\0')
{
if(str[i]>='A' && str[i]<='Z')
count++;
i++;
}
printf("大写字母的个数为:%d
", count);
return 0;
}
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$
编写说明:山东省春季高考《软件与应用技术类考纲百套卷》,依据山东省《软件与应用技术类专业知识考试标准》编写。每门课程均分三层训练:基础层(具象化支架)拆解考点为微目标,紧扣考纲 “掌握”“理解” 要求编写考点训练卷;巩固层(关联性支架)强化知识交叉与场景关联,按考纲专题编专题训练卷;应用层(引导性支架)聚焦真题突破,结合知识模块与教材编写课程综合卷。
本试卷是第10卷,按《C语言程序设计》范围和要求编写。具体内容为:
掌握字符数组的定义及引用。
山东省《软件与应用技术类考纲百套卷》 第10卷
《C语言程序设计》
字符数组的定义及引用 考点训练卷
考试时间60分钟 满分100分
班级 姓名 学号 成绩
一、选择题(本大题共20小题,每题3分,共60分)
1.以下字符数组定义语句中,正确的是( )
A. char str [10];
B. char str (10);
C. char str [5.0];
D. char str [n];
2.以下字符数组初始化语句中,正确的是( )
A. char str [3]={'a','b','c','d'};
B. char str [5]={'a','b','c','d','e'};
C. char str []={};
D. char str [5]={'a',,'c'};
3.若有定义char str[]="abc";,则数组 str 的长度是( )
A. 3
B. 4
C. 5
D. 不确定
4.在 C 语言中,字符数组名str代表的是( )
A. 数组全部元素的值
B. 数组最后一个元素的值
C. 数组最后一个元素的地址
D. 数组第一个元素的地址
5.若有定义char str[5]={'a','b'};,则数组元素str[3]的值是( )
A. '\0'
B. 'b'
C. ' '
D. 随机值
6.若有定义char str[10]="abc";,则strlen(str)的值是( )
A. 10
B. 3
C. 4
D. 不确定
7.若有定义char str[]="hello";,则数组元素str[1]的值是( )
A. 'h'
B. 'l'
C. 'e'
D. 'o'
8.以下输入字符数组的语句中,正确的是( )
A. char str [10]; scanf ("% c", str);
B. char str [10]; scanf ("% s", &str);
C. char str [10]; scanf ("% d", str);
D. char str [10]; scanf ("% s", str);
9.以下字符数组定义语句中,错误的是( )
A. char str [3]="abc";
B. char str [4]="abc";
C. char str []="abc";
D. char str [5]={'a','b','c','\0'};
10.以下关于字符数组与字符串的描述中,正确的是( )
A. 字符数组就是字符串
B. 字符串必须以 '\0' 结尾,字符数组不一定
C. 字符数组必须以 '\0' 结尾
D. 字符串可以用赋值运算符直接赋值,字符数组不行
11.执行以下程序段后,输出结果是( )
char str[]="abcde";
for(int i=0;str[i]!='\0';i++)
printf("%c", str[i]+1);
A. abcde
B. bcdef
C. edcba
D. 编译错误
12.执行以下程序段后,输出结果是( )
char str[5]={'a','b','\0','c','d'};
printf("%s", str);
A. abcd
B. ab\0cd
C. ab
D. 编译错误
13.以下给字符数组赋值的语句中,正确的是( )
A. char str [10]; str [0]='a'; str [1]='b'; str [2]='\0';
B. char str [10]; str="abc";
C. char str1 [10]="abc", str2 [10]; str2=str1;
D. char str [10]={'a','b','c'}; str="def";
14.若有定义char str[5];,以下数组元素引用中,错误的是( )
A. str [0]='a';
B. str [4]='e';
C. str [5]='f';
D. str [2]=str [0]+1;
15.若有定义char str[]="";,则数组 str 的长度是( )
A. 0
B. 1
C. 2
D. 不确定
16.执行以下程序段后,输出结果是( )
char str[]="hello\0world";
printf("%s", str);
A. hello
B. helloworld
C. hello\0world
D. 编译错误
17.以下关于字符数组初始化的描述中,正确的是( )
A. 可以用字符串常量初始化字符数组
B. 只能用字符常量逐个初始化字符数组
C. 初始化时必须指定数组长度
D. 初始化时元素个数必须等于数组长度
18.若有定义char str[]="abcdef";,则sizeof(str)的值是( )
A. 6
B. 7
C. 8
D. 不确定
19.以下循环中,能正确遍历字符串所有字符的是( )
A. for (int i=0;i<sizeof (str);i++) printf ("% c", str [i]);
B. for (int i=0;i<strlen (str)+1;i++) printf ("% c", str [i]);
C. for (int i=0;str [i]!='\0';i++) printf ("% c", str [i]);
D. for (int i=0;i<10;i++) printf ("% c", str [i]);
20.若用scanf("%s", str)输入字符串,以下说法正确的是( )
A. 可以输入包含空格的字符串
B. 输入的字符串会自动添加 '\0'
C. 输入时必须加 & 符号
D. 输入的字符串长度可以超过数组长度
二、简答题(本大题共2小题,每题10分,共20分)
1.阅读以下 C 语言程序,程序运行后的结果为______
#include <stdio.h>
int main()
{
char str[]="Hello World";
int count=0,i=0;
while(str[i]!='\0')
{
if(str[i]=='o')
count++;
i++;
}
printf("count=%d
", count);
return 0;
}
2.阅读以下 C 语言程序,程序运行后的结果为______
#include <stdio.h>
int main()
{
char str[]="12345";
int i,temp;
for(i=0;i<2;i++)
{
temp=str[i];
str[i]=str[4-i];
str[4-i]=temp;
}
printf("%s
", str);
return 0;
}
三、案例分析题(本大题共1小题,每题10分,共10分)
1.以下程序的功能是:输入一个字符串,计算并输出该字符串的长度(不包括结束符 '\0')。请在程序的下划线处填入正确的内容,使程序完整并能正确运行。
#include <stdio.h>
int main()
{
char str[100];
int len=0,i=0;
printf("请输入一个字符串:");
scanf("%s", ____1____);
while(str[i]!='\0')
{
____2____;
____3____;
}
printf("字符串长度为:%d
", ____4____);
return 0;
}
四、综合应用题(本大题共1小题,每题10分,共10分)
1.编写一个 C 语言程序,实现以下功能:输入一个不超过 100 个字符的字符串
统计并输出字符串中大写字母的个数。
原创精品资源学科网独家享有版权,侵权必究!
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
学科网(北京)股份有限公司
$