




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年安徽省宿州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.红黑树中已经有n个数据,寻找某个key是否存在的时间复杂度为()
A.o(logn)B.o(n)C.o(n二次方)D.o(1)
2.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36
3.以下叙述中正确的是()
A.C程序由函数和过程组成B.C程序由主函数组成C.C程序由函数组成D.C程序中,主函数必须放在其他函数之前
4.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
5.一个C语言程序总是从()开始执行:
A.主程序B.子程序C.主函数D.第一个函数
6.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
7.判断一个顺序存储的队列sp为空的条件是()。
A.sp->front=sp->rear
B.sp->front=sp->rear+1
C.sp->front=sp->rear-1
D.sp->front=NULL
8.深度为5的二叉树至多有C个结点。
A.16B.32C.31D.10
9.一个顺序栈一旦声明,其占用空间的大小()。
A.已固定B.可以变动C.不能固定D.动态变化
10.
11.下列叙述中正确的是()
A.一个算法的空间复杂度打,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度也必定小
C.一个算法的时间复杂度大,则其空间复杂度也必定小
D.算法的时间复杂度与空间复杂度没有直接相关
12.在下列定义语句中,编译时会出现编译错误的是()。
A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;
13.在决定选取何种存储结构时,一般不考虑()。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便
14.以下程序是用来计算两个非负数之间的最大公约数:我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)
15.最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后,其结果是()
A.[3,2,5,7,4,6,8]
B.[2,3,5,7,4,6,8]
C.[2,3,4,5,7,8,6]
D.[2,3,4,5,6,7,8]
16.若x,y,z均被定义为整数,则下列表达式能正确表达代数式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z
17.有以下程序#include<stdio.h>main{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421
18.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;
B.if(s1===s2)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(s1,s2==0)ST;
19.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
20.在一个带头结点的单链表HL中,若要在第一个元素之前插入一个由指针p指向的结点,应该使用的语句为()
A.HL=p;p->next=HL;
B.p->next=HL;HL=p;
C.p->next=HL->next;HL->next=p;
D.p->next=HL;p=HL;
二、2.填空题(20题)21.阅读程序:
main()
{charstrl[]="howdoyoudo",str2[10];
char*p1=strl,*p2=str2;
scanf("%s”,p2);
printf("%s”,p2);
printf("%s\n",p1);
}
运行上面的程序,输入字符串HOWDOYOUDO则程序的输出结果是【】。
22.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为【】。
23.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。
24.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:
请填空。
#defineN4
voidrotate(inta[][N])
{inti,j,t;
for(i=0;i<N;i++)
for(j=0;【】;j++)
{t=a[i][j];
【】;
a[j][i]=t;
}
}
25.以下程序的运行结果是【】。
#include<string.h>
typedefstructstudent{
charname[10];
longsno;
floatscore;
}STU;
main()
STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},
c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(,)>0)d=b;
if(strcmp(,)>0)d=c;
printf("%1d%s\n",d.sno,p->name);
}
26.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。
27.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
28.有以下程序:
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);
}
执行后的输出结果是【】。
29.若输入5、9,以下程序的运行结果为【】。
main()
{inta,b,*pt1,*pt2;
printf("inputa,b:");
scanf("%d%d",&a,&b);
pt1=&a;
pt2=&b;
if(a<b)swap(pt1,pt2);
printf("\n%d,%d\n",*pt1,*pt2);
}
swap(p1,p2)
int*p1,*p2;
{int*p;
p=p1;
p1=p2;
p2=p;
}
30.下述函数通过递归方法将字符串倒置,使用时需要指定字符数组的首地址、起始下标和终止下标。请填空:
#include<stdio.h>
voidfun(char*s,intlow,inthigh)
{if(【】)
return;
else
{chart;
fun(【】);
t=s[low];
s[low]=s[high];
s[high]=t;}}
31.以下程序的输出结果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
32.阅读下列程序,则程序的输出结果为【】。
#include"stdio.h"
structty
{intdata;
charc;};
main()
{structtya={30,'x'};
fun(a);
printf("%d%c",a.data,a.c);}
fun(structtyb)
{b.data=20;
b.c='y';}
33.下面程序的功能是输出数组s中最大元素的下标,请填空。
#include<stdio.h>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);
}
34.以下程序运行后的输出结果是【】。
voidswap(intx,inty)
{intt;
t=x;x=Y;Y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d",a,b);
}
35.以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序运行后的输出结果是
36.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。
37.以下程序的输出结果是【】。
main()
{inta=177;
printf(“%o\n”,A);
}
38.以下程序运行后的输出结果是【】。
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
39.执行下列语句段后,x的值是______。
int*p,x;
x=100;
p=&x;
x=*p+50;
40.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
三、1.选择题(20题)41.下列定义中,不正确的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);
D.staticcharc;intx,y;{...}
42.对建立良好的程序设计风格,下面描述正确的是()
A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无
43.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性
44.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A.正当性B.可行性C.确定性D.有穷性
45.以下选项中,值为1的表达式是()。
A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'
46.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
47.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
48.下列程序的输出结果是()。intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,e=5,d=2,e,f,g;e=f2(f1(a,b),f1(e,d));f=f1(f2(a,b),f2(e,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
49.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。
A.赋初值的字符串有错B.6,7C.5,6D.6,6
50.设有如下定义,则以下叙述中正确的是______。int(*ptr)();
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
51.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。
A.11011B.10100C.11100D.11000
52.若输入1.5、2.5,则以下程序的运行结果为______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}
A.1.5B.2.5C.2D.3
53.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i)}
A.266B.11C.265D.138
54.若有说明语句:charc=′\72′;则变量c
A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定
55.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
56.有以下程序#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){caseO:case1:putchar(c+4);case2:putchar(c+4);braeak;case3:putchar(c+3);default:putchar(c+2);break;}}}从第一列开始输入以下数据,↓代表一个回车符。2473↓程序的输出结果是_______。
A.668977B.668966C.66778777D.6688766
57.阅读下面程序,则执行后的结果是
#include"stdio.h"
main()
{charstr[]="tomeetme",*p;
for(p=str;p<str+7;p+=2)putchar(*p);
printf("\n");}
A.tomeetmeB.tmemC.oeteD.tome
58.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()。
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
60.以下能将字符串,youareluck!正确读入的语句组是()
A.chars[80];scanf("%s",s);
B.char*s:scanf("%s",s);
C.chars[80];gets(s);
D.char*s;gets(3);
四、选择题(20题)61.设有二元关系R和三元关系s,下列运算合法的是()。
A.R∩SB.R∪SC.R-SD.R×S
62.以下叙述中错误的是()。
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到“见名识意”
C.用户所定义的标识符中,大、小写字母代表不同标识
D.用户所定义的标识符必须以字母或下划线开头
63.设x,y,z均为整型变量,现有如下语句x=y=z=1;(++x||(++y&&++z));,则执行这个语句后y的值为
A.2B.1C.0D.不定值
64.
65.
66.若有定义:则以下不能正确表示该数组元素的表达式是()。
67.
68.
69.若有定义语句:
70.
71.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421
72.
73.(42)希尔排序法属于哪一种类型的排序法()
A.交换类排序法
B.插入类排序法
C.选择类排序法
D.建堆排序法
74.计算机能直接执行的程序是()。
A.源程序B.目标程序C.汇编程序D.可执行程序
75.
76.
当执行下面的程序时,如果输入ABC,则输出结罘是()。
#include<stdio.h>
#include<string.h>
main()
{charss[10]="1,2,3,4,5":
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
77.
78.
79.下列数据结构中属于非线性结构的是()。
A.队列
B.线性表
C.二叉树
D.栈
80.两个或两个以上模块之间联系的紧密程度称为()。
A.耦合性B.内聚性C.复杂性D.数据传输特性
五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),它的功能是计算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C语言中可调用log(n)函数求1n(n)。例如,若n1的值为30,则proc()函数值为8.640500。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。
3.C
4.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
5.C
6.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。
7.A
8.C
9.A
10.B
11.D
12.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。
13.A
14.B
15.C
16.B
17.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。
18.A解析:strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCⅡ表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。选项A中if(strcmp(s2,s1)=0)ST,若s2等于s1,则返回值0,0等于0,所以逻辑表达式strcmp(s2,s1)=0为真执行ST。
19.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。
20.C
21.HOWhowdoyoudo
22.1313解析:在任意一棵二叉树中,叶子结点总是比度为2的结点多一个。本题中的二叉树有3个叶子结点,所以,该二叉树有3-1=2个度为2的结点;又知本题中的二叉树有8个度为1的结点。所以,本题中的二叉树总结点数为:叶子结点数+度为l的结点数+度为2的结点数=3+8+2=13。所以,本题的正确答案为13。
23.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。
24.j<Ia[i][j]=a[j][i]j<I\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空白处应该填写j<i,第二个空白处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。
25.2002Shangxian2002Shangxian解析:本题中首先定义一个结构体类型STU,该结构体由一个长度为10的字符型数组、一个long型变量和一个float型变量组成。接着在主函数中用STU定义了4个结构体变量a、b、c、d,并且给a、b、c赋初值,然后定义了一个结构体指针p,并让它指向变量do将变量a的值赋给变量d,接着通过两个if语句比较结构体变量a、b、c的成员name大小。第一个if语句将结构体变量和结构体变量中较小的那个赋值给结构体变量d,第二个if语句将结构体变量和结构体变量较大的那个赋给结构体变量do比较通过函数strcmp实现。strcmp()函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若第一个小于第二个返回值小于0,相等时返回值为0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字符串。程序中第一个if语句strcmp(,)>0为真,故将b的值赋给d,第二个if语句strcmp(,)>0为假,故不执行后面的语句,最后d的值为b的值,因此输出d.sn0和p->name的值为2002Shangxian。
26.模块化模块化解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。
模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
限制使用goto语句。
27.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
28.1321,3,2解析:函数f的形参是简单变量,形参的改变不能影响实参,所以正确答案为1,3,2。
29.59
30.low>=highscow+1high-1low>=high\r\ns,cow+1,high-1解析:本题考查了用指针引用一维数组元素的方法。函数fun()通过递归调用的方式将字符串的首位和末位互换,第二位和倒数第二位互换……,从而实现了字符串倒置的功能。low和high是字符数组的下标。
31.SOSO解析:题中需要注意两个问题:一是for循环的修正表达式共执行两次“i-”操作;二是*p[i]是对某个字符的引用。
32.30x30x解析:本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。
33.k=p;k=p;解析:要找数组中最大元素的下标,首先预设数组首元素下标为临时最大元素的下标,从首元素开始顺序向后继元素逐一比较,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标,直至比较了数组的全部元素后,临时最大元素下标就是数组中最大元素的下标。程序中,变量k用于存储临时最大元素下标,变量p控制顺序比较的循环变量。当发现当前元素s[p]比临时最大元素s[k]更大时,用p更新k。所以在下划线处应填入代码“k=p;”。
34.43344334解析:函数的参数传递形参的改变不会影响实参的值。调用函数swap(x,y)时,将x,y进行交换再输出,输出为43,但主函数中的a、b值并没有改变,最后输出a、b的值,为34。
35.A
36.88解析:在一般系统中,一个float型数据在内存中占4个字节(32位),一个double型数据占8个字节。
37.261261解析:在控制格式符中“o”代表的是将数据按八进制数输出,十进制数的177代表的八进制数是261。
38.8181解析:将S(i+j)展开来有:S(i+j)=S(6+8)=4×6+8×6+8+1=81。
39.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。
40.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
41.C
42.A解析:符号名的命名不仅要符合语法,而且符号名的命名应具有一定实际含义,以便于对程序功能的理解。所以,选项B错误。程序设计风格强调“清晰第一,效率第二”,而不是效率第一。所以,选项C错误。程序中的注释部分虽然不是程序的功能,计算机在执行程序时也不会执行它,但在程序中加入正确的注释能够帮助读者理解程序,注释是提高程序可读性的重要手段。所以,选项D错误。本题的正确答案为A。
43.B解析:本题考核的知识点是算法的性质。算法是为解决某个特定问题而采取的确定的且有限的步骤,一个算法应当具有以下5个基本特性:1.有穷性,就是指一个算法应当包含有限个操作步骤。2.确定性,就是说算法中每一条指令必须有确切的含义,不能有二义性,对于相同的输入必能得出相同的执行结果。3.有零个或多个输入。4.可行性,就是说算法中指定的操作,都可以通过已经实现的基本运算执行有限次实现,5.有一个或多个输出。由此可知选项B不正确,所以,4个选项中选项B符合题意。
44.C解析:本题考查一个算法应当具有5个特性,即有穷性、确定性、可行性、有零个或多个输入以及有一个或多个输出。算法的确定性是指:算法中每一条指令必须有确切的含义,读者理解时不会产生二义性。并且在任何条件下,算法只有唯一的一条执行路径,即对于相同的输入只能得出相同的执行结果。
45.B解析:在ASCII码中,字符串结束符'\\0'的ASCII码为0,字符'0'的ASCII码的值为48,字符'1'的ASCII码的值为49。由此可见,选项A的值为-47;选项B的值为1;选项C的值为49;选项D的值为-48。故应该选择B。
46.D解析:本题考查“++”和“--”运算符,运算符“++”是操作数加1,而“--”则是操作数减1。在do-while循环中,首先执行y--,再执行--y。当y=2时,执行y--,y的值变为1,--y使y值变为0,循环结束。执行输出时,先输出y的值0,然后执行y--,使y的值变为-1。
47.B解析:所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
48.A解析:根据函数intf1(intx,inty){returnx>y?x:y;)和intf2(intx,inty){returnx>y?y:x;}的定义可知,如果x>y成立,则函数f1返回x的值,函数f2返回y的值。所以f1(a,b)=4,f1(c,d)=5,f2(a,b)=3,f2(c,d)=2故e=f2(4,5)=4,f=f1(3,2)=3,g=4+3+5+2-4-3=7。
49.C解析:本题在定义字符数组时没有定义数组长度,但用字符常量给数组赋了初值,这时初值的个数即为数组的长度,故数组长度为6(包括'\\0')。字符串的长度为有效字符的个数5。strlen(s)返回值为串中字符的个数(不计最后的'\\0'),则输出值为5。sizeof(s)计算数组所占的字节数,包含'\\0',则输出值为6。因此,C选项正确。
50.C解析:“int(*ptr)();”说明ptr是一个指向函数的指针,返回值是整型。*ptr两边的括号非常关键,表示*和ptr组合成一个指针变量,然后再和后边的圃括号结合,表示该指针变量*ptr是一个指向函数的指针变量。如果没有*ptr两边的括号,“int*ptr();”表示ptr是个函数,该函数返回指向整型数据的指针。
51.A解析:因为左移运算符<<的优先级比位或运算符,要高,所以先计算b<<2。而左移n位在不溢出的前提下相当于乘以2n,所以b<<2=6*22=24。再计算3|24=(00000011)2|(00011000)2=(00011011)2,故本题的正确答案是A。
52.C
53.A解析:由于本题定义的是共用体,所以成员表列中的整型变量x与字符数组c共占用同一个存储单元,且此存储单元为2个字节,通常c[0]位于低字节,c[1]位于高字节,所以x.i的值为266。
54.A解析:C语言的字符型常量中,允许用一种特殊形式的字符常量,就是以一个'\\'开头的字符。其中,'\\ddd'表示用ASCII码(八进制数)表示一个字符,本题中的charc=\'\\72\'即表示占一个字符的变量c的ASCII码值。
55.D解析:线性表可以为空表,排除选项B。第一个元素没有直接前件,最后一个元素没有直接后件,故排除选项A。线性表的定义中,元素的排列没有规定大小顺序,故选项C也有误,只有D项是正确的。
56.A解析:getchar()函数是从键盘接受一个字符输入;当用户键入的字符不是回车符时,会进入一个多分支选择语句,根据C-'2'的值进行分支选择;putchar()是在屏幕上打印一个字符,最后的结果应当为668977。
57.B解析:存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对字符串'tomeetme'进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。
58.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。
59.D解析:主要考查运算符的优先级。sizeof的优先级最高,后面的顺序是:%、<<、>,优先级最低的是“=”。
60.C
61.D本题给出的两个关系R与S的表结构是不同的(R是二元关系,S是三元关系),它们不能进行∩、∪、一运算。而两个不同结构的关系是可以进行笛卡儿积(×)运算的。
62.Ac语言规定标识符只能由字母、数字和下划线3种字符组成,且第一个字符必须为字母或下划线,排除D);用户定义标识符中大小写字母之间是有区别的并且应尽量做到”见名识意”,排除选项B)和c);C语言中还规定标识符不能为c语言的关键字,故选项A)叙述错误,正确答案是选项A)。
63.B本题考查逻辑表达式“||”的求解过程。
在逻辑表达式的求解中,并不是所有的逻辑运算符都被执行,只是必须执行该逻辑表达式时才求出表达式的解。“||”为逻辑或运算,只有当该运算符左右两边的表达式都为假时(值为0),该逻辑运算的值才为假。只要有一个表达式为真,则该逻辑运算的值就为真。
进行逻辑或运算时,只要运算符左边的表达式为真(值不为0),则不用运行运算符右边的表达式。
题目中,初始时x、y、z的值都为1,运算符“||”左边为表达式++x,右边为表达式(++y&&++z)。程序运行时先判断表达式++x的值,该值为2,故该逻辑运算值为真,不需要执行运算符右边的表达式。
64.A
65.C
66.A本题考查的是通过指针引用二维数组元素。通过一维数组名或指向一维数组元素的指针来引用数组元素有两种写法:a[i]和*(a+i),它们是等价的。这是一种运算符之间的等价转换,就好像a一(b—c)等价于a-b+c一样。知道了这种转换,我们可以将之扩展到二维数组甚至任意维数组上来。因为口运算符的结合性是从左至右的,所以w[i珩]等价于(w[i][j],此时可以先将任意一个口运算符转换为指针形式为(·(w+i))[j]或*(w[i]+j),或者同时转换为*(*(W+i)+j)。上述几种形式都完全等价于w[il[j]。
67.B
68.B
69.A++优先级高于*,*p++值为year下一个变量的值(如果有的话),不能满足题意,所以选择A)
70.B
71.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。
72.B
73.B
74.D计算机能直接执行的程序是可执行程序,其扩展名为.exe。故本题答案为D选项。
75.D\r\n
76.A
\n当执行gets(ss)后,ss数组中的元素为ABC,再执行strcat(ss,'6789'),strcat的作用,是把6789连接到了ss数组后面,执行完后SS数组为ABC6789,故选择A选项。
\n
77.B
78.A
79.C线性结构满足两个条件:有且只有一个根结点;每个节点最多只有一个前件,也最多只有一个后件。栈、队列、线性表都属于线性结构,二叉树是一种非线性结构,因为它除叶子节点外,每个节点都有两个后件,不满足线性结构的条件。
80.A解析:耦合性是模块间互相连接的紧密程度的度量,取决于各个模块之间接口的复杂度、调用方式以及哪些信息通过接口。
[知识拓展]模块的独立程序是评价设计好坏的一个重要标准,衡量软件的模块独立性有两个定性的度量标准。其中内聚性是指一个模块内部各个元素间彼此结合的紧密程度的度最,内聚性是从功能角度来度量模块内的联系;耦合性是模块间互相连接的紧密程度的度量,耦合性从整体的角度来度量模块间的联系。
81.(1)错误:proc(intn)
正确:doubleproc(intn)
(2)错误:returnsum
正确:returnsuln;
【解析】从主函数中的函数调用可知,函数proc()有double型的返回值,因此“proc(intn)”应改为“doubleproc(intn)”;在C语言中,每一个语句都要以分号结束,因此应在语句“returnsum”后加上分号。
82.
【解析】由题目中所给表达式可知,表达式的值为m项表达式的和然后开平方。可以首先通过m次循环求得m项表达式的和,然后将其和开平方并返回到主函数当中。
2021年安徽省宿州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.红黑树中已经有n个数据,寻找某个key是否存在的时间复杂度为()
A.o(logn)B.o(n)C.o(n二次方)D.o(1)
2.有下列程序:main{inti,s=0,t[]={1,2,3,4,5,6,7,8,9);for(i=0;i<9;i+=2)s+=*(t+i);printf("%d\n",s);}程序执行后的输出结果是()。A.45B.20C.25D.36
3.以下叙述中正确的是()
A.C程序由函数和过程组成B.C程序由主函数组成C.C程序由函数组成D.C程序中,主函数必须放在其他函数之前
4.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
5.一个C语言程序总是从()开始执行:
A.主程序B.子程序C.主函数D.第一个函数
6.有以下程序:#include<stdio.h>voidsub(doublea,double*pb);intmain(){doublex,y;scanf(“%lf%lf”,&x,&y);sub(x,&y);printf(“x=%fy=%f\n”,x,y);}voidsub(doublea,double*pb){a=a-*pb;*pb=*pb-a;}程序运行时输入10.23.5并按<Enter>键,则输出结果为()。
A.x=10.200000y=-3.200000
B.x=6.700000y=-13.700000
C.x=7.000000y=-3.500000
D.x=13.400000y=-7.000000
7.判断一个顺序存储的队列sp为空的条件是()。
A.sp->front=sp->rear
B.sp->front=sp->rear+1
C.sp->front=sp->rear-1
D.sp->front=NULL
8.深度为5的二叉树至多有C个结点。
A.16B.32C.31D.10
9.一个顺序栈一旦声明,其占用空间的大小()。
A.已固定B.可以变动C.不能固定D.动态变化
10.
11.下列叙述中正确的是()
A.一个算法的空间复杂度打,则其时间复杂度也必定大
B.一个算法的空间复杂度大,则其时间复杂度也必定小
C.一个算法的时间复杂度大,则其空间复杂度也必定小
D.算法的时间复杂度与空间复杂度没有直接相关
12.在下列定义语句中,编译时会出现编译错误的是()。
A.chara=‘\x2d’;B.chara=‘\n’;C.chara=‘a’;D.chara=“aa”;
13.在决定选取何种存储结构时,一般不考虑()。
A.各结点的值如何B.结点个数的多少C.对数据有哪些运算D.所用的编程语言实现这种结构是否方便
14.以下程序是用来计算两个非负数之间的最大公约数:我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)
15.最小堆[0,3,2,5,7,4,6,8],在删除堆顶元素0之后,其结果是()
A.[3,2,5,7,4,6,8]
B.[2,3,5,7,4,6,8]
C.[2,3,4,5,7,8,6]
D.[2,3,4,5,6,7,8]
16.若x,y,z均被定义为整数,则下列表达式能正确表达代数式1/(x*y*z)的是()。A.1/x*y*zB.1.0/(x*y*z)C.1/(x*y*z)D.1/x/y/(float)z
17.有以下程序#include<stdio.h>main{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421
18.下列选项中,能够满足“若字符串s1等于字符串s2,则执行ST”要求的是()。A.if(strcmp(s2,s1)==0)ST;
B.if(s1===s2)ST;
C.if(strcpy(s1,s2)==1)ST;
D.if(s1,s2==0)ST;
19.若有定义语句:“inta=3,b=2,c=1;”,以下选项中错误的赋值表达式是()。
A.a=(b=4)=3;B.a=b=c+1:C.a=(b=4)+C;D.a=1+(b=c一4);
20.在一个带头结点的单链表HL中,若要在第一个元素之前插入一个由指针p指向的结点,应该使用的语句为()
A.HL=p;p->next=HL;
B.p->next=HL;HL=p;
C.p->next=HL->next;HL->next=p;
D.p->next=HL;p=HL;
二、2.填空题(20题)21.阅读程序:
main()
{charstrl[]="howdoyoudo",str2[10];
char*p1=strl,*p2=str2;
scanf("%s”,p2);
printf("%s”,p2);
printf("%s\n",p1);
}
运行上面的程序,输入字符串HOWDOYOUDO则程序的输出结果是【】。
22.设一棵二叉树中有3个叶子结点,有8个度为1的结点,则该二叉树中总的结点数为【】。
23.已定义charch=′$′;inti=1,j;,执行j!=ch&&i++以后,i的值为【】。
24.下面rotme函数的功能是:将n行n列的矩阵A转置为A'。例如:
请填空。
#defineN4
voidrotate(inta[][N])
{inti,j,t;
for(i=0;i<N;i++)
for(j=0;【】;j++)
{t=a[i][j];
【】;
a[j][i]=t;
}
}
25.以下程序的运行结果是【】。
#include<string.h>
typedefstructstudent{
charname[10];
longsno;
floatscore;
}STU;
main()
STUa={"Zhangsan",2001,95},b={"Shangxian",2002,90},
c={"Anhua",2003,95},d,*p=&d;
d=a;
if(strcmp(,)>0)d=b;
if(strcmp(,)>0)d=c;
printf("%1d%s\n",d.sno,p->name);
}
26.结构化程序设计方法的主要原则可以概括为自顶向下、逐渐求精、【】和限制使用goto语句。
27.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
28.有以下程序:
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);
}
执行后的输出结果是【】。
29.若输入5、9,以下程序的运行结果为【】。
main()
{inta,b,*pt1,*pt2;
printf("inputa,b:");
scanf("%d%d",&a,&b);
pt1=&a;
pt2=&b;
if(a<b)swap(pt1,pt2);
printf("\n%d,%d\n",*pt1,*pt2);
}
swap(p1,p2)
int*p1,*p2;
{int*p;
p=p1;
p1=p2;
p2=p;
}
30.下述函数通过递归方法将字符串倒置,使用时需要指定字符数组的首地址、起始下标和终止下标。请填空:
#include<stdio.h>
voidfun(char*s,intlow,inthigh)
{if(【】)
return;
else
{chart;
fun(【】);
t=s[low];
s[low]=s[high];
s[high]=t;}}
31.以下程序的输出结果是【】。
main()
{char*p[]={"BOOL","OPK","H","SP"};
inti;
for(i=3;i>0;i--,i--)printf("%c",*p[i]);
printf("\n");}
32.阅读下列程序,则程序的输出结果为【】。
#include"stdio.h"
structty
{intdata;
charc;};
main()
{structtya={30,'x'};
fun(a);
printf("%d%c",a.data,a.c);}
fun(structtyb)
{b.data=20;
b.c='y';}
33.下面程序的功能是输出数组s中最大元素的下标,请填空。
#include<stdio.h>
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);
}
34.以下程序运行后的输出结果是【】。
voidswap(intx,inty)
{intt;
t=x;x=Y;Y=t;printf("%d%d",x,y);
}
main()
{inta=3,b=4;
swap(a,b);printf("%d%d",a,b);
}
35.以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序运行后的输出结果是
36.在C语言中(以16位PC机为例),一个float型数据在内存中所占的字节数为4;一个double型数据在内存中所占的字节数为【】。
37.以下程序的输出结果是【】。
main()
{inta=177;
printf(“%o\n”,A);
}
38.以下程序运行后的输出结果是【】。
#defineS(x)4*x*x+1
main()
{inti=6,j=8;
printf("%d\n",S(i+j));
}
39.执行下列语句段后,x的值是______。
int*p,x;
x=100;
p=&x;
x=*p+50;
40.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
三、1.选择题(20题)41.下列定义中,不正确的有______。
A.#definePI3.141592
B.#defineS345;
C.intmax(x,y);
D.staticcharc;intx,y;{...}
42.对建立良好的程序设计风格,下面描述正确的是()
A.程序应简单、清晰、可读性好B.符号名的命名只要符合语法C.充分考虑程序的执行效率D.程序的注释可有可无
43.一个算法应该具有“确定性”等5个特性,下面对另外4个特性的描述中错误的是()A.有零个或多个输入B.有零个或多个输出C.有穷性D.可行性
44.算法中,对需要执行的每一步操作,必须给出清楚、严格的规定。这属于算法的A.正当性B.可行性C.确定性D.有穷性
45.以下选项中,值为1的表达式是()。
A.1-'0'B.1-'\0'C.'1'-0D.'\0'-'0'
46.下面程序的运行结果是()。#include<stdio.h>main(){inty=10;do{y--;}while(--y);printf("%d\n",y--);}
A.-1B.1C.8D.0
47.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
48.下列程序的输出结果是()。intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,e=5,d=2,e,f,g;e=f2(f1(a,b),f1(e,d));f=f1(f2(a,b),f2(e,d));g=a+b+c+d-e-f;printf("%d,%d,%d\n",e,f,g);}
A.4,3,7B.3,4,7C.5,2,7D.2,5,7
49.有以下程序:main(){chars[]="\n123\\";printf("%d,%d\n",strlen(s),sizeof(s));}执行后输出结果是()。
A.赋初值的字符串有错B.6,7C.5,6D.6,6
50.设有如下定义,则以下叙述中正确的是______。int(*ptr)();
A.ptr是指向一维数组的指针变量
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
51.设有以下语句:chara=3,b=6,C;c=a|b<<2;printf("%d\n",C);则c的二进制值是()。
A.11011B.10100C.11100D.11000
52.若输入1.5、2.5,则以下程序的运行结果为______。main(){floata,b;intc;scanf("%f,%f,",&a,&b);c=max(a,b);printf("%d",c);}max(x,y)floatx,y;{floatz;z=x>y?x:y;return(z);}
A.1.5B.2.5C.2D.3
53.下列程序的执行结果是______。#include<stdio.h>unionun{inti;charc[2];};voidmain(){unionunx;x.c[0]=10;x.c[1]=1;printf("\n%d",x.i)}
A.266B.11C.265D.138
54.若有说明语句:charc=′\72′;则变量c
A.包含1个字符B.包含2个字符C.包含3个字符D.说明不合法,c的值不确定
55.线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是()
A.每个元素都有一个直接前件和直接后件
B.线性表中至少要有一个元素
C.表中诸元素的排列顺序必须是由小到大或由大到小
D.除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件
56.有以下程序#include<stdio.h>main(){intc;while((c=getchar())!='\n'){switch(c-'2'){caseO:case1:putchar(c+4);case2:putchar(c+4);braeak;case3:putchar(c+3);default:putchar(c+2);break;}}}从第一列开始输入以下数据,↓代表一个回车符。2473↓程序的输出结果是_______。
A.668977B.668966C.66778777D.6688766
57.阅读下面程序,则执行后的结果是
#include"stdio.h"
main()
{charstr[]="tomeetme",*p;
for(p=str;p<str+7;p+=2)putchar(*p);
printf("\n");}
A.tomeetmeB.tmemC.oeteD.tome
58.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.若有运算符:>、=、<<、%、sizeof,则它们按优先级(由高至低)的正确排列顺序为()。
A.%、sizeof、>、<<、=
B.sizeof、%、>、=、<<
C.sizeof、<<、>、%、=
D.sizeof、%、<<、>、=
60.以下能将字符串,youareluck!正确读入的语句组是()
A.chars[80];scanf("%s",s);
B.char*s:scanf("%s",s);
C.chars[80];gets(s);
D.char*s;gets(3);
四、选择题(20题)61.设有二元关系R和三元关系s,下列运算合法的是()。
A.R∩SB.R∪SC.R-SD.R×S
62.以下叙述中错误的是()。
A.用户所定义的标识符允许使用关键字
B.用户所定义的标识符应尽量做到“见名识意”
C.用户所定义的标识符中,大、小写字母代表不同标识
D.用户所定义的标识符必须以字母或下划线开头
63.设x,y,z均为整型变量,现有如下语句x=y=z=1;(++x||(++y&&++z));,则执行这个语句后y的值为
A.2B.1C.0D.不定值
64.
65.
66.若有定义:则以下不能正确表示该数组元素的表达式是()。
67.
68.
69.若有定义语句:
70.
71.有以下程序#includemain{inty=9;for(;y>0;y--)if(y%3==0)printf("%d",--y);}程序的运行结果是()。A.741B.963C.852D.875421
72.
73.(42)希尔排序法属于哪一种类型的排序法()
A.交换类排序法
B.插入类排序法
C.选择类排序法
D.建堆排序法
74.计算机能直接执行的程序是()。
A.源程序B.目标程序C.汇编程序D.可执行程序
75.
76.
当执行下面的程序时,如果输入ABC,则输出结罘是()。
#include<stdio.h>
#include<string.h>
main()
{charss[10]="1,2,3,4,5":
gets(ss);strcat(ss,"6789");printf("%s\n",ss);
}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
77.
78.
79.下列数据结构中属于非线性结构的是()。
A.队列
B.线性表
C.二叉树
D.栈
80.两个或两个以上模块之间联系的紧密程度称为()。
A.耦合性B.内聚性C.复杂性D.数据传输特性
五、程序改错题(1题)81.已知一个数列,从0项开始的前3项为0、0、1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc()的功能是:计算并输出该数列前n项的平方根之和sum。n的值通过形参传入。例如,当n=11时,程序的输出结果应为32.197745。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc(),它的功能是计算:s=(1n(1)4-1n(2)+In(3)4-…+1n(m))0.5在C语言中可调用log(n)函数求1n(n)。例如,若n1的值为30,则proc()函数值为8.640500。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.A
2.C在for循环语句中自变量i从0开始,每次自加2,执行s+=*(t+i)语句,因为C语言规定数组名做表达式相当于数组的首地址,也就是第一个元素的地址。因此,*(t+i)代表数组的第i+1个元素。所以程序运行的结果是1+3+5+7+9=25,即变量S的值等于25。
3.C
4.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
5.C
6.Asub函数接收两个参数:double类型变量a,double指针变量pb。首先将a与pb指向的变量值相减,结果存放在a中;然后再将pb指向的变量值与a的新值相减,结果存放在pb指向的内存空间中。sub函数不会修改实参x的值,但会修改实参y的值。当输入10.23.5时,实参x的值为10.2,y的值为3.5,执行sub函数后,x的值不变,y的值变成-3.2。故本题答案为A选项。
7.A
8.C
9.A
10.B
11.D
12.DD选项中将字符串常量“aa”赋给字符变量a是错误的。故本题答案为D选项。
13.A
14.B
15.C
16.B
17.C在for循环中,当y的值为9、6或3时,执行输出语句,输出表达式--Y的值。Y先自减l,然后再输出y的值。
18.A解析:strcmp(char*,char*),函数strcmp用于比较两个字符串的长度,长者为大,若字符个数也一样,则从左至右依次比较相同位上的字符,字符大小按ASCⅡ表值计算,直到最后一个字符,若还相同,则两个字符串相等,返回值0。选项A中if(strcmp(s2,s1)=0)ST,若s2等于s1,则返回值0,0等于0,所以逻辑表达式strcmp(s2,s1)=0为真执行ST。
19.A由等式的规则可知,A选项错误。先对括号的b进行等式运算,得出b=4,然后计算得出a=4=3,所以会导致错误。答案选择A。
20.C
21.HOWhowdoyoudo
22.1313解析:在任意一棵二叉树中,叶子结点总是比度为2的结点多一个。本题中的二叉树有3个叶子结点,所以,该二叉树有3-1=2个度为2的结点;又知本题中的二叉树有8个度为1的结点。所以,本题中的二叉树总结点数为:叶子结点数+度为l的结点数+度为2的结点数=3+8+2=13。所以,本题的正确答案为13。
23.11解析:在执行逻辑表达式'j=!ch&&i++'时,首先判断j=!ch的值,因为'ch=\'$\''不为0,所以'j=!ch=0',编译系统便不再计算表达式'i++'的值,i的值不变,仍为1。
24.j<Ia[i][j]=a[j][i]j<I\r\na[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空白处应该填写j<i,第二个空白处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。
25.2002Shangxian2002Shangxian解析:本题中首先定义一个结构体类型STU,该结构体由一个长度为10的字符型数组、一个long型变量和一个float型变量组成。接着在主函数中用STU定义了4个结构体变量a、b、c、d,并且给a、b、c赋初值,然后定义了一个结构体指针p,并让它指向变量do将变量a的值赋给变量d,接着通过两个if语句比较结构体变量a、b、c的成员name大小。第一个if语句将结构体变量和结构体变量中较小的那个赋值给结构体变量d,第二个if语句将结构体变量和结构体变量较大的那个赋给结构体变量do比较通过函数strcmp实现。strcmp()函数有两个参数,分别为被比较的两个字符串。如果第一个字符串大于第二个字符串返回值大于0,若第一个小于第二个返回值小于0,相等时返回值为0。字符串比较大小的标准是从第一个字符开始依次向右比较,遇到某一个字符大,该字符所在的字符串就是较大的字符串,如果遇到某一个字符小,该字符所在的字符串就是较小的字符串。程序中第一个if语句strcmp(,)>0为真,故将b的值赋给d,第二个if语句strcmp(,)>0为假,故不执行后面的语句,最后d的值为b的值,因此输出d.sn0和p->name的值为2002Shangxian。
26.模块化模块化解析:结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、模块化和限制使用goto语句。自顶向下程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化。
逐步求精:对复杂问题,应设计一些子目标作过度,逐步细化。
模块化:一个复杂问题,肯定是由若干精简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块。
限制使用goto语句。
27.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 检测服务合同模板
- 地震安全课件百度
- 仪器仪表在安防领域的应用考核试卷
- 搪瓷制品的企业文化与品牌效应考核试卷
- 商务代理国际市场营销渠道开发考核试卷
- 客户关系管理在供应链中的作用考核试卷
- 成人教育学习效果评估考核试卷
- 工业机器人法律伦理与社会责任考核试卷
- 承包母婴店合同范本
- 简易订单合同范本
- 劳务投标书技术标
- 自动识别技术及应用《自动识别技术及应用》模块一课件
- 仁爱版九年级英语下册课文翻译
- 无人机应用技术专业课程标准(技工口)
- 产业园运营服务方案
- 公司工程竣工内部预验收实施细则
- 监理日志表(标准模版)
- H3C-CAS虚拟化平台详细介绍
- 药房品种类别及数量清单
- 机关档案管理工作培训PPT课件
- 大学生安全教育课件(ppt共41张)
评论
0/150
提交评论