版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年广东省汕头市全国计算机等级考试C语言程序设计测试卷(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.如果以链表作为栈的存储结构,则入栈操作时()。
A.必须判别栈是否满B.必须判别栈是否为空C.必须判别栈元素类型D.可不做任何判断
3.有以下程序main(){inta[3][3],*p,i;p=&a[0][0];for(i=0;i<9;i++)p[i]=i;for(i=0;i<3;i++)printf("%d",a[1][i]);}程序运行后的输出结果是
A.12B.123C.234D.345
4.以下程序的运行结果是______。#include<stdio.h>main(){inta[]:{1,2,3,4,5,6,7,8,9,10,11,12):int*p=a+5,*q=NULL:*q=*(p+5):printf("%d%d\n",*p,*q);}
A.运行后报错B.66C.612D.55
5.c源程序中不能表示的数制是()。
A.二进制B.八进制C.十进制D.十六进制
6.若fp是指向某文件的指针,且尚未读到文件末尾,则函数feof(fp)的返回值是()。
A.EOFB.-lC.非零值D.0
7.有以下程序:#include<stdio.h>main(){FILE*fp;inti,a[6]={1,2,3,4,5,6},k;fp=fopen(“data,dat”,“w+”);for(i=0;i<6;i++)fprintf(fp,“%d\n”,a[5-i]);rewind(fp);for(i=0;i<6;i++){fscanf(fp,“%d”,&k);printf(“%d,”,k);}fclose(fp);}程序运行后的输出结果是()。
A.6,5,4,3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,1,D.6,6,6,6,6,6,
8.有以下程序:#include<stdio.h>#include<string.h>main(){chara[]=“TEXT”,*b=“++”,c[3]=“1”;printf(“%d,%d,”,strlen(a),sizeof(a));printf(“%d,%d,”,strlen(b),sizeof(b));printf(“%d,%d,\n”,strlen(c),sizeof(c));}程序运行后的输出结果是()。A.4,5,2,4,1,3,B.4,4,2,2,1,1,C.5,5,3,3,2,2,D.4,4,2,2,1,3
9.执行下列程序后,输出的结果是()。
#include<stdio.h>
#defineS(X)X*X
voidmain()
{ihta=9,k=3,m=2;
a/=S(k+m)/S(k+m);
printf("%d",A);
}
A.1B.4C.9D.0
10.对n个元素的数组进行(),其平均时间复杂度和最坏情况下都为O(nlogn)。
A.希尔排序B.快速排序C.堆排序D.选择排序
11.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。
A.11,11B.29,29C.26,29D.121,121
12.以下叙述中错误的是()。
A.C语言的可执行程序是由一系列机器指令构成的
B.用C语言编写的源程序不能直接在计算机上运行
C.通过编译得到的二进制目标程序需要连接才可以运行
D.在没有安装C语言集成开发环境的机器上不能运行C源程序生成的.exe文件
13.以下程序intaa[3][3]={{2},{4},{6}};main(){inti,*p=&aa[0][0];for(i=0;i<2;i++){if(i==0)aa[i][i+1]=*p+1;else++p;printf("%d",*p);}}的输出是________。
A.23B.26C.33D.36
14.数据的逻辑关系是指数据元素的()。
A.关联B.结构C.数据项D.存储方式
15.程序运行后的输出结果是()。#include<stdio.h>#include<stdlib.h>main(){int*a,*b,*c;a=b=c(int*)malloc(sizeof(int));*a=1;*b=2;*c=3;a=b;printf(“%d,%d,%d\n”,*a,*b,*c);}A.1.1.3B.2.2.3C.1.2.3D.3.3.3
16.若有定义“chars1[100]=“name”,s2[50]=“address”,s3[80]=“person”;”,要将它们连接成新串“personnameaddress”,正确的函数调用语句是()。
A.strcat(strcat(s1,s2),s3);
B.strcat(s3,strcat(s1,s2);
C.strcat(s3,strcat(s2,s1);
D.strcat(strcat(s2,s1),s3);
17.以下关于顺序存储结构的叙述中,()是不正确的。
A.存储密度大
B.逻辑上相邻的结点物理上不必邻接
C.可以通过计算机直接确定第i个结点的存储地址
D.插入、删除运算操作不方便
18.
19.定义int*swap()指的是______。
A.—个返回整型值的函数swap()
B.一个返回指向整型值指针的函swap()
C.一个指向函数swap()的指针,函数返回一个整型值
D.以上说法均错
20.“商品”与“顾客”两个实体集之间的联系一般是
A.一对一B.一对多C.多对一D.多对多
二、2.填空题(20题)21.下面的程序可对指定字符串中的字符串进行从大到小排序,请将程序填完整。(注:程序采用了冒泡排序算法)
#include<stdio.h>
#include<string.h>
main()
{char*str="ABCDabcd",temp;
intn,i;
n=strlen(str);
while(n->1)
for(i=0;i<n;i++)
if(str[i]<str[i+1])
{temp=【】;
str[i]=str[i+1];
【】=temp;
}
printf(【】);
}
22.下列程序的输出结果是______。
#include<stdio.h>
sb(ints[],intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8};
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);
}
printf("\n");
}
23.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
24.以下程序的运行结果是()。#defineA4#defineB(x)A*x/2main(){floatc,a=8.0;c=B(A;printf("%f\n",C);}
25.执行下列语句段后,x的值是______。
int*p,x;
x=100;
p=&x;
x=*p+50;
26.面向对象的模型中,最基本的概念是对象和______。
27.若变量a,b已定义为int类型并赋值21和55,要求用printf函数以a=21,b=55的形式输出,请写出完整的的输出语句()。
28.若有下列定义和语句:
char*s1="12345",*s2="1234";
printf("%d\n",strlen(strcpy(s1,s2)));
则输出结果为______。
29.结构化程序设计的3种基本结构分别是顺序、选择和______。
30.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。
31.定义inta=5,b;,则执行表达式b=++a*--a之后,变量b的值为【】。
32.计算机网络按通信距离来划分可以分为【】。
33.若有以下定义语句,则不移动指针p,并且通过指针p引用值为98的数组元素的表达式是【】。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
34.下列程序的运行结果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
35.以下程序运行后的输出结果是【】。
main()
{
intp=30;
printf("%d\n",(p/3>0?p/10:p%3));
}
36.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、【】和选择排序等。
37.以下函数的功能是【】。
floatav(a,n)
floata[];
intn;
{inti;floats;
for(i=0,s=0;i<n;i++)s=s+a[i];
returns/n;}
38.数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为【】。
39.软磁盘最外边的磁道数是【】号磁道。
40.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=1,y=1,a=1,b=1;
switch(x)
{case1:
switch(y)
{case0:a++;break;
case1:b++;break;
}
case2:
a++;b++;break;
}
printf("a=%d,b=%d\n",a,B);
}
三、1.选择题(20题)41.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
42.有以下程序段:typedefstructNODE{intnum;structNODE*nex;}OLD;以下叙述中正确的是()。
A.以上的说明形式非法B.NODE是一个结构体类型C.OLD是一个结构体类型D.OLD是一个结构体变量
43.有以下程序main(){chara,b,c,d;scanf("%c,%c,%d,%d",&a,&b,&c,&d);printf("%c,%c,%c,%c\n",a,b,c,d);}若运行时从键盘上输入:6,5,65,66<回车>。则输出结果是
A.6,5,A,BB.6,5,65,66C.6,5,6,5D.6,5,6,6
44.下列工具中为需求分析常用工具的是()。
A.PADB.PFDC.N-SD.DFD
45.若有如下调用函数:intsub(int*t){return(t);}该函数的返回值是()
A.形参t中存放实参变量的地址值B.形参t自身的地址值C.指针变量t所指的实参变量的值D.随机的值
46.若有以下定义和语句()intu=010,v=Ox10,w=10;printf("%d,%d%d\n",u,v,w);则输出结果是
A.8,16,10B.10,10,10C.8,8,10D.8,10,10
47.以下程序段的while循环执行的次数是______。intk=0;while(k=1)k++;
A.无限次B.有语法错,不能执行C.一次也不执行D.执行1次
48.变量m的值为8,m的地址为1010,若欲使p为指向m的指针变量,则下列赋值正确的是()。
A.&m=8B.*p=8C.*p=1010D.p=&m
49.以下程序(程序左边的数字为附加的行号)______。1#include<str.h>2#include<stdio.h>3main()4{chars[]="string";5puts(s);6strcpy(s,"hello");7printf("%3s\n",s);}
A.没有错B.第1行有错C.第6行有错D.第7行有错
50.以下程序的输出结果是()。#include<stdio.h>#include<string.h>mam(){charb1[8]="abcdefg",b2[8],*pb=b1+3;while(--pb>=b1)strcpy(b2,pB);printf("%d\n",strlen(b2));}
A.8B.3C.1D.7
51.有如下程序:#include<stdio.h>main(){FILE*fpl;fp1=fopen("ftxt","w");fpfinff(fp1,"abc");fclose(fp1);若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为()。
A.goodabcB.abcdC.abcD.abegood
52.有以下函数定义:
voidfun(intn,doublex){……}
若以下选项中的变量都已正确定义并赋值,则对函数fun的正确调用语句是A.fun(inty,doublem);
B.k=fun(10,12.5);
C.fun(x,n);
D.voidfun(n,x);
53.若有函数内部说明:inta[3][4];则数组a中各元素
A.可在程序的运行阶段得到初值0
B.可在程序的编译阶段得到初值0
C.不能得到确定的初值
D.可在程序的编译或运行阶段得到初值0
54.以下程序的输出结果是______。main(){printf("%d\n",NULL);}
A.0B.-1C.1D.不确定的值(因变量无定义)
55.下列程序的输出结果是()。#include<stdio.h>main(){inta[2][3]={{1,2,3},{4,5,6}},(*p)[3],i;p=a;for(i=0;i<3;i++){if(i<2)p[1][i]=p[1][i]-1;elsep[1][i]=1;}printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}
A.8B.7C.12D.9
56.以下叙述中错误的是
A.在程序中凡是以"#"开始的语句行都是预处理命令行
B.预处理命令行的最后不能以分号表示结束
C.#defineMAX是合法的宏定义命令行
D.C程序对预处理命令行的处理是在程序执行的过程中进行的
57.若要求从键盘读入含有空格字符的字符串,应使用函数A.getc()B.gets()C.getchar()D.scanf()
58.若x,i,j和k都是int型变量,则计算表达式x=(i=4,j=16,k=32)后,x的值为()。
A.4B.16C.32D.52
59.若有如下程序:sub(int*t,inta[3][4]){intm,n;for(m=0;m<3;m++)for(n=0;n<4;n++){*t=a[m][n];t++;}}main(){int*t,s[3][4)={{1,2,3),{4,5,6),{7,8,9}};t=(int*)malloc(50);sub(t,s);printf("%d,%d\n",t[4],t[7]);}则程序运行后的输出结果是()。
A.4,7B.4,0C.5,8D.程序错误
60.以下不能定义为用户标识符的是()。
A.scanfB.VoidC.3comD.int
四、选择题(20题)61.HTTP协议的GET请求方法可以获取()类型的数据。
A.HTML文档B.图片C.视频D.以上都可以
62.有以下程序,其中%u表示按无符号整数输出:
main
{
unsignedintx=0xFFFF;/*x的初值为十六进制数*/
printf("%u\n",x);
}
程序运行后的输出结果是()。
A.-1B.65535C.32767D.0xFFFF
63.数字字符0的ASCIl值为48,若有以下程序:
程序运行后的输出结果是()。
A.3,2B.50,2C.2,2D.2,50
64.
65.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是
A.sets(&s[0]);
B.scarf("%s",s+1);
C.gets(s);
D.scanf("%s",s[1]);
66.有如下程序段:
其输出结果是()。
A.123.141593B.1,23.141593C.12,3.141593D.123.1415930
67.数据库设计中反映用户对数据要求的模式是()。
A.内模式B.概念模式C.外模式D.设计模式
68.
69.下列叙述中正确的是()。
A.循环队列是队列的一种链式存储结构
B.循环队列是队列的一种顺序存储结构
C.循环队列是非线性结构
D.循环队列是一种逻辑结构
70.用树形结构来表示实体之间联系的模型称为
A.层次模型B.关系模型C.网状模型D.数据模型
71.
72.
73.对表达式for(表达式1;;表达式3)可理解为()。
A.for(表达式1;0;表达式3)
B.for(表达式1;1;表达式3)
C.for(表达式1;表达式1;表达式3)
D.for(表达式1;表达式3;表达式3)
74.
75.以下程序的功能是进行位运算
程序运行后的输出结果是()。
A.43B.73C.70D.40
76.设有以下函数:
voidfun(intn,char}s){……}
则下面对函数指针的定义和赋值均正确的是()。
A.void(*pf)(int,char);pf=&fun;
B.void+pf();pf=fun;
C.void*pf();*pf=fun;
D.void(*pf)(int,char*);pf=fun;
77.一间宿舍可住多个学生,则实体宿舍和学生之间的联系是()。
A.一对一B.一对多C.多对一D.多对多
78.
79.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
80.若x=5,y=3则y*=x+5;y的值为___________.
A.10B.20C.15D.30
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:读入一个字符串(长度<20),将该字符串中的所有字符按ASCIl码升序排序后输出。
例如,输入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);j4-+)
if(str[i]>str[j])
{
c=str[j]:
//****found****
str[j]=str[i++];
str[i]=C;
}
}
voidmain
{
charst/[81];
system("CLS");
printf("\nPleaseenteracharacter
string:");
gets(str);
printf("\nknBeforesorting:\n%s",str);
proc(str);
printf("\nAftersortingdecendingly:\n
%S",str);
}
六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。
例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。
请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填人所编写的若干语句。
试题程序:
#include<string.h>
#include<conio.h>
#include<stdio.h>
#defineN100
voidfun(char*str)
{
}
voidmain
{
chara[N];
FILE*out:
printf("Enterastring:");
gets(a);
printf("Theorigiralstringis:");
puts(a);
fun(a):
printf("Thestringaftermodified:");
puts(a);
strcpy(a,"Welcome!");
fun(a);
ut=fopen("outfile.dat","w");
fprintf(out,"%s".a);
fclose(out);
}
参考答案
1.A
2.D
3.D解析:本题考查的是二维数组元素在内存中的排列形式。虽然二维数组成多维数组从结构上来看不是线性的,但是在C语言中,这些数组元素在内存中的排列是连续线性存放的。它们的排列规则是:第一维下标变化最慢,最右边的下标变化最快.例如本题中定义的二维数组a[3][3]中9个元素在内存中的排列顺序是:a[0][0],a[0][1],a[0][2],a[1][0],a[1][1],a[1][2],a[2][0],a[2][1],a[2][2]。在主函数中,首先定义了二维数组a[3][3],然后定义了一个指针p指向数组a的第1个元素a[0][0]。在第一个for循环中,依数组a在内存中的排列顺序为其元素赋从0~8九个值,然后用第二个for循环依次输出a[1][0],a[1][1],a[1][2]三个元素的值。所以,4个选项中选项D符合题意。
4.A
5.AA。【解析】C语言源程序不能表示八进制,在C语言中,所有的数值型常量都带有符号,所以整型数量只区别整型和长整型两种形式,整型常量和长整型常量均可用十进制、二进制、十六进制3种形式表示,故A不正确。
6.D本题考查leon(tp)函数,其功能是:测试所指的文件的位置指针是否已达到文件尾,如果已达到文件尾,则函数返回非0值;否则返回0,表示文件未结束。
7.A函数fopen(“data.dat”,“w+”)中的“w+”表示打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失;若文件不存在则建立该文件。“rewind(fp);”使文件fp的位置指针指向文件开始。函数“fprintf(fp,“%d\\n”,a[5-i]);”将a[i]输出到fp指向的文件中。函数“fscanf(fp,“%d”,&k);”将fp读入变量k中。第1个for循环将数组中元素倒着输入fp指向的文件中。rewind则指向文件开始,因此输出的是数组a的倒叙:6,5,4,3,2,1,。故本题答案为A选项。
8.Asizeof是运算符,计算数组、指针、类型、对象、函数等所占的字节大小。strlen(*char)是函数,参数必须是字符型指针(char*)。该函数的功能是:返回字符串的长度,不包括字符串结束标识。“sizeof(a)”是求数组a所占空间的大小,包括字符串最后的‘\\0’。所以“sizeof(a)”=5,strlen遇到‘\\0’就结束,“strlen(a)”=4。“strier(b)”是指针指向的字符串长度,“sizeof(b)”是指针的大小。“strlen(c)”是字符串的长度,“sizeof(c)”是数组的长度。因此,输出结果是4,5,2,4,1,3,。故本题答案为A选项。
9.D解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
10.C
11.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。题目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,经计算可得29。“S(j+k+2)=j+k+2*k+j+2/j+k+2”,经计算可得29。因此输出为29,29。故本题答案为B选项。
12.Dc语言的可执行程序是由一系列机器指令组成的。用C语言编写的源程序必须经过编译生成二进制目标代码,再经过连接才能运行,并且可以脱离c语言集成开发环境。故答案为D)。
13.A解析:观察题目,可以发现,*p=&aa[0][0]语句实际是将数组aa的首地址赋给了指针变量p,将i的值带入for循环中,i=0时,aa[0][1]=3,*p=2;*p输出的是指针所指向的数组值,此时p所指向的是aa[O][0],输出2,而i=1时执行了++p操作使指针向后移动指向了aa[0][1],所以在输出*p时应为3。
14.A
15.D
16.Bstrcat函数是字符串连接函数,调用形式为strcat(s1,s2)。其功能是将s2指向的字符串的内容连接到s1指向的存储空间中,并返回s1的地址。由题意可知,新串首地址为s3,所以s3应该是第一参数,选项A、D错误。同理,新串中除了S3所指的字符串,剩下的字符串为“nameaddress”,即首地址为s1,所以调用strcat函数,s1是第一参数。所以正确的函数调用语句为“strcat(s3,strcat(s1,s2))”。故本题答案为B选项。
17.B
18.C
19.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。
20.D解析:两个实体间的联系可以归纳为3种类型:一对一联系:一对一的联系表现为主表中的每一条记录只与相关表中的一条记录相关联。一对多联系,一对多的联系表现为主表中的每一条记录与相关表中的多条记录相关联。多对多联系:多对多的联系表现为二个表中的多个记录在相关表中同样有多个记录其匹配。本题中一个顾客可以购买多种商品,同一种商品可以有多个顾客购买,所以商品和顾客之间是多对多的联系。
21.str[i]str[i+1]"%s"strstr[i]\r\nstr[i+1]\r\n'%s',str解析:本题要求将字符串str中的字符用冒泡排序算法从大到小排列,其实现过程是将相邻两个字符进行比较,如果当前字符小于下—个字符,则通过中间变量temp将字符两两交换,所以第一空应填:str[i],第二空应填:str[i+1]。最终打印输出得到的字符串str,所以第三空应填:'%s',str。
22.86518651解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。
23.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
24.16.0
25.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。
26.类类
27.printf(“a=%db=%d”aB);printf(“a=%d,b=%d”,a,B);解析:printf函数的一般格式为:“printf(格式控制,输出表列)”。
28.44解析:strcpy(s1,s2)函数的作用是将字符串s2中的内容拷贝到字符串s1中的内容覆盖。strlen()函数是求字符串的长度。本题实际上是要求s2字符串的长度,即是4。
29.重复(循环)重复(循环)解析:结构化程序设计包括3种基本的结构:顺序结构、选择结构和重复结构(循环结构),利用这3种结构就足以表达出各种其他形式结构的程序设计方法。其中利用循环结构,可以简化大量的程序执行。
30.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。
31.2525解析:#NAME?
32.局域网和广域网局域网和广域网
33.*(p+5)
34.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。
35.33解析:条件表达式的一般形式为;表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。
36.交换排序交换排序解析:常见的排序方法有插入排序(包括简单插入排序法和希尔排序法等)、交换排序(包括冒泡排序和快速排序法等)和选择排序(包括简单选择排序和堆排序等)。注意:常见的排序方法及其作用机制和区别。
37.求出数组元素平均值求出数组元素平均值解析:函数有一个数组形参a和一个整型形参n。函数首先用循环求数组a的前n个元素和,然后将和除以n。即求数组元素的平均值。
38.物理独立性物理独立性解析:数据独立性分为逻辑独立性与物理独立性。当数据的存储结构改变时,其逻辑结构可以不变,因此,基于逻辑结构的应用程序不必修改,称为物理独立性。
39.0
40.a=2b=3a=2,b=3解析:分析程序,程序从x=1语句开始执行,之后执行第一个switch语句,switch(x)=switch(1),所以执行case1,case1语句中包含一个复合switch语句:这时执行第二个switch语句,此时y=1,所以switch(y)=switch(1),因此执行case1,将b加1,得到b=2,遇到break语句,退出第二个switch语句,则整个case1的复合语句执行完毕,由于在这个case1的后面没有break语句使其退出第一个switch语句,所以接着执行下列的case2后面的语句,即将a,b各加1,得到a=2,b=3。
41.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。
42.C解析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则structNODE为结构体类型,而用typedef定义后,相当于用OLD代表了struetNODE这一结构体类型,故OLD为结构体类型。
43.A解析:主函数中首先定义了4个字符变量a、b、cd,然后通过scanf()函数输入a、b、c、d输入中a和b是按字符格式c输入的,c和d是按整型符号d输入的。在看下面的printf()函数中,要求a、b、c、d都按字符输出,故a和b原样输出为6、5,c和d将把与其ASCII码对应的字符输出,65和66的ASCII码对应字符A和B,故最后的输出为6,5,A,B。所以,4个选项中选项A符合愿意。
44.D解析:需求分析常用的工具有数据流图(DFD)、数据字典(DD)、判定树和判定表。PAD(问题分析图)、PFD(程序流程图)、N-S(盒式图)都是详细设计的常用工具,不是需求分析的工具。
45.A
46.A
47.A
48.D解析:指针变量是通过指向变量地址来指定变量值的。这里只要取m的地址赋给p,即可实现使p为指向m的指针变量。
49.B解析:字符串复制函数strcpy包含在头文件string.h中,因此,程序中的第1行文件包含命令是错误的。
50.D解析:首先定义了两个字符数组b1和b2,并用一个字符串给b1赋初值,然后定义了一个字符型指针变量pb,通过赋初值使它指向b1[3]。接着执行while循环,该循环执行了3次:第一次判断条件“--pb>=b1”,使pb的值为“b1+2”,执行“strepy(b2,pB);”后,b2中的内容为“cdefg”:第二次判断条件“--pb>=b1”,使pb的值为“b1+1”,执行“strcpy(b2,pB);”后b2的内容为“bedefg”第三次判断条件“--pb>=b1”使pb的值为“b1”,执行“strcpy(b2,pB):”后b2的内容为“abcdefg”。最后输出b2数组中存放的字符串长度,显然是7。(这里还有一个关键点:就是每当执行—次while循环判断条件,就执行一次“--pb”,他使得指针pb自减1,即前移一位)所以,4个选项中D为所选。
51.C执行语句fp1=fopen("f1.txt","w");以“只写”方式打开了一个名为f1.txt的文件,执行语句fPrintf(fp1,"abc",);向该文件写数据时,如果文件f1.txt不存在,则新建一个f1.txt文件;如果f1.txt已存在,则在打开该文件时重写文件内容。所以执行fprintf(fp1,"abc");时,f1.txt中原有内容good被删除,而字符中”abc”被输出到fpl指向的文件f1.txt中。
52.C解析:选项A中应将y和m前面的函数的类型说明符去掉,故选项A不正确;选项B中函数传了2个参数,其中一个为整型一个为浮点型,而fun()函数在定义时声明的2个参数,一个为整型一个为双精度型,其参数类型不一致,故选项B不正确;选项D在调用函数时,不应该再声明其返回类型,故迭项D不正确.所以,4个选项中选项C符合题意。
53.C本题主要考查数组的定义及初始化。在对数组进行定义和初始化时,需要注意以下事项。
(1)数组的内存空间在编译时确定,定义数组时的n值只能使用常量,不能使用变量。
(2)定义数组时可以不标明数组元素的个数,而是通过赋初值的方式确定,编译系统将自动计算花括号内的数据数量作为数组的元素个数。
(3)数组初始化时,当初值的个数小于整型常量n时,编译系统会自动补0。一旦给定初值数超过n,编译系统将报错。
(4)初始化数组的元素类型,必须与定义数组时的类型一致。
(5)数组名记录了数组在内存中的首地址,其值不能更改。
(6)除字符数组外,不能直接用数组名对数组进行整体输入或输出。
本题中定义了一个3行4列的数组,但没有对其进行赋初值操作,可能我们会想在系统编译时会自动补0,这只是在初值个数小于数组定义大小的情况下的操作,如果没有进行赋初值操作,数组中的元素值是不能被确定的。因此,本题答案选C。
54.A解析:NULL表示空,常在定义指针变量时将其值赋为NULL,表示不指向任何地址。NULL在C语言的头文件中宏定义为0。
55.B解析:第1次执行for循环,p[1][0]=p[1][0]-1=3:第2次执行for循环,p[1][1]=p[1][1]-1=4:第3次执行for循环,p[1][2]=1,最后输出的是a[0][1]+a[1][1]+a[1][2]=2+4+1=7。
56.D解析:C语言中的预处理命令以符号#开头,这些命令是在程序编译之前进行处理的,选项D)的描述错误。
57.Bscanf(\u3000)语句中用“空格”间隔不同的字符串,空格将被全部忽略掉,所以用scanf(\u3000)函数不能输入空格;getehar(\u3000)函数用于输入字符,其调用形式为:ch=getelaar(\u3000),getehar(\u3000)函数从终端读入一个字符作为函数值,把读入的字符赋给变量ch。在输入时,空格、回车符都将作为字符读入,而且只有在用户敲入Enter键时,读入才开始执行。gets(\u3000)函数的凋用形式为:gets(str_adr),其中stradr是存放输入字符串的起始地址,可以是字符数组名、字符数组元素的地址或字符指针变量。9ets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。getc(\u3000)函数的调用形式为:ch=getc(pf)其中pf是文件指针。函数的功能是从pf指定的文件中读入一个字符,并把它作为函数值返回。
58.C本题主要考查逗号表达式。逗号是一个特殊的运算符,它具有所有运算符中最低的优先级。在C语言中,用它可以将两个表达式连接起来,逗号表达式的一般表现形式为:
表达式1,表达式2,…,表达式n
逗号表达式的求解过程是:先求解表达式1,再求解表达式2,依次往后计算,整个逗号表达式的值是最后一个表达式的值,如“3+5,5+6”的值是11。
在本题中,逗号表达式为i=4,j=16,k=32,根据上面的分析,计算逗号表达式得到的结果为k=32,最后将逗号表达式的结果赋值给变量x,那么变量x的值为32。因此,本题的正确答案选C。
59.B解析:本题定义了一个sub()函数,其作用为将一个二维数组按行复制到t所指的连续内存空间内。主程序中首先使用malloc()函数为t申请了50个字节的内存空间,然后调用sub()函数,将二维数组s的内容复制到t申请的内存空间内,最后输出t的第5个元素(t[4])和第8个元素(t[7]),即为3行4列二维数组中的s[1][0]和s[1][3]。s[1][0]是初始化列表中第二个大括号中的第一个值4,而s[1][3]应该是初始化列表中第二个大括号中的第4个值,但没有这么多初始值,C语言在这种情况下会自动将该元素设置为0,即s[3][4]={{1,2,3},{4,5,6},{7,8,9}}等价于s[3][4]={{1,2,3,0},{4,5,6,0),{7,8,9,0}}。所以最后输出结果是4,0,应该选择B。
60.D解析:标识符是C语言中用来表示变量名、数组名、函数名、指针名、结构名、联合名、枚举常数名、用户定义的数据类型名、语句标号等用途的字符序列。标识符由1~32个字符组成,第一个字符必须是字母或下划线,后面的字符可以是字母、数字或下划线。标识符不能与C关键字相同,并区分大小写。选项D)错误,因为int是C语言中的关键字。
61.D
6
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024版电子商务平台搭建与推广合同3篇
- 2024年度国际酒店管理服务与加盟合同3篇
- 2024年个体运输服务合同2篇
- 2024版内墙涂料粉刷环保要求合同3篇
- 2024年房产证押借款合同8篇
- 防洪工程施工监理合同三篇
- 2024年劳务派遣公司合同样本
- 2024年出口业务中间商报酬合同一
- 2024年合同授权代表委托说明书3篇
- 2024年度高品质五金材料采购合同样本版
- 领导干部任前谈话记录表
- (郭伯良)儿童青少年同伴关系评级量表
- 2023动力锂离子电池运输安全技术规范
- 医院洁净区域维保投标方案(技术方案)
- 中国古典小说的叙事原则
- 动物解剖学复习资料完整版
- 京剧常识及欣赏课件
- 建筑工程考试题(含答案)
- 漆小泉植物代谢组学及其应用课件
- 急性呼吸窘迫综合症ARDS课件
- GB/T 42131-2022人工智能知识图谱技术框架
评论
0/150
提交评论