版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年山东省济南市全国计算机等级考试C语言程序设计真题(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&y
B.x<=y
C.x||y+z&&y-z
D.!((x<y)&&!z||1)
2.对如下二叉树进行后序遍历的结果为()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
3.用单链表方式存储的线性表,存储每个结点需要两个域,一个数据域,另一个是()。
A.当前结点的所在地址B.后继结点的所在地址C.空指针域D.空闲域
4.若有定义“inta=3;doubleb=0.1263;charch=‘a’;”,则以下选项中叙述有错的是()。
A.逗号表达式的计算结果是最后一个表达式的运算结果
B.运算符“%”只能对整数类型的变量进行运算
C.语句“ch=(unsignedint)a+b;”是对a与b之和进行强制类型转换,结果赋值给变量ch
D.复合运算“a*=b+ch”是将变量b、ch之和与a相乘,结果再赋值给a
5.
6.
7.下列程序的输出结果是()。#include<stdio.h>main(){inti,S=0;for(i=1;i<10;i++)if(!(i%2)&&!(i%3))s+=i;printf("%d\n",s);}A.4B.39C.45D.6
8.若有定义;intw[3][5];,则以下不能正确表示该数组元素的表达式是()。A.*(*w+3)B.*(w+1)[4]C.*(*(w+1))D.*(&w[0][0]+1)
9.程序运行中需要从键盘上输入多于一个数据时,各数据之间应使用()符号作为分隔符。
A.空格或逗号B.逗号或回车C.逗号或分号D.空格或回车
10.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
11.下面不正确的字符赋值或赋初值的方式为()。
A.chars[10]=”hello!”
B.chars[10]={‘h’,‘e’,‘l’,‘l’,‘o’,‘!’}
C.chars[10];s=”hello”
D.char[]=”hello!”
12.已知数据表A中每个元素距其最终位置不远,为节省时间,应该采用的算法是()
A.直接选择排序B.堆排序C.快速排序D.直接插入排序
13.若有以下程序:inta=1,b=2;a=a^b;b=b^a;则执行以上语句后a和b的值分别是()。A.a=1,b=2B.a=3,b=lC.a=3,b=2D.a=2,b=l
14.以下叙述中错误的是()。
A.一个C程序中可以包含多个不同名的函数
B.一个C程序只能有一个主函数
C.C程序在书写时,有严格的缩进要求,否则不能编译通过
D.C程序的主函数必须用main作为函数名
15.有定义语句intb;charc[10];,则正确的输入语句是______。A.scallf("%d%s",&b,&c);
B.scallf("%d%s",&b,c);
C.scanf("%d%s",b,c)
D.scanf("%d%s",b,&c);
16.
17.交换两个变量的值,不允许用临时变量,应该使用下列()位运算符。
A.&B.^C.‖D.~
18.有下列程序:程序执行后的输出结果是()。A.1,0B.1,1C.1,4D.4,4
19.设有以下语句
typedefstructS
{intg;charh;}T;
则下面叙述中正确的是()A.可用S定义结构体变量B.可以用T定义结构体变量C.S是struct类型的变量D.T是structS类型的变量
20.设有inta=15,b=240;,则表达式(a&b)&b||b的值为______。
A.0B.1C.真D.假
二、2.填空题(20题)21.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。
intmystrlen(char*str)
{inti;
for(i=0;【】!='\0';i++);
return(i);}
22.若x为int类型,请写出与!x等价的C语言表达式______。
23.软件生命周期包括8个阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。
24.下列程序的运行结果是______。
main()
{ints=0,i=1;
while(s<=10)
{s=s+i*i;
i++;
}
printf("%d",--i);
}
25.在一个容量为15的循环队列中,若头指针front=6,尾指针Year=9,则该循环队列中共有【】个元素。
26.在关系模型中,把数据看成一个二维表,每一个二维表称为一个______。
27.数据元素之间______的整体称为逻辑结构。
28.执行下面程序段后,k值是【】。
k=1;n=263;
do
{k*=n%10;n/=10;
}while(n);
29.在面向对象方法中,类之间共享属性和操作的机制称为______。
30.以下程序中,主函数调用了LineMax函数,实现在N行M列的二维数组中,找出每一行上的最大值。
请填空。
#defineN3
#defineM4
voidLineMax(intx[N][M])
{inti,j,P;
for(i=0;i<N;i++)
{p=0;
for(j=1;j<M;j++)
if(x[i][p]<x[i][j])【】;
printf("Themaxvalueinline%dis%d\n",i,【】);
}
main()
{intx[N][M]={1,5,7,4,2,6,4,3,8,2,3,1};
【】;
}
31.软件是程序、数据和【】的集合。
32.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。
33.下列程序的输出结果是______。
main()
{inta=1,b=2,c=3,t=0;
if(a<B){t=a;a=b;b=t;}
if(a<C){t=a;a=c;c=t;}
printf("%d,%d,%d\n",a,b,C);
}
34.若a的值为1,则表达式!a‖++a的值是______。
35.以下程序运行后的输出结果是【】。
#include<stdio.h>
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);
}
pdnff("%d'\n",s);
}
36.以下程序运行后的输出结果是【】。
main()
{inti,n[]=10,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
37.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
38.以下程序调用函数swap将指针s和t所指单元(a和B)中的内容交换,请填空。main(){inta=10,b=20,*s,*t;s=&a;t=&b;()printf("%d%d",a,B);}swap(int*ss,int*tt){intte;te=*ss;*ss=*tt;*tt=te;}
39.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
40.若从键盘输入58,则以下程序的输出结果是【】。
main()
{inta;
scanf(“%d”,&A);
if(a>50)printf(“%d”,A);
if(a>40)printf(“%d”,A);
if(a>30)printf(“%d”,A);
}
三、1.选择题(20题)41.下列选项中错误的说明语句是
A.chara[]={'t','o','y','o','u','\0'};
B.chara[]={"toyou\0"};
C.chara[]="toyou\0";
D.chara[]='toyou\0';
42.下列程序的输出结果是()。#include<stdio.h>main(){inti;for(i=1;i<=10;i++){if((i*i>=20)&&(i*i<=100))break;}printf("%d\n",i*i);}
A.49B.36C.25D.64
43.设变量已正确定义并赋值,以下正确的表达式是()。
A.x=y*5=x+z
B.int(15.8%5.
C.x=y+z+5,++y
D.x=25%5.0
44.下面程序的运行结果是#include<stdio.h>#include<string.h>main(){char*s1="AbDeG";char*s2="AbdEg";s1+=2;s2+=2;printf("%d\n",strcmp(s1,s2));}
A.正数B.负数C.零D.不确定的值
45.视图设计一般有3种设计次序,下列不属于视图设计的是______。
A.自顶向下B.由外向内C.由内向外D.自底向上
46.以下函数返回a所指数组中最大值所在的下标值:fun(int*a,intn){inti,j=0,p;p=j;for(i=j;i<n;i++)if(a[i]>a[p])______;return(p);}在下划线处应填入的内容是()。
A.i=pB.a[p]=a[i]C.p=jD.p=i
47.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是
A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述说法都不对
48.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法
A.对象B.数据结构C.数据流D.目标
49.下列关于单目运算符++、--的叙述中正确的是A.它们的运算对象可以是任何变量和常量
B.它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C.它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D.它们的运算对象可以是char型变量、int型变量和float型变量
50.有以下程序:#definef(x)x*xmain(){inti;i=f(4+4)/f(2+2);printf("%d\n",i);}执行后输出结果是
A.28B.22C.16D.4
51.下面函数的功能是______。exchange(int*ptr1,*ptr2){int*ptr;ptr=-ptr1;ptr1=ptr2;ptr2=ptr;}
A.交换*ptr1和*ptr2的值
B.无法改变*ptr1和*ptr2的值
C.可能造成系统故障,因为使用了空指针
D.交换*ptr1和*pb2的地址
52.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL
53.若有说明语句:double*P,a;则能通过scanf语句正确给输入项读入数据的程序段是()。
A.*p=&a;scanf("%lf",p);
B.*p=&a;scanf("%f",p);
C.p=&a;scanf("%lf",*p);
D.p=&a;scanf("%lf",p);
54.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用<>(尖括号)括起时,寻找被包含文件的方式是()。
A.仅仅搜索当前目录
B.仅仅搜索源程序所在目录
C.在标准目录下查找指定的文件
D.先在源程序所在目录搜索,如查找不到,再按系统指定的标准目录查找
55.若变量都已正确说明,则以下程序段()。#include<stdio.h>main(){inta=8;intb=6;printf(a>b?"&&&a=%d":"!!!b=%d",a,B);}
A.输出为:&&&a=8
B.输出为:!!!b=8
C.输出为:&&&a=8!!!b=6
D.全部错误
56.下列程序的输出结果是______。main(){union}inta[2];longk;charc[4];}un,*sp=&un;sp->a[0]=0x39;sp->a[1]=0x38;printf("%1x\n",sp->k);}
A.3938B.3839C.390038D.380039
57.在16位C编译系统上,若定义longa;,则能给a赋40000的正确语句是
A.a=20000+20000;B.a=4000*10;C.a=30000+10000;D.a=4000L*10L;
58.下面程序段的运行结果是chara[]="lanuage",*p;p=a;while(*p!='u'){printf("%c",*p-32);p++;}
A.LANGUAGEB.languageC.LAND.langUAGE
59.设有如下定义:structsk{inta;floatb;}data,*p;若有p=&data;,则对data中的a域的正确引用是()
A.(*p).dataB.(*p).aC.p->dataD.p.data.a
60.下面程序的运行结果是#include<stdio.h>voiddelch(char*s){inti,j;char*a;a=S;for(i=0,j=0;a[i]!='\0';i++)if(a[i]>='0'&aa[i]<='9'){s[j]=a[i];j++;}s[j]='\0';}main(){char*item="a34bC";delch(item);printf("\
A.abcB.34C.a34D.a34bc
四、选择题(20题)61.下列叙述中正确的是()。
A.break语句只能用于switch语句体中
B.continue语句的作用是使程序的执行流程跳出包含它的所有循环
C.break语句只能用在循环体内和switch语句体内
D.在循环体内使用break语句和continue语句的作用相同
62.有以下程序
#include"stdio.h"
voidfun(int*a,int*b)
{intc=20,d=20;
*a=c/3;
b=d/5;}
main()
{inta=3,b=5;
fun(&a,&b);
printf("%d,%d\n",a,b);
}
程序的运行结果是
A.6,5B.5,6
C.20,25D.3,5
63.
64.下列定义变量的语句中错误的是()。
65.函数调用strcat(strcpy(str1,str2),str3)的功能是()。
A.将字符串str1复制到字符串str2中后再连接到字符串str3之后
B.将字符串str1连接到字符串str2之后再复制到字符串str3之后
C.将字符串str2复制到字符串str1之后再将字符串str3连接到字符串str1之后
D.将字符串str2连接到字符串str1之后再将字符串strl复制到字符串str3中
66.
67.以下不能正确定义二维数组的选项是()。
A.
B.
C.
D.
68.在c语言中,只有在使用时才占用内存单元的变量,其存储类型是()。
A.auto和static
B.extern和register
C.auto和register
D.static和register
69.
70.
能正确表示“当x的取值在[1,10]和[100,110]范围内为真,否则为假”的表达式是()。
A.(x>=1)&&(x<=10)&&(x>=100)&&(X<=110)
B.(x>=1)
C.
D.(x<2=10)
E.
F.(x>=100)
G.
H.(x<=1l0)
I.(gt;=1)&&(x<=10)
J.
K.(gt;=100)&&(x<=110)
71.
72.
73.下列描述中正确的是()。
A.算法是指对解题方案的准确而完整的描述
B.算法的有穷性是指算法程序的长度是有限的
C.算法是否有效与拥有的情报无关
D.算法的基本特征有可行性、确定性和有穷性
74.以下程序爱中,与语句:
75.下列关于信息系统的叙述中,错误的是()。
A.广播电视是一种双向的、点到多点的信息交互系自
B.网络聊天是一种双向的,以信息交互为主要目的系统
C.电话是一种双向的、点对点的、以信息交互为主要的的系统
D.雷达是一种以感测和识别为主要目的的系统
76.下列叙述中正确的是()。A.数据库系统可以解决数据冗余和数据独立性问题,而文件系统不能
B.数据库系统能够管理各种类型的文件,而文件系统只能管理程序文件
C.数据库系统可以管理庞大的数据量,而文件系统管理的数据量较少
D.数据库系统独立性较差,而文件系统独立性较好
77.
78.有以下程序:
若要按以下形式输出数组右上半三角:
则在程序下划线处应填人的语句是()。
A.i-1B.i+1C.iD.4-i
79.读取二进制文件的函数调用形式为:fread(buffersize,count,fp);,其中buffer代表的是()。
A.一个文件指针,指向待读取的文件
B.一个整型变量,代表待读取的数据的字节数
C.一个内存块的首地址,代表读人数据存放的地址
D.一个内存块的字节数
80.下列选项中属于软件生命周期中开发阶段任务的是()。
A.详细设计B.运行维护C.可行性研究D.需求分析
五、程序改错题(1题)81.下列给定程序中,函数fun的功能是:计算整数n的阶乘。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),其功能是:计算并输出下列多项式的值。
S=1+1/(1+2)+1/(1+2+3)+…+1/(1+2+3+…+m)
例如,若主函数从键盘给m输入20后,则输出为s=1.904762。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.D解析:本题考查逻辑运算符的使用。当“&&”的两个运算对象都足逻辑1时,表达式才返回值是1;当“||”的两个运算对象至少有一个是逻辑1时,表达式返回值是1。选项A)中,x和y都是逻辑1,所以返回值是1;选项B)中,x=4<=y=6为逻辑1,所以返回值是1;选项C)中,y+z的值等于14,非0,y-z的值为-2,非0,所以逻辑表达式4||14&&-2的值不为0;选项D)中,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。
2.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。
3.B
4.C逗号表达式的计算结果是最后一个表达式的运算结果,选项A正确;运算符“%”是求余运算符,只能对整数类型的变量进行运算,选项B正确;在语句“ch=(unsignedint)a+b”中,圆括号优先级最高,所以首先将a强制转换成无符号整型,再与b相加,结果赋值给ch,选项C错误;复合运算“a*=b+ch”,先计算“b+ch”的值,再将a与b、ch之和相乘,结果再赋值给a,选项D正确。故本题答案为C选项。
5.A
6.D
7.Dif语句的条件是当i既是3的倍数又是2的倍数时成立,所以此程序实现的功能是将10以内既是3的倍数又是2的倍数的数相加。
8.B通过—维数组名或指向维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a-(b-C)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为[]运算符的结合性是从左至右的,所以w[i][j]等价于(w[i][j],此时可以先将任意一个[]运算符转换为指针形式为:(*(w+i)[j]或*(w[i]+j),或者同时转换:*(*(w+i)+j)。上述几种形式都完全等价于w[i][j]。选项A中,*(*w+3)可以看成*(*(w+0)+3),即w[0][3],是正确的。选项B小,因为[]运算符的优先级高于*运算符,所以*(w+1)[4]等价于*((w+1)[4]等价于*(*((w+1)+4)),即*(*(w+5)+0),它等价于w[5][0],很明显它超过数组的范围了,故不正确。选项C等价于w[1][0],是下确的。选项D中,&w[0][0]是数组w第1个元素的地址,它等价于&*(*(w+0)+0),外面的&和*可以抵消,就好像先乘以个数,然后再除以这个数一样。所以,&w[0][0]等价于*(w+0)+0。即*w。所以原式就变为*(*w+1)等价于w[0][1],这个也是合法的。综上所述,本题应该选择B。
9.D
10.B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。
11.C
12.D
13.B本题考查按位异或的用法。按位异或运算的规则是:两个运算数的相应二进制位相同,则结果为0,相异则结果为1。b=2的二进制为00000010,a=1的二进制为00000001,a=a^b一00000011,转化为十进制后为3,b=b^a=00000010^00000011=00000001,即1。
14.C【答案】C
【知识点】C程序的函数
【解析】C程序必须有且只有一个主函数main()。一个C程序可以包含多个不重名的子函数。C程序在书写时没有严格的缩进要求,语句前的缩进随意。
15.B解析:scanf函数中的“格式控制”后面应当是地址,而不是变量名。对于变量,通过地址运算符“&”求出内存中的地址;对于数组c[10],数组名c即为数组在内存中的地址。
16.A
17.B按逻辑位运算特点:①用按位与运算将特定位清为0或保留特定位;②用按位或运算将特定的位置为1;③用按位异或运算将某个变量的特定位翻转或交换两个变量的值。
18.A&&是逻辑与运算符,x、y的取值为4、2,两个都是非零值,所以x&&y的结果为真,值为1;&是位运算符,x的二进制为0100,y的二进制为0010,0100&0010的结果为0。本题答案为A选项。
19.B解析:结构体类型的定义格式为:
strcut结构体名
{成员说明列表};
结构体变量的定义有3种形式:第一种:定义结构体型的同时定义结构体变量如:strcut结构体名{成员说明列表}变量;第二种先定义一个结构体类型,然后使用该类型来定义结构体变量,如:strcutstudent{成员说明列表):student变量;第三种:定义一个无名称的结构体类型的同时定义结构体变量,如:Strctstudent{成员说明列表}变量。和上面三种情况比较我们不难得知只有选项B是正确的。所以,4个选项中选项B符合题意。
20.B
21.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。
22.x==0x==0解析:!x的逻辑意思就是x为非,即x==0。
23.软件开发软件开发解析:软件生命周期可以分为3个时期:软件定义期,包括问题定义、可行性研究和需求分析3个阶段;软件开发期,包括系统设计、详细设计、编码和测试4个阶段;软件维护期,即运行维护阶段。编码和测试属于软件开发阶段。
24.33解析:分析程序运行过程,第1次循环:s=s+i*i=0+1*1=1,i=2;第2次循环:s=s+i*i=1+2*2=5,i=3;第3次循环:s=s+i*i=5+3*3=14,i=4;循环条件不成立输出i,--i使i的值减1,输出结果为3。
25.3
26.关系关系解析:关系模型用;维表表示,则每个;维表代表一种关系。
27.逻辑关系逻辑关系
28.3636解析:本题循环体共执行了3次。第一次:k=3,n=26:第二次:k=18,n=2;第三次:k=36,n=0。
29.继承继承
30.p=jx[i][p]LineMax(x)
31.文档文档解析:计算机软件是计算机系统中与硬件相互依存的另一部分,是包括程序、数据以及相关文档的完整集合。
32.2525解析:#NAME?
33.3123,1,2解析:分析程序,第一个if语句,a=1,b=2,控制条件a<b成立,则交换a、b的值,此时a=2,b=1。第二个if语句,a=2,c=3,控制条件a<c成立,则交换a、c的值,此时a=3,c=2。
34.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。
35.9292解析:本题考查循环的嵌套。
①当i=0时执行while语句,i++<4成立,这时i=1,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:
a)j=0时,s=0+a[1][0]=5,j=j+1=1。
b)j=1时,s=5+a[1][1]=5+6=11,j=j+1=2。
c)j=2时,s=11+a[1][2]=11+7=18,j=j+1=3。
d)j=3时,s=18+a[1][3]=18+8=26,j=j+1=4。终止循环。
②当i=1时执行while语句,i++<4成立,这时i=2,执行continue语句,结束本次循环。
③当i=2时执行while语句,i++<4成立,这时i=3,不执行continue语句,继续执行j=0;然后执行do-while语句,共循环4次:
a)s=26+a[3][0]=26+15=41,j+1=1。
b)s=41+a[3][1]=41+16=57,j+1=2。
c)s=57+a[3][2]=57+17=74,j+1=3。
d)s=74+a[3][3]=74+18=92,j+1=4。终止循环。
④i=3时,执行while语句,i++<4成立,这时i=4,执行continue语句,结束本次循环。
⑤当i=4时,执行while语句,i++<4不成立,结束while循环。输出s的结果92。
36.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。
37.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式输出\'C\'的ASCII码为67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式输出为\'G\'。
38.swap(st);swap(s,t);解析:本题要在主函数中调用swap函数交换a、b的值,实现数据交换需要进行地址传递,所以函数的形参都应该是需要交换的数据的地址,程序中通过“s=&a;t=&b;”将指针变量s和t指向变量a、b的地址,因此,引用时直接引用指针变量s和t即可。
39.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
40.585858585858解析:在程序中,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。
41.D解析:通过赋初值的方式给一维数组赋字符串,可以用给一般数组赋初值的相同方式给一维字符数组赋字符串,也可以在赋值时直接赋字符串常量。选项B)和C)后面的'\\0'是多余的,不过也不错,在C语言中,系统会自动在字符串的结尾处加上一个字符'\\0'作为串的结束标记。
42.C解析:本题考查if语句.当执行到第一个满足(i*i>=20)&&(i*i<=100)这个条件的i出现时,通过break语句跳出循环,执行下列的printf语句。
43.C解析:求余运算符'%'两边的运算对象必须是整型,而选项B)和D)中'%'两边的运算对象有浮点整数据,所以选项B)和D)是错误的表达式。在选项A)中赋值表达式的两边出现相同的变量x,也是错误的。选项C)是一个逗号表达式,所以正确答案为C)。
44.B解析:本题考查了用指针处理字符串的方法。用指针处理字符串,首先要使指针指向该字符串。例如本题中的s1='AbDeG'就是使字符指针指向了字符串'AbDeG',而指针s1+=2则是指针向后移动了两个字符的位置,指向了字符‘D’。strcmp则是字符串比较函数。
45.B解析:视图设汁一般有3种设计次序,它们分别是自顶向下、自底向上和由内
向外,它们又为视图设计提供了具体的操作方法,设计者可根据实际情况灵活掌握,可以
单独使用也可混合使用。
注意:数据库概念设计的过程:首先选择局部应用,再进行局部视图设计,最后
对局部视图进行集成得到概念模式。
46.D解析:该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,应该把i的值赋给p,这样才满足题目的要求。
47.C解析:a数组存放的是字符串,系统会自动在字符串的最后加上一个'\\0',所以a数组的长度为4,而b数组的长度为3,故a数组长度大于b数组长度。
48.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。
49.D本题主要考查自加与自减运算符。在C语言中,自加与自减运算符具有以下性质:
(1)自加运算符“++”和自减运算符“--”的运算本身是一种赋值运算,其结果是使运算对象的值增1或减1。
(2)++、--运算符是单目运算符,运算对象可以是整型变量或字符型变量,也可以是实型变量,但不能是常量和表达式。
(3)自加、自减运算符无论是作为前缀还是后缀运算符,对于变量而言,其效果相同,但作为表达式来说,其值不同。
(4)++和--运算符的结合方向是“自右向左”。
(5)不要在一个表达式中对同一个变量进行多次自增或自减运算。可以知道本题正确的答案是D。
50.A解析:本题考核的知识点是宏定义的简单应用。本题中首先将所有的宏替换掉,则表达式为i=4+4*4+4/2+2*2+2,故最后输出的i的值为28。所以,4个选项中选项A符合题意。
51.B解析:函数中将指针变量ptr1和ptr2中的值交换,而不是交换指针ptr1和ptr2所指变量中的值。
52.B(27)B)解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。
53.D解析:*p间接引用指针指向的变量,因此“(*p)=&a”不对。scanf()的输入变量必须为地址,因此C是错误的。
54.C解析:本题考查文件包含的知识点:格式1:#include(文件名),预处理程序在标准目录下查找指定的文件;格式2:#include“文件名”,预处理程序首先在引用被包含文件的源文件所在的目录中寻找指定的文件,如查找不到,再按系统指定的标准目录查找。
55.A
56.D解析:结构体变量un的存储情况如图18-3所示,第一列表示地址,第二列为每个字节的值,可用两位的十六进制数表示,当把这4个字节的内容作为long型数据时,高地址字节的值表示高位,低地址字节的值表示低位。
57.D解析:由于20000+20000、4000+10及30000+10000都是整型表达式,故运算的结果仍然是整型,表达式运算的结果超出了整型数据的范围,不正确。而D是长整型运算,不会超出长整型的范周。
58.C解析:本段程序的作用是输出字符串“lanuage”中字母u之前的字符,并将其转化为大写字母。注意:如果一个字符数组用来作为字符串使用,那么在定义该字符数组时,数组的大小就应该比它将要实际存放的最长字符多一个元素,以存放‘\\0’。
59.B
60.B
61.C解析:只能在循环体内和switch语句体内使用break语句。当break出现在循环体的switch语句体内时,其作用只是跳出该switch语句体,并不能中止循环体的执行。若想强行中止循环体的执行,可以在循环体中,但并不在switch语句中设置break语句,满足某种条件,则跳出本层循环体。
62.A在本题中,首先定义了一个fun函数,函数中用两个指针变量作为形参,在函数体中,定义了两个整型变量,然后做除法运算,并试图将结果保存到形参中,语句“*a=c/3;”中由于变量c与3都是整型,其运算结果也应该为整型,运算过程中舍去小数部分,得到计算结果为6,并保存到指针变量a指向的存储单元中;语句“b=d/5;”同样是整数运算,其运算结果为4,但很明显,赋值的方法不正确,不能改变指针变量b指向单元的值。
在主函数中,定义了两个整型变量,并分别赋初值,然后调用fun函数,由于函数的形参是指针变量,采用的传值方式是传地址,能实现数据的双向传递,因此,调用函数后,变量a的值变为了6,而变量b的值不变,最后输出的结果是6,5。
63.B
64.A变量命名规范:由字母、数字、下划线组成,且数字不作为开头。所以A)错误。
65.Cstrcat(s1,s2)函数的功能是把s2字符串连接到s1字符串末尾,strcpy(s1,s2)是把s2字符串复制到s1字符串,要保证sl的容量。
66.D
67.D本题的考查点是二维数组的定义和初始化。
选项A)定义的数组中各元素实际上是这样的:
1,0
2.O
选项B)定义的数组中各元素实际上是这样的:
1,2
3.4
选项c)定义的数组中各元素实际上是这样的:
1,0
2.3
选项D)错在省略了第2维的长度。C中在对数组进行初始化时,如果对全部元素都赋初值(即提供全部初始数据),则定义数组时对第一维的长度可以不指定,但第二维的长度不能省。
68.CC语言的存储类型为auto、register、extern、static。下面分别解释每种存储类型的含义。auto:函数中的局部变量,动态地分配存储空间,数据存储在动态存储区中,在调用该函数时,系统会给它们分配存储空间,在函数调用结束后自动释放这些存储空间。register:为了提髙效率,C语言允许将局部变量的值放在CPU的寄存器中,这种变量叫“寄存器变量”,只有局部自动变量和形参可以作为寄存器变量。extern:外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始到本程序文件的末尾。如果外部变量不在文件的开头定义,其有效的作用范围只限于定义处到文件末尾。static:静态局部变量,属于静态存储类别,在静态存储区内分配存储单元,在程序整个运行期间都不释放。故本题答案为C选项。
69.B
70.C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 校园心理健康教育活动的创新模式与实践效果研究教学研究课题报告
- 高中英语学科育人价值与教学实践创新教学研究课题报告
- 2026年中国科协所属单位公开招聘应届高校毕业生33名备考题库及一套参考答案详解
- new华中农业大学2026年思想政治辅导员招聘备考题库及1套完整答案详解
- 中共西藏自治区委员会政策研究室2026年度急需紧缺人才引进备考题库及答案详解(新)
- 成都市实验中学教师招聘20人备考题库完整答案详解
- 拉萨中学2026年度引进急需紧缺人才备考题库及参考答案详解1套
- 2026年东高地街道办事处招聘城市协管员备考题库及答案详解(易错题)
- 国企浙江省新华书店集团2026年度公开招聘备考题库含答案详解
- 武汉商贸职业学院2026年招聘备考题库及1套完整答案详解
- 纺织品的物理化学性质试题及答案
- 发改价格〔2007〕670号建设工程监理与相关服务收费标准
- 高空作业吊板施工方案
- 鸡舍钢结构厂房施工组织设计方案
- 图书馆管理系统设计与实现答辩
- 扳机点(激痛点)疗法(理论及实操演示附全身激痛点分布图)
- 2024年北京第二次高中学业水平合格考英语试卷真题(含答案)
- 企业如何做好培训工作
- 测量常用坐标系课件
- 牙周病的病例汇报
- 招标代理机构入围 投标方案(技术方案)
评论
0/150
提交评论