




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序运行后的输出结果是A.A.2
B.1
C.0
D.3
2.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
3.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
4.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
5.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。
A.将y所指字符串赋给x所指存储空间
B.查找和y所指字符串中是否有"\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
6.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是(
A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2
7.有以下程序:#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf(“total=%f\n”,pai);}程序运行所计算的是()。
A.1-1/2!+1/3!-1/5!+1/7!-…
B.1+1/3+1/5+1/7+1/9-…
C.1+1/2+1/3+1/4+1/5-…
D.1-1/3+1/5-1/7+1/9-…
8.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}
A.16B.2C.9D.1
9.下列关系表达式中,结果为“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1
10.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是
A.34756B.23445C.35745D.12345
11.下列字符数组初始化语句中,不正确的是()。A.A.charc[]='goodmorning';
B.charc[20]="goodmorning";
C.charc[]={'a','b','c','d');
D.charc[]={"ffgoodmorning"};
12.
13.若有以下定义;chara;intb;floatc;doubled;则表达式“a*b+d-c”值的类型为()
A.floatB.intC.charD.double
14.已知:intx,y;doublez;则以下语句中错误的函数调用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
15.对n个数进行排序,哪种算法,其时间复杂度在最坏和最好都是O(nlogn)()
A.快速排序B.希尔排序C.堆排序D.选择排序
16.设有如下定义:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确的赋值语句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
17.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。
A.35B.3,5C.3;5D.35
18.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()(脚注(10)表示用10进制表示)。
A.688B.678C.692D.696
19.
20.如果以链表作为栈的存储结构,则出栈操作时()。
A.必须判别栈是否满B.必须判别栈是否为空C.必须判别栈元素类型D.可不做任何判断
二、2.填空题(20题)21.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。
22.以下程序运行后的输出结果是【】。
#include<stdio,h>
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=c;c=t;
if(a<e&&b<c)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,e);
}
23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
24.面向对象的模型中,最基本的概念是对象和______。
25.以下程序的运行结果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
26.以下程序运行后的输出结果是()。main(){inta=3,b=4,c=5,t=79;if(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t;printf("%d%d%d\n",a,b,C);}
27.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
28.以下程序的输出结果是【】。
#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))
}
29.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。
30.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
31.若从键盘输入58,则以下程序输出的结果是【】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);}
32.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++)
printf("%d%d",X--,y);
}
33.软件危机的核心问题是【】和软件开发效率低。
34.下列程序的输出结果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
如:dp=x*-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
35.设有以下结构体类型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【】,1,fp);
36.常用的黑箱测试有等价类划分法、【】和错误推测法3种。
37.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序运行后,输出结果是【】。
38.数据结构分为逻辑结构与存储结构,线性链表属于【】。
39.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
40.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
三、1.选择题(20题)41.与以下定义等价的是()int*p[4]
A.intp[4]B.int*pC.int*(p[4]).D.int(*p)[4]
42.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
43.下列有关数据库的描述,正确的是
A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键宇,则称其为本关系的外关键字
44.运行下面的程序,其输出结果为______。main(){printf("%d,%d",5%-3,-5%3);}
A.2,-2B.-2,2C.-2,-2D.2,2
45.请读程序:#include<stdio.h>main(){floax,y;scanf("%f",&x);if(x<0.0)y=0.0;elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}若运行时从键盘上输入2.0<CR>(<CR>表示回车),则该程序的输出结果是()
A.0B.0.25C.0.5D.1
46.若要求定义具有10个血型元素的一维数组a,则以下定义语句中错误的是()。
A.#definmeN10inta[N];
B.#definen5inta[2*n];
C.inta[5+5];
D.intn=10,a[n];
47.以下函数返回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
48.有如下程序
main()
{intn=9;
while(n>6){n--;printf("%d",n);}}
该程序的输出结果是
A.987B.876C.8765D.9876
49.有如下程序main(){intx=3;do{prinff("%d",x--);}while(!x);}该程序的执行结果是_____。
A.321B.3C.不输出任何内容D.陷入死循环
50.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是()。
A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2
51.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高位取反,低4位不变,所要执行的运算是
A.a^bB.a|bC.a&bD.a<<4
52.下列程序的输出结果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
53.执行语句printf(“%u\n”,+12345)的输出结果是()。
A.12345B.0C.-1D.非定值
54.下列程序执行的输出结果是()。#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.&
55.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,下面不正确的输入形式是()。
A.3<回车>5<回车>8<回车>B.3,5,8<回车>C.3<回车>58<回车>D.35<回车>8<回车>
56.下列程序的输出结果是()。
#include<stdio.h>
main()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=1;
case1:
case2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A.19B.18C.6D.8
57.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
58.有以下程序main(){char*s="abcde";s+=2;printf("%ld\n",s);}程序运行后的输出结果是()
A.cdeB.字符c的ASCII码值C.字符c的地址D.出错
59.若执行下面程序时从键盘上输入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);则输出是______。
A.7B.6C.5D.4
60.下列程序的输出结果是()。
main
{
doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
四、选择题(20题)61.有如下程序段:
执行该程序段后,X的值为()。
A.trueB.falseC.0D.1
62.
63.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()
A.数据的存储结构B.计算方法C.数据映像D.逻辑存储
64.某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m一1,real"=m,则该循环队列中的元素个数为()。
A.m一1B.1C.mD.0
65.下列关于二叉树的叙述中,正确的是()。
A.叶子结点总是比度为2的结点少一个
B.叶子结点总是比度为2的结点多一个
C.叶子结点数是度为2的结点数的两倍
D.度为2的结点数是度为1的结点数的两倍
66.计算机的内存储器比外存器()
A.价格便宜B.存储容量大C.读写速度快D.读写速度慢
67.面向对象方法中,继承是指()。
A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制
68.
69.表示关系M<=N<=P的C语言表达式为()。
A.(M<=N.AND(N<=P.
B.(M<=N.&&(N<=P.
C.(M<=N<=P.
D.(M<=N.&(N<=P.
70.有以下程序
71.
72.
73.阅读以下程序该程序在编译时产生错误,其出错原因是()。
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,scanf不能输出case的值
74.下列能正确定义且赋初值的语句是()。
A.intn1=n2=1;
B.charC=99;
C.floatf=f+1;
D.doublex=1.2E5.6;
75.已知字符‘A’的ASCII代码值是65,字符变量cl的值是‘A’,c2的值是‘D’。则执行语句printf(”%d,%d”,cl,c2—2);的输出结果是()。
A.65,68B.A,68C.A,BD.65,66
76.有以下程序:
程序运行后的输出结果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
77.执行语句“for(i=1;i++<;4;);”后,变量i的值是()。
A.3B.4C.5D.不定
78.下面各选项中,均是C语言合法标识符的选项组是()。
A.
B.
C.
D.
79.
80.
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,输入opdye,则应输出deopy。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charc;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=c;}}voidmain{charstr[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\n\nBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%s",str);}
六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。
2.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
3.A
4.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
5.C本题中由循环条件可知遇到“0或x与y所指的字符的值不等中的一个条件时就结束,所以功能是统计x和y所指字符串中最前面连续相同的字符个数。
6.D在最坏情况下,冒泡排序和快速排序的比较次数都是n(n一1)/2。【知识拓展】所谓冒泡排序,就是将相邻的两个数据比较,如前面的数据大于后面的,则位置互换。这样不停地比较、互换,其实就是把大的数往后排,小的数往前排(就像冒泡一样冒出来了)。
7.Dmain函数首先定义整型变量S,初值为1;定义float类型的n、t、Pai,其中n初值为1.0,t初值为1,pai初值为0。while循环判断t的绝对值(fabs为求float类型值的绝对值的函数)是否大于1.0×10-6,若t的绝对值大于1.0×10-6,那么,执行语句“pai+=t;n+=2;s=-s;t=s/n;”,所以每轮循环pai累加“s/n”(其中s是上一轮s的相反数,n是上一轮n累加2的值)。第1轮循环时,pai被赋值为1,s是正数,所以最终pai的计算结果是:1-1/3+1/5-1/7+1/9-…。故本题答案为D选项。
8.D解析:本题考查带参数的宏调用。a/=SQR(k+m)/SQR(k+m)进行宏替换后得:a=a/(SQR(k+m)/SQR(k+m))=a/(k+m*k+m/k+m*k+m)=10/(2+1*2+1/2+1*2+1)=10/(2+2+0+2+1)=10/7/1。
9.B在一个表达式中,括号的优先级高,先计算3!=4,为真即是l,1>2为假。
10.C解析:本题考查了通过数组首地址引用数组元素的方法。第一次执行fun(a)后,a[0]=3,a[1]=5。第二次执行fun(a)时,因为static变量j保存着上次执行时的值为2,所以a[2]=7,最后数组a={3,5,7,4,5},所以正确答案为C)。
11.A本题考查两个概念:①用单引号括起来的一个字符常量只能存放一个字符;②℃语言中没有字符串变量,只能用字符数组来存储字符串。
12.B
13.D解析:参加运算的数据类型不同,要转换为统一的数据类型,double在数据类型转换中的级别最高,其他数据类型都要转化为double,因此表达式值的类型为double。
14.BB项的格式应该为scanf("%1d*%d%1f",&x,&y,&z);
15.C
16.C解析:data是—结构体变量,a是它的成员,因此引用a域的正确方法是:data.a,取它的地址赋值给指针变量p的语句应该是:p=&data.a。选项A,将a的地址直接赋给了p,而忽略了a为结构体内部的一个成员,而不是一单独的变量,故选项A不正确;选项B在p=data.a表达式中右边为一个结构体变量的成员不是地址,而左边为一指针应该将一地址赋给它,故选项B不正确;选项D表达式*p=data.a是将结构体变量中的成员a的值赋给指针p所指向的变量值,而不是使指针p指向data中的a域,故选项D不正确:4个选项中只有C正确。
17.C输入数据的格式必须与seanf()的格式控制串完全匹配,所以输入时必须在3和5之间输入“;”。
18.C
19.D
20.B
21.逻辑数据模型逻辑数据模型解析:数据是现实世界符号的抽象,而数据模型(datamodel)则是数据特征的抽象,它从抽象层次上描述了系统的静态特征、动态行为和约束行为,为数据库系统的信息表示与操作提供一个抽象的框架。数据模型按不同的应用层次分成3种类型,它们是概念数据模型(conceptualdatamodel)、逻辑数据模型(logicdatamodel)、物理数据模型(physicaldatamodel)。
22.45994599解析:要注意每条证语句后面是三条语句,而不是一条语句。执行第一条if语句时,条件表达式不成立,执行a=c;c=t;,此时a=5,c=99;执行第二条if语句时,条件表达式成立,执行t=b;b=a;a=t;交换a,b的值,输出结果为4,5和99。
23.88解析:fabs函数功能是求x的绝对值,计算结果为double型。pow功能是计算x的y次方的值,计算结果同样为double型。所以本题表达式相当于2.0的3.0次方,结果为8.000000。
24.类类
25.aeiou
26.45794579解析:本题考查的是条件判断语句。本题特别需要注意的是“;”的问题,不能把“t=a;a=c;c=t;”误认为是第一个if的语句,实际上,只有“t=a;”才是第一个if的语句。所以判断第一个if语句的表达式不成立后,执行的是“a=c;c=t;”,此时a=5,c=79。然后判断第二个if语句的条件表达式,表达式成立,执行后面的3条语句,让a、b、c分别为4、5和79。
27.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
28.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。
29.软件生命周期软件生命周期解析:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。一般包括可行性研究与需求分析、设计、实现、测试、交付使用以及维护等活动。
30.外模式外模式解析:数据库系统的三级模式分别是内模式、概念模式和外模式。其中,物理模式给出了数据库的物理存储结构和存取方法;概念模式是数据库系统中全局数据逻辑结构的描述;外模式是用户的数据视图,也就是用户所见到的数据模式。
31.585858585858解析:本题考查对if语句的掌握,当输入58以后,程序中的3个if语句都成立,所以分别输出58。
32.101091101091解析:for(表达式1;表达式2;表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环;第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。
33.软件质量差软件质量差解析:大约在20世纪60年代末人们在计算机软件的开发和维护过程中,遇到了一系列严重问题,从而认识到软件危机的存在。软件危机的核心问题是软件开发的质量太差和软件系统开发的效率太低。
34.7979解析:因为在调用子函数时进行的是数值传递,调用子函数并不能改变实参的值,所以经过调用子函数,c、d的值并没有发生变化还是原来的值。
35.sizeof(structst)*50sizeof(structst)*50解析:fwrite函数的一般调用形式为:fwrite(buffer,size,count,fp);其中:buffer是一个指针变量,是要输出数据的起始地址;size是要写的字节数;count是要写多少个size字节的数据项;fp是文件指针。
36.边界值分析法边界值分析法解析:黑箱测试方法完全不考虑程序的内部结构和内部特征,而只是根据程序功能导出测试用例。常用的黑箱测试有等价类划分、边界值分析法和错误推测法3种。
37.44解析:在主函数中调用函数f,函数f有三个参数,形参f1与f2分别是两个指向函数的指针。在f中执行f2(x)-f1(x),实际上是执行了fb(2)-fa(2),故执行i=(fa,fb,2)后i的值为23-22=4。
38.存储结构
39.11解析:本题中的ch是一个字符变量,其初始值为'$'(非0值即为真),所以!ch的结果为假,此时&&右边的i++被“短路”,即不会被计算。由此可见,i的值不会改变,故本题应该填1。
40.101091101091解析:for(表达式1;表达式2:表达式3)语句的功能是:首先计算表达式1的值,然后检测表达式2的值,若其值为真,则执行循环体语句,执行完毕后,再计算表达式3的值。然后再检测表达式2的值是否为真,若为真,继续执行循环体语句,若为假,则退出循环:第1次循环x>8成立,输出x=10,y=10后,x的值减1,i=1,执行y=++i操作,y的值变为1;判断条件还成立,输出x=9,y=1,然后x的值减1,循环条件不成立,则退出循环。
41.C
42.C解析:本题中首先定义一个整型变量a并给它赋初值为3,在表达式中,从右开始执行,即先执行“a-=a*a;”等价于a=a-a*a即a=3-3*3=-6,此时a的值为-6,接着执行“a+=a-;”相当于执行a=a+a即a=-6+(-6)=-12,此时a的值为-12。所以,4个选项中选项C符合题意。
43.D解析:数据处理是指将数据转换成信息的过程,故选项A)叙述错误;数据的物理独立性是指数据的物理结构的改变,不会影响数据库的逻辑结构,故选项B)叙述错误;关系中的行称为元组,对应存储文件中的记录,关系中的列称为属性,对应存储文件中的字段,故选项C)叙述错误。
44.A解析:在C中,参与%运算的两个参数都必须为整型,在大多数C编译器下(包括TurboC)都采用了“向0靠近”的原则,即当两个运算量有一个为负数时,余数的符号由被除数的符号决定。故本题答案为A。
45.C
46.D解析:C语言规定,在定义数组时数组名后的方括号中必须是常量表达式,不能包含变量。因此,选项D中用变量n来定义数组的大小是错误的。故应该选择D。
47.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。
48.B解析:该题目应该根据循环体第一次和最后一次执行时的输出结果来决定哪一项是正确的。第一次进入循环时,n的值是9,循环体内,先经过n--运算,n的值变为8,所以第一次的输出值是8,由此可以排除选项A)和D)。由循环条件n>6可以知道,最后一次循环开始时,n的值应该为7,所以最后一次执行循环时,输出为6,由此可以排除选项C)。
49.B解析:本题x赋初值为3,当执行printf('%d',x-);时,由于x-的作用是先运算x,再将x的值减1,所以,printf输出的x值为3,等输出后,x的值减1变为2,继续执行,判断条件!x为假,循环只被执行一次。
50.D在最坏情况下,冒泡排序和快速排序的比较次数都是n(n一1)/2。【知识拓展】所谓冒泡排序,就是将相邻的两个数据比较,如前面的数据大于后面的,则位置互换。这样不停地比较、互换,其实就是把大的数往后排,小的数往前排(就像冒泡一样冒出来了)。
51.A解析:本题考查的是位运算的知识,对于任何二进制数,和1进行异或运算会让其取反,而和0进行异或运算不会产生任何变化。
52.D
53.A"%u"表示输出无符号的整数(如果输出值前有符号,将自动转化为相应的无符号数输出)。
54.A解析:strcpy(a,'are')中数组名a代表数组首地址的地址常量,该操作把are复制到a中,a[0][3]=\'&\',且strcpy(a[1],'you')把you复制到a[1]中,故输出a为“are&you”。
55.B解析:本题中,“%d%d%d”表示按整数输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。选项B)中不应该使用逗号。
56.A解析:本题考查switch语句。当i=1时,执行case1,因为没有遇到break语句,所以依次往下运行,a=a+2=2,a=a+3=5当i=2时,执行case2,因为没有遇到break语句,所以依次往下运行,a=a+2=7,a=a+3=10;当i=3时,执行case3,a=a+1=11,因为没有遇到break语句,所以依次往下运行,a=a+2=13,a=a+3=16;当i=4时,执行default,a=a+3=19,结束循环。
57.C解析:选项A用了一个绝对值函数abs();选项B中用了一个“&&”逻辑与;选项C中,“||”左边的式子如为真,将不再判断其后的表达式的值;选项D为本题中数学关系式的一个等价命题。
58.C
59.B解析:根据C语言的语法,X++是在使用x之后,再将x的值加1,在if语句中,x的值为5,条件不成立,执行else后面的语句,因为x的值已经加1,为6,所以打印结果为6。
60.C解析:本题中,程序先执行语句x=1.2;,根据赋值运算的类型转换规则,先将double型的常量1.2转换为int型,即取整为1,然后将1赋值给变量x。接下来执行语句y=(x+3.8)/5.0;根据运算符的优先级,先计算小括号内,再计算除法,最后执行赋值运算。小括号内的运算过程:先将整型变量x的值1转换为double型1.0,然后与3.8进行加法运算,得到中间结果4.8。接着进行除法运算4.8/5.0,其结果小于1.0,这里没有必要计算出精确值,因为接着进行赋值运算,赋值号左边的变量y的类型为整型,于是对这个小于1.0的中间结果进行取整,结果为0,于是变量y的值为0,d*y的值也为0。注意:格式输出语句printf的使用。
61.D在c语言中,逻辑运算符有4个,它们分
62.D
63.A数据结构是计算机科学与技术领域广泛使用的一个基本术语,用来反映数据的内部构成。
一般来说,数据结构包括数据的逻辑结构、数据的存储结构、数据的操作三个方面的内容。数据的逻辑结构又称为数据的外部结构,指各数据元素之间的逻辑关系,反映人们对数据含义的解释。数据的逻辑结构反映数据的逻辑关系,与数据的存储没有关系,是独立于计算机的。它有两大类逻辑机构:线性结构和非线性结构。
数据的存储结构又称为数据的物理结构,是指数据的逻辑结构在计算机中的表示,即逻辑结构在计算机中的实现。一个数据的逻辑结构可以有多种存储结构。数据的存储结构要充分利用存储器的“空间相邻”和“随机访问”的特点。
64.B循环队列长度为m,由初始状态为front=real'=ITl可知此时循环队列为空。入队运算时,首先队尾指针(rear)进1(即rear+I),然后在lear指针指向的位置插入新元素。特别的,当队尾指针lear=m+1时,置l'ear=1。退队运算时,排头指针(front)进1(即front+1),然后删除front指针指向的位置上的元素,当排头指针front=m+1时,置front=1。从排头指针front指向的后一个位置直到队尾指针rear指向的位置之间所有的元素均为队列中的元素,则该循环队列中的元素个数为m一(m一1)=1。故选择B选项。
65.B根据二叉树的基本性质3:在任意一棵二叉树中,度为0的叶子结点总是比度为2的结点多一个。所以选择8。
66.C
67.D继承是面向对象的方法的一个主要特征,是使用已有的类的定义作为基础建立新类的定义技术。广义的说,继承是指能够直接获得已有的性质和特征,而不必重复定义它们,所以说继承是指类之间共享属性和操作的机制。
68.D
69.BM<=N和N<=P是逻辑与的关系,应使用运算符&&。
70.A结构体可以整体传递,b=a,则结构体b里的数据为a的数据,所以选择A)。
71.B
72.B
73.A用户自定义标识符不能使用关键字,Case是关键字之一,所以选择A)。
74.B在c语言规定中,可以在定义变量的同时给变量赋初值,选项A中n2没有定义;选项C中不能在赋值表达式的右边出现变量本身,选项D中字母E后面的数应该为整数,所以不对。
75.D打印时以%d整型格式打印输出,所以字符标量cl的值打印出来就是65,从c2—2的值打印出来就是68—2,即66。所以选择D。
76.B该程序首先给一维数组赋值,然后三次调用fun函数,其中fun(a,0,3);功能是将一维数组中第1个元素和第4个元素互换,第2个元素和第3个元素互换;其中fun(a,4,9);功能是将一维数组中第5个元素和第10个元素互换,第6个和第9个元素互换,第7个元素和第8个元素互换;其中fun(a.O,9);功能是将将一维数组中第l个元素和第10个元素互换,第2个元素和第9个元素互换……依此类推。因此B选项正确。
77.Cfor循环结束时,i++的值应为4,i自加后此时应为5,故选择C选项。
78.B合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,用户定义的标识符不能与关键字相同。选项A),数字不能为第一个字母,auto为关键字;选项c)中,也是数字不能为第一个字母,else为关键字;选项D)中负号不合法。
79.A
80.D
81.(1)错误:intproc(charstr[])正确:voidproc(char、tr[])(2)错误:str[j]=str[++];正确:str[j]=str[i];【解析】由主函数中的函数调用可知,函数proc没有返回值。因此,“intproccharstr[])”应改为“voidproc(charstr[])”;由函数proc可知,if语句块完成将字符串str中的第i个元素与第j个元素相交换。因此,“str[j]=str[i++];”应改为“str[j]=str[i];”。
82.
【解析】题目中要求把下标从p到n-1的数组元素平移到数组的前面,可以通过每一次循环将最后一个元素放在第一个位置上,使其成为第一个元素,其余元素后移一个位置。通过n-1-p次循环实现将从p到n-1的数组元素平移到数组的前面。
2021年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.有以下程序
main()
{
intn[3],i,j;
for(i=0;i<3;i++)
n[i]=0;
for(i=0;i<2;i++)
for(j=0;j<2;j++)
n[j]=n[i]+1;
printf("%d\n",n[1]);
}
程序运行后的输出结果是A.A.2
B.1
C.0
D.3
2.在下列几种排序方法中,要求内存量最大的是______。
A.插入排序B.选择排序C.快速排序D.归并排序
3.当执行下面的程序时,如果输入ABC,则输出结果是()#include<stdio.h>#include<string.h>main(){charss[10]="12345";gets(ss);strcat(ss"6789");printf("%s\n",ss);}
A.ABC6789B.ABC67C.12345ABC6D.ABC456789
4.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
5.有以下函数:intfun(char*x,char*y){intn=0;.while((*x==*y)&&*x!="\0){x++;y++;n++;}returnn;}函数的功能是()。
A.将y所指字符串赋给x所指存储空间
B.查找和y所指字符串中是否有"\0'
C.统计x和y所指字符串中最前面连续相同的字符个数
D.统计x和y所指字符串中相同的字符个数
6.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是(
A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2
7.有以下程序:#include<stdio.h>#include<math.h>main(){ints;floatn,t,pai;t=1,pai=0,n=1.0,s=1;while(fabs(t)>1.0e-6){pai+=t;n+=2;s=-s;t=s/n;}printf(“total=%f\n”,pai);}程序运行所计算的是()。
A.1-1/2!+1/3!-1/5!+1/7!-…
B.1+1/3+1/5+1/7+1/9-…
C.1+1/2+1/3+1/4+1/5-…
D.1-1/3+1/5-1/7+1/9-…
8.以下程序的输出结果是______。#defineSQR(X)X*Xmain(){inta=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("d\n",a);}
A.16B.2C.9D.1
9.下列关系表达式中,结果为“假”的是()。A.(3+4)>6B.(3!=4)>2C.3<=4||D.(3<4)=1
10.请阅读以下程序:#include<stdio.h>voidfun(ints[]){staticintj=0;dos[j]+=s[j+1];while(++j<2);}main(){intk,a[10]={1,2,3,4,5};for(k=1;k<3;k++)fun(a);for(k=0;k<5;k++)printf("%d",a[k]);}上面程序的输出是
A.34756B.23445C.35745D.12345
11.下列字符数组初始化语句中,不正确的是()。A.A.charc[]='goodmorning';
B.charc[20]="goodmorning";
C.charc[]={'a','b','c','d');
D.charc[]={"ffgoodmorning"};
12.
13.若有以下定义;chara;intb;floatc;doubled;则表达式“a*b+d-c”值的类型为()
A.floatB.intC.charD.double
14.已知:intx,y;doublez;则以下语句中错误的函数调用是()。A.A.scanf("%d,%1x,%1e",&x,&y,&z);
B.scanf("%1d*%d&1f",&x,&y,&z);
C.scanf("%x%*d%o",&x,&y);
D.scanf("%x%o%6.2f",&x,&y,&z);
15.对n个数进行排序,哪种算法,其时间复杂度在最坏和最好都是O(nlogn)()
A.快速排序B.希尔排序C.堆排序D.选择排序
16.设有如下定义:structsk{inta;floatb;}data;int*p;若要使p指向data中的a域,正确的赋值语句是()
A.p=&a;B.p=data.a;C.p=&data.a,D.*p=data.a;
17.若有定义:inta,h;通过语句:scanf(”%d;%d”,&a,&B.;,能把整数3赋给变量a,5赋给变量b的输入数据是()。
A.35B.3,5C.3;5D.35
18.设有一个二维数组A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,问A[3][3](10)存放在什么位置()(脚注(10)表示用10进制表示)。
A.688B.678C.692D.696
19.
20.如果以链表作为栈的存储结构,则出栈操作时()。
A.必须判别栈是否满B.必须判别栈是否为空C.必须判别栈元素类型D.可不做任何判断
二、2.填空题(20题)21.数据模型按不同应用层次分成3种类型,它们是概念数据模型、【】和物理数据模型。
22.以下程序运行后的输出结果是【】。
#include<stdio,h>
main()
{inta=3,b=4,c=5,t=99;
if(b<a&&a<c)t=a;a=c;c=t;
if(a<e&&b<c)t=b;b=a;a=t;
printf("%d%d%d\n",a,b,e);
}
23.若x和y都是double型变量,且x的初值为3.0,y的初值为2.0,则表达式pow(y,fabs(x))的值为【】。
24.面向对象的模型中,最基本的概念是对象和______。
25.以下程序的运行结果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
26.以下程序运行后的输出结果是()。main(){inta=3,b=4,c=5,t=79;if(b<a&&a<C)t=a;a=c;c=t;if(a<c&&b<C)t=b;b=a;a=t;printf("%d%d%d\n",a,b,C);}
27.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
28.以下程序的输出结果是【】。
#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))
}
29.通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为【】。
30.数据库系统其内部分为三级模式,即概念模式、内模式和外模式。其中,______是用户的数据视图,也就是用户所见到的数据模式。
31.若从键盘输入58,则以下程序输出的结果是【】。
main()
{inta;
scanf("%d",&a);
if(a>50)printf("%d",a);
if(a>40)printf("%d",a);
if(a>30)printf("%d",a);}
32.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++)
printf("%d%d",X--,y);
}
33.软件危机的核心问题是【】和软件开发效率低。
34.下列程序的输出结果是______。
#include<stdio.h>
intt(intx,inty,intcp,intdp)
{cp=x*x+y*y;
如:dp=x*-y*y;
}
main()
{inta=1,b=8,c=7,d=9;
t(a,b,c,D);
printf("%d%d\n",c,D);
}
35.设有以下结构体类型:
structst
{charname[8];
intnum;
floats[4];
}student[50];
并且结构体数组student中的元素都已有值。若要将这些元素写到硬盘文件fp中,请将以下fwrite语句补充完整:
fwrite(student,【】,1,fp);
36.常用的黑箱测试有等价类划分法、【】和错误推测法3种。
37.有以下程序:
intfa(intx){returnx*x;}
intfb(intx){returnx*x*x;}
intf(int(*f1)(),int(*f2)(),(intx)
{returnf2(x)-f1(x);}
main()
{inti;i=f(fa,fb,2);printf("%d\n",i);}
程序运行后,输出结果是【】。
38.数据结构分为逻辑结构与存储结构,线性链表属于【】。
39.己定义charch='$';inti=l,j;,执行j=!ch&&ii++以后,i的值为【】。
40.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
三、1.选择题(20题)41.与以下定义等价的是()int*p[4]
A.intp[4]B.int*pC.int*(p[4]).D.int(*p)[4]
42.若a为int类型,且其值为3,则执行完表达式a+=a-=a*a后,a的值是()。
A.-3B.9C.-12D.6
43.下列有关数据库的描述,正确的是
A.数据处理是将信息转化为数据的过程
B.数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变
C.关系中的每一列称为元组,一个元组就是一个字段
D.如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键宇,则称其为本关系的外关键字
44.运行下面的程序,其输出结果为______。main(){printf("%d,%d",5%-3,-5%3);}
A.2,-2B.-2,2C.-2,-2D.2,2
45.请读程序:#include<stdio.h>main(){floax,y;scanf("%f",&x);if(x<0.0)y=0.0;elseif((x<5.0)&&(x!=2.0))y=1.0/(x+2.0);elseif(x<10.0)y=1.0/x;elsey=10.0;printf("%f\n",y);}若运行时从键盘上输入2.0<CR>(<CR>表示回车),则该程序的输出结果是()
A.0B.0.25C.0.5D.1
46.若要求定义具有10个血型元素的一维数组a,则以下定义语句中错误的是()。
A.#definmeN10inta[N];
B.#definen5inta[2*n];
C.inta[5+5];
D.intn=10,a[n];
47.以下函数返回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
48.有如下程序
main()
{intn=9;
while(n>6){n--;printf("%d",n);}}
该程序的输出结果是
A.987B.876C.8765D.9876
49.有如下程序main(){intx=3;do{prinff("%d",x--);}while(!x);}该程序的执行结果是_____。
A.321B.3C.不输出任何内容D.陷入死循环
50.对于长度为n的线性表,在最坏情况下,下列各种排序法所对应的比较次数中正确的是()。
A.冒泡排序为n/2B.冒泡排序为nC.快速排序为nD.快速排序为n(n-1)/2
51.变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。若要求将a的高位取反,低4位不变,所要执行的运算是
A.a^bB.a|bC.a&bD.a<<4
52.下列程序的输出结果是______。main(){intk=17;printf("%d,%0,%x\n",k,k,k);}
A.17,021,0x11B.17,17,17C.17,Ox11,021D.17,21,11
53.执行语句printf(“%u\n”,+12345)的输出结果是()。
A.12345B.0C.-1D.非定值
54.下列程序执行的输出结果是()。#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.&
55.若变量已正确说明为int类型,要通过语句scanf("%d%d%d",&a,&b,&c);给a赋值3,b赋值5,c赋值8,下面不正确的输入形式是()。
A.3<回车>5<回车>8<回车>B.3,5,8<回车>C.3<回车>58<回车>D.35<回车>8<回车>
56.下列程序的输出结果是()。
#include<stdio.h>
main()
{inta=0,i;
for(i=1;i<5;i++)
{switch(i)
{case0:
case3:a+=1;
case1:
case2:a+=2;
default:a+=3;
}
}
printf("%d",a);
}
A.19B.18C.6D.8
57.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
58.有以下程序main(){char*s="abcde";s+=2;printf("%ld\n",s);}程序运行后的输出结果是()
A.cdeB.字符c的ASCII码值C.字符c的地址D.出错
59.若执行下面程序时从键盘上输入5,main(){intx;scanf("%d",&x);if(x++>5)printf("%d\n",x);elseprintf("%d\n",x-);则输出是______。
A.7B.6C.5D.4
60.下列程序的输出结果是()。
main
{
doubled=3.2;intx,y;
x=1.2;y=(x+3.8)/5.0;
printf("%d\n",d*y);
}
A.3B.3.2C.0D.3.07
四、选择题(20题)61.有如下程序段:
执行该程序段后,X的值为()。
A.trueB.falseC.0D.1
62.
63.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()
A.数据的存储结构B.计算方法C.数据映像D.逻辑存储
64.某循环队列的存储空间为Q(1:m),初始状态为front=rear=m。现经过一系列的入队操作和退队操作后,front=m一1,real"=m,则该循环队列中的元素个数为()。
A.m一1B.1C.mD.0
65.下列关于二叉树的叙述中,正确的是()。
A.叶子结点总是比度为2的结点少一个
B.叶子结点总是比度为2的结点多一个
C.叶子结点数是度为2的结点数的两倍
D.度为2的结点数是度为1的结点数的两倍
66.计算机的内存储器比外存器()
A.价格便宜B.存储容量大C.读写速度快D.读写速度慢
67.面向对象方法中,继承是指()。
A.一组对象所具有的相似性质B.一个对象具有另一个对象的性质C.各对象之间的共同性质D.类之间共享属性和操作的机制
68.
69.表示关系M<=N<=P的C语言表达式为()。
A.(M<=N.AND(N<=P.
B.(M<=N.&&(N<=P.
C.(M<=N<=P.
D.(M<=N.&(N<=P.
70.有以下程序
71.
72.
73.阅读以下程序该程序在编译时产生错误,其出错原因是()。
A.定义语句出错,case是关键字,不能用作用户自定义标识符
B.定义语句出错,printF不能用作用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,scanf不能输出case的值
74.下列能正确定义且赋初值的语句是()。
A.intn1=n2=1;
B.charC=99;
C.floatf=f+1;
D.doublex=1.2E5.6;
75.已知字符‘A’的ASCII代码值是65,字符变量cl的值是‘A’,c2的值是‘D’。则执行语句printf(”%d,%d”,cl,c2—2);的输出结果是()。
A.65,68B.A,68C.A,BD.65,66
76.有以下程序:
程序运行后的输出结果是()。
A.4321098765B.5678901234C.0987654321D.0987651234
77.执行语句“for(i=1;i++<;4;);”后,变量i的值是()。
A.3B.4C.5D.不定
78.下面各选项中,均是C语言合法标识符的选项组是()。
A.
B.
C.
D.
79.
80.
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCII码升序排序后输出。例如,输入opdye,则应输出deopy。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<string.h>#include<stdlib.h>#include<conio.h>#include<stdio.h>//****found****intproc(charstr[]){charc;unsignedi,j;for(i=0;i<strlen(str)-1;i++)for(j=i+1;j<strlen(str);j++)if(str[i]>str[j]){c=str[j]://****found****str[j]=str[i++];str[i]=c;}}voidmain{charstr[81];system("CLS");printf("\nPleaseenteracharacterstring:");gets(str);printf("\n\nBeforesorting:\n%s",str);proc(str);printf("\nAftersortingdecendingly:\n%s",str);}
六、程序设计题(1题)82.请编写函数proc(),该函数的功能是:移动一维数组中的内容,若数组中有n个整数,要求把下标从p到n-1(p≤n-1)的数组元素平移到数组的前面。例如,一维数组中的原始内容为1,2,3,4,5,6,7,8,9,10,11,12,13,14,P的值为4。移动后,一维数组中的内容应为5,6,7,8,9,10.11,12,13,14,1,2,3,4。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D初始时定义一个大小为3个一维整型数组,第一个for语句是对数组赋初值,每个值都为0。后面是一个for语句的嵌套调用,外层的循环变量i的取值为[0,2],内层循环变量的取值范围为[0,2]。最初外层的循环变量i=0,内层的循环变量j取值从0到2,计算n[j]=n[0]+1,得到n[0]=1,n[1]=1,n[2]=1。外层for语句的循环变量为1时,内层的循环变量j取值从0到2,计算n[j]=n[1]+1,得到n[0]=2,n[1]=2,n[2]=2。外层for语句的循环变量为2时,内层的循环变量j取值从0到2,计算n[j]=n[2]+1,得到n[0]=3,n[1]=3,n[2]=3。最后的输出结果为3。
2.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部
分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继
续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依
次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整
个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩
下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合
成一个新的有序表。
注意:各种排序方法实现过程及实现机制。
3.A
4.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
5.C本题中由循环条件可知遇到“0或x与y
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 牙周治疗病例
- 小学学校预防艾滋病工作总结(13篇)
- 区块链技术在教育信息安全的应用前景
- 区块链创新与数字货币监管的协同发展
- 创新与规范医疗AI技术伦理双驱动力
- 福建省龙岩市非一级达标校2018-2019学年高二上学期期末教学质量检查英语试题
- 2025年员工季度工作情况总结(4篇)
- Unit2-Warming-up-公共课课件二
- 2025至2031年中国周边传动桥式刮泥机行业投资前景及策略咨询研究报告
- 购销简单的合同范本(17篇)
- 用电协议书范文双方简单一致
- DB11T 2155-2023 建设工程消防验收现场检查评定规程
- 2024年电工(高级技师)考前必刷必练题库500题(含真题、必会题)
- DB34T 2146-2014 产品质量监督抽查检验报告编制规范
- 废品站承包小区合同(2篇)
- 浅谈电力调度数据网的传输特性
- 2024年青海省中考英语试卷真题(含答案解析)
- 高标准农田设计实施方案(技术标)
- 苹果酒的家庭做法-苹果酒的效果和作用
- 海上基本急救全套教学课件
- 安全文明施工承诺书
评论
0/150
提交评论