二级C语言选择题专项强化真题试卷20
选择题
1.有以下程序:
#include<stdio.h>
main()
{
int aaE3][3]={{2),{4),{6)),i,*p=&aa[0][0]:
for(i=0;i<2;i++)
{
if(i==0)
aa[i][i+1]=*p+1;
else++p:
printf(\\(B)
A. 2 6
B. 2 3
C. 4 3
D. 4 6
解析:本题主要考查指针与数组。观察题目,可以发现,*p=&[0][0]语句实际是将数组a的首地址赋给了指针变量p。将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2,*p输出的是指针所指向的数组值,此时p所指向的是aa[0][0],输出2;i=1时执行++p操作,使得指针向后移动指向aa[0][1],所以在输出*p时应为3。故B选项正确。
2.有以下程序:
#include<stdio.h>
typedef struct{int b,p;}A;
void f(A c)/*注意:c是结构变量名*/
{ int j;
c.b+=1;c.p+=2;
}
main()
{
int i;
A a={1,2};f(a);
printf(\\(B)
A. 2 4
B. 1 2
C. 1 4
D. 2 3
解析:考查结构体变量作为函数实参整体传递,也是一种值传参,形参的变化不能影响到实参,所以调用函数f(a)对a中的数据没有影响,输出结果为12,答案选B。
3.以下叙述中正确的是( )。(C)
A. 两个字符串可以用关系运算符进行大小比较
B. 函数调用strlen(s);会返回字符串s实际占用内存的大小(以字节为单位)
C. C语言本身没有提供对字符串进行整体操作的运算符
D. 拼接两个字符串时,结果字符串占用的内存空间是两个原串占用空间的和
解析:本题考查字符串处理函数strlen、stract、strcrnp。A选项中不能用关系运算符进行大小比较,可以使用strcmp;B选项中strlen返回的是字符串s实际占用内存大小加上结尾符;D选项中当使用连接函数stract时,内存空间会减少一个字符位置。
4.要求定义一个具有6个元素的int型一维数组,以下选项中错误的是( )。
A
解析:数组定义中长度不能为变量。
5.软件需求分析阶段的主要任务是( )。(D)
A. 确定软件开发方法
B. 确定软件开发工具
C. 确定软件开发计划
D. 确定软件系统的功能
解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能需求,性能需求,环境需求,可靠性需求,用户界面需求,资源使用需求等,故D选项正确。A、B、C选项均为开发阶段的工作。
6.有以下程序:
#include
int fun(int a[],int n,int x)
{ int*p=a;
while(p<a+n&& *p!=x)P++;
if(p<a+n)return p—a;
else return一1;
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,10};
printf(\\(A)
A. 9
B. 一1
C. 10
D. 0
解析:while(p<a+n && *p!=x)p++;当,p=a;n=10,x=10;时while循环条件成立,直到p=a+9,结束循环,执行下一条语句,if条件成立,返回p—a;此时执行p—a=a+9一a=9;因此,输出9。故答案为A选项。
7.有以下程序:
#include<stdio.h>
#include<string.h>
typedef struet{char name[9];char sex;float score[2];}STU;
void f(STU a)
{
STU b={\\(D)
A. Zhao,m,85,90
B. Qian,m,85,90
C. Zhao,f,95,92
D. Qian,f,95,92
解析:本题考杏结构体的相关操作以及传值、传址的区别.该题中调用f函数后,会生成参数c的一个副本,而不会改变c的值,所以c值维持原值,选项D正确。
8.软件需求分析阶段的主要任务是( )。(D)
A. 确定软件开发方法
B. 确定软件开发工具
C. 确定软件开发计划
D. 确定软件系统的功能
解析:需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编写需求规格说明书和需求评审,包括确定软件系统的功能,D选项正确。A、B、C选项均为开发阶段工作。
9.以下关于逻辑运算符两侧运算对象的叙述中正确的是( )。(A)
A. 可以是任意合法的表达式
B. 只能是整数0或非0整数
C. 可以是结构体类型的数据
D. 只能是整数0或1
解析:C语言的逻辑运算符比较特别,它的操作数没有明确的数据类型,可以是任意合法的表达式,所以选择A)。
10.以下叙述中正确的是( )。(B)
A. 无论指针变量p具有何种基类型,表达式p=p+1都代表指针p移动一个字节
B. 指针变量具有基类型,基类型不同的指针变量不能直接相互赋值
C. 指针变量的赋值操作:p=0;是非法的
D. 通过指针变量存取某个变量值的方式称为“直接存取”方式
解析:指针自增或自减1,移动的字节数与指针变量指向的具体类型有关,假设指针变量p指向的是int类型,那么p=p+1表示指针p移动4个字节(通常int类型占4个字节),选项A错误;将0赋给指针变量,表示指针变量的值为空,这是合法的,选项C错误;通过指针变量存储指向的地址的值,称为“间接存取”方式,选项D错误;指针变量具有基类型,基类型不同的指针变量不能直接相互赋值,选项B正确;本题答案为B。
11.有以下程序:
#include
#include
main()
{char str[][20]={\\(A)
A. 10,One*Dream!
B. 9,One*Dream!
C. 9,One* World
D. 10,One* World
解析:p是指向二维字符数组第二行One*Dream!的数组指针,所以长度是10,打印输出的也是该字符串。
12.在医院,每个医生只属于某一个诊疗科,医生同一天可为多位患者看病,而一名患者
本文档预览:3600字符,共7884字符,源文件无水印,下载后包含无答案版和有答案版,查看完整word版点下载