




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年四川省乐山市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.在m叉树中,都为0的结点称为()。
A.兄弟B.树叶C.树根D.分支结点
3.第
42
题
若有说明语句
chara[]="Itismine";
char*p="Itismine";
则以下不正确的叙述是
A.a+1表示的是字符t的地址
B.p指向另外的字符串时,字符串的长度不受限制
C.p变量中存放的地址值可以改变
D.a中只能存放10个字符
4.有如下程序main(){inty=3,x=3,z=1;printf("%d%d\n",(++x,y++),z+2);}运行该程序的输出结果是______。
A.34B.42C.43D.33
5.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是().
A.地址传递B.单向值传递C.由实参传给形参,再由形参传回实参D.传递方式由用户指定
6.有以下程序:#include<stdio.h>main(){FILE*fp;charstr[10];fp=fopen("myfile,dat","");{puts("abe",ip);fclose(fp);fp=fopen("myfile.dat","a*");fprintf(fp,"%d",28);rewind(fp);fscanf(fp,"%S",str);puts(str);fclose(fp);}程序运行后的输出结果是()。A.abcB.28cC.abc28D.内类型不一致而出错
7.数据字典(DD)所定义的对象都包含于()。
A.软件结构图B.方框图C.数据流图(DFD图)D.程序流程图
8.
9.以下程序段运行后x的值为()。inti,j,x=0;for(i=3;i>=1;i--)for(j=1;j<=i;j++)x=x+2A.8B.14C.10D.12
10.
11.若有以下定义和语句
chars1[10]="abcd!",*s2="\n123\\";
printf("%d%d\n",strlen(s1),strlen(s2));
则输出结果是A.A.55B.105C.107D.58
12.若有定义floata[15],*p=a;,且数组a的首地址为300H,则p+13所指向的数组元素的地址为()。
A.334HB.30DHC.352HD.31AH
13.以下程序的输出结果是()。main{charch[3][4]={"123","456","78"),*p[3];inti;for(i=0;i<3;i++)p[i]=ch[i];for(i=0;i<3;i++)printf("%s",p[i]);}A.123456780B.123456780C.12345678D.147
14.
15.若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()
A.38,40,46,56,79,84
B.40,38,46,79,56,84
C.40,38,46,56,79,84
D.40,38,46,84,56,79
16.下而程序的输出结果是()。
A)32
B)26
C)24
D)4
17.下面C程序段中count++语句执行的次数为()A.15B.16C.31D.32
18.栈通常采用的两种存储结构是()。
A.顺序存储结构和链式存储结构B.散列方式和索引方式C.链表存储结构和数组D.线性存储结构和非线性存储结构
19.有以下程序:#include<stdio.h>intfun(){staticintx=1;x*=2;returnx;}main(){inti,s=1;for(i=1;i<=3;i++)s*=fun();printf(“%d\n”,s);}程序的运行结果是()。
A.10B.30C.0D.64
20.数据库是______的集合,它具有统一的结构形式并存放于统一的存储介质内,可被各个应用程序所共享。
A.视图B.消息C.数据D.关系
二、2.填空题(20题)21.若a是int型变量,则下列表达式的值为______。
(a=2*3,a*2),a+4
22.以下fun函数的功能是:累加数组元素中的值,n为数组中元素的个数,累加的和值放入x所指的存储单元中。请填空。
fun(intb[],intn,int*x)
{intk,r=0;
for(k=0,k<n;k++)r=【】;
【】=r;
}
23.以下程序运行后的输出结果是______。
main()
{
inta[4]]4]={{1,2,3,4},{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0.j=0,s=0;
while(i++<4}
if(i==2||i==4)continue;
j=0;
do
{
s+=a[i][j]:
j++;
}while(j<4);
}
printf("%d\n",s);
}
voidfun(intx,inty)
}
24.下面的程序能求a:ab.c文件中最长行和它的位置。
#include<stdio.h>
main()
{intlin,i,j=0,k=0;
charc;
FILE*fp;
fp=(【】("a:ab.c","r");
rewind(fp);
while(fgetc(fp)!=EOF)
i=1;
【】
{i++;
j++;
if(i>=k){k=i;【】;}
}
printf("\n%d\t%d\n",k,lin);
【】;
}
25.有以下程序
main()
{intn=0,m=1,x=2;
if(!n)x-=1;
if(m)x-=2;
if(x)x-=3;
printf("%d\n",x);
}
执行后输出结果是【】。
26.执行以下程序的输出结果是()。
#include<stdio.h>
#defineM5
#defineNM+M
main()
{intk;
k=N*N*5;printf(”%d\n",k);
}
27.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】(要求形参名为b)。main(){doubles[10][22];intn;……fun(s);……}
28.以下程序的功能是将字符串s中的数字字符放人d数组中,最后输出d中的字符串。例如,输入字符串abc123edf456gh,执行程序后输出123456。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{chars[80],d[80];inti,j;
gets(s);
for(i=j=0;s[i]!='\0';i++)
if(【】){d[j]=s[i];j++;)
d[j]='\0';
puts(D);
}
29.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)
longfun(charS[])
{longn;intsign;
for(;isspace(*s)||islower(*s);s++);
sign=(*s=='-')?-1:1;
if(*s=='+'||*s=='-')s++;
for(n=0;isdigit(*s);s++)
n=10*n+(*S-'0');
returnsign*n;
}
30.设y为血型变量,请写出描述“y是偶数”的表达式______。
31.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
32.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta=10,b=3;
printf("%d,",a%B);
printf("%d,",(a-b,a+B));
printf("%dLn",a-b?a-b:a+B);
}
33.设有下列的程序段;
charstr[]="Hello";
char*ptr;
ptr=str;
执行上面的程序段后,*(ptr+5)的值为______。
34.当线性表的操作无插入和删除时,采用【】结构为好。
35.有以下程序:
voidf(intv,intw)
{intt;
t=v;v=w;w=t;
}
main()
{intx=1,y=3,z=2
if(x>y)f(x,y);
elseif(y>z)f(y,z);
elsef(x,z);
printf("%d,%d,%d\n",x,y,z);
}
执行后的输出结果是【】。
36.数据的逻辑结构有线性结构和______两大类。
37.假定变量x为int类型,请以最简单的形式写出与逻辑表达式!x等价的C语言关系表达式【】。
38.数据结构分为线性结构和非线性结构,线性表、栈和队列都属于【】。
39.以下程序段的输出结果是【】。
inti=9;
printf("%o\n",i);
40.以下函数的功能是计算s=1+1/2!+1/3!+……+1/n!,请填空。
doublefun(intn)
{
doubles=0.0,fac=1.0;inti;
for(i=1,i<=n;i++)
{
fac=fac______;
s=s+fac;
}
returns;
}
三、1.选择题(20题)41.以下对C语言函数的有关描述中,正确的是
A.在C语言中调用函数时,只能把实参的值传给形参,形参的值不能传送给实参
B.C函数既可以嵌套定义又可以递归调用
C.函数必须有返回值,否则不能使用函数
D.函数必须有返回值,返回值类型不定
42.下列说法正确的是
A.int(**def)[10];----def指向一个指针,该指针指向10个整型变量构成的数组
B.int*(*gh[10]);---gh指向一个指针,该指针指向10个整型变量构成的数组
C.int*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组
D.A,C均正确
43.以下选项中合法的C语言字符常量是
A.'\t'B.AC.67D.A
44.当执行下面的程序时,其输出结果为______。unionst{inta;charb;}main(){unionsts;char*p=(char*)&s;s.a=0x3132;s.b=0x33;printf("%c",*p);}
A.1B.2C.3D.不确定
45.以下叙述中正确的是A.全局变量的作用域一定比局部变量的作用域范围大
B.静态(static)类别变量的生存期贯穿于整个程序的运行期间
C.函数的形参都属于全局变量
D.未在定义语句中赋初值的auto变量和static变量的初值都是随机值
46.有以下程序floatfun(intx,inty){return(x+y);}main(){inta=2,b=5,c=8;printf("%3.0f\n",fun((int)fun(a+c,b),a-c));}程序运行后的输出结果是
A.编译出错B.9C.21D.9
47.若变量都已正确说明,则以下程序段输出结果为()。#include<stdio.h>main(){chara='a';intb=2;printf(a>b?”***a=%d":"###b=%d",a,B;}
A.***a=3B.###b=3C.***a=3##b=5D.全部错误
48.按照“先进先出”组织数据的数据结构是()。
A.队列B.栈C.双向链表D.二叉树
49.假定int类型变量占用两个字节,若有定义:intx[10]={0,2,4};,则数组x在内存中所占字节数是______。
A.3B.6C.10D.20
50.下列程序的输出结果是()。#include<stdio.h>#include<string.h>main(){chara[]="\n123\\";printf("%d,%d\n",strlen(a),sizeof(a));}
A.5,6B.5,5C.6,6D.6,5
51.有以下程序:int*f(int*x,int*y){if(*x<*y)returnx;elsereturny;}main(){inta=7,b=8,*p,*q,*r;p=&a;q=&b;r=f(p,q);printf("%d,%d,%d\n",*p,*q,*r);}执行后输出结果是()。
A.7,8,8B.7,8,7C.8,7,7D.8,7,8
52.设有定义:intn=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是()A.p=1;B.*q=2;C.q=p;D.*p=5;
53.已知二叉树后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是
A.acbedB.decabC.deabcD.cedba
54.假定建立了以下链表结构,指针p、q分别指向如图所示的结点,则以下可以将q所指结点从链表中删除并释放该结点的语句组是()
A.free(q);p->Next=q->next;
B.(*p).next=(*q).nexy;free(q);
C.q=(*q).next;(*p).next=q;free(q);
D.q=q->next;p->next=q;p=p->next;free(p);
55.若有语句:Char*line[5];,以下叙述中正确的是()。
A.定义line是一个数组,每个数组元素是一个基类型为Char的指针变量
B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组
C.定义line是一个指针数组,语句中的*号称为间址运算符
D.定义line是一个指向字符型函数的指针
56.有以下程序:main(){charch[]="uvwxyz",*pc;pc=ch;printf("%c\n",*(pc+5));}程序运行后的输出结果是()。
A.zB.0C.元素ch[5]地址D.字符y的地址
57.若已定义以下语句,其中0≤i≤9,则对a数组元素不正确的引用为______。inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;
A.a[p-a]B.*(&a[i])C.p[i]D.a[10]
58.若输入173253,则以下程序的运行结果为______。main(){unsigneda;intn1,n2;scanf("%o",&a);printf("%o",getbits(a,4,8));}getbits(value,n1,n2)unsignedvalue;intn1,n2;{unsignedz;z=~0;z=(z>>n1)&(z<<(16-n2));z=value&z;z=z>>(16-n2);return(z);}
A.173253B.6C.8D.173
59.有以下程序:intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d,e,f;d=fl(a,b);d=f1(d,c);e=f2(a,b);e=f2(e,c);f=a+b+c-d-e;printf("%d,%d,%d\n",d,f,e);}执行后输出结果是()。
A.3,4,5B.5,3,4C.5,4,3D.3,5,4
60.若变量已正确定义并赋值,以下符合C++语言语法的表达式是()。
A.a:=b+1B.a=b=c+2C.int18.5%3D.a=a+7=c+b
四、选择题(20题)61.以下程序的输出结果是()。
main
{intx=0.5;charz='a';
printf("%d\n",(x&1)&&(z<'2'));}A.A.0B.1C.2D.3
62.
63.(48)软件调试的目的是()
A.发现错误
B.改正错误
C.改善软件的性能
D.挖掘软件的潜能
64.
下述程序执行的输出结果是()。
#include<stdio.h>
main
{chara[2][4];
strcpy(a,"are");strcpy(a[1],"you");
a[0][3]=&;
printf("%s\n",a):
}
A.are&youB.youC.areD.&
65.下列有关数据库的描述,正确的是______。
A.数据库是一个DBF文件B.数据库是一个关系C.数据库是一个结构化的数据集合D.数据库是一组文件
66.以下程序的输出结果是()。
#include<stdio.h>
voidmain()
{inta,b,d=241;
a=d/100%9;
b=(-1)&&(-1);
printf("%d,%d\n",a,b);}
A.6,1B.2,1C.6,0D.2,0
67.有下列程序
voidfunc1(inti);
voidfunc2(inti);
charst[]="hello,friend!";
voidfunc1(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func2(i);}
}
voidfunc2(inti)
{printf("%c",st[i]);
if(i<3){i+=2;func1(i);}
}
main()
{inti=0;func1(i);
printf("\n");
}
执行后的输出结果是
A.helloB.hel
C.hloD.hlm
68.
69.
70.
有以下函数:
charfun(char*p)
{returnP;}
该函数的返回值是()。
A.无确切的值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
71.
72.以下程序运行后的输出结果是()。
main()
{inta=2,b=3,c;
c=a;
if(a>b)c=1;
elseif(a==b)c=0;
elsec=-1;
printf("%d\n",c);}
A.1B.3C.-1D.0
73.
74.
75.有以下程序:
程序运行后的输出结果是()。
A.0B.10C.20D.出错
76.数据库关系模型中可以有三类完整性约束,下列选项中不属于三类完整性约束的是()。
A.实体完整性规则B.参照完整性规则C.对象完整性规则D.用户自定义完整性规则
77.下列叙述中正确的是()。
A.一个算法的空间复杂度大,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度必定小
C.一个算法的时间复杂度大,则其空间复杂度必定小
D.上述三种说法都不对
78.
79.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′
B.(c>=′a′)||(c<=′z′)
C.(′a′=C)
D.(c>=′a′)&&(c<=′z′)
80.(70)需求分析阶段的任务是确定()
A.软件开发方法
B.软件开发工具
C.软件开发费用
D.软件系统功能
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:计算并输出k以内最大的10个能被13或17整除的自然数之和。k的值由主函数传人,若k的值为600,则函数的值为5671。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式值。S=(1+1/2)+(1/3+1/4)+…+(1/(2n-1)+1/2n)例如,若输入10,则输出为S=3.597740。n的值要求大于1但不大于100。注意:部分源程序给出如下。请勿改动函数main()和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.B
3.D在C程序中,可以用字符数组存放一个字符串,然后输出该字符串,也可以用字符指针指向一个字符串。
题目中用字符数组a[]来存放字符串'Itismine',a为数组名,表示首元素的地址,即字母I的地址。a+1表示数组中第二个元素t的地址,选项A正确。当用字符串指针指向字符串时,只是将字符串的第一个元素的地址赋给指针,当该指针指向其他字符串时,只需将该字符串的第一个元素地址赋给这个指针即可,和字符串的长度没有关系,选项B也是正确的。指针变量的值为元素的地址,和元素具体的值没有关系,当指针指向不同的元素时,存放的地址也会发生改变,故选项C是正确的。数组a初始化时没有指定数组长度,系统自动根据初值个数确定数组长度,题目中只是将10个有效字符存放到数组中,不能说明这个数组只能存放10个字符。
4.D解析:逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以y++的值是3。
5.B
6.C本题考查文件的操作,首先打开文件,进行写操作,把“abc”写入“myfile”文件,再打开“myfile.data"文件,输入28,在键盘上接收字符,输出并关闭文件。本题结果为abc28。
7.C数据字典(DD)是指对数据的数据项、数据结构、数据流、数据存储、处理逻辑、外部实体等进行定义和描述,其目的是对数据流程图中的各个元素做出详细的说明。
8.B
9.D
10.D
11.A
12.C解析:解答本题,首先要明白在对指针进行加、减运算的时候,数字“1”不是十进制的数“1”,而是指'1'个存储单元长度,而1个存储单元长度占多少存储空间,应该视具体情况而定。如果基本类型是int型,移动1个存储单元的长度就是位移2个字节,如果基本类型是float型,移动1个存储单元的长度就是位移4个字节。所以p+13所指向的数组元素的地址:300H+(13*上标)4)H=352H。
13.B第一个for循环的作用是让p指向每行的首地址,第二个for循环的作用是把它指向的字符串输出,故选择B选项。
14.A
15.C
16.C本题考查的是联合所占的存储空间。sizeof(t)=sizeof(douhle)*3=8*3=24。联合体所占的存储空间取决于所占空间最大的成员所占的空间。
17.A
18.A解析:和线性表类似,栈也有两种存储方法,一是顺序栈,二是链式栈。栈的顺序存储结构是利用一组地址连续的存储单元一次存储自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素的位置,由于栈的操作是线性表操作的特例,相对而言,链式栈的操作更易于实现。注意:这3种运算方法在各种存储结构中的应用。
19.D本题中静态局部变量X,在静态存储区内分配存储单元,在程序整个运行期间都不释放。在main函数中,执行for循环,第1次循环,变量s的值为2;第2次循环,函数的返回值为4,所以变量s的值为8;第3次循环,函数的返回值为8,所以s的值为64。故本题答案为D选项。
20.C解析:数据库是数据的集合,其中的数据是按数据所提供的数据模式存放的,它能构造复杂的数据结构,以建立数据之间的内在联系与复杂的关系-故答案为C。
21.1010解析:此题考查逗号表达式。逗号表达式的值是最后一个表达式的值,所以本题的返回值是a+4。前面已经给a赋值6,所以追回值a+4=6+4=10。
22.r+b[k]*x
23.9292解析:本主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。现看while循环,该循环通过i++的值来判断是否结束循环当i++的值为4的时候结束循环,当i=0时,执行while的循环体,显然if语句条件不满足不执行,接着让j=4,然后执行do-while循环体,我们不难看出do-while循环的功能是将笫i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把笫3+1行的所有元素的加到s上,此时s=s+a[2][0]+a[2][1]a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的confulue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。
24.fopenwhile(fgetc(fp)!='\n')lin=jclose(fp)fopen\r\nwhile(fgetc(fp)!='\\n')\r\nlin=j\r\nclose(fp)
25.-4-4解析:if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1进而可以判断(x)为真,执行x=x-3=-1-3=-4。
26.5555解析:本题考查的重点是对宏定义的理解。#define指令定义一个标识符和一个串,编译程序在对C源程序处理时.发现该标识符都用该串替换,因此,在语句k=N*N*5将替换成k=M+M*M+M*5后,M被替换成5,从而k=5+5*5+5*5=55。
27.
28.s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57解析:根据题意,if语句的条件应当是判断数组元素s[i]是否为数字,故正确答案为:s[i]>='0'&&s[i]<='9'或s[i]>=48&&s[i]<=57,其中48是字符0的ASCII码值,57是字符9的ASCII码值。
29.-6354-6354解析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是“-6354”。
30.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。
31.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
32.11371,13,7解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1;②(表达式1,表达式2)形式的结果为最后—个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13:③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。
33.'\0''\\0'解析:本题涉及字符数组和指针的两个知识点:①在C语言中,字符型数组在存放字符串时会自动在末尾加上字符串结束标识符'\\0'所以题中数组str有6个元素。②ptr指向数组str的首地址,ptr+5是指向str[5],*(ptr+5)是引用str[5]的值,即'\\0'。
34.顺序顺序解析:当线性表的操作无插入和删除时,在对线性表进行操作时,不能改变元素的位置,采用顺序结构的效率高于链式结构。因为采用顺序结构,对元素的查找可通过计算得到。
35.1321,3,2解析:函数f的形参是简单变量,形参的改变不能影响实参,所以正确答案为1,3,2。
36.非线性结构非线性结构
37.x==0
38.线性结构线性结构解析:本题考查了数据结构的基本概念。与栈类似,队列也是线性表,可以采用链式存储结构,所以带链的队列属于线性结构。
39.1111解析:本题考核的知识点是printf()函数的输出格式。本题中定义了一个整型变量i并赋初值为9,然后要求以八进制输出i的值,9的八进制数的表示为11。
40./i或*1.0/i或*1/i或*(1.0/i)或/(double)i/i或*1.0/i或*1/i或*(1.0/i)或/(double)i解析:主函数中首先定义了两个double型的变量s和fac,并给它们赋初值为0.0和1.0,在函数中s和fac的作用是存放和以及要加到的那一项的值。通过分析可知,第i项的值可以由第i-1项的值得到,即第i项是第i-1项的值除以i。可见横线处应添“/i”或与它等价的表达式。
41.A解析:C语言中的函数可以进行递归调用,但不能在函数中定义函数,即函数不能嵌套定义。函数可以没有返回值,若有返回值,则返回值类型必须确定。
42.Dint*(*gh[10]);---gh是一个指针,指向由10个指向整型变量的指针构成的数组,int(**def)[10];---def指向一个指针,该指针指向10个整型变量构成的数组。
43.A解析:在C语言中,一个字符常量代表ASCII字符集中的一个小字符,在程序中用单引号把一个字符括起来作为字符常量,选项A)是一个转义字符常量,表示横向跳若干空格(代表“TAB”键);选项B)表示一个字符串;选项C)表示一个整型常量;选项D)表示一个标识符(代表一个变量),故本题答案为A)。
44.C解析:共用体类型结构的特点是使几个不同的变量共占同一段内存,但在每一瞬时只能存放其中一种,而不是同时存放几种,共用体变量中起作用的成员是最后一次存放的成员,在存入一个新的成员后原有的成员就失去作用。因此本题起作用的是成员b的值,所以程序打印输出3。
45.B解析:若在函数中定义与全局变量名字相同的局部变量,则全局变量在该函数中将不起作用,因此全局变量的作用域并不一定比局部变量的作用域大,故选项A不正确;静态变量一旦定义,将在整个程序的运行期间都存布,故选项B正确;函数的形参只在函数调用的时候分配存储空间,在退出函数时收回存储空间,因此是局部的,故选项C不正确;没有赋值的auto型变量的初值是随机的,没有赋值的static型变量的初值是0,故选项D不正确。所以,B选项为所选。
46.B解析:本题考查函数的综合知识。首先,我们可以利用强制转换类型转换运算符将一个表达式转换成所需类型。如:(double)a是将a转换成double类型;(int)(x+y)是将x+y的值转换成整型。
本题可按部就班地逐步运算:
fun((int)fun(a+c,b),a-c)
fun((int)fun(10,5),2-8)
fun((int)15.000000,-6)
fun(15,-6)
9
47.D
48.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。
【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。
49.D解析:当数组定义后,系统就为其分配内存空间,而不论其中有没有内容。因此,本题中数组x[10]不论是否为其元素初始化,它所分配的存储空间仍为2*10=20个字节。
50.A解析:转义字符'\\n'表示换行,'\\\\'表示反斜杠,函数strlen()是计算字符串的长度,不包括文件结束标志('\\0'),函数sizeof()统计字符串所占的字节数。
51.B解析:本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形参x和y,该函数的功能,是返回x和y指向的变量中值较小的那个指针变量。主函数中定义了两个指针变量p和q,并让它们指向变量a和b,调用函数f(),返回指向的变量值较小的指针变量,r的值为指针变量p的值(变量a的地址),因此最后输出的*p、*q和*r的值是7,8和7。所以,B选项为所选。
52.D解析:本题考核的知识点是指针变量定义和赋值语句的基本应用。在使用一个指针变量之前,先要用声明语句对其进行定义,在定义了一个指针变量之后,系统就为这个指针变量分配了一个存储单元,用它来存放地址。在C语言中有两个有关指针的运算符:&运算符,为取地址运算符,*运算符是指针运算符,*p代表p所指向的变量。本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q并让它指向p,选项A中将常量1赋给指针p不正确;选项B也是将常量2赋给*p,故选项B不正确;选项C中P不是指向指针的指针变量,而将他赋值给一个指向指针的指针变量小显然不正确,所以,4个选项中选项D符合题意。
53.D解析:中序遍历的递归算法如下:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法如下:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法如下:①遍历左子树;②遍历右子树;③访问根结点。由后序遍历结果dabec可知c是根结点,且无右子树。再由左子树的后序遍历结果dabe可知,e是左子树的根结点,且由左子树的中序遍历结果deba可知,d是左子树的左子树结点,b和a是左子树的右子树结点。再次由后序遍历结果ab可知,a是左子树结点。b是根结点。至此,各结点在树中的位置已完全确定。
54.B
55.A解析:理解复杂定义要掌握两点:一、右结合原则.本题中的定义char*line[5];等价于char*(line[5]);;二、自外向内分解成typedef语句。char*(line[5]);等价于typedefchar*A;Aline[5];其中A被typedef定义成字符指针的别名,然后line被定义成A的一维数组,即字符指针的一维数组。再来看看行指针的定义char(*line)[5];它应该被分解成typedefcharB[5];B*line;其中B被定义成包含5个元素的一维字符数组,然后line被定义成指向B的指针,即指向包含5个元素的一维字符数组的指针。所以两者切不可混淆了,后者的括号不能省略。故本题应该选择A。
56.A解析:字符指针pc指向字符串数组ch的首地址,*(pc+5)就是pc[5]的值。
57.D
58.B
59.C解析:函数f1()的作用是返回形参x和y的较大值,函数f2()的作用是返回形参x和y的较小值,在main()函数中通过调用两次f1()函数,求得a、b、c的最大值并存放在变量d中,通过调用两次f2()函数,求得a、b、c的最小值并存放到变量e中。由程序可知d值为5,f的值为4,e的值为3,因此最后输出的d、f、e的值为5、4、3。所以C选项为所选。
60.B解析:a=b=c+2实际上相当于a=(b=c+2),进而可分解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一个是错的,因为C++语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。注意:C++语言赋值语句的运用,
61.B(x&1)&&(z<'2')=(0.5&1)&&('a'<'z')=1&&1=1,故选择B选项。
62.D
63.B注:与软件测试要对比着复习
64.
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 焊工证的考试题目及答案
- 汉中船员考试题库及答案
- 深基坑工程施工方案
- 过敏反应考试题及答案
- 2025年县乡教师选调考试《教师职业道德》题库及答案(各地真题)
- 2025年青海省选调生考试行测真题及答案解析
- 2025年家政服务员职业技能培训考试题库(含答案)
- 城市燃气设施提升改造工程风险评估报告
- 中心城区热电联产项目建筑工程方案
- 铝合金生产线项目建筑工程方案
- 二次供水卫生知识培训
- 保健员考试题目及答案
- 母婴分离护理常规
- 污泥池清理管理制度
- 推进信息化建设“十五五”规划-(2025-2025年)-根据学校十五五
- 保护环境的课件
- 华电集团就业协议书
- 拆旧建屋合同协议书
- 图深度强化学习在配电网故障恢复中的应用研究
- (2017)海南省房屋建筑与装饰装修工程综合定额交底资料
- 拆除重建工程施工方案
评论
0/150
提交评论