版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.以下叙述中不正确的是()。
A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量
3.设”inta=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是()。
A.15B.26,15C.15,26D.26
4.若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
5.数字字符“2”的ASCII码为十进制数50,数字字符“5”的ASCII码为十进制数()
A.52B.55C.54D.53
6.以下叙述中错误的是()。
A.C程序中的#include和#define行均不是C语句
B.除逗号运算符外,赋值运算符的优先级最低
C.C程序中,j++;是赋值语句
D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
7.由两个栈共享一个存储空间的好处是______。
A.减少存取时间,降低下溢发生的几率
B.节省存储空间,降低上溢发生的几率
C.减少存取时间,降低上溢发生的几率
D.节省存储空间,降低下溢发生的几率
8.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
9.有以下程序:#includeMain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是()。A.E,68.B.D.69C.E,DD.输出无定值
10.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}执行后输出结果是()。
A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,
11.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务
12.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);
A.100000B.8C.40D.77
13.以下程序是用来计算两个非负数之间的最大公约数:我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)
14.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
15.
16.带头结点的单链表head为空的判定条件是()。
A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL
17.有以下程序:#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.**##
18.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C.进行出入与删除时,不需要移动表中的元素
D.以上三种说法都不催
19.在以下一组运算中,优先级最高的运算符是()
A.<=B.=C.%D.&&
20.
二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
22.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。
#include<atdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立链表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
23.性表的多种存储结构中,最简单的方法是【】。
24.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。
25.阅读下列程序,则程序的输出结果为【】。
#include"stdio.h"
structty
{intdata;
charc;};
main()
{structtya={30,'x'};
fun(a);
printf("%d%c",a.data,a.c);}
fun(structtyb)
{b.data=20;
b.c='y';}
26.在深度为7的满二叉树中,度为2的节点个数为()。
27.以下程序运行时若从键盘输入:102030<回车>。输出结果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
28.以下程序的运行结果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-1)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%5ld\n",k);}
29.下面程序的输出是【】。
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);}
30.若有如下程序:
main()
{ints[]={1,2,3,4,5,6},*p=s;
printf("%d,%d\n",*(p+3),*(p+6));}
则程序运行后的输出结果是【】。
31.在进行软件结构设计时,应遵循的最主要原理是【】。
32.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【】);。
33.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
34.在树形结构中,没有前件的结点是()。
35.下列程序的运行结果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
36.下面程序的运行结果是【】。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;
sub(s,7,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--;}}
37.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
return(num);
}
38.设有以下变量定义,并已赋确定的值,
charw;intx;floaty;doubleZ;
则表达式:w*x+z-y所求得的数据类型为上【】。
39.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
voidfunc(intx,inty,【】z)
{*z=x+y;}
40.下列程序可以判断输入的年份是不是闰年。
#include
main()
{int【】,leap;
scanf("%d",&year);
if(year%4)
leap=0;
elseif(year%lO0)
【】;
elseif(year%400)
leap=0;
else
leap=1;
if(【】)
printf("%d年是闰年",year);
else
printf("%d年不是闰年\n",year);
}
三、1.选择题(20题)41.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若从键盘输入:abcdef<回车>,则输出结果是()。
A.defdefB.abcdefC.abedD.dd
42.若x=2,y=3,则x&y的结果是()。
A.0B.2C.3D.5
43.结构化程序设计主要强调的是()。
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性
44.以下程序的输出是______。structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],60,&dt[2],60,&dt[3]};main(){p=aa;printf("%d\n",++(p->X));}
A.51B.11C.50D.60
45.关系表中的每一行记录称为一个()。
A.字段B.元组C.属性D.关键码
46.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是
A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述说法都不对
47.结构化程序设计的一种基本方法是()
A.筛选法B.递归法C.归纳法D.逐步求精法
48.以下程序的输出结果是#include<stdio.h>main(){inta=15/b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf("%d\n",m);}
A.1B.2C.3D.4
49.当下面的程序运行后,变量c的值为______。main(){inta=45,b=27,c=0;c=max(a,b);}intmax(x,y)intx,y;{intz;if(x>y)z=x;elsez=y;return(z);}
A.45B.27C.0D.72
50.若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。
A.a=a+7;B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b
51.若程序中定义了以下函数:doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是()。
A.doublemyadd(doublea,b);
B.doublemyadd(double,double);
C.doublemyadd(doubleb,doublea);
D.doublemyadd(doublex,doubley);
52.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
53.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。
A.地址传递B.单向值传递C.由实参传绐形,再由形参传回实参D.传递方式由用户指定
54.函数fseek的正确调用形式是()。
A.fseek(位移量,起始点,文件类型指针);
B.fseek(文件类型指针,位移量,起始点);
C.fseek(文件类型指针,起始点,位移量);
D.fseek(起始点,位移量,文件类型指针);
55.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}
A.非法B.a[4]的地址C.5D.3
56.软件调试的目的是______。
A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能
57.设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f的值的数据类型为()。
A.intB.floatC.doubleD.不确定
58.若变量已正确说明为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<回车>
59.若有以下程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的输出结果是()。
A.6B.8C.4D.2
60.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+1
四、选择题(20题)61.
下列程序的运行结果是()。
#include<stdio.h>
main
{inta=2,b=3,c=4:
if(a<b)
if(b<0)C=0:
elsec++;
printf("%d\n",c);
}
A.2B.3C.5D.4
62.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
63.设有关系R和S,关系代数表达式为R一(R—S)表示的是()。
A.R∩SB.R—SC.RUSD.R÷S
64.
65.一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A.一对一B.一对多C.多对多D.多对一
66.
67.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
68.
69.下列叙述中错误的是()。
A.C程序可以由多个程序文件组成
B.一个c语言程序只能实现一种算法
C.c程序可以由一个或多个函数组成,
D.一个C函数可以单独作为一个C程序文件存在
70.
71.下列选项中属于结构化程序设计原则的是()。
A.可封装
B.多态性
C.自下而上
D.逐步求精
72.有以下程序:
程序的运行结果是()。
A.1212B.117C.1111D.127
73.有下列程序:
main
{inty=10;
do{y--;}while(--y);
printf("%d\n",--y);
)
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
74.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
75.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是()。
A.1B.2C.4D.死循环
76.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
77.
78.
79.以下程序运行时,若从键盘输入l02030<回车>,输出的结果是()。
A.10200B.102030C.10300D.10030
80.
五、程序改错题(1题)81.写出下列程序的运行结果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、程序设计题(1题)82.假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“##w#e1##come###”,删除后,字符串中的内容则应当是“welcome”。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.C
3.C
4.B解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。
5.D
6.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。
7.B解析:常常一个程序中要用到多个栈,为了不发生上溢错误,就必须给每个栈分配一个足够大的存储空间。但实际中,很难准确地估计,若每个栈都分配过大的存储空间,势必造成系统空间紧张;若让多个栈共用一个足够大的连续存储空间,则可利用栈的动态特性使他们的存储空间互补。
8.B解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受—个字符(回车符也算是—个字符),所以getchar()不能用宋读入字符串。scanf()函数要求按—定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为—个字符,也就无法读入空格字符。函数gets()的作用是从终端输入—个字符串\u3000(包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。
9.A本题目中字符变量c1是字符'A'的ASCII码加上4,即69所对应的字符E'。字符变量c2是字符'A'的ASCII码加上3,即68所对应的字符D'。但是打印输出时,c1以%c的格式输出,所以是E,c2以%d的格式输出,所以是68。
10.A解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。由程序可以看出函数f(a,i,j)为一递归函数,其功能是当i<j时,将数组中的元素a[i]和a[j]交换,然后再调用函数f(a,i+1,j-1),将数组中a[i+1]和a[j--]交换,这样一直递归到数组下标i=j,可见该递归函数的作用是使数组中首尾元素依次互换。主函数中定义了一个长度为5的数组aa并初始化,然后调用f(a,0,4),将数组a中的元素依次互换,故最后for循环输出的数组aa中各元素的值为5、4、3、2、1,所以,4个选项中选项A符合题意。
11.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。
12.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。
13.B
14.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。
15.B
16.B
17.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选项。
18.C
试题2分析
结点的存储顺序和逻辑顺序不一定一致,存储空间也不一定连续。插入和删除元素的时候,不需要移动表中的元素。
试题2答案
C
19.C
20.D
21.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
22.p!=NULL或P或p!=0或p!='0'p->next或(*p).nextp!=NULL或P或p!=0或p!='0'\r\np->next或(*p).next解析:程序中定义了一个结构体类型名Node,其中定义了一个指向结点类型的指针next。接下来用Node定义了头结点指针变量h和指向第一个结点的指针变量p,在满足p未指向最后一个结点的空指针时(即为NULL),输出p所指向结点的字符串,所以第一处应填p!=NULL,然后将p指向下一个非空结点,所以第二处应填P->next或与其等效的形式,反复执行直到所有的结点都输出。
23.顺序存储顺序存储
24.BB解析:因为c是字符类型变量,它只能接收一个字符,所以c=A,字符型变量在参与算术运算的时候是用其相应的ASCII码参与运算的,这样++c得到字母B的ASCII码,用putchar函数输出是输出其相应的字符,所以是B。
25.30x30x解析:本题的参数传递属于值传递,所以函数内不能改变调用函数中的数据。
26.6363解析:满二叉树的第k层上有2k-1个结点,度为k的满二叉树一共有2k-1个结点,由二叉树的性质可知:除去第k层上的结点,其他所有结点都是度为2的结点,所以度为2的结点数为2k-1-2k-1,即27-1-27-1=63。
27.1030010300解析:本题的scanf()函数要求用户输入三个十进制整数,但只接受第一和第三个到函数的第二和第三个参数所指的内存地址中。所以本题的输出为:10300。
28.k=5k=5解析:本题主要考查了函数的递归调用方法。g=0或\ue008g=1\ue009或g=2是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。
29.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;
30.4不定值4,不定值
31.模块独立原理模块独立原理
32.d1.dat"rb"d1.dat,'rb'解析:打开文件的函数为fopen('文件名','mode'),其中'mode'表示文件的打开方式。如果打开的是二进制文件,其mode字符串可以是:'rb'、'wb'、'ab'、'rb+'、'wb+'、'ab+'。'r'表示以只读方式打开。'w'表示以写方式打开,如果已存在该文件名的文件,文件中的内容将被清空。若文件名不存在,则将创建该文件。'a'为追加方式打开。若文件存在时,将打开这个文件并且在文件的末尾进行追加。当文件不存在,将创建新文件。'r+'打开一个已存在文件用于更新(可读可写)。\'w+'创建一个新文件用于更新,如果文件存在,文件被重写(可读可写)。'a+'打开用于追加,当文件不存在时,创建新文件,并在文件末尾进行追加(可读可写)。根据题意,应该填'd1.dat','rb'。
33.3!feof(f1)3\r\n!feof(f1)解析:要实现文件复制,需要指定源文件及目的文件,因此在命令行下执行程序时至少要指定两个参数,加上程序名本身,故argc的值至少为3,因此第一空应填3。while循环中语句fputc(fgetc(f1),f2);的目的是将f1中的字符依次读出并写入到f2对应的文件中去,直至文件f1结束为止,因此第二空为!feof(f1)。
34.根结点根结点
35.2525解析:本题考查带参数的宏的定义及相关运算。运算过程为:t=POW(x+y)=(2+3)*(2+3)=25。
36.abcdefglkjIhabcdefglkjIh解析:本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。
37.0'或0或NULLn++或++n或n=n+1或n+=10'或0或NULL\r\nn++或++n或n=n+1或n+=1
38.double型或双精度型double型或双精度型解析:①先进行w*x的运算,先将字符型w转换成整型,运算结果为整型;②再将w*x的结果与z相加,要先将第一步的整型转换为double型,运算结果为double型;③最后将w*x+z的结果与y相减,要先将float型y转换成double型,结果为double型。
39.int*int*解析:从题中代码可知:z应该是一个整型指针,因此应填int*。
40.yearleap=1leap
41.A解析:本题首先定义两个字符型指针变量p和q,通过malloc()函数申请20个字符的存储空间,并把它的首地址赋给p,在把p的值赋给q,p和q指向同一个存储区。在scanf()语句中读取字符串到p和q指向的字符串,先把“abc”读取到p指向的存储区中,第一个空格是结束标记,第二个空格是分隔符,再把“def”存放到q指向的存储区,把原先的内容覆盖。所以p和q指向的存储区中内容是“def”,所以最后输出的def,def所以4个选项中A正确。
42.B解析:本题主要考查按位与(&)运算的知识点。“&”是对两个运算量相应的位进行逻辑与,“&”的规则与逻辑与“&&”相同。x=2的二进制为00000010,y=3的二进制为00000011,x&y=00000010,转化为十进制即为2。
43.D解析:程序不仅是编写完就结束了,为了测试和维护程序,往往还有其他人阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,即程序的易读性,“清晰第一,效率第二”。
44.A解析:p是指向结构aa的结构指针,++(p->x)是对p的x成员的值进行加1。p=aa使得p指向aa的首地址,p->x的值为50,那么++(p->X)就等于51。
45.BB)【解析】在关系表中,每一列称为一个属性,对应表中的一个字段;每一行称为一个元组,对应表中的一条记录。
46.C解析:a数组存放的是字符串,系统会自动在字符串的最后加上一个'\\0',所以a数组的长度为4,而b数组的长度为3,故a数组长度大于b数组长度。
47.D解析:在结构化程序设计中,通常采取自顶向下、逐步求精的方法,尤其是在详细设计和编码阶段,其总的思想就是先全局后局部、先整体后细节、先抽象后具体、程序自顶向下、逐步细化。而筛选法、递归法和归纳法指的都是程序的某种具体算法。逐步求精法是结构化程序设计中很重要的思想,一定要牢记!
48.A解析:switch语句的条件是“a%3=15%3=0”,所以执行case0后面的语句,m++;m=1,然后就执行break,跳出switch语句,所以最后输出的m的值为1。注意:switch嵌套语句的使用。
49.A
50.B
51.A解析:函数声明是对所用到的函数的特征进行必要的声明,编译系统以函数声明中给出的信息为依据,对调用表达式进行检测,以保证调用表达式与函数之间的参数正确传递。函数声明的一般格式为:
类型标识符函数名(类型标识符形参,…);
这些信息就是函数定义中的第一行的内容。这里形参的名字是不重要的,重要的是类型标识符,函数声明中也可以不写形参名只写该形参的声明类型,但不能只写形参名而不写该形参的类型。本题中,选项A中doublemyadd(doublea,b),没写出形参b的类型。
52.D解析:本题考查了考生对字符串常量的理解。字符串常量是一段以双引号括起来的字符序列,它既可以出现在对字符数组的初始化中,也可以出现在表达式中。当它用于对字符数组的初始化时,应注意系统自动为其添加的结束标志'\\0'。而当它出现在表达式中时,应该将其看作一个constchar*类型的指针常量。在选项A中,首先定义了一个字符指针sp,然后将一个字符串赋给甲所指的地址,这是错误的。因为sp是一个未经初始化的野指针,不知其指向哪儿,往一个不确定的地址中写数据很容易让程序出错。选项B首先定义了一个字符数组,然后将一个字符串赋给数组名,这是错误的。因为数组名是一个指针常量,不可以被改变。选项C首先定义了一个字符数组,然后将一个字符串赋给数组的第一个元素,这也是错误的。因为字符串在表达式中相当于一个常字符指针,将一个指针值赋给一个字符型变量是行不通的。选项D是定义一个字符指针sp,同时使其指向一个字符串常量,即将一个常字符型指针赋给sp。这是可行的。所以,4个选项中选项D符合题意。
53.B解析:C语言函数中的参数传递方式有传值与传址两种方式,传值方式是指将实参的值复制一份传递给形参,而传址方式是指将实参的变量地址传递给形参,也就是实参的引用。
54.B解析:改变文件位置的指针函数fseek()的调用形式为:fseek(fp,offset,position);。fseek函数参数说明:“fp”是指向该文件的文件型指针;“offset'’为位移量,指从起始点position.到要确定的新位置的字节数。也就是以起点为基准,向前移动的字节数。ANSIC要求该参数为长整型量;“position”为起始点,指出以文件的什么位置为基准进行移动,position的值用整型常数表示,“0”表示文件的开头,“1”表示文件的当前位置,“2”表示文件的末尾。
55.C解析:本题中char*p=a+5;即相当于p=&a[5],而--p,是先要减1,则printf语句要输出的值就是a[4]。
56.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。
57.C解析:int型、float型、double型的数据可以混合,要先转换成同一类型再运算。10+‘a’运算后值的类型为int型,i*f运算后值的类型为double型,最后表达式值的类型为double型。
58.B解析:本题中,“%d%d%d”表示按整数输入数据,输入数据时,在两个数据之间以一个或多个空格间隔,也可以用回车键或Tab键。选项B)中不应该使用逗号。
59.D解析:在C语言中,数组元素下标是从0开始的;指针变量p指向数组的首地址。for循环语句中,指针变量p始终指向数组的首地址,因而执行循环赋值语句后数组各元素的值均变为2。
60.B解析:二维数组的元素可以看成是按矩阵形式存放的,总是先存放第一行的元素,再存放第二行的元素。数组第一维的下标是i,说明它前面还有i行,有i*m个元素,数组第二维的下标是j,说明它前面还有j列,有j个元素,所以共有i*m+j个元素。
61.C
\n本题考查if…else语句。第一个if语句,先判断条件,发现a<b条件成立,则执行第二个if语句,再判断条件,发现b<0条件不成立,则执行与其配对的else语句c++,c自加1,得c=5。
\n
62.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。
63.AR—s表示属于R但不属于s,R—(R—S)表示属于R但不属于(R—s),即相当于Rns。
64.A
65.C因为一个人可以操作多个计算机,而一台计算机又可以被多个人使用,所以两个实体之间是多对多的关系。
66.A
67.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。
68.C
69.B在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B错误。
70.C
71.D模块化、自顶向下、逐步求精和限制使用goto语句是结构化程序设计的原则。因此答案明显为D.逐步求精。
72.B根据宏替换的替换规则,我们可知,
73.A
\n本题考查do-while循环。当--y是0(即y是o)时结束循环,输出--y,先将y的值减1再输出Y的值。
74.B\n用带下标的指针变量引用一维数组元素若有以下定义和语句:“int*P,s[10],i;P=s}”,且o≤i<10,可以用&.s[i]、s+i和p+i三种表达式来表示s[i]的地址。同时可以用s[i]、*(s+i)和*(p+i)三种表达式来表示数组元素s[i]。
\n
75.A解析:因为在while循环的循环条件中,一运算符是前缀形式,所以表达式—k的值是k自减之后的值。程序开始时,将k的值初始化为5,然后进入while循环,因为—k的值为4(非零),所以执行循环体输出k-=3的值1,此时k的值也变为1。第2次执行循环条件,—k的值为0,所以循环结束。因此最后输出的结果是1,故应该选择A。
76.D解析:文件系统所管理的数据文件基本上是分散的、相互独立的,因此相对于数据库系统,以此为基础的数据处理存在3个缺点,数据冗余大、数据的不一致性、程序与数据的相互依赖(简称为数据依赖)。注意:文件系统和数据库系统各自的特点,人工管理阶段及数据库系统三代的特点。
77.B
78.D
79.C根据scanf函数附加的格式说明字符,可知%后的”*”是附加说明符,用来表示跳过它相应的数据,所以本题中忽略第2个数据的输入,则i=10,j=30,k的值不变,还是0,所以输出结果是l0300。
80.D
81.
82.
【解析】在while循环中,利用if判断表达式中每一个字符是否为“#”,如果不是,将其复制到字符串,否则跳过,这就实现了函数的功能。
(1)首先利用工作指针指向字符串,当指针不指向串尾时,就对字符串进行循环判断。
(2)在循环中利用if判断表达式字符是否为“#”,如果不是,将其复制到字符串,否则跳过。
(3)所有字符处理完后,记得在新串s的末尾加上结束符“ˊ\0ˊ”。
2021-2022年浙江省杭州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.
2.以下叙述中不正确的是()。
A.在一个函数中,可以有多条return语句
B.函数的定义不能嵌套,但函数的调用可以嵌套
C.函数必须有返回值
D.不同的函数中可以使用相同名字的变量
3.设”inta=15,b=26;”,则”printf(“%d,%d”,a,b);”的输出结果是()。
A.15B.26,15C.15,26D.26
4.若变量已正确定义,要求程序段完成5!的计算,不能完成此操作的程序段是______。
A.for(i=1,p=1;i<=5;i++)p*=i;
B.for(i=1;i<=5;i++){p=1;p*=i;}
C.i=1;p=1;while(i<=5){p*=i;i++;}
D.i=1;p=1;do{p*=i;i++;}while(i<=5);
5.数字字符“2”的ASCII码为十进制数50,数字字符“5”的ASCII码为十进制数()
A.52B.55C.54D.53
6.以下叙述中错误的是()。
A.C程序中的#include和#define行均不是C语句
B.除逗号运算符外,赋值运算符的优先级最低
C.C程序中,j++;是赋值语句
D.C程序中,+、-、*、/、%是算术运算符,可用于整型和实型数的运算
7.由两个栈共享一个存储空间的好处是______。
A.减少存取时间,降低下溢发生的几率
B.节省存储空间,降低上溢发生的几率
C.减少存取时间,降低上溢发生的几率
D.节省存储空间,降低下溢发生的几率
8.若要求从键盘读入含有空格字符的字符串,应该使用函数______。A.getc()B.gets()C.getchar()D.scanf()
9.有以下程序:#includeMain(){charc1,c2;c1='A'+'8'-'4';c2='A'+'8'-'5';printf("%c,%d\n",c1,c2);}已知字母A的ASCII码为65,程序运行后的输出结果是()。A.E,68.B.D.69C.E,DD.输出无定值
10.有以下程序:voidf(inta[],inti,intj){intt;if(i<j){t=a[i];a[i]=a[j];a[j]=t;f(a,i+1,j-1);}}main(){inti,aa[5]={1,2,3,4,5};f(aa,0,4);for(i=0;i<5;i++)printf("%d,",aa[i]);printf("\n");}执行后输出结果是()。
A.5,4,3,2,1,B.5,2,3,4,1,C.1,2,3,4,5,D.1,5,4,3,2,
11.结构化程序由三种基本结构组成,三种基本结构组成的算法A.可以完成任何复杂的任务B.只能完成部分复杂的任务C.只能完成符合结构化的任务D.只能完成一些简单的任务
12.下列程序段的输出结果是()。chara=9,b=020;prihtf("%o\n",~a&b<<1);
A.100000B.8C.40D.77
13.以下程序是用来计算两个非负数之间的最大公约数:我们假设x,y中最大的那个数的长度为n,基本运算时间复杂度为O(1),那么该程序的时间复杂度为()A.O(1)B.O(logn)C.O(n)D.O(n^2)
14.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
15.
16.带头结点的单链表head为空的判定条件是()。
A.head=NULLB.head→next=NULLC.head→next=headD.head!=NULL
17.有以下程序:#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.**##
18.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致
B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续
C.进行出入与删除时,不需要移动表中的元素
D.以上三种说法都不催
19.在以下一组运算中,优先级最高的运算符是()
A.<=B.=C.%D.&&
20.
二、2.填空题(20题)21.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
22.以下程序中函数fun()的功能是构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单向链表中所有结点中的字符串。请填空完成函数disp。
#include<atdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node
Node~un(chars)/*建立链表*/
{......}
voiddisp(Node*h)
{Node*Ps
p=h->next;
while(【】)
{printf("%s\n",p->suh);p=【】;}
}
main()
{Node*hd;
hd=fun();disp(hd);prinff("\n");
23.性表的多种存储结构中,最简单的方法是【】。
24.有下列程序;
#include<stdio.h>
main()
{charc;
while((c=getchar())!=',')putchar(++C);
}
程序运行时,如果从键盘输入:A,B,<CR>,则输出结果为______。
25.阅读下列程序,则程序的输出结果为【】。
#include"stdio.h"
structty
{intdata;
charc;};
main()
{structtya={30,'x'};
fun(a);
printf("%d%c",a.data,a.c);}
fun(structtyb)
{b.data=20;
b.c='y';}
26.在深度为7的满二叉树中,度为2的节点个数为()。
27.以下程序运行时若从键盘输入:102030<回车>。输出结果是【】。
#include<stdio.h>
main()
{
inti=0,j=0,k=0;
scanf("%d%*d%d",&i,&j,&k);
printf("%d%d%d\n",i,j,k);
}
28.以下程序的运行结果是【】。
#include<stdio.h>
longfib(intg)
{switch(g)
{case0:return0;
case1:
case2:return1;}
return(fib(g-1)+fib(g-2));}
main()
{longk;
k=fib(5);
printf("k=%5ld\n",k);}
29.下面程序的输出是【】。
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);}
30.若有如下程序:
main()
{ints[]={1,2,3,4,5,6},*p=s;
printf("%d,%d\n",*(p+3),*(p+6));}
则程序运行后的输出结果是【】。
31.在进行软件结构设计时,应遵循的最主要原理是【】。
32.若fp已正确定义为一个文件指针,d1.dat为二进制文件,请填空,以便为“读”而打开此文件:
fp=fopen(【】);。
33.实现程序可将磁盘中的一个文件复制到另一个文件中,两个文件的文件名在可执行命令的命令行中(相当于copy命令),假定文件在当前目录下。请补全程序。
#include<stdio.h>
voidmain(intargc,char*argv[])
{FILE*f1,*f2;
if(argc<【】)
{printf("parametererror!\n");exit(0);}
f1=fopen(argv[1],"r");
f2=fopen(argv[2],"w");
while(【】)fputc(fgetc(f1),f2);
fclose(f1);
fclose(f2);
}
34.在树形结构中,没有前件的结点是()。
35.下列程序的运行结果是______。
#definePOW(r)(r)*(r)
main()
{intx=3,y=2,t;
t=POW(x+y);
printf("%d\n",t);
}
36.下面程序的运行结果是【】。
#include<stdio.h>
#defineSIZE12
main()
{chars[SIZE];intI;for(I=0;I<SIZE;I++)s[I]=′A′+I+321;
sub(s,7,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--;}}
37.以下函数把b字符串连接到a字符串的后面,并返回a中新字符串的长度。请填空。
strcen(chara[],charb[])
{intnum=0,n=0;
while(*(a+num)!=【】)num++;
while(b[n]){*(a+num)=b[n];num++;【】;}
return(num);
}
38.设有以下变量定义,并已赋确定的值,
charw;intx;floaty;doubleZ;
则表达式:w*x+z-y所求得的数据类型为上【】。
39.以下函数用来求出两整数之和,并通过形参将结果传回,请填空。
voidfunc(intx,inty,【】z)
{*z=x+y;}
40.下列程序可以判断输入的年份是不是闰年。
#include
main()
{int【】,leap;
scanf("%d",&year);
if(year%4)
leap=0;
elseif(year%lO0)
【】;
elseif(year%400)
leap=0;
else
leap=1;
if(【】)
printf("%d年是闰年",year);
else
printf("%d年不是闰年\n",year);
}
三、1.选择题(20题)41.有以下程序:#include<stdlib.h>main(){char*p,*q;p=(char*)malloc(sizeof(char)*20);q=p;scanf("%s%s",p,q);printf("%s%s\n",p,q);}若从键盘输入:abcdef<回车>,则输出结果是()。
A.defdefB.abcdefC.abedD.dd
42.若x=2,y=3,则x&y的结果是()。
A.0B.2C.3D.5
43.结构化程序设计主要强调的是()。
A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序的易读性
44.以下程序的输出是______。structst{intx;int*y;}*p;intdt[4]={10,20,30,40};structstaa[4]={50,&dt[0],60,&dt[1],60,&dt[2],60,&dt[3]};main(){p=aa;printf("%d\n",++(p->X));}
A.51B.11C.50D.60
45.关系表中的每一行记录称为一个()。
A.字段B.元组C.属性D.关键码
46.已有定义:chara[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是
A.数组a和b的长度相同B.a数组长度小于b数组长度C.a数组长度大于b数组长度D.上述说法都不对
47.结构化程序设计的一种基本方法是()
A.筛选法B.递归法C.归纳法D.逐步求精法
48.以下程序的输出结果是#include<stdio.h>main(){inta=15/b=21,m=0;switch(a%3){case0:m++;break;case1:m++;switch(b%2){default:m++;case0:m++;break;}}printf("%d\n",m);}
A.1B.2C.3D.4
49.当下面的程序运行后,变量c的值为______。main(){inta=45,b=27,c=0;c=max(a,b);}intmax(x,y)intx,y;{intz;if(x>y)z=x;elsez=y;return(z);}
A.45B.27C.0D.72
50.若变量已正确定义并赋值,则以下符合C语言语法的表达式是()。
A.a=a+7;B.a=7+b+c,a++C.int(12.3%4)D.a=a+7=c+b
51.若程序中定义了以下函数:doublemyadd(doublea,doubleb){return(a+b);}并将其放在调用语句之后,则在调用之前应该对函数进行说明,以下选项中错误的说明是()。
A.doublemyadd(doublea,b);
B.doublemyadd(double,double);
C.doublemyadd(doubleb,doublea);
D.doublemyadd(doublex,doubley);
52.以下语句或语句组中,能正确进行字符串赋值的是______。A.char*sp;*sp="right!";
B.chars[10];s="right!";
C.chars[10];*s="right!";
D.char*sp="right!";
53.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是______。
A.地址传递B.单向值传递C.由实参传绐形,再由形参传回实参D.传递方式由用户指定
54.函数fseek的正确调用形式是()。
A.fseek(位移量,起始点,文件类型指针);
B.fseek(文件类型指针,位移量,起始点);
C.fseek(文件类型指针,起始点,位移量);
D.fseek(起始点,位移量,文件类型指针);
55.下列程序的输出结果是______。main(){chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;printf("%d",*--p);}
A.非法B.a[4]的地址C.5D.3
56.软件调试的目的是______。
A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能
57.设变量a是int型,f是float型,i是double型,则表达式10+'a'+i*f的值的数据类型为()。
A.intB.floatC.doubleD.不确定
58.若变量已正确说明为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<回车>
59.若有以下程序:#include<stdio.h>inta[]={2,4,6,8};main(){inti;int*p=a;for(i=0;i<4;i++)a[i]=*p;printf("%d\n",a[2]);}上面程序的输出结果是()。
A.6B.8C.4D.2
60.若二维数组a有m列,则在a[i][j]前的元素个数为()。
A.j*m+iB.i*m+jC.j*m+i+1D.i*m+j+1
四、选择题(20题)61.
下列程序的运行结果是()。
#include<stdio.h>
main
{inta=2,b=3,c=4:
if(a<b)
if(b<0)C=0:
elsec++;
printf("%d\n",c);
}
A.2B.3C.5D.4
62.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
63.设有关系R和S,关系代数表达式为R一(R—S)表示的是()。
A.R∩SB.R—SC.RUSD.R÷S
64.
65.一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是()。
A.一对一B.一对多C.多对多D.多对一
66.
67.若有下列定义(设int类型变量占2个字节):inti=8,j=9;则下列语句:printf("i=%%d,j=%%d\n",i,j);输出的结果是()。A.i=8,j=9B.i=%d,j=%dC.i=%8,j=%9D.8,9
68.
69.下列叙述中错误的是()。
A.C程序可以由多个程序文件组成
B.一个c语言程序只能实现一种算法
C.c程序可以由一个或多个函数组成,
D.一个C函数可以单独作为一个C程序文件存在
70.
71.下列选项中属于结构化程序设计原则的是()。
A.可封装
B.多态性
C.自下而上
D.逐步求精
72.有以下程序:
程序的运行结果是()。
A.1212B.117C.1111D.127
73.有下列程序:
main
{inty=10;
do{y--;}while(--y);
printf("%d\n",--y);
)
当执行程序时,输出的结果是()。
A.-1B.1C.4D.0
74.设有定义"doublea[10],*s=a;",以下能够代表数组元素a[3]的是()。
A.(*s)[3]B.*(s+3)C.*s[3]D.*s+3
75.
有以下程序:
main
{intk=5;
while(--k)printf("%d",k-=3);
printf("\n");
}
执行后的输出结果是()。
A.1B.2C.4D.死循环
76.相对于数据库系统,文件系统的主要缺陷有数据关联差、数据不一致性和()。
A.可重用性差B.安全性差C.非持久性D.冗余性
77.
78.
79.以下程序运行时,若从键盘输入l02030<回车>,输出的结果是()。
A.10200B.102030C.10300D.10030
80.
五、程序改错题(1题)81.写出下列程序的运行结果。
fun(inta,intb)
{if(a>b)return(a);
Elsereturn(b);}
main
{intx=3,y=8,z=6,r;
r=fun(fun(x,y),2*z);printf(“%d\n”,r);}
六、程序设计题(1题)82.假定输入的字符串只包含字母和“#”号,请编写函数fun(),它的功能是:删除字符串中所有的“#”号。在编写函数时,不得使用C语言提供的字符串函数。例如,若字符串中的内容为“##w#e1##come###”,删除后,字符串中的内容则应当是“welcome”。请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.B
2.C
3.C
4.B解析:选项B中每次执行循环体都要执行p=1,无法保存上次的运算结果,执行完while循环后p=5。
5.D
6.D解析:“%”是求余运算符,其两侧的数值只能为整型,不能用于实型数据的运算。
7.B解析:常常一个程序中要用到多个栈,为了不发生上溢错误,就必须给每个栈分配一个足够大的存储空间。但实际中,很难准确地估计,若每个栈都分配过大的存储空间,势必造成系统空间紧张;若让多个栈共用一个足够大的连续存储空间,则可利用栈的动态特性使他们的存储空间互补。
8.B解析:函数getchar()的作用是从终端(或系统隐含指定的输入设备)输入一个字符,且只能接受—个字符(回车符也算是—个字符),所以getchar()不能用宋读入字符串。scanf()函数要求按—定的格式来输入,若同时输入多个字符串,则以空格或回车分割,所以空格不能被识别为—个字符,也就无法读入空格字符。函数gets()的作用是从终端输入—个字符串\u3000(包括空格)至字符数组,直到遇到换行符为止,所以可以用来键盘读入空格字符。
9.A本题目中字符变量c1是字符'A'的ASCII码加上4,即69所对应的字符E'。字符变量c2是字符'A'的ASCII码加上3,即68所对应的字符D'。但是打印输出时,c1以%c的格式输出,所以是E,c2以%d的格式输出,所以是68。
10.A解析:在C语言中所谓函数的递归是指在调用一个函数的过程中,又出现了直接或间接调用该函数本身,直接调用该函数本身的称为函数递归,而间接调用该函数称为函数的间接递归调用。由程序可以看出函数f(a,i,j)为一递归函数,其功能是当i<j时,将数组中的元素a[i]和a[j]交换,然后再调用函数f(a,i+1,j-1),将数组中a[i+1]和a[j--]交换,这样一直递归到数组下标i=j,可见该递归函数的作用是使数组中首尾元素依次互换。主函数中定义了一个长度为5的数组aa并初始化,然后调用f(a,0,4),将数组a中的元素依次互换,故最后for循环输出的数组aa中各元素的值为5、4、3、2、1,所以,4个选项中选项A符合题意。
11.A解析:C程序由顺序结构、选择结构和循环结构三种基本的结构组成,这三种结构可以组成任何复杂的C程序,即可以完成任何复杂的任务。
12.C解析:将变量a按位求反,再与b按位与,最后左移1位。9的二进制表示为00001001,020的二进制表示为00010000。a按位求反为11110110,再与b按位与结果为00010000,左移1位结果为00100000。按八进制输出为040。
13.B
14.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。
15.B
16.B
17.Bmain函数中,根据“b=2,c=3”可知表达式“b>=2&&c<=3”为
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- Unit 4 Fun in the Sun Listening &Speaking 公开课一等奖创新教学设计(表格式)仁爱科普版(2024)七年级上册
- 2026年财务战略管理部长面试问题集
- 2026年职工服务中心副主任面试常见问题及答案
- 2026年上林县乔贤镇人民政府招聘备考题库及1套参考答案详解
- 2026年房地产企业财务部招聘面试题集
- 2026年电磁兼容性EMC与安全性测试的关系探讨
- 2026年数据工程师的招聘问题集与要点分析
- 2026年客户沟通协调师面试题及答案解析
- 2026年教育行业风险管理面试题及答案
- 2026年北京市公安局辅警招聘备考题库带答案详解
- 自然资源部所属单位2026年度公开招聘工作人员备考题库(第一批634人)含答案详解
- 2026课件-人工智能通识 教案 模块四-教学设计-人工智能通识-新版
- 加油站合伙合同协议书范本
- 细胞治疗课件
- 人教版八年级下册数学期末试卷测试卷(含答案解析)
- 2025年电商财务统一管理方案报告-帆软
- 具有较大危险因素的生产经营场所、设备和设施的安全管理制度
- 国家开放大学电大本科《物流信息系统管理》期末试题及答案1
- 新人教版高中生物必修一全册课时练(同步练习)
- 「梦回唐宋」-边塞诗(可编辑版)
- 九年级道德与法治(上)选择题易错50练
评论
0/150
提交评论