版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.在数据流图(DFD)中,带有名字的箭头表示
A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向
2.下列数据结构中,能用二分法进行查找的是()
A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表
3.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
4.已知广义表的表头为A,表尾为(B,C),则此广义表为________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
5.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()
A.二叉搜索树,比较函数开销:1次运算/每字符
B.哈希表,hash算法开销:10次运算/每字符
C.链表,比较函数开销:1次运算/每字符
D.TRIE树,寻找子节点开销:1次运算/每字符
6.有1000个无序的整数,希望使用最快的方式找出前50个最大的,最佳的选择是()
A.冒泡排序B.基数排序C.堆排序D.快速排序
7.程序流程图中有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
8.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()
A.1B.2C.3D.4
9.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3;charflag;flag=b>=2&&c<=3;switch(a){ case1:switch(flag) { case0:printf(“**”);break; case1:printf(“%%”);break; } case0:switch(c) { case1:printf(“$$”);break; case2:printf(“&&”);break; default:printf(“##”); }}printf(“\n”);}程序运行后的输出结果是()。
A.**$$B.%##C.%&&D.**##
10.若有以下定义和语句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));则输出结果是()。A.55B.105C.107D.58
11.C语言常量的类型从字面形式上可区分,以下判断中正确的是()。
A.2E3——整型B.2.0E3——实型C.‘\025’——字符串D.“a”——字符型
12.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
二、2.填空题(12题)13.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
14.以下条件表达式可计算:1+|a|的值,请填空。a>=0?[6]:[7]
15.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
16.数据字典是各类数据描述的集合,它通常包括五个部分,即数据项、数据结构、数据流、【】和处理过程。
17.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
18.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
[8]
if(s[*k]<s[i])*k=i;
return[9];}
main()
{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
pfintf("%d,%d\n"
19.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。
charch='B';
printf("%c%d\n",ch,ch);
20.以下程序的输出结果是【】。
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,e+d)*10;
printf("%d\n",t);
}
21.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
22.下面程序的输出是【】
main()
{enumem{eml=3,em2=1,em3};
char*aa[]={"AA',"BB","CC","DD"}
printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);
}
23.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
24.以下程序的输出结果是()。#include<stdio.h>intfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d\11",s);}
三、3.程序设计题(10题)25.请编写函数fun(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。
例如x有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
floatfun(float*a,intn)
{
}
main()
{
floatscore[30]=(90.5,72,80,61.5,55},
aver;
aver=fun(score,5);
printf("\nAveragescoreis:%5.2f
\n",aver);
}
26.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#defineN8
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
{
}
STREC*creat(double*s)
{
STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*)malloc(sizeof(STREC));
p->s=s[i];i++;p->next=q;p=q;
}
p->next=0;
returnh;/*返回链表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h->next;
printf("head");
do
{printf("->%2.0f",p->s);p=p->next;}
/*输出各分数*/
while(p!=0);
printf("\n\n");
}
main()
{
doubles[N]={85,76,69,85,91,72,64,87},
max;
STREC*h;
h=creat(s);
outlist(h);
max=fun(h);
printf("max=%6.1f\n",max);
}
27.请编一个函数voidfun(inttt[M][N],intpp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
}
main()
{
intt[M][N]={{68,32,54,12},{14,24,88,
58},{42,22,44,56}};
intp[N],i,j,k;
clrscr();
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
28.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回链表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*输/出各分数*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
29.请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为
AAAA
BBBBBBB
CC
则合并后的字符串内容应该是AAAABBBBBBBCC
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#defineM3
#defineN20
voidfun(chara[M][N],char*b)
{
}
main()
{
charw[M][N]={"AAAA","BBBBBBB","CC"},i;
chara[100]={"####################"};
printf("Thestring:\n");
for(i=0;i<M;i++)
puts(w[i]);
printf("\n");
fun(w,a);
printf("TheAstring:\n");
printf("%s",a);
printf("\n\n");
}
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fum的花括号中填入所编写的若啡:语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行输出4个学生记录*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
31.请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19,23,29,3l,37。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
32.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*a,char*p)
{
}
main()
chars[81],*t;
printf("Enterastring:\n");
gets(s);
t=s;
while(*t)
t++;
t--;/*指针t指向字符串尾部*/
while(*t=='*')
t--;/*指针t指向最后一个字母*/
fun(s,t);
printf("Thestringafterdeleted:\n");
puts(s);
}
34.请编写一个函数voidfun(cbara[],charb[],intn),其功能是:删除一个字符申中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
四、单选题(0题)35.以下选项中,当x为大于l的奇数时,值为0的表达式是
A.x%2==1B.x/2C.x%2!=0D.x%2==0
五、单选题(0题)36.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
六、单选题(0题)37.一个顺序栈一旦声明,其占用空间的大小()。
A.已固定B.可以变动C.不能固定D.动态变化
参考答案
1.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
2.DD)【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
3.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。
4.B
5.D
6.D
7.C解析:程序流程图是软件过程设计中常用的图形描述工具之一。构成程序流程图的最基本符号有:→或↓,表示控制流;□表示加工步骤;
表示逻辑条件。
8.B
9.Bmain函数中,根据“b=2,c=3”可知表达式“b>=2&&c<=3”为真,flag值为1。由“a=1”和外层switch语句的case标号没有break语句,可知外层switch语句执行case1,case0。对于外层case1:嵌套的switch语句根据“flag=1”执行case1,执行“printf(“%%”);”,输出“%”,接着执行break语句,结束内层switch执行外层;对于外层case0:嵌套的switch语句根据“c=3”执行default语句,执行“printf(“##”);”,输出“##”。故本题答案为B选项。
10.A\\n和\\\\分别为转义字符,各占据一个字符的位置。
11.B2E3是实型常量的指数形式,选项A错误;2.0E3是实型常量的指数形式,选项B正确;‘\\025’是八进制表示的转义字符,选项C错误;“a”是双引号标注的字符串常量,选项D错误。故本题答案为B选项。
12.A循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。
13.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
14.
15.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
16.数据存储数据存储
17.概念概念
18.本题中直接使用指针变量k,但在使用时要注意对k的指针运算,此外,一开始应使*k的值为数组中的某一下标值,即*k=0。
19.B66B66解析:字符B的ASCII码值为66,因此,按%c形式输出B,按%d形式输出66,输出结果为:B66。
20.77解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*l0进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+9d)*10)的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。
21.t>=le-5;t=t/n;
22.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上—个元素存在并有明确值的情况下,这个牧举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=cm2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为'DDBBCC'。
23.m=4k=4i=5k=5m=4k=4i=5k=5解析:在主函数main()中定义了一个变量i,并赋初值4,调用fun()函数将i的初值传递给形参m,进行fun()函数后的运算,输出结果为m=4,k=4。将k值输出后自行增加1,k=5,此时全局变量k的值变为5。主函数中调用fun()函数后,i再自行增加1,i=5,所以主函数输出的结果为“i=5k=5”。
24.1515解析:在函数fun(intx)中定义了局部静态整形变量t,并初始化为0。这个函数的返回值为t+x。所以在主函数的for循环中,5次连续调用fun(i),实现了从1到5连续数字的相加运算。因而最后结果等于15。
25.floatfun(float*aintn){floatav=0.0;inti;for(i=0;iav=av+a[i];/*求分数的总和*/return(av/n);/*返回平均值*/}floatfun(float*a,intn)\r\n{\r\nfloatav=0.0;\r\ninti;\r\nfor(i=0;iav=av+a[i];/*求分数的总和*/\r\nreturn(av/n);/*返回平均值*/\r\n}解析:我们先按数学的思路来计算平均分:总分除以人数即可得到平均分,其实用C语言的指针来实现该问题,也不难。当指针变量指向一个数组时,用该指针变量引用数组元素时,引用方式与数组的引用方式相同。如本题中a指向了score,所以通过a引用score中的元素时可以用下标法,也可以用指针运算法,a[i]和*(a+i)具有相同的作用。下标运算实际上是从当前地址开始往后取出地址中的第几个元素,当前地址下标为0。例如:若有intcc[10],*P=cc+5;,即p指向了cc的第5号元素,则p[0]的作用是取出从当前地址(即p所指地址)开始的第0号元素,它与cc[5]相同:p[3]的作用是取出从当前地址(即p所指地址)开始往后的第3号元素,它与cc[8]相同:p[-2]的作用是取出从当前地址开始往前的第2号元素,它与cc[3]相同,但不提倡使用“负”的F标。
26.doublefun(STREC*h){doublemax=h->s;while(h!=NULL)/*通过循环找到最高分数*/{if(max<h->s)max=h->s;h=h->next;}returnmax;}doublefun(STREC*h)\r\n{\r\ndoublemax=h->s;\r\nwhile(h!=NULL)/*通过循环找到最高分数*/\r\n{if(max<h->s)max=h->s;\r\nh=h->next;\r\n}\r\nreturnmax;\r\n}解析:在本题中,h为一个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符“->”。由于是链表,所以要使h逐一往后移动,使用的是h=h->next。
27.voidfun(inttt[M][N]intpp[N]){intiimax;for(j=0;j<N;j++){max=tt[0][j];/*假设各列中的第一个元素最大*/for(i=0;i<M;i++)if(tt[i][j]>max)/*如果各列中的其他元素比最大值大则将这个更大的元素看作当前该列中最大元素*/max=tt[i][j];pp[j]=max;/*将各列的最大值依次放入pp数组中*/}}voidfun(inttt[M][N],intpp[N])\r\n{\r\ninti,i,max;\r\nfor(j=0;j<N;j++)\r\n{\r\nmax=tt[0][j];/*假设各列中的第一个元素最大*/\r\nfor(i=0;i<M;i++)\r\nif(tt[i][j]>max)/*如果各列中的其他元素比最大值大,则将这个更大的元素看作当前该列中最大元素*/\r\nmax=tt[i][j];\r\npp[j]=max;/*将各列的最大值依次放入pp数组中*/\r\n}\r\n}解析:本题中函数的功能是求出二维数组中每列的最大元素。首先,假设各列中的第一个元素最大,然后利用行标值的移动来依次取得各列中其他元素的值,并与假设的最大值进行比较,如果遇到更大的,则把这个更大的元素看做当前该列中最大的元素,继续与该列中其他元素比较。
28.doublefun(STREC*h){doublemin=h->s;while(h!=NULL)/*通过循环找到最低分数*/{if(min>h->s)min=h->s;h=h->next;}returnmin;}doublefun(STREC\u3000*h)\r\n{\r\ndoublemin=h->s;\r\nwhile(h!=NULL)/*通过循环找到最低分数*/\r\n{if(min>h->s)\r\nmin=h->s;\r\nh=h->next;\r\n}\r\nreturnmin;\r\n}解析:在本题中,h为—个指向结构体的指针变量,若要引用它所指向的结构体中的某一成员时,要用指向运算符“->”。由于是链表,所以要使h逐一往后移动,使用的是h=h->next。
29.voidfun(chara[M][N]char*b){intijk=0;for(i=0;i<M;i++)/*将字符串数组中的M个字符串按顺序存入一个新的字符串*/for(j=0;a[i][j]!='\0';j++)b[k++]=a[i][j];b[k]='\0';/*在字符串最后加上结束标志符*/}voidfun(chara[M][N],char*b)\r\n{\r\ninti,j,k=0;\r\nfor(i=0;i<M;i++)/*将字符串数组中的M个字符串,按顺序存入一个新的字符串*/\r\nfor(j=0;a[i][j]!='\\0';j++)\r\nb[k++]=a[i][j];\r\nb[k]='\\0';/*在字符串最后加上结束标志符*/\r\n}解析:本程序中for(i=0;i<M;i++)循环的作用是用于对二维数组行的控制,第2个循环的作用是从同一行中取出字符并存放到一维数组b中,语句是b[k++]=a[i][j];。
30.intfun(STRECa[]){intij;STRECt;for(i=1;i<N;i++)/*用冒泡法进行排序进行N-1次比较*/for(j=0;j<N-1;j++)/*在每一次比较中要进行N-1次两两比较*/if(a[j].s<a[j+1].s){t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分数的高低排列学生的记录高分在前*/}intfun(STRECa[])\r\n{\r\ninti,j;\r\nSTRECt;\r\nfor(i=1;i<N;i++)/*用冒泡法进行排序,进行N-1次比较*/\r\nfor(j=0;j<N-1;j++)/*在每一次比较中要进行N-1次两两比较*/\r\nif(a[j].s<a[j+1].s)\r\n{t=a[j];a[j]=a[j+1];a[j+1]=t;}/*按分数的高低排列学生的记录,高分在前*/\r\n}解析:冒泡法算法思路:如果有N个数,则要进行N-1次比较,在每一次比较中要进行N-1次两两比较(这种算法较好理解但不是最精的)。所谓两两比较就是从头到尾依次将相邻两个数进行比较并将其中大的数放在前或在后(若要求从小到大排序,则大的数要放在后。反之则对调),即两两比较后这两个数要形成题中所要求的顺序。由于总是从头到尾进行比较,所以第1次比较结束后,最大(或最小)数肯定在最后,第2次比较结束后,次最大(或次最小)数肯定在倒数的第2个数,依次类推,所以进行第一次比较时必须比较到最后一个数,而进行第2次比较时只要比较到倒数的第2个数即可,所以进行第i次比较时只需比较N-i次即可(这种算法较难理解,但它是最好的)。
选择法算法思路:如果有N个数则从头到倒数的第2个数一个一个往后走动,每走动1个数总是将这个数与其后的所有数进行比较并找出它们的最大(或最小)数,找出最大(或最小)数后再将所得的最大(或最小)数与该数进行交换,交换后再走到下一个数依次交换到结束。此外,选择法还可用如下思路:如果有N个数,则从头到倒数的第2个数—个一个往后走动,每走动一个数总是将这个数与其后的所有数进行两两比较,在比较时按顺序将进行比较的这两个数排序(即交换)。
插入法算法思路:先对头两个数进行排序。然后把第3个数插入到前两个数中,插入后前3个数依然有序;再把第4个数插入到前3个数中,插入后前4个数依然有序;依次插完所有的数。具体执行方式(假设从小到大排序):从第2个数开始往后一个一个走动直到最后。每走到1个数总是将该数(先将其存到1个临时变量中)与其前面的数进行比较(比较的顺序总是从后往前进行),在比较时只要发现该数比被比较的数小,就将被比较的数往后移1位,然后该数还要冉与前1个数进行比较,亢到发现该数比被比较的数大或己比较到头(即第1个数的前面),并将该数存入当前被比较数的后1位(存储空间)。
如果有整型一维数组a其有N个元素,要求将其按从小到大排序。注意元素下标是从0始的。
冒泡法:
for(i=1;i<N;i++)
for(j=0;N-1;j++)
if(a[j]>a[j+1])
{t=a[j];a[j]=a[j+1];a[j+1]=a[j];}
选择法
for(i=0i<N-1;i++)
{p=i;
for(ji+1;j<N;j++)
if(a[p]>a[j])p=j;
if{p!=i)
t=a[i];a[i]=a[p];a[p]=t;
}
插入法
for{i=1;i<N;i++}
{t=a[i];
for{j=i-1;a[j]>t&&j>=0;j--)
a[j+1]=a[j];
a[j+1]=t;
}
31.voidfun(intmintkintxx[]){intijn;for(i=m+1n=0;n<k;i++)/*找大于m的素数循环k次即找出紧靠m的k个素数*/{for(j=2;j<i;j++)/*判断一个数是否为素数如果不是跳出此循环判断下一个数*/if(i%j==O)break;if(j>=i)/*如果是素数放入数组xx中*/xx[n++]=i;}}voidfun(intm,intk,intxx[])\r\n{\r\ninti,j,n;\r\nfor(i=m+1,n=0;n<k;i++)/*找大于m的素数,循环k次,即找出紧靠m的k个素数*/\r\n{for(j=2;j<i;j++)/*判断一个数是否为素数,如果不是,跳出此循环,判断下一个数*/\r\nif(i%j==O)break;\r\nif(j>=i)/*如果是素数,放入数组xx中*/\r\nxx[n++]=i;\r\n}\r\n}解析:本题只要掌握了判断素数的算法即不难完成了,其实程序缺少部分也正是这部分。
32.
解析:(1)该程序功能是返回低于平均分的人数。它的解题思路可以分解为以下几步:求总分一求平均分一逐个元素与平均分比较一统计低于平均分的人数。
(2)从已给部分源程序的main主函数开始入手,核心函数fun(score,9,below)中的参数由题目可知,score存放着m个人的成绩,below存放低于平均分的分数。另外,根据score的定义,可知9为score数组中元素的个数,传给函数fun中的参数m。
33.voidfun(char*achar*p){char*t=a;for(;t<=p;t++)if(*t!='*')*(a++)=*t;/*将p以前所有不是*号的字符保留下来*/for(;*t!='\0';t++)*(a++)=.t;/*将p以后的所有*号保留下来*/*a='\0';/*在字符串最后加上结束标记位*/voidfun(char*a,char*p)\r\n{\r\nchar*t=a;\r\nfor(;t<=p;t++)\r\nif(*t!='*')\r\n*(a++)=*t;/*将p以前所有不是*号的字符保留下来*/\r\nfor(;*t!='\\0';t++)\r\n*(a++)=.t;/*将p以后的所有*号保留下来*/\r\n*a='\\0';/*在字符串最后加上结束标记位*/解析:本题曾在历年上机考试及模拟试题中多次出现,一般用两个循环语句来实现。第1个循环的作用是将p以前所有不是*号的字符保留下来,即删除所有的*号。第2个循环的作用是将p以后的所有*号保留下来。
34.voidfun{chara[]charb[]intn){intik=0;for(i=0;a[i]!=‘\0’;i++)if(i!=n)/*将不是指定下标的字符存入数组b中*/b[k++]=a[i];b[k]=‘\0’;/*在字符串最后加上结束标记*/}voidfun{chara[],charb[],intn)\r\n{\r\ninti,k=0;\r\nfor(i=0;a[i]!=‘\\0’;i++)\r\nif(i!=n)/*将不是指定下标的字符存入数组b中*/\r\nb[k++]=a[i];\r\nb[k]=‘\\0’;/*在字符串最后加上结束标记*/\r\n}解析:本题要求删除字符串中指定下标的字符,即相当于把不是指定下标的字符留下。所以要用if(i!=n),注意不能写成“=”运算。
35.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1,因此,选项A)、C)中表达式的结果为真,不为0;对于选项B)来说,x除以2的商不会等于0;选项D)中表达式的结果为假,即等于0。
36.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0:选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<B)&&!c||1),运算结果为0。
37.A2021年湖北省咸宁市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(12题)1.在数据流图(DFD)中,带有名字的箭头表示
A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向
2.下列数据结构中,能用二分法进行查找的是()
A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表
3.若有以下说明和定义:则对函数fun的正确调用语句是()。A.(*a)(&c);B.a=a(x);C.b=*b(x);D.fun(b);
4.已知广义表的表头为A,表尾为(B,C),则此广义表为________
A.(A,(B,C))B.(A,B,C)C.(A,B,C)D.((A,B,C))
5.在ASC算法team日常开发中,常常面临一些数据结构的抉择,令人纠结。目前大家在策划一个FBI项目(FastBinaryIndexing),其中用到的词汇有6200条,词汇长度在10-15之间,词汇字符是英文字母,区分大小写。请在下面几个数据结构中选择一个使检索速度最快的()
A.二叉搜索树,比较函数开销:1次运算/每字符
B.哈希表,hash算法开销:10次运算/每字符
C.链表,比较函数开销:1次运算/每字符
D.TRIE树,寻找子节点开销:1次运算/每字符
6.有1000个无序的整数,希望使用最快的方式找出前50个最大的,最佳的选择是()
A.冒泡排序B.基数排序C.堆排序D.快速排序
7.程序流程图中有箭头的线段表示的是()。
A.图元关系B.数据流C.控制流D.调用关系
8.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()
A.1B.2C.3D.4
9.有以下程序:#include<stdio.h>main(){inta=1,b=2,c=3;charflag;flag=b>=2&&c<=3;switch(a){ case1:switch(flag) { case0:printf(“**”);break; case1:printf(“%%”);break; } case0:switch(c) { case1:printf(“$$”);break; case2:printf(“&&”);break; default:printf(“##”); }}printf(“\n”);}程序运行后的输出结果是()。
A.**$$B.%##C.%&&D.**##
10.若有以下定义和语句:chars[10]="abcd!",*s2="\nl23\\";Drintf("%d%d\n",strlen(sl),strlen(s2));则输出结果是()。A.55B.105C.107D.58
11.C语言常量的类型从字面形式上可区分,以下判断中正确的是()。
A.2E3——整型B.2.0E3——实型C.‘\025’——字符串D.“a”——字符型
12.以下程序的输出结果是()。main{inta[3][3]=“l,2),{3,4),{5,6)},i,j,s=0;for(i=1;i<3;i++)for(j=0;j<=i;j++)s+=a[i][j];printf(”%d\n”,s);}A.18B.19C.20D.21
二、2.填空题(12题)13.以下程序的输出结果是【】。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\N,*p,*q))
}
14.以下条件表达式可计算:1+|a|的值,请填空。a>=0?[6]:[7]
15.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
16.数据字典是各类数据描述的集合,它通常包括五个部分,即数据项、数据结构、数据流、【】和处理过程。
17.数据模型按不同的应用层次分为三种类型,它们是______数据模型、逻辑数据模型和物理数据模型。
18.以下函数用来求出数组的最大元素在数组中的下标并存放在k所指的存储单元中。请填空。
#include<conio.h>
#include<stdio.h>
intfun(int*s,intt,int*k)
{inti;
*k=0;
[8]
if(s[*k]<s[i])*k=i;
return[9];}
main()
{inta[10]:{876,675,896,101,301,401,980,431,451,777},k;
fun(a,10,&k);
pfintf("%d,%d\n"
19.已知字符'A'的ASCII码值为65,以下语句的输出结果是【】。
charch='B';
printf("%c%d\n",ch,ch);
20.以下程序的输出结果是【】。
#defineMAX(x,y)(x)>(y)?(x):(y)
main()
{inta=5,b=2,c=3,d=3,t;
t=MAX(a+b,e+d)*10;
printf("%d\n",t);
}
21.下面程序的功能是根据公式e=1+1/1!+1/2!+1/3!+1/4!+...计算e的近似值,精度要求为10-5。请填空。
main()
{intn;
doublee=1.0,t=1.0;
for(n=1;【】n++);
{【】e+=t;}
printf("%f\n",e);}
22.下面程序的输出是【】
main()
{enumem{eml=3,em2=1,em3};
char*aa[]={"AA',"BB","CC","DD"}
printf("%s%s%\n",aa[em1],aa[em2],aa[em3]);
}
23.以下程序的运行结果是()。
intk=0;
voidfun(intm)
{m+=k;k+=m;printf("m=%d\nk=%d",m,k++);}
main()
{inti=4;
fun(i++);printf("i=%dk=%d\n",i,k);
}
24.以下程序的输出结果是()。#include<stdio.h>intfun(intx){staticintt=0;return(t+=x);}main(){ints,i;for(i=1;i<=5;i++)s=fun(i);printf("%d\11",s);}
三、3.程序设计题(10题)25.请编写函数fun(),该函数的功能是:计算n门课程的平均分,计算结果作为函数值返回。
例如x有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
floatfun(float*a,intn)
{
}
main()
{
floatscore[30]=(90.5,72,80,61.5,55},
aver;
aver=fun(score,5);
printf("\nAveragescoreis:%5.2f
\n",aver);
}
26.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最高分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<stdlib.h>
#defineN8
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
{
}
STREC*creat(double*s)
{
STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->s=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*)malloc(sizeof(STREC));
p->s=s[i];i++;p->next=q;p=q;
}
p->next=0;
returnh;/*返回链表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h->next;
printf("head");
do
{printf("->%2.0f",p->s);p=p->next;}
/*输出各分数*/
while(p!=0);
printf("\n\n");
}
main()
{
doubles[N]={85,76,69,85,91,72,64,87},
max;
STREC*h;
h=creat(s);
outlist(h);
max=fun(h);
printf("max=%6.1f\n",max);
}
27.请编一个函数voidfun(inttt[M][N],intpp[N],tt指向一个M行N列的二维数组,求出二维数组每列中最大元素,并依次放入pp所指的一维数组中。二维数组中的数已在主函数中给出。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
#defineM3
#defineN4
voidfun(inttt[M][N],intpp[N])
{
}
main()
{
intt[M][N]={{68,32,54,12},{14,24,88,
58},{42,22,44,56}};
intp[N],i,j,k;
clrscr();
printf("Theriginaldatais:\n");
for(i=0;i<M;i++)
{
for(j=0;j<N;j++)
printf("%6d",t[i][j]);
printf("\n");
}
fun(t,p);
printf("\nTheresultis:\n");
for(k=0;k<N;k++)
printf("%4d",p[k]);
printf("\n");
}
28.N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点。请编写函数fun(),它的功能是:找出学生的最低分,由函数值返回。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<Stdlib.h>
#defineN8
StructSlist
{doubles;
StructSlist*next;
};
tyPedefStructSlistSTREC;
doublefun(STREC*h)
{
}
STREC*Creat(double*S)
{
STREC*h,*p,*q;
inti=0;
h=p={STREC*)malloc(sizeof(STREC));
p->S=0;
while(i<N)
/*产生8个节点的链表,各分数存入链表中*/
{q=(STREC*)malloc(sizeOf(STREC));
p->S=S[i];i++;p->next=q;p=q;
}
p->next=NULL;
returnh;
/*返回链表的首地址*/
}
outlist(STREC*h)
{
STREC*p;
p=h;
printf("head");
do
{printf("->%2.of",p->s);p=p->next;}
/*输/出各分数*/
while(p!=NULL);
printf("\n\n");
}
main()
{
doubles[N]={56,89,76,95,91,68,75,
85},min;
STREC*h;
h=creat(S);
outlist(h);
min=fun(h);
printf("min=%6.If\n",min);
}
29.请编写函数fun(),该函数的功能是:将放在字符串数组中的M个字符串(每串的长度不超过N),按J顷序合并组成一个新的字符串。
例如,若字符串数组中的M个字符串为
AAAA
BBBBBBB
CC
则合并后的字符串内容应该是AAAABBBBBBBCC
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#defineM3
#defineN20
voidfun(chara[M][N],char*b)
{
}
main()
{
charw[M][N]={"AAAA","BBBBBBB","CC"},i;
chara[100]={"####################"};
printf("Thestring:\n");
for(i=0;i<M;i++)
puts(w[i]);
printf("\n");
fun(w,a);
printf("TheAstring:\n");
printf("%s",a);
printf("\n\n");
}
30.学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写函数fun(),它的功能是:按分数的高低排列学生的记录,高分在前。
注意:部分源程序给出如下.
请勿改动主函数main和其他函数中的任何内容,仅在函数fum的花括号中填入所编写的若啡:语句。
试题程序:
#include<stdio.h>
#defineN16
typedefstruct
{charnum[10];
ints;
}STREC;
intfun(STRECa[])
{
}
main()
{
STRECsIN]={{"GA005",85},{"GA003",76},
{"GA002",69},{"GA004",85},{"GA001",91},
{"GA007",72},{"GA008",64},{"GA006",87},
{"GA015",85},{"GA013",91},{"GA012",64},
{"GA014",91},{"GA011",66},{"GA017",64},
{"GA018",64},{"GA016",72}};
inti;
FILE*out;
fun(s);
printf("Thedataaftersorted:In");
for(i=0;i<N;i++)
{if((i)%4=-0)
/*每行输出4个学生记录*/
printf("\n");
printf("%s%4d",s[i].num,s[i].s);
}
printf("\n");
out=fopen("out16.dat","w");
for(i=0;i<N;i++);
{if((i)%4==0&&i)
fprintf(out,"\n");
fprintf(out,"%4d",s[i].s);
}
fprintf(out,"\n");
fclose(out);
}
31.请编写一个函数voidfun(intm,intk,intxx[]),该函数的功能是:将大于整数m且紧靠m的k个素数存入所指的数组中。
例如,若输入17,5,则应输出19,23,29,3l,37。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(intm,intk,intxx[])
{
}
main()
{
intm,n,zz[1000];
clrscr();
printf("\nPleaseentertwointegers:");
scanf("%d%d",&m,&n);
fun(m,n,zz);
for(m=O;m<n;m++)
printf("%d",zz[m]);
printf("\n");
}
32.m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人数作为函数值返回,将低于平均分的分数放在below所指的数组中。
例如,当score数组中的数据为:10、20、30、40、50、60、70、80、90时,函数返回的人数应该是4,below中的数据应为:10、20、30、40。
注意:部分源程序在文件PROGl.C文件中。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
33.假定输入的字符串中只包含字母和*号。请编写函数fun(),它的功能是:除了尾部的,:号之外,将字符串中其他*号全部删除。形参p已指向字符串中最后一个字母。在编写函数时,不得使用C语言的字符串函数。
例如,若字符串中的内容为****A*BC*DEF*G******,删除后,字符串中的内容应当是ABCDEFG******。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(char*a,char*p)
{
}
main()
chars[81],*t;
printf("Enterastring:\n");
gets(s);
t=s;
while(*t)
t++;
t--;/*指针t指向字符串尾部*/
while(*t=='*')
t--;/*指针t指向最后一个字母*/
fun(s,t);
printf("Thestringafterdeleted:\n");
puts(s);
}
34.请编写一个函数voidfun(cbara[],charb[],intn),其功能是:删除一个字符申中指定下标的字符。其中,a指向原字符串,删除后的字符串存放在b所指的数组中,n中存放指定的下标。
例如,输入一个字符串world,然后输入3,则调用该函数后的结果为word。
注意:部分源程序给出如下。
请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入所编写的若干语句。
试题程序:
#include<stdio.h>
#include<conio.h>
#defineLEN20
voidfun(chara[],charb[],intn)
{
}
main()
{
charstr1[LEN],str2[LEN];
intn;
clrscr();
printf("Enterthestring:\n");
gets(str1);
printf("Enterthepositionofthestring
deleted:");
scanf("%d",&n);
fun(str1,str2,n);
printf("Thenewstringis:%s\n",
str2);
}
四、单选题(0题)35.以下选项中,当x为大于l的奇数时,值为0的表达式是
A.x%2==1B.x/2C.x%2!=0D.x%2==0
五、单选题(0题)36.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
六、单选题(0题)37.一个顺序栈一旦声明,其占用空间的大小()。
A.已固定B.可以变动C.不能固定D.动态变化
参考答案
1.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。
2.DD)【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。
3.A题干中,函数fun接收一个整型指针参数,返回值为int类型。main函数首先定义一个函数指针a,将函数fun的地址赋给a,所以a是指向函数fun的指针,可以通过a调用函数fun。选项A中,通过a调用函数fun,可以使用(*a),接收的参数是整型变量c的地址,正确;选项B中,参数x是一个数组,错误;选项C中,调用b函数,由于程序没有给出函数b的定义,因此这里调用b是错误的,而且函数b是没有参数的,这里调用b的时候传入了参数,所以C错误;选项D中,由于b是一个函数,不能作为整型指针变量传给fun函数,因此D错误。本题答案为A选项。
4.B
5.D
6.D
7.C解析:程序流程图是软件过程设计中常用的图形描述工具之一。构成程序流程图的最基本符号有:→或↓,表示控制流;□表示加工步骤;
表示逻辑条件。
8.B
9.Bmain函数中,根据“b=2,c=3”可知表达式“b>=2&&c<=3”为真,flag值为1。由“a=1”和外层switch语句的case标号没有break语句,可知外层switch语句执行case1,case0。对于外层case1:嵌套的switch语句根据“flag=1”执行case1,执行“printf(“%%”);”,输出“%”,接着执行break语句,结束内层switch执行外层;对于外层case0:嵌套的switch语句根据“c=3”执行default语句,执行“printf(“##”);”,输出“##”。故本题答案为B选项。
10.A\\n和\\\\分别为转义字符,各占据一个字符的位置。
11.B2E3是实型常量的指数形式,选项A错误;2.0E3是实型常量的指数形式,选项B正确;‘\\025’是八进制表示的转义字符,选项C错误;“a”是双引号标注的字符串常量,选项D错误。故本题答案为B选项。
12.A循环的作用是求行下标从1到2列下标从0到i的元素之和,即s=a[1][0]+a[1][1]+a[2][0]+a[2][1]+a[2][2]=3+4+5+6+0=18。
13.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
14.
15.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
16.数据存储数据存储
1
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 高级中学生物教师资格考试面试试题与参考答案(2025年)
- 心理咨询师年度工作总结
- PDCA案例如何提高患者满意度
- 图书购销合同协议2篇
- 员工简单劳动合同范本2篇
- 图文设计合同范本
- 级建造师聘用合同下载
- 实习服务合同(2篇)
- 工程建设合同(2篇)
- 物流承运合同范本
- 《进一步规范管理燃煤自备电厂工作方案》发改体改〔2021〕1624号
- 苏教版五上复式统计表课件
- 2024至2030年中国防爆配电箱行业市场发展现状及前景趋势与投资战略研究报告
- 第13课 清前中期的兴盛与危机【课件】-中职高一上学期高教版2023
- 2024年山东省高考物理试卷(真题+答案)
- 急救在身边智慧树知到期末考试答案章节答案2024年山东第一医科大学
- 2024企业集采业务交易平台解决方案
- 道德与法治(新疆卷)(全解全析)-2024年中考考前押题密卷
- 酒店网络安全管理制度
- 书香家庭爱读书有内容课件
- FZ∕T 25005-2021 底网造纸毛毯
评论
0/150
提交评论