版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年湖北省鄂州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
2.
3.
4.对n个元素的数组进行(),其平均时间复杂度和最坏情况下都为O(nlogn)。
A.希尔排序B.快速排序C.堆排序D.选择排序
5.
6.下列叙述中错误的是()。
A.C语言程序对预处理命令行的处理是在程序执行过程中进行的
B.预处理命令行的最后不能以分号表示结束
C.“#defmeMAX”是合法的宏定义命令行
D.在程序中,凡是以“#”开始的语句行都是预处理命令行
7.
8.下列关于函数的叙述中正确的是()。A.A.每个函数都可以被其他函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
9.以下程序执行后的输出结果是()。
A.5,5
B.5,11
C.11,11
D.11,5
10.算法的时间复杂度是指()A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数
11.
12.十六进制数BB转换成十进制数是()
A.192B.256C.187D.121
13.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。
A.1/2B.1C.2D.4
14.在下面栈的基本运算中,不是加工型运算的是______。
A.初始化B.进栈C.退栈D.判栈空
15.以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.输出值不定
16.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
17.广告系统为了做地理位置定向,将IPV4分割为627672个区间,并标识了地理位置信息,区间之间无重叠,用二分查找将IP地址映射到地理位置信息,请问在最坏的情况下,需要查找多少次?()
A.17B.18C.19D.20
18.若有定义:int*p[3];,则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
19.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
20.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
二、2.填空题(20题)21.与表达式a+=b等价的另一书写形式是______。
22.#define命令出现在程序中函数的外面,宏名的有效范围为______。
23.实现算法所需的存储单元多少和算法的工作量大小分别称为为算法的【】。
24.以下程序运行后的输出结果是______。
structNODE
{intk;
structNODE*link;
};
main()
structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q)
{p->k-++i;p++;
q->k-i++;q--;
}
q->k=i;
for(i-0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
25.以下程序用业统计文件十字符个数。请填空。
#include"stdio.h"
main()
{FTLE*fp;longnum=OL;
if((fp=fopen("fname.dat","r"))==NUlL)
{pirntf("Openerror\n");exit(0);}
while()
{fgetc(fp);num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
26.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
27.关系操作的特点是______操作。
28.以下程序的运行结果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。
30.下列程序的输出结果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
31.在对文件进行操作的过程中,若要使文件位置的指针回到文件的开头,应使用的函数是【】。
32.下面程序的运行结果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}
33.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
34.下面rotate函数的功能是:将n行n列的矩阵A转置为A',例如:
123415913
5678261014
当A=9101112则A'=371115
13141516481216
请填空。
#defineN4
voidrotate(inta[][NJ)
{
inti,j,t;
for(i=0;i<N;i++)
for(j=0;______;j++)
{
t=a[i][j];
______;
a[j][i]=t;
}
}
35.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
36.可以把具有相同属性的一些不同对象归类,称为【】。
37.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
则程序运行后的输出结果是【】。
38.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)
______
main()
{printf("\n");
try_me();
printf("\n");}
39.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
40.以下程序的输出结果是______。
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
三、1.选择题(20题)41.下面程序的输出结果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}
A.ABABCDB.ABCDABC.ABCDDD.ABCDCD
42.若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;
43.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。
A.11B.20C.21D.31
44.以下对结构体类型变量td的定义中,错误的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
45.有以下程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;执行该程序段后,k的值是______。A.3B.2C.1D.0
46.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
47.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.c=('A'+c)%26-'a'
48.下列叙述中正确的是
A.C语言中既有逻辑类型也有集合类型
B.C语言中没有逻辑类型但有集合类型
C.C语言中有逻辑类型但没有集合类别
D.C语言中既没有逻辑类型也没有集合类型
49.有以下程序段:main{){inta=5,*b,**C;c=&b;b=&a;……}程序在执行了“c=&b;b=&a;”语句后,表达式“**c”的值是
A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址
50.最常用的一种基本数据模型是关系数据模型,它的表示应采用()。
A.树B.网络C.图D.二维表
51.下面的程序执行后,文件test.t中内容是______。#inc1ude<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w")for(i=0;i<strlen(st);i++)fputc(st[i]myf);fdose(myf);}main(){fun("test.t""newword");fun("test.t,"hello,");}
A.hello,B.newwor1dhelloC.newworldD.hello,rld
52.有以下程序#inclUde<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4
A.0987654321B.4321098765C.5678901234D.0987651234
53.数据的存储结构是指()。
A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示
54.______是构成C语言程序的基本单位。
A.函数B.过程C.子程序D.子例程
55.下面程序的运行结果是
#include<stdio.h>
main()
{inta=28,b;
chars[10],*p;
p=s;
do{b=a%16;
if(b<10)*p=b+48;
else*p=b+55;
p++;a=a/5;}while(a>0);
*p=′\0′;puts(s);}
A.10B.C2C.C51D.\0
56.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=y-=1)){a+=1;if(y<x)break;}printf("x=%d,a=%d\n",x,y,A);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=,a=1
57.以下叙述中正确的是()。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>
D.C语言的预处理不能实现宏定义和条件编译的功能
58.下列说法不正确的是()。
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D.调用函数时,实参与形参的类型必须一致
59.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
60.有以下程序
#include<stdio.h>
#include<string.h>
typedefstruct{charname[9];charsex;floatscore[2];}STU;
voidf(STUa)
{STUb={"Zhao",′m′,850,900};inti;
strcpy(,);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
}
main()
{STUc={"Qian",′f′,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
四、选择题(20题)61.以下数据结构中不属于线性数据结构的是______。
A.队列B.线性表C.二叉树D.栈
62.
63.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
64.
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
65.
66.如果将主文件型指针fp指向的文件内部指针置于文件尾,正确的语句是()。
A.feof(fp);
B.rewind(fp);
C.fseek(fp,OL,0);
D.fseek(fp,OL,2);
67.有以下程序:
程序运行后的输出结果是()。
A.9B.8C.7D.10
68.下列说法不正确的是()。
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D.调用函数时,实参与形参的类型必须一致
69.
70.
设有定义:“inta;floatb;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b的值分别是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
71.有以下程序
72.以下函数实现按每行8个输出w所指数组中的数据
73.有以下程序段:
以下选项中表达式的值为11的是()。
A.
B.
C.
D.
74.
75.
76.若有如下定义,则__________是对数组元素的正确的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
77.设有如下三个关系表:
78.设有以下说明语句:
则下面的叙述中不正确的是()。
A.struct结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.struetex是结构体类型名
79.以下程序的运行结果是
#defineMIN(x,y)(x)<(y)?(x):(y)
main()
{
inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A.10B.15
C.100D.150
80.有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
X*=2:
returnx;
}
main()
{inti,S=1;
for(i=1;i<=3;i++)S*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是()。
A.0B.10C.30D.64
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。
2.A
3.B
4.C
5.B
6.A预处理是在程序编译之前进行的,所以A选项错误。故本题答案为A选项。
7.D
8.B在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main函数不能被调用,选项A)错误;C程序从main函数开始执行,当main数执行完毕时,整个程序就结束了。C程序的执行必须从main函数开始,选项C)选项错误;函数不能嵌套定义,选项D)错误。
9.Bmain函数中的局部变量m与fun函数中的静态局部变量m同名,因此main访问的是其局部变量m,所以main中的两次函数调用,实际上都是调用fun(1,1)。
第一次调用时,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。
第二次调用时,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。
所以程序输出5,11。
10.D解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。
选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误。因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。
选项C错误,因为根据一个算法所编制出的程序程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。
所以,本题的正确答案为D。
11.C
12.C
13.C
14.D
15.A解析:对未给出初始值的整数数组元素,被默认初始化为零。
16.C
17.D
18.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。
19.C
20.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
21.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
22.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。
23.空间复杂度和时间复杂度空间复杂度和时间复杂度解析:算法的复杂性是指对—个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。
24.1343113431解析:本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和两个结构体指针p和q,并分别初始化p指向m(指向数组的第一个元素);q指向m+4(指向数组的最后一个元素)。接下来定义并初始化一个整型变量i为0。然后用一个while循环。在p和q不相等的时候执行循环体:让p所指结构体的成员k等于++i的值,然后让p指向下一个结构体;让q所指结构体的成员k等于i++的值,然后让q指向前一个结构体。i从0开始交替调用++i和i++,两个表达式的值依次分别为1和1、3和3……。所以当p叫循环结束时,实际循环了两次,p和q都指向m数组的中间位置m[2],i自增了4次,所以q->k=i;就是让m[2]k=4。所以程序最后输出为:13431。
25.!feof(fp)!feof(fp)解析:本题中统计文件中字符个数的算法可描述如下:首先判断文件位置指针是否指向了文件尾,如果不是则读出一个字符,同时字符的个数加1,再判断文件位置指针是否位于文件尾,如此循环,直到文件位置指针位于文件尾为止。本题首先以读文件的方式打开了文件“fname.daf”,如果打开成功则把返回的文件型指针赋值给fp,然后通过循环求文件中的字符数。首先判断文件位置指针是否位于文件尾,如果不是则循环读取字符,每次字符数加1。所以下划处应填循环条件,文件位置指针不是指向文件尾,即“!feof(fp)”。
26.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。
27.集合集合
28.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。
29.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。
30.1212解析:本题签考查如何用指针引用数组元素。分析程序,首先定义了一个指向数组a的指针p,p指向数组的首地址,通过p++,将p指向a[1],p+2是将指针后移2位指向a[3],*(p+2)即是取a[3)的值12。
31.rewind或fseekrewind或fseek
32.abcdelkjihgfabcdelkjihgf解析:本题先给字符型数组s的12个元素赋值a到1的12个字母,函数sub(shar*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。
33.1212解析:本题通过第一个for循坪将数组arr[0]-arr[9]分别赋值为0-9,通过第二个for循环的三次循环累加,求出结果为12,具体分析如下:
i=1:k=0+arr[1]+1即k=2;
i=2:k=2+arr[2]+2即k=6;
i=3:k=6+arr[3]+3即k=12;
34.j<ia[i][j]=a[j][i]j<ia[i][j]=a[j][i]解析:本题中要求将n行n列的矩阵A转置,即让数组中行上的元素变成对应列上的元素。即把对角线两边的元素对换,所以本题的第一个空格处应该填写1<i,第二个空格处填写交换对角线两边的元素的语句a[i][j]=a[j][i]。
35.11解析:本题考查的是基本赋值运算符和赋值表达式。a-=(b-5)等价于a=a-(b-5)=4,c=a=4;a%3=1,c=(a%3)+(b=1)=2,其中b的值被b=1确定为1。
36.对象类
37.00解析:while循环的条件为即当*y非零时执行循环,-(*y)先对*y的值减1,再使用*y的值,不再执行while循环时最后*y的值为0,输出函数中的(*y)--,是先使用*y的值再对*y减1,就是先输出0。
38.#include<a:\myfile.txt>#include<a:\\myfile.txt>解析:本题考查了函数的存储分类的概念。如果没有特别说明,函数的存储范围是从定义函数的位置到文件的结尾,如果其他文件想使用这个函数,需要用ginclude文件包含命令将定义函数的文件包含进来。
39.*t++或*(t++)*t++或*(t++)解析:主函数中定义了两个字符型数组strl和str2,并且给str2赋初值“abc&fgh”,接着调用函数sstrcpy(str1,str2),将字符串str2的值赋给str1。在函数sstrcpy(*s,*t)中,用了一个while循环,每循环一次将形参指针t所指的字符赋给形参指针s所指向的存储空间,然后指针s和指针t都下移到下一个元素。所以空格处应该填*t++或*(t++)。
40.abcabc解析:字符串的结束标记'\\0',当输出一个存放在字符数组中的字符串时,只需输出到'\\0'为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为'\\0',故只能输出3个字符“abc”。
41.D
42.A
43.C解析:函数func的作用是返回两个形参的和,第一个形参是x,y分别自减和自增后的和13,第二个形参的值为8(根据语法规则,应当先使用,后自增),所以func的返回值为13+8=21。
44.C解析:选项A使用typedef语句给结构体8a定义了一个新的名称AA,因此使用AA直接声明结构体变量td是正确的。选项B中,前面一句是定义结构体同时声明了结构体变量td,后一句是使用结构体名aa声明结构体变量td,都是正确的写法。选项C的第1条语句和选项D使用的是无名结构体直接声明变量的语法,是正确的,但是选项C的第2条语句使用已经声明的结构体变量aa来声明td是错误的。故应该选择c。
45.B解析:本题考查的知识点是条件表达式.条件运算符?:是C语言中唯一的三目运算符,它的规则是先计算左边运算分量,如果为“真”(非0),则返回中间运算分量的值,否则返回右边运算分量的值。本题中因为a<b为“真”,所以第1个条件表达式的值为b的值2,所以k=2。然后又因为k>c为“假’,所以第2个表达式的值为k的值2。所以本题应该选择B。
46.D解析:因为变量t的初始值等于1,经过第一次dowhile循环中,执行t=t-2这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,再执行t=t-2这条语句一次,所以变量t的值为-3,接着再判断关系表达式t!=n是否成立,如果关系表达式成立,执行第三次循环,否则退出循环。由此可知,所以只要输入变量n的值为负奇数,则一定会使t==n成立,则退出dowhile循环。
47.D解析:C语言中,字符数据参加运算时,实际上是其ASCII码参与运算。大写字母的ASCII码比其对应的小写字母的ASCII码小32。因此大写字母转化为小写字母只需将其加上32即可。所以选项B)、C)都符合条件,因为变量c中存储的是大写字母,所以“c-'A'”的值一定小于26,故选项A)与选项C)的含义相同。
48.D解析:本题考核的知识点是c语言数据类型.在C语言中没有逻辑类型,逻辑类型用整型来表示,故选项A和选项C不正确;C语言中没有集合类型,故选项B不正确。所以,D选项为所选。
49.C解析:主函数中定义了一个整型变量a,一个整型指针变量b和一个二级指针变量c,并让c指向指针变量b,让指针b指向整形变量a,所以**c为变量a的值,所以,4个选项中选项C符合题意。
50.DD。【解析】关系数据模型是属于数据库的一种最重要的数据模型,在关系数据模型中,实体及实体间的联系都用二维表来表示。
51.A解析:C语言中文件有文本文件与二进制文件,对文件的使用前必须先打开,打开方式有只读,写入、读写等方式。
52.C解析:函数fun(int*s,intn1,intn2)的功能是对数组s中的元素进行首尾互相调换。所以在主函数中,当fun(a,0,3)执行完后,数组a[12]={4,3,2,1,5,6,7,8,9,0};再执行fun(a,4,9),数组a[12]={4,3,2,1,0,9,8,7,6,5};再执行fun(a,0,9)后,数组a[12]={5,6,7,8,9,0,1,2,3,4}。
53.D数据的逻辑结构是指数据元素之间的逻辑关系的数据结构。数据的存储结构则是数据的逻辑结构在计算机中的物理实现,有时也称作数据的物理结构。两者的区别是数据的逻辑结构只涉及到数据之间抽象的数学关系。存储结构则涉及到如何在计算机中通过对数据的物理存储进行组织来表达数据元素之间的逻辑关系。比如在线性表的顺序存储中是利用物理存储空间上的连续性来表达线性表中数据的前后件关系;在线性表的链式存储中是通过指针域构成的逻辑链条来表达数据的前后件关系。一般的,一种数据的逻辑结构对应的物理实现,即数据的存储结构不止一种。因此选项D正确。
54.A解析:C程序是由函数构成的。—个C源程序至少包含—个main函数,也可以包含—个main函数和若干个其他函数,因此,函数是C程序的基本单位。
55.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。
56.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:
第一次while循环:条件为真,执行a=a+1=1;此时,x的值已为4,判断y<x不成立,继续执行循环;
第二次while循环;条件为假,此时x的值已为5,退出while循环,执行printf。
57.B解析:选项B)正确,预处理命令行之前都有一个“#”符号。C语言提供三种预处理:宏替换,文件包含,条件编译。
58.B
\n本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。
\n
59.A解析:本题利用多重for循环的嵌套来实现对二维数组元素的按列排序。利用最外层循环来实现对列的控制。内部循环利用选择法对数组元素按照从小到大的顺序进行排列,最后输出对角线上的元素值。
60.A解析:本题考查的是函数调用时的参数传递问题。程序在调用函数f时,传给函数f的参数只是结构变量c在栈中的一个拷贝,函数f的所有操作只是针对这个数据拷贝进行的修改,这些都不会影响变量c的值。
61.C解析:线性表、栈和队列所表达和处理的数据以线性结构为组织形式。栈是一种特殊的线性表,它只能在固定的一端进行插入和删除操作,又称后进先出表(LastInFirstOut);队列是插入在一端进行,删除在另一端进行的线性表,又称先进先出表(FirstInFirstOut)。
62.B
63.C本题主要考查成块读函数fread。在C语言中,提供了一种成块的读写方式来操作文件,使其数组或结构体等类型可以进行一次性读写。成块读文件函数的调用形式为:
intfread(void*buf,intsize,intcount,FILE*stream)
fread()函数的意思是从stream指向的流文件读取count(字段数)个字段,每个字段为size(字段长度)个字符长,并把它们放到buf(缓冲区)指向的字符数组中,然后进行读取操作。fread()函数返回实际已读取的字段数。
从上面的分析我们可以知道,参数buf是一个无返回类型的指针,指向要读入数据的存放地址,它其实是一个缓冲区。因此本题正确的答案选C。
64.B
\n选项A、C、D分别用一个ifelse语句、两个if语句和条件表达式表达了计算公式的含义。
\n
65.D
66.D文件操作;主文件型指针fp指向的文件内部指针置于文件尾的操作;
67.A题目中静态局部变量a,在静态存储区内分配存储单元,在程序整个运行期间都不释放。所以第-次调用函数执行n+=a++;时a先与n相加在再进行自增。n的值为4,a的值为2,且a变量执行完后空间没有释放。再执行s:。+f(a)时,s的值为4,调用f(a)函数时n的返回值为n=3+2=5,且此时a的值为3了。所以s的值为9。
68.B
\n本题考查函数调用的基本概念。调用函数时,实参的形式可以是具体的数值,也可以是表达式。实参将数值或表达式的值传递给形参,因而两者的类型必须保持一致;形参在运算过程中会发生改变,但不一定会影响到实参值,所以可知两者不共用内存单元。
\n
69.A
70.B
\n本题考查scanf函数,输入格式符%2d%f表示只接收了字符,其中a输入的值为2位的十进制整数,即87,然后将紧接着的6赋给b,因为b的值为单精度数在,即6.000000,故选择B选项。
\n
71.A函数fun的功能是将第二个字符串链接到第一个字符串的末尾,第二个字符串不变。所以选择A)。
72.A当i为8的倍数时,输出一个回车符,只有A)符合题意。
73.C→的运算优先级比++高,此时,pt→x=10,执行自加运算后为11。
74.A
75.A
76.D
77.B两个相同结构关系的“并”是由属于这两个关系的元组组成的集合。
78.B本题中,structex是结构体类型名,exam-Ple是结构体变量名。
79.B该题考查函数的宏定义及三目运算符。其中,表达式10*MIN(i,j)利用宏展开后为10*i<j?i:j,即100<15?10:15,其值为15,然后赋值给k。
80.D\n函数fun是2的次方的运算,而s*=fun,所以答案为64。
\n
81.(1)错误:p=j
正确:p=j;
(2)错误:p=j;
正确:p=i;
【解析】根据C语言的语法规则.每一条语句都要以分号结束。因此,“p=j”后要加上分号“;”。每次比较后要把小的下标赋值给p,因此,“p=j;”应改为“p=i;”。
82.
【解析】按题目中的要求,要得到整数c,首先要得到整数a和b的个位和十位上的数,可以通过取余和整除来实现,再将其分别乘以1000,100,10,1就可以得到所要求的整数c。
</j?i:j,即100<15?10:15,其值为15,然后赋值给k。2021年湖北省鄂州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下程序的输出结果是()。voidprt(int*m.intn){inti;for(i=0;i<n;i++)m[i]++;)main{inta[]={1,2,3,4,5),i;prt(a,5);for(i=0;i<5;i++)printf(“%d,”,a[i]);)A.1,2,3,4,5B.2,3,4,5,6C.3,4,5,6,7D.2,3,4,5,1
2.
3.
4.对n个元素的数组进行(),其平均时间复杂度和最坏情况下都为O(nlogn)。
A.希尔排序B.快速排序C.堆排序D.选择排序
5.
6.下列叙述中错误的是()。
A.C语言程序对预处理命令行的处理是在程序执行过程中进行的
B.预处理命令行的最后不能以分号表示结束
C.“#defmeMAX”是合法的宏定义命令行
D.在程序中,凡是以“#”开始的语句行都是预处理命令行
7.
8.下列关于函数的叙述中正确的是()。A.A.每个函数都可以被其他函数调用(包括main函数)
B.每个函数都可以被单独编译
C.每个函数都可以单独运行
D.在一个函数内部可以定义另一个函数
9.以下程序执行后的输出结果是()。
A.5,5
B.5,11
C.11,11
D.11,5
10.算法的时间复杂度是指()A.执行算法程序所需要的时间B.算法程序的长度C.算法程序中的指令条数D.算法执行过程中所需要的基本运算次数
11.
12.十六进制数BB转换成十进制数是()
A.192B.256C.187D.121
13.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。
A.1/2B.1C.2D.4
14.在下面栈的基本运算中,不是加工型运算的是______。
A.初始化B.进栈C.退栈D.判栈空
15.以下程序的输出结果是______。main(){inta[4][4]={{1,3,5},{2,4,6},{3,5,7}};printf("%d%d%d%d\n",a[0][3],a[1][2],a[2][1];a[3][0]);}
A.650B.1470C.5430D.输出值不定
16.在"inta[][3]={{1},{3,2},{4,5,6},{0}};"中,a[2][2]的值是()。
A.1B..0C.6D.2
17.广告系统为了做地理位置定向,将IPV4分割为627672个区间,并标识了地理位置信息,区间之间无重叠,用二分查找将IP地址映射到地理位置信息,请问在最坏的情况下,需要查找多少次?()
A.17B.18C.19D.20
18.若有定义:int*p[3];,则以下叙述中正确的是()。
A.定义了一个基类型为int的指针变量p,该变量具有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
19.以下程序运行后,输出结果是______。fut(int**s,intp[2][3]){**s=p[1][1];}main(){inta[2][3]={1,3,5,7,9,11},*p;p=(int*)malloc(sizeof(int));fut(&p,a);printf("%d\n",*p);}
A.1B.7C.9D.11
20.有下列程序:
main()
{inty=20;
do{y--;}while(--y);
phntf("%d\n",y--);
}
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
二、2.填空题(20题)21.与表达式a+=b等价的另一书写形式是______。
22.#define命令出现在程序中函数的外面,宏名的有效范围为______。
23.实现算法所需的存储单元多少和算法的工作量大小分别称为为算法的【】。
24.以下程序运行后的输出结果是______。
structNODE
{intk;
structNODE*link;
};
main()
structNODEm[5],*p=m,*q=m+4;
inti=0;
while(p!=q)
{p->k-++i;p++;
q->k-i++;q--;
}
q->k=i;
for(i-0;i<5;i++)
printf("%d",m[i].k);
printf("\n");
25.以下程序用业统计文件十字符个数。请填空。
#include"stdio.h"
main()
{FTLE*fp;longnum=OL;
if((fp=fopen("fname.dat","r"))==NUlL)
{pirntf("Openerror\n");exit(0);}
while()
{fgetc(fp);num++;}
printf("num=%1d\n",num-1);
fclose(fp);
}
26.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
27.关系操作的特点是______操作。
28.以下程序的运行结果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
29.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。
30.下列程序的输出结果是______。
main()
{inta[]={31,27,20,12,6,1},*p=a;
p++;
printf("%d\n",*(p+2));
}
31.在对文件进行操作的过程中,若要使文件位置的指针回到文件的开头,应使用的函数是【】。
32.下面程序的运行结果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}
33.下面程序的输出是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)
arr[i]=i;
for(i=1;i<4;i++)
k+=arr[i]+i;
printf("%d\n"k);}
34.下面rotate函数的功能是:将n行n列的矩阵A转置为A',例如:
123415913
5678261014
当A=9101112则A'=371115
13141516481216
请填空。
#defineN4
voidrotate(inta[][NJ)
{
inti,j,t;
for(i=0;i<N;i++)
for(j=0;______;j++)
{
t=a[i][j];
______;
a[j][i]=t;
}
}
35.若有定义:inta=4,b=5,c=6;然后顺序执行下列语句后,变量b中的值是()。c=(a-=(b-5));c=(a%3)+(b=1);
36.可以把具有相同属性的一些不同对象归类,称为【】。
37.若有如下程序:
sub(int*y)
{while(--(*y));
printf("%d",(*y)--);}
main()
{intx=10;
sub(&x);
}
则程序运行后的输出结果是【】。
38.设有以下程序,为使之正确运行,请在横线中填入应包含的命令行。(注:try_me()函数在a:\myfile.txt中有定义。)
______
main()
{printf("\n");
try_me();
printf("\n");}
39.以下sstrcpy()函数实现字符串复制,即将t所指字符串复制到s所指内存空间中,形成一个新字符串s。
请填空。
voidsstrcpy(char*s,char*t)
{while(*s++=【】);}
main()
{charstrl[100],str2[]="abcdefgh";
sstrcpy(strl,str2);
printf("%s\n",strl);
}
40.以下程序的输出结果是______。
main()
{chars[]="abcdef";
s[3]='\0';
printf("%s\n",s);
}
三、1.选择题(20题)41.下面程序的输出结果是()charb[]="ABCD";main(){char*chp;for(chp=b;*chp;chp+=2)printf("%s",chp);print{("\n");}
A.ABABCDB.ABCDABC.ABCDDD.ABCDCD
42.若变量均已正确定义并赋值,以下合法的C语言赋值语句是
A.x=y==5;B.x=n%2.5;C.x+n=i;D.x=5-4+1;
43.请读程序:#include<stdio.h>func(inta,intb){intc;c=a+b;returnc;}main(){intx=6,y=7,z=8,r;r=func((x--,y++,x+y),z--);printf("%d\n",r);上面程序的输出结果是()。
A.11B.20C.21D.31
44.以下对结构体类型变量td的定义中,错误的是()。
A.typedefstructaa{intn;floatm;}AA;AAtd;
B.structaa{intn;floatm;}td;stmctaatd;
C.stmct{intn;floatm;}aa;stmctaatd;
D.struct{intn;floatm;}td;
45.有以下程序段:intk=0,a=1,b=2,c=3;k=a<b?b:a;k=k>c?c:k;执行该程序段后,k的值是______。A.3B.2C.1D.0
46.设有定义:inta=2,b=3,c=4;,则下列选项中值为0的表达式是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
47.已知大写字母A的ASCII码是65,小写字母a的ASCII码是97。以下不能将变量c中的大写字母转换为对应小写字母的语句是
A.c=(c-'A')%26+'a'B.c=c+32C.c=c-'A'+'a'D.c=('A'+c)%26-'a'
48.下列叙述中正确的是
A.C语言中既有逻辑类型也有集合类型
B.C语言中没有逻辑类型但有集合类型
C.C语言中有逻辑类型但没有集合类别
D.C语言中既没有逻辑类型也没有集合类型
49.有以下程序段:main{){inta=5,*b,**C;c=&b;b=&a;……}程序在执行了“c=&b;b=&a;”语句后,表达式“**c”的值是
A.变量a的地址B.变量b中的值C.变量a中的值D.变量b的地址
50.最常用的一种基本数据模型是关系数据模型,它的表示应采用()。
A.树B.网络C.图D.二维表
51.下面的程序执行后,文件test.t中内容是______。#inc1ude<stdio.h>voidfun(char*fname,char*st){FILE*myf;inti;myf=fopen(fname,"w")for(i=0;i<strlen(st);i++)fputc(st[i]myf);fdose(myf);}main(){fun("test.t""newword");fun("test.t,"hello,");}
A.hello,B.newwor1dhelloC.newworldD.hello,rld
52.有以下程序#inclUde<stdio.h>voidfun(int*s,intn1,intn2){inti,j,t;i=n1;j=n2;while(i<j){t=s[i];s[i]=s[j];s[j]=t;i++;j--;}}main(){inta[10]={1,2,3,4,5,6,7,8,9,0},k;fun(a,0,3);fun(a,4
A.0987654321B.4321098765C.5678901234D.0987651234
53.数据的存储结构是指()。
A.存储在外存中的数据B.数据所占的存储空间量C.数据在计算机中的顺序存储方式D.数据的逻辑结构在计算机中的表示
54.______是构成C语言程序的基本单位。
A.函数B.过程C.子程序D.子例程
55.下面程序的运行结果是
#include<stdio.h>
main()
{inta=28,b;
chars[10],*p;
p=s;
do{b=a%16;
if(b<10)*p=b+48;
else*p=b+55;
p++;a=a/5;}while(a>0);
*p=′\0′;puts(s);}
A.10B.C2C.C51D.\0
56.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=y-=1)){a+=1;if(y<x)break;}printf("x=%d,a=%d\n",x,y,A);}
A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=,a=1
57.以下叙述中正确的是()。
A.预处理命令行必须位于C源程序的起始位置
B.在C语言中,预处理命令行都以“#”开头
C.每个C程序必须在开头包含预处理命令行:#include<stdio.h>
D.C语言的预处理不能实现宏定义和条件编译的功能
58.下列说法不正确的是()。
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D.调用函数时,实参与形参的类型必须一致
59.有以下程序
main()
{inta[4][4]={{l,4,3,2},{8,6,5,7},{3,7,2,5},{4,8,6,1}},i,j,k,t;
for(i=0;i<4;i++)
for(j=0;j<3;j++)
for(k=j+1;k<4;k++)
if(a[j][i]>a[k][i]){t=a[j][i];a[j][i]=a[k][i];a[k][i]=t;}/*按列排序*/
for(i=0;i<4;i++)printf("%d,",a[i][i]);
}
程序运行后的输出结果是
A.1,6,5,7,B.8,7,3,1,C.4,7,5,2,D.1,6,2,1,
60.有以下程序
#include<stdio.h>
#include<string.h>
typedefstruct{charname[9];charsex;floatscore[2];}STU;
voidf(STUa)
{STUb={"Zhao",′m′,850,900};inti;
strcpy(,);
a.sex=b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
}
main()
{STUc={"Qian",′f′,95.0,92.0};
f(c);
printf("%s,%c,%2.0f,%2.0f\n",,c.sex,c.score[0],c.score[1]);
}
程序的运行结果是
A.Qian,f,95,92B.Qian,m,85,90C.Zhao,f,95,92D.Zhao,m,85,90
四、选择题(20题)61.以下数据结构中不属于线性数据结构的是______。
A.队列B.线性表C.二叉树D.栈
62.
63.已知函数的调用形式:fread(buf,size,count,fp),参数buf的含义是
A.一个整型变量,代表要读入的数据项总数
B.一个文件指针,指向要读的文件
C.一个指针,指向要读入数据的存放地址
D.一个存储区,存放要读的数据项
64.
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
65.
66.如果将主文件型指针fp指向的文件内部指针置于文件尾,正确的语句是()。
A.feof(fp);
B.rewind(fp);
C.fseek(fp,OL,0);
D.fseek(fp,OL,2);
67.有以下程序:
程序运行后的输出结果是()。
A.9B.8C.7D.10
68.下列说法不正确的是()。
A.调用函数时,实参可以是表达式
B.调用函数时,实参与形参可以共用内存单元
C.调用函数时,将实参的值复制给形参,使实参变量和形参变量在数值上相等
D.调用函数时,实参与形参的类型必须一致
69.
70.
设有定义:“inta;floatb;”,执行“scanf("%2d%f",&a,&b);”语句时,若从键盘输入876543.0<回车>,a和b的值分别是()。
A.876和543.000000
B.87和6.000000
C.87和543.000000
D.76和543.000000
71.有以下程序
72.以下函数实现按每行8个输出w所指数组中的数据
73.有以下程序段:
以下选项中表达式的值为11的是()。
A.
B.
C.
D.
74.
75.
76.若有如下定义,则__________是对数组元素的正确的引用。.
inta[10],*p;p=a;
A.*&a[10]B.a[11]C.*(p+11)D.*p*p*p
77.设有如下三个关系表:
78.设有以下说明语句:
则下面的叙述中不正确的是()。
A.struct结构体类型的关键字
B.example是结构体类型名
C.x,y,z都是结构体成员名
D.struetex是结构体类型名
79.以下程序的运行结果是
#defineMIN(x,y)(x)<(y)?(x):(y)
main()
{
inti=10,j=15,k;
k=10*MIN(i,j);
printf("%d\n",k);
}
A.10B.15
C.100D.150
80.有以下程序:
#include<stdio.h>
intfun()
{staticintx=1;
X*=2:
returnx;
}
main()
{inti,S=1;
for(i=1;i<=3;i++)S*=fun();
printf("%d\n",s);
}
程序运行后的输出结果是()。
A.0B.10C.30D.64
五、程序改错题(1题)81.下列给定的程序中,函数proc()的功能是:用选择法对数组中的n个元素按从大到小的顺序进行排序。请修改程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.请编写函数proc,其功能是将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数个位和十位上,b数的十位和个位数依次放在c数的百位和千位上。例如,当a=25,b=43,实际输入时个数之间以Enter键分隔,调用该函数后,c=3452。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B函数调用时,prt函数的作用是为使m数组中的数自增1,因此数组下标从0开始,每个元素都自加1。
2.A
3.B
4.C
5.B
6.A预处理是在程序编译之前进行的,所以A选项错误。故本题答案为A选项。
7.D
8.B在C语言中,函数定义是平行的,函数不能嵌套定义,即函数之间没有从属关系。虽然函数之间可以相互调用,但main函数不能被调用,选项A)错误;C程序从main函数开始执行,当main数执行完毕时,整个程序就结束了。C程序的执行必须从main函数开始,选项C)选项错误;函数不能嵌套定义,选项D)错误。
9.Bmain函数中的局部变量m与fun函数中的静态局部变量m同名,因此main访问的是其局部变量m,所以main中的两次函数调用,实际上都是调用fun(1,1)。
第一次调用时,i=i+(m+1)=2+(0+1)=3,m=i+x+y=3+1+1=5。
第二次调用时,i=i+(m+1)=3+(5+1)=9,m=i+x+y=9+1+l=11。
所以程序输出5,11。
10.D解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算工具以及程序员的水平无关。
选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误。因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。
选项C错误,因为根据一个算法所编制出的程序程序中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。
所以,本题的正确答案为D。
11.C
12.C
13.C
14.D
15.A解析:对未给出初始值的整数数组元素,被默认初始化为零。
16.C
17.D
18.B解析:当一个数组中的元素均为指针类型数据时,该数组就称为指针数组。int*p[3]表示此数组是指针类型的,每个数组元素(指针变量)都是指向一个整型的指针变量。
19.C
20.D解析:本题考查do…while循环。当--寸是0(即y是0)时结束循环,输出y--是先输出y的值再将y的值减1。
21.a=a+ba=a+b解析:a+=b与a=a+b等价,作用是把变量a的值加b后再赋给变量a。
22.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。
23.空间复杂度和时间复杂度空间复杂度和时间复杂度解析:算法的复杂性是指对—个在有限步骤内终止算法和所需存储空间大小的估计。算法所需存储空间大小是算法的空间复杂性,算法的计算量是算法的时间复杂性。
24.1343113431解析:本题看似考查链表的知识,其实只是考查了结构体数组。程序首先定义了一个结构体NODE,在主函数中声明了一个该结构体的数组m[5]和
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 食品加工厂高管招聘合同样本
- 医院建设三方施工合同
- 住宅小区砌体施工合同
- 咨询公司内勤管理合同
- 武义食堂对外承包合同范例
- 舞台布景委托合同三篇
- 装修承包合同(2篇)
- 退租协议书样本
- 团队境内旅游合同第15条
- 花洒定制合同范例
- 国家开放大学《合同法》章节测试参考答案
- 2.1.1国外生态文明建设的发展历程
- 餐厅服务员考核评分表
- 人教版(2019)高一物理必修第三册 13.5能量量子化 课件(共18张PPT)
- 杭州湾跨海大桥项目融资方案
- 劳动最光荣六年级美术(课堂PPT)
- 天然药物化学试题库及答案(六套)
- 硫化钠理化特性表
- 美术教案雄伟的塔教学反思
- 消防主机陆和新LH160调试
- 工商管理本 组织行为学作业4答案
评论
0/150
提交评论