版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2022-2023年山东省济南市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.当调用函数时,实参是一个数组名,则向函数传送的是______。
A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值
2.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序运行后的输出结果是()。
A.ABCD0B.BCDE0C.BCDE1D.ABCD1
3.若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是()。
A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]
4.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
5.对于函数声明“voidfun(intarray[4],int*ptr);”,以下叙述中正确的是()。
A.array、ptr都是指针变量
B.调用fun函数时,实参的值将逐一复制给array
C.调用fun函数时,array按值传送,ptr按地址传送
D.array是数组,ptr是指针,它们的性质不同
6.有下列程序:程序执行后的输出结果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49
7.以下叙述中错误的是()。
A.可以通过typedef增加新的类型
B.可以typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
8.有以下定义:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能输出字母M的语句是()。
A.printf(“%c\n”,class[2].name[0]);
B.printf(“%c\n”,class[3].name[0]);
C.printf(“%c\n”,class[3].name[1]);
D.printf(“%c\n”,class[2].name[1]);
9.以下叙述中错误的是()。
A.C语言程序在运行过程中的所有计算都以二进制方式进行
B.C语言程序在运行过程中的所有计算都以十进制方式进行
C.所有C语言程序都需要编译、链接无误后才能运行
D.C语言程序中字符变量存放的是字符的ASCII值
10.两个或两个以上模块之间关联的紧密程度称为()。
A.耦合度B.内聚度C.复杂度D.数据传输特性
11.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
12.
13.下面程序运行后的输出结果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
14.堆是一种有用的数据结构。下列关键码序列()是一个堆。
A.94,31,53,23,16,72
B.94,53,31,72,16,23
C.16,53,23,94,31,72
D.16,31,23,94,53,72
15.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
16.有以下程序:
程序的运行结果是()。
A.0987654321
B.4321098765
C.5678901234
D.0987651234
17.对如下二叉树进行后序遍历的结果为()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
18.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
19.下列标识符不是关键字的是()。
A.breakB.charC.SwithchD.return
20.用链表表示线性表的优点是()。
A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同
二、2.填空题(20题)21.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
22.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
23.以下程序的输出结果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
24.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。
25.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta=10,b=3;
printf("%d,",a%b);
printf("%d,",(a-h,a+b));
printf("%d\n",a-b?a-b:a+b);
}
26.以下程序运行后的输出结果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
27.若有以下定义和语句,sizeof(a)的值是【】,sizeof(a.share)的值是【】。
structdate
{intday;
intmonth;
intyear;
union
{intshare1;
floatshare2;
}share;
}a;
28.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
29.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
30.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。
31.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
32.树中度为零的结点称为______。
33.填空补充以下程序。
#define【】30
{【】;
total=numPRICE;
printf("total=%d,num=%d\n",【】);
}
34.能把计算机处理好的结果转换成为文本、图形、图像或声音等形式并输送出来的设备称为【】设备。
35.以下程序运行后的输出结果是()。
main()
{inta=3,b=4,c=5,t=99;
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,A);
}
36.栈中允许进行插入和删除的一端叫做______。
37.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。
38.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
39.十进制数111用八位二进制数表示为【】。
40.下面程序的运行结果是【】。
#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<t1)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;}}
三、1.选择题(20题)41.己知x=3,y=2,则表达式x*=y+8的值为______。
A.3B.2C.30D.10
42.以下语句段执行后的输出结果是()。#include<stdio.h>main(){intk=3;if(k)printf("###")elseprintf("&&&&");}
A.###
B.&&&&
C.###&&&&
D.有语法错误,不能执行
43.设下面程序的可执行文件名为“prg.exe”,在该程序所在子目录下输入以下命令行:prghellogood<回车>则程序的输出结果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}
A.hellogoodB.hgC.helD.hellogood
44.若有定义:char*s=“Programming”;,以下叙述中有错误的是______。A.变量s中存放了字符P的地址B.s[0]中存放了字符PC.*s中存放了字符PD.s中存放了一个字符串
45.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetme<回车>
则程序输出的结果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正确
46.有以下定义:#include<stdio.h>chara[10],*b=a;不能给数组a输入字符串的语句是()。
A.gets(a)B.gets(a10])C.gets(&a[0});D.gets(b);
47.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
48.有如下定义语句:intaa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
A.3,2B.3,1C.2,2D.2,1
49.以下能正确定义一维数组的选项是
A.inta[5]={0,1,2,3,4,5};
B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
C.chara={′A′,′B′,′C′};
D.inta[5]="0123";
50.在位运算中,操作数每右移一位,其结果相当于()
A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16
51.C语言中逻辑表达式的值为()
A.0或1B.非零值或者零值C.ture或falseD.'ture'或者'false'
52.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
53.以下函数返回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
54.若有定义intx,y;,并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。
A.(x—y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-Y==0)
55.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c),给a赋予10.0,b赋予22.0,b赋予33.0,不正确的输入形式是()
A.10<回车>22<回车>33<回车>
B.10.0,22.0,33.0<回车>
C.10.0<回车>22.O33.00<回车>
D.10.22<回车>33<回车>
56.如果需要打开一个已经存在的非空文件"Demo"进行修改,下面选项中正确的是
A.fp=fopen("Demo","r");
B.fp=fopen("Demo","ab+");
C.fp=fopen("Demo","w+");
D.fp=fopen("Demo","r+");
57.下列程序的输出结果是______。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不确定(因变量无定义)B.0C.-1D.1
58.下面程序运行后的输出结果是_____。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
59.可在C程序中用作用户标识符的一组标识符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
60.能正确表示代数式的C语言表达式是()
A.3*xn/(2*x-1)
B.3*x**n/(2*x-1)
C.3*pow(x,n)*(1/(2*x-1))
D.3*pow(n,x)/(2*x-1)
四、选择题(20题)61.有以下程序:
当执行程序时,按下列方式输入数据(从第l列开始,<;CR>;代表回车,注意:回车也是一个字符]12<;CR>;34<;CR>;则输出结果是()。
A.12B.123C.1234D.12343
62.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
63.有以下程序:
程序运行后的输出结果是()。
A.16B.1C.32D.0
64.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()
A.数据的存储结构B.计算方法C.数据映像D.逻辑存储
65.对于循环队列,下列叙述中正确的是()。
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
66.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。
A.20B.0或35C.15D.16
67.
68.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析
69.
70.源程序的文档不包括()。
A.符合号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
71.
72.以下选项中,能用作数据常量的是()。
A.115LB.0118C.1.5el.5D.0115
73.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。
A.k%2==0B.k%2==1C.!k%2==1D.都不同
74.
75.
76.设有charstr[10],下列语句正确的是
A.scanf("%s",&str);B.printf("%c",str);
C.printf("%s",str[0]);D.printf("%s",str);
77.下列关于算法复杂度描述正确的是()。
A.算法的时间复杂度是指算法执行的时间
B.算法的空间复杂度是指执行这个算法所需的内存空间
C.一个算法的空间复杂度大,则其时间复杂度必定大
D.一个算法的空间复杂度大,则其时间复杂度必定小
78.有以下程序执行程序时,给变量X输入l0,程序的输出结果是()。
A.55B.54C.65D.45
79.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):
C.scanf("%d",p);
D.scanf("%d",&p);
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是计算并输出h以内的素数之和。h由主函数传给proc()函数。若h的值为80,则函数的值为791。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。
注意:部分源程序给出如下。
请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
参考答案
1.B解析:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:
①形参定义成数组;
②形参定义成可变长数组:
③形参定义为指针变量。
2.C函数putchar每次输出一个字符。表达式“*str+1”将对字符加1,因此字符串“ABCD”的每个字符都加1,字符串结束标识‘\\0’也会加1,输出1,结果为BCDE1。故本题答案为C选项。
3.C
4.C
5.A声明函数fun“voidfun(intarray[4],int*ptr);”,第1个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用;第2个参数是指针。两个形参都是指针,传递的都是地址,可知选项B、C、D错误。故本题答案为A选项。
6.B对于题干中的宏,替换如下:S1(a+b,a+b),&+1>)等价于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a),等价于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等价于(a+b)*(a+b),即(2+5)*(2+5),等于49;S2(a+b,b+a)等价于(a+b)*(b+a),即(2+5)*(5+2),等于49。本题答案为B选项。
7.A关键字typedet的作用只是将C语言中的已有的数据类型作了置换,并不是增加新的类型,所以A)错误。
8.AC语言规定数组的下标从0开始,结构体数组class初始化了前4个元素。第3个元素的name=“Marry”,则class[2].name[0]=‘M’。故本题答案为A选项。
9.BC语言程序在运行过程中的所有计算都以二进制方式进行,所以B选项错误。故本题答案为B选项。
10.A解析:本题考核模块独立性的评价。评价模块独立性的主要标准有两个;一是模块之间的耦合,它表明两个模块之间互相独立的程度,也可以说是两个或两个以上模块之间关联的紧密程度(所以,本题的正确答案为选项A);二是模块内部之间的关系是否紧密,称为内聚。一般来说,要求模块之间的耦合尽可能地弱,即模块尽可能独立,而要求模块的内聚程度尽量地高。
11.Cf函数的功能是对形参a的各个成员用结构体变量b的各个成员进行赋值后,然后返回变量a。
12.C
13.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。
14.D
15.DC语言的合法的标识符的命名规则是:标识符可以由字母、数字和下划线组成,并且第1个字符必须是字母或下划线。选项D错误。本题答案为D选项。
16.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}。所以正确答案为c)。
17.D解析:后序遍历指在访问根结点、遍历左子树与遍历右子树这三者中,道先遍历左子树,然后遍历右子树,最后访问根结点:并且遍历左、右子树时,仍然先遍历左子树,然后遍历右子树,最后访问根结点。
18.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。
19.C在C语言中,字母区分大小,所以break、char、return、switch都是C语言中的关键字,而Swithch不是。
20.C【解析】在链表中因为除了存放数据元素之外,还要存放指针,所以链表花费的存储空间要比顺序表还要多,在插入和删除数据元素时,只需要移动相应的记录指针即可,在链表中,数据的物理结构与逻辑结构不一定相同,因为是靠指针来实现对数据的指定的,所以不能进行随机存取。
21.1212解析:x=(表达式1,表达式2,…)的形式,结果为最后一个表达式的值:x=(a=4,6*2)=2*6=12。
22.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。
23.2222解析:在main函数中,调用reverse函数将b数组中的前8个成员进行互置,执行完毕后,b数组中的成员为{8,7,6,5,4,3,2,1,9,10},然后再执行for循环结构,将b[6],b[7]...b[9]的值相加,结果为22。
24.77解析:此表达式为三目运算符,++a的值为6,b--的值为6,则整个表达式的值为++a的值,++a的值为7。请注意前缀++,--和后缀++,--的区别。
25.11371,13,7解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1:②(表达式1,表达式2)形式的结果为最后一个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13;③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。
26.9292解析:本题的主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。先看while循环,该循环通过i++的值来判断是否结束循环,当i++的值为4的时候结束循环,当i=O时,执行while的循环体,显然if语句条件不满足不执行,接着让j=0,然后执行do-while循环体,不难看出do-while循环的功能是将第i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把第3+1行的所有元素的值加到s上,此时s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。
27.104
28.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,循环条件不成立,则退出循环。
29.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。
30.4545解析:假设线性表的长度为n,则在最坏情况下,冒泡排序需要经过遍的从前往后扫描和遍的从后往前扫描,需要比较次数为。
31.完善性软件维护活动包括以下几类:改正性维护,适应性维护、完善性维护和预防性维护,完善性维护是指为了满足用户对软件提出的新功能与性能要求,需要修改或再开发软件,以扩充软件功能、增强软件性能、改进加工效率、提高软件的可维护性。
32.叶子结点叶子结点解析:树中度为零的结点,也就是没有后件的结点,称为叶子结点。
33.PRICEintnumtotaltotalnum
34.输出输出
35.45994599解析:a、b、c的初值为3、4、5,t的初值为99,if语句的条件“b<a&&b<c”为假,不执行“t=a;”,但紧随其后的“a=c;c=t;”与此if语句无关,仍被执行。此时a的值为5,b的值仍是4,c的值为99。再执行第二个if语句,由于此时“a<c&&b<c”为真,执行“t=b;”,紧随其后的“b=a;a=t;”与此if语句无关,也被执行。此时a的值为4,b的值是5,c的值为99。因此输出结果是:4599。
36.栈顶栈顶解析:栈是限定在表的一端进行插入和删除操作的线性表。在表中,允许插入和删除的一端叫做“栈顶”,不允许插入和删除的一端叫做“栈底”。
37.关系模型关系模型
38.246
39.11011111101111解析:本题通过除2取余法即可求出十进制数111所对应的二进制数1101111。
40.abcdefglkjihabcdefglkjih解析:本题主要考查了字符变量可参与的运算。因为字符在计算机中是以ASCII码的形式存放的,所以字符变量可看作整型变量来处理,如参与算术运算等,某字符的大写字母的ASCII码值比它对应的小写字母ASCII码值小32。
41.C解析:表达式x*=y+8即x=x*(y+8),所以其值为3*(2+8)=30。
42.D解析:在C语言中语句结束时应该以分号结尾,程序中的第1个printf('###')输出语句后面少了一个分号(;),因此执行程序时会出错。
43.B
44.D将一个字符型指针s指向一个字符串,s中存放的是该字符串的首地址。
45.B解析:argc中存入的是命令行中字符串的个数。argv是一个指向字符型的指针数组的指针。
46.B解析:函数gets()的调用形式为gets(str_adr);str_adr存放字符串的起始地址。可以是字符数组名、字符指针或字符数组元素的地址。gets函数用来从终端键盘读入字符串(包括空格符),直到读入一个换行符为止。本题中定义一个长度为10的字符数组,和一个指针变量b,并且通过赋值让它指向数组a。选项A、选项B、选项C和选项D中只有选项B中gets函数的参数a[0]不能表示数组a的首地址,故选项B不正确。所以,4个选项中选项B符合题意。
47.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。
48.C解析:考查对于第一维大小的决定规则的掌握情况。第一维大小的决定规则:当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小。当初值的个数不能被第二维的常量表达式的值除尽时,则第一维的大小;所得的商数+1。数组元素的下标(行列号)是从零开始的。
49.B解析:选项A)中,定义的初值个数大于数组的长度;选项C)中,数组名后少了中括号;选项D)中,整型数组不能赋予字符串。
50.B
51.A
52.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。
53.D解析:该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。
54.C
55.B
56.D解析:此题考查文件打开方式对文件操作的影响。由于打开文件进行修改,可见选项A)是错误的,因为此种方式打开时,只能读,不能写,当然无法修改;选项B)是以追加方式'ab+'打开文件读写,以这种方式打开时,新写入的数据只能追加在文件原有内容之后,但可以对以前的数据读出。换言之,'ab+'或'a+'方式打文件后,对于写操作,文件指针只能定位在文件的原有内容之后,但对于读操作,文件指针可以定位在全文件范围内,可见,按此种方式打开文件不能实现文件内容的修改;选项C)以'w+'方式打开文件,此时,原文件中已存在的内容都被清除,但新写入文件的数据可以被再次读出或再次写入,故也不能实现对文件的修改。只有以'r+'方式打开文件时,才允许将文件原来数据读出,也允许在某些位置上再写入,从而实现对文件的修改。
57.B
58.B解析:在main函数中定义了一个structabc类型的数组,同时分别利用{1,2,3}及{4,5,6}对数组中两个元素进行初始化。在该结构体,依次对其中的a,b,c三个变量进行初始化。故s[0].a=1,s[1].b=5,所以本题输出为6。
59.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。
60.C
61.D按照从键盘输入的数据可以_判断字符l给了变量a,字符2给了变量b,字符<CR>即回车给了变量c,字符3给了变量d。所以打印输出的结果为D选项。
62.D本题考查逻辑运算符的使用。当“&&”的两个运算对象都是逻辑1时,表达式返回值才是1;“||”的两个运算对象至少有一个是逻辑1时,表达式返回值也是1,x<y为1,!z为0,1&&0为1,0||为1,因此,!1为0。
63.B无符号整型变量a的值为8,二进制表示为00001000,右移3位后为00000001,即十进制的l,所以输出1。
64.A数据结构是计算机科学与技术领域广泛使用的一个基本术语,用来反映数据的内部构成。
一般来说,数据结构包括数据的逻辑结构、数据的存储结构、数据的操作三个方面的内容。数据的逻辑结构又称为数据的外部结构,指各数据元素之间的逻辑关系,反映人们对数据含义的解释。数据的逻辑结构反映数据的逻辑关系,与数据的存储没有关系,是独立于计算机的。它有两大类逻辑机构:线性结构和非线性结构。
数据的存储结构又称为数据的物理结构,是指数据的逻辑结构在计算机中的表示,即逻辑结构在计算机中的实现。一个数据的逻辑结构可以有多种存储结构。数据的存储结构要充分利用存储器的“空间相邻”和“随机访问”的特点。
65.D循环队列的队头指针与队尾指针都不是固定的,随着入队与出队操作要进行变化。因为是循环利用的队列结构,所以队头指针有时可能大于队尾指针,有时也可能小于队尾指针。
66.BQ(1:35)则队列的存储空间为35;对空条件:front=rear(初始化时:front=rear),队满时:(rear+1)%n==front,n为队列长度(所用数组大小),因此当执行一系列的出队与入队操作,front=rear.则队列要么为空,要么为满。
67.C
68.D通常,将软件产品从提出、实现、使用维护到停止使用退役的过程称为软件生命周期。也就是说:软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时期都属于软件生命周期。
软件生命周期的主要活动阶段为:
①可行性研究和计划制定。确定待开发软件系统的开发目标和总的要求,给出它的功能、性能、可靠性以及接口等方面的可行方案,制定完成开发任务的实施计划。
②需求分析。对待开发软件提出的需求进行分析并给出详细定义,即准确地确定软件系统的功能。编写软件,规格说明书及初步的用户手册,提交评审。
③软件设计。系统设计人员和程序设计人员应该在反复理解软件需求的基础上,给出软件的结构、模块的划分、功能的分配以及处理流程。
④软件实现。把软件设计转换成计算机可以接受的程序代码。即完成源程序的编码,编写用户手册、操作手册等面向用户的文档,编写单元测试计划。
⑤软件测试。在设计测试用例的基础上,检验软件的各个组成部分。编写测试分析报告。
⑥运行和维护。将已交付的软件投入运行,并在运行使用中不断地维护,根据新提出的需求进行必要而且可能的扩充和删改。
69.B
70.B本题主要考查源程序的定义:①符号名应具有一定实际的含义;②正确的程序注释;③良好的视觉组织。
71.C
72.AA选项中l15L表示ll5是长整型数据,合法。B选项是八进制常量的表示方法,但是在八进制中不能含有数字8,所以B错误。c选项中e后面应该是整数不能是小数l.5,所以c错误。D选项中八进制常量应该是数字…0开始,而不是字母…O开始。
73.BA选项说的是偶数,B选项求的是奇数,C选项求的是偶数,而题目求的是奇数。
74.A
75.A
76.D本题主要考查字符数组的引用。题目中定义了一个大小为10的字符数组str。下面分别分析每个选项。
在选项A中,从scanf('%s',&str);语句的输入列表&str可以知道此语句不正确,因为str是数组名,本身就表示一个地址,再加一个取地址符&,使表示方法不正确。
在选项B中,由于printf('%c',str);语句的输出格式表示输出单个字符,而输出列表中的str表示一个地址,而不是数值,表示方法不对。
在选项C中,由于printf('%s',str[0]);语句的输出格式表示输出一个字符串,而输出列表中的str[0]表示一个字符,表示方法不对。
在选项D中,由于printf('%s',str);语句的输出格式表示输出一个字符串,而输出列表中的str表示一个字符串的首地址,通过这个方式可以实现输出str所指向的字符串。
77.B算法的时间复杂度是指执行算法所需的计算工作量。算法的空间复杂度是指执行这个算法所需的内存空间。在一个算法的空间复杂度大的情况下,其时间复杂度可能会很大,具体视情况而定;反之亦然。
78.A本题考查的是递归算法的分析。一个直接或间接地调用自身的算法称为递归算法。在一个递归算法中,至少要包含一个初始值和一个递归关系。本题的fun()函数在n等于l时返回1,而在其余情况下返[fi]n+fun(n一1),所以本题的递归算法可以这样来表示:fun(n)=1(n=1)(初始值)fun(n)=n+fun(n一1)(n≠1)(递归关系)此时不难看出,该递归算法实现的是计算l+2+3+…+n,而且n必须大于0,否则会陷入死循环。故题目输出的结果是l+2+3+..+10=55.应该选择A)。
79.C题中整型指针变量P存放的是变量C的地址。所以本题答案为C。
80.D
81.(1)错误:ifh%j==0
正确:if(h%i==0)
(2)错误:if(yes==0)
正确:if(yes)
【解析】由C语言语法规则可知,if语句的条件必须用括号括起来,因此,“ifh%j==0”应改为“if(h%j==0)”;当变量yes=0时,说明整数h为非素数,不计入和当中,因此,“if(yes==0)”应改为“if(yes)”。
82.\n\tvoidfun(char*a)
\n{
\ninti,j=0;
\nfor(i=0;a[i]!=\0;i++)
\nif(a[i]!=*)
\na[j++]=a[i];//若不是要删除的字符*则保留
\na[j]=\0;//最后加上字符串结束符\0
\n}
\n【解析】此题是删除字符串中的星号。思路是通过for循环完成对字符串的遍历,通过if判断,找到不是“*”的字符,将其赋值到数组a中星号前的位置,“if(a[i]!=*)”“a[i++]=a[i]”,最后返回主函数将删除*后的字符串输出即可。\n</y&&!z||1>2022-2023年山东省济南市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.当调用函数时,实参是一个数组名,则向函数传送的是______。
A.数组的长度B.数组的首地址C.数组每一个元素的地址D.数组每个元素中的值
2.有以下程序:#include<stdio.h>intshow(char*str){while(*str){putchar(*str+1);str++;}return*str+1;}main(){printf(“%d\n”,show(“ABCD”));}程序运行后的输出结果是()。
A.ABCD0B.BCDE0C.BCDE1D.ABCD1
3.若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是()。
A.c[0]B.c[9-6]C.c[4*2]D.c[2*3]
4.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
5.对于函数声明“voidfun(intarray[4],int*ptr);”,以下叙述中正确的是()。
A.array、ptr都是指针变量
B.调用fun函数时,实参的值将逐一复制给array
C.调用fun函数时,array按值传送,ptr按地址传送
D.array是数组,ptr是指针,它们的性质不同
6.有下列程序:程序执行后的输出结果是()。A.17,17,49,49B.17,29,49,49C.29,29,49,49D.49,49,49,49
7.以下叙述中错误的是()。
A.可以通过typedef增加新的类型
B.可以typedef将已存在的类型用一个新的名字来代表
C.用typedef定义新的类型名后,原有类型名仍有效
D.用typedef可以为各种类型起别名,但不能为变量起别名
8.有以下定义:structperson{charname[10];intage;};structpersonclass[10]={“Johu”,17,“Paul”,19,“Mary”,18,“Adam”,16,};能输出字母M的语句是()。
A.printf(“%c\n”,class[2].name[0]);
B.printf(“%c\n”,class[3].name[0]);
C.printf(“%c\n”,class[3].name[1]);
D.printf(“%c\n”,class[2].name[1]);
9.以下叙述中错误的是()。
A.C语言程序在运行过程中的所有计算都以二进制方式进行
B.C语言程序在运行过程中的所有计算都以十进制方式进行
C.所有C语言程序都需要编译、链接无误后才能运行
D.C语言程序中字符变量存放的是字符的ASCII值
10.两个或两个以上模块之间关联的紧密程度称为()。
A.耦合度B.内聚度C.复杂度D.数据传输特性
11.
有以下程序
#include<stdio.h>
#include<string.h>
typedefstrlIct{charname[9];charsex;floatscore[2];}STU;
STUf(STUa)
{STUb={"Zhao",m,85.0,90.0);inti;
strcpy(aname,b.name);
sex:b.sex;
for(i=0;i<2;i++)a.score[i]=b.score[i];
returna;
}
main
{STUc="Qian",f,95.0,92.0},d;
d=f(c).printf("%s,%c,%2.0f,%2.0f",d.Name,d.sex,d.score[0],d.score[1]);
}
程序的运行结果是()。
A.Qian,f,95,92
B.Qian,m,85,90
C.Zhao,m,85,90
D.Zhao,f,95,92
12.
13.下面程序运行后的输出结果是______。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
14.堆是一种有用的数据结构。下列关键码序列()是一个堆。
A.94,31,53,23,16,72
B.94,53,31,72,16,23
C.16,53,23,94,31,72
D.16,31,23,94,53,72
15.以下说法错误的是()。
A.C语言标识符中可以有多个字母、数字和下划线字符
B.C语言标识符中下划线字符可以出现在任意位置
C.C语言标识符不能全部由数字组成
D.C语言标识符必须以字母开头
16.有以下程序:
程序的运行结果是()。
A.0987654321
B.4321098765
C.5678901234
D.0987651234
17.对如下二叉树进行后序遍历的结果为()。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
18.若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为()。
A.两个语句都是将变量a的值赋予变量P
B.*p=a是使P指向变量a,而p=&a是将变量的值赋予变量指针P
C.*p=a是将变量a的值赋予变量b,而&a是使P指向变量a
D.两个语句都是使P指向变量a
19.下列标识符不是关键字的是()。
A.breakB.charC.SwithchD.return
20.用链表表示线性表的优点是()。
A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除操作D.数据元素的物理顺序和逻辑顺序相同
二、2.填空题(20题)21.若x和a均是int型变量,则计算完x=(a=4,6*2)后的x值为______。
22.阅读下面语句,则程序的执行结果是【】。
#include"stdio.h"
main()
{inta=-1,b=1,k;
if((++a<0)&&!(b--<=0))
printf("%d,%d\n",a,b);
elseprintf("%d,%d\n",b,a);}
23.以下程序的输出结果是【】。
voidreverse(inta[],intn)
{inti,t;
for(i=0;i<n/2;i++)
{t=a[i];a[i]=a[n-1-i];a[n-1-i]=t;}
}
main()
{intb[10]={1,2,3,4,5,6,7,8,9,10};inti,s=0;
reverse(b,8);
for(i=6;i<10;i++)s+=b[i];
printf("%d\n",s);
}
24.设inta=5,b=6,表达式(++a==b--)?++a:--b的值是【】。
25.下列程序的运行结果是______。
#include<stdio.h>
main()
{inta=10,b=3;
printf("%d,",a%b);
printf("%d,",(a-h,a+b));
printf("%d\n",a-b?a-b:a+b);
}
26.以下程序运行后的输出结果是【】。
main()
{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};
inti=0,j=0,s=0;
while(i++<4)
{
if(i==2||i==4)continue;
j=0;
do{S+=a[i][j];j++;}while(j<4);
}
printf("%d\n",s);
}
27.若有以下定义和语句,sizeof(a)的值是【】,sizeof(a.share)的值是【】。
structdate
{intday;
intmonth;
intyear;
union
{intshare1;
floatshare2;
}share;
}a;
28.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d%d",x--,y);
}
29.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
30.对长度为10的线性表进行冒泡排序,最坏情况下需要比较的次数为【】。
31.软件维护活动包括以下几类:改正性维护、适应性维护、【】维护和预防性维护。
32.树中度为零的结点称为______。
33.填空补充以下程序。
#define【】30
{【】;
total=numPRICE;
printf("total=%d,num=%d\n",【】);
}
34.能把计算机处理好的结果转换成为文本、图形、图像或声音等形式并输送出来的设备称为【】设备。
35.以下程序运行后的输出结果是()。
main()
{inta=3,b=4,c=5,t=99;
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,A);
}
36.栈中允许进行插入和删除的一端叫做______。
37.数据库管理系统常见的数据模型有层次模型、网状模型和______三种。
38.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
39.十进制数111用八位二进制数表示为【】。
40.下面程序的运行结果是【】。
#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<t1)
{ch=*(a+t1);
*(a+t1)=*(a+t2);
*(a+t2)=ch;
t1++;t2--;}}
三、1.选择题(20题)41.己知x=3,y=2,则表达式x*=y+8的值为______。
A.3B.2C.30D.10
42.以下语句段执行后的输出结果是()。#include<stdio.h>main(){intk=3;if(k)printf("###")elseprintf("&&&&");}
A.###
B.&&&&
C.###&&&&
D.有语法错误,不能执行
43.设下面程序的可执行文件名为“prg.exe”,在该程序所在子目录下输入以下命令行:prghellogood<回车>则程序的输出结果是______。main()(intargc,char*argv[]){inti;if(argc<=0)return;for(i=1;i<argc;i++)printf("%c",*argv[i]);}
A.hellogoodB.hgC.helD.hellogood
44.若有定义:char*s=“Programming”;,以下叙述中有错误的是______。A.变量s中存放了字符P的地址B.s[0]中存放了字符PC.*s中存放了字符PD.s中存放了一个字符串
45.下面程序的文件名为t.exe,在DOS下输入的命令行参数为:ttomeetme<回车>
则程序输出的结果是
#include"stdio.h"
main(argc,argv)
intargc;char*argv[];
{inti;
printf("%d\n",argc);}
A.3B.4C.2D.以上答案都不正确
46.有以下定义:#include<stdio.h>chara[10],*b=a;不能给数组a输入字符串的语句是()。
A.gets(a)B.gets(a10])C.gets(&a[0});D.gets(b);
47.下列描述中正确的是()。
A.软件工程只是解决软件项目的管理问题
B.软件工程主要解决软件产品的生产率问题
C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则
D.软件工程只是解决软件开发中的技术问题
48.有如下定义语句:intaa[][3]={12,23,34,4,5,6,78,89,45};,则45在数组aa中的行列坐标各为
A.3,2B.3,1C.2,2D.2,1
49.以下能正确定义一维数组的选项是
A.inta[5]={0,1,2,3,4,5};
B.chara[]={′0′,′1′,′2′,′3′,′4′,′5′,′\0′};
C.chara={′A′,′B′,′C′};
D.inta[5]="0123";
50.在位运算中,操作数每右移一位,其结果相当于()
A.操作数乘以2B.操作数除以2C.操作数除以16D.操作数乘以16
51.C语言中逻辑表达式的值为()
A.0或1B.非零值或者零值C.ture或falseD.'ture'或者'false'
52.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
53.以下函数返回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
54.若有定义intx,y;,并已正确给变量赋值,则以下选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。
A.(x—y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-Y==0)
55.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c),给a赋予10.0,b赋予22.0,b赋予33.0,不正确的输入形式是()
A.10<回车>22<回车>33<回车>
B.10.0,22.0,33.0<回车>
C.10.0<回车>22.O33.00<回车>
D.10.22<回车>33<回车>
56.如果需要打开一个已经存在的非空文件"Demo"进行修改,下面选项中正确的是
A.fp=fopen("Demo","r");
B.fp=fopen("Demo","ab+");
C.fp=fopen("Demo","w+");
D.fp=fopen("Demo","r+");
57.下列程序的输出结果是______。#include<stdio.h>main(){printf("%d\n",NULL);}
A.不确定(因变量无定义)B.0C.-1D.1
58.下面程序运行后的输出结果是_____。structabc{inta,b,c;}main(){structabcs[2]={{1,2,3},{4,5,6}};intt=s[0].a+s[1].b;printf("%d\n",t);}
A.5B.6C.7D.8
59.可在C程序中用作用户标识符的一组标识符是A.and2007
B.Date_y-m-d
C.HiDr.Tom
D.caseBigl
60.能正确表示代数式的C语言表达式是()
A.3*xn/(2*x-1)
B.3*x**n/(2*x-1)
C.3*pow(x,n)*(1/(2*x-1))
D.3*pow(n,x)/(2*x-1)
四、选择题(20题)61.有以下程序:
当执行程序时,按下列方式输入数据(从第l列开始,<;CR>;代表回车,注意:回车也是一个字符]12<;CR>;34<;CR>;则输出结果是()。
A.12B.123C.1234D.12343
62.设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是()。
A.x&&yB.x<=yC.x||++y&&y-zD.!(x<y&&!z||1
63.有以下程序:
程序运行后的输出结果是()。
A.16B.1C.32D.0
64.数据结构作为计算机的一门学科,主要研究数据的逻辑结构、对各种数据结构进行的运算,以及()
A.数据的存储结构B.计算方法C.数据映像D.逻辑存储
65.对于循环队列,下列叙述中正确的是()。
A.队头指针是固定不变的
B.队头指针一定大于队尾指针
C.队头指针一定小于队尾指针
D.队头指针可以大于队尾指针,也可以小于队尾指针
66.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为()。
A.20B.0或35C.15D.16
67.
68.在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()。A.概要设计B.详细设计C.可行性分析D.需求分析
69.
70.源程序的文档不包括()。
A.符合号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
71.
72.以下选项中,能用作数据常量的是()。
A.115LB.0118C.1.5el.5D.0115
73.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。
A.k%2==0B.k%2==1C.!k%2==1D.都不同
74.
75.
76.设有charstr[10],下列语句正确的是
A.scanf("%s",&str);B.printf("%c",str);
C.printf("%s",str[0]);D.printf("%s",str);
77.下列关于算法复杂度描述正确的是()。
A.算法的时间复杂度是指算法执行的时间
B.算法的空间复杂度是指执行这个算法所需的内存空间
C.一个算法的空间复杂度大,则其时间复杂度必定大
D.一个算法的空间复杂度大,则其时间复杂度必定小
78.有以下程序执行程序时,给变量X输入l0,程序的输出结果是()。
A.55B.54C.65D.45
79.若在定义语句:inta,b,c,*p=&c;之后,接着执行以下选项中的语句,则能正确执行的语句是()。A.A.scanf("%d",a,b,c);B.scanf("%d%d%d",a,b,c):
C.scanf("%d",p);
D.scanf("%d",&p);
80.
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是计算并输出h以内的素数之和。h由主函数传给proc()函数。若h的值为80,则函数的值为791。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:
六、程序设计题(1题)82.规定输入的字符串中只包含字母和*号。编写函数fun,其功能是:删除字符串中所有的*号。编写函数时,不得使用C语言提供的字符串函数。
例如,字符串中的内容为“****A*BC*DEF*G****”,删除后,字符串中的内容应当是“ABCDEFG”。
注意:部分源程序给出如下。
请勿改动maini)函数和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。
试题程序:
#include<conio.h>
#include<stdio.h>
voidfun(chara)
{
voidmain
{
chars[81];
print{("Enterastring:\n");
gets(s):
fun(S);
printf("Thestringafterdeleted:\n");
puts(s);
}
参考答案
1.B解析:当调用函数时,实参是一个数组名,则向函数传送的是数组的首地址,函数中的形参可定义成以下三种形式:
①形参定义成数组;
②形参定义成可变长数组:
③形参定义为指针变量。
2.C函数putchar每次输出一个字符。表达式“*str+1”将对字符加1,因此字符串“ABCD”的每个字符都加1,字符串结束标识‘\\0’也会加1,输出1,结果为BCDE1。故本题答案为C选项。
3.C
4.C
5.A声明函数fun“voidfun(intarray[4],int*ptr);”,第1个参数虽然是数组类型,但是会退化为指针,并且形参数组的个数没有用;第2个参数是指针。两个形参都是指针,传递的都是地址,可知选项B、C、D错误。故本题答案为A选项。
6.B对于题干中的宏,替换如下:S1(a+b,a+b),&+1>)等价于a+b*a+b,即2+5*2+5,等于17;S1(a+b,b+a),等价于a+b*b+a,即2+5*5+2,等于29;S2(a+b,a+b)等价于(a+b)*(a+b),即(2+5
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年白城医学高等专科学校单招职业适应性测试题库及答案解析
- 2026年山西电力职业技术学院单招职业技能考试题库及答案解析
- 2025年郑州工商学院单招综合素质考试题库及答案解析
- 2025年济南职业学院单招职业技能考试试题及答案解析
- 2025年青岛职业技术学院单招综合素质考试试题及答案解析
- 2025年浙江工业职业技术学院单招职业适应性测试题库及答案解析
- 2025年阿勒泰职业技术学院单招职业技能考试题库及答案解析
- 冬季防火安全知识
- 浙江省七彩阳光新高考研究联盟2024-2025学年高二下学期期中联考化学答案
- 2026年宿州职业技术学院单招职业适应性测试题库及答案解析
- 高钾血症诊疗指南(2025年版)
- 2026年春季学期苏教版(2024)小学数学三年级下册教学计划
- JJF 2363-2026200 W~30 kW 激光功率计校准规范
- 医学心理学-第六版-教学及学习大纲及重点
- 北师大版(2019)选择性必修第三册Unit 7 Careers Lesson 3 Meet the New Boss-You 课文讲解课件
- 工程项目验收报告
- 2022年第一学期教务处工作计划范文
- 北京一零一中教育集团章程
- 燃气管网水力计算(课堂PPT)课件
- 热学课件:第1章 导论1
- 电子信息系统机房设计规范
评论
0/150
提交评论