![2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计_第1页](http://file4.renrendoc.com/view/5345ef9e13e509c29a750869a2212a6f/5345ef9e13e509c29a750869a2212a6f1.gif)
![2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计_第2页](http://file4.renrendoc.com/view/5345ef9e13e509c29a750869a2212a6f/5345ef9e13e509c29a750869a2212a6f2.gif)
![2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计_第3页](http://file4.renrendoc.com/view/5345ef9e13e509c29a750869a2212a6f/5345ef9e13e509c29a750869a2212a6f3.gif)
![2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计_第4页](http://file4.renrendoc.com/view/5345ef9e13e509c29a750869a2212a6f/5345ef9e13e509c29a750869a2212a6f4.gif)
![2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计_第5页](http://file4.renrendoc.com/view/5345ef9e13e509c29a750869a2212a6f/5345ef9e13e509c29a750869a2212a6f5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.循环队列存储在数组A[0..m]中,则入队时的操作为()。
A.rear=rear+1
B.rear=(rear+1)mod(m-1)
C.rear=(rear+1)modm
D.rear=(rear+1)mod(m+1)
2.有以下程序
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%s,%s\n",ss,aa);
}
程序的运行结果是
A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
3.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。
A.n-1B.nC.n+1D.2n
4.输入序列为ABC,可以变为CBA时,经过的栈操作为()。
A.push,pop,push,pop,push,pop
B.push,push,push,pop,pop,pop
C.push,push,pop,pop,push,pop
D.push,pop,push,push,pop,pop
5.下列合法的声明语句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
6.
7.语句“printf("akbre"\'hi\'y\\\bou\n")”;的输出结果是()。
A.akbre\'hi\'y'\\\bou
B.a\bre\'hi\\y\bou
C.re'hi'you
D.abre'hi'y\bou
8.关于数组和指针,以下说法错误的是()。
A.数组名本身就是一个指针,指向数组内存的起始位置
B.既可以读入数据到数组中,也可以读入数据到未賦初值的指针中
C.可以将指针指向一个同类型的数组
D.指针可以指向同类型的数组中的任意一个元素
9.线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构
10.一个有8个顶点的有向图,所有顶点的入度出度之和与所有顶点的出度之和的差是()
A.16B.4C.0D.2
11.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
12.有三个关系R、s和T如下:
由关系R和s通过运算得到关系T,则所使用的运算为()。
A.并B.自然连接C.笛卡尔积D.交
13.
14.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不确定D.bcdef
15.在软件设计中,不属于过程设计工具的是()。
A.PDLB.DFD图C.PAD图D.N—S图
16.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.将当前应用程序转为后台运行
B.退出Windows后再关机
C.终止当前应用程序的运行
D.退出Windows后重新启动计算机
17.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
A.详细设计B.需求分析C.总体设计D.编程调试
18.有3个节点的二叉树可能有()种。
A.12B.13C.5D.15
19.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)
B.在第i个结点之后插入一个新结点(1<=i<=n)
C.删除第i个结点(1<=i<=n)
D.将n个结点从小到大排序
20.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
二、2.填空题(20题)21.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
22.下面程序的输出结果是【】。
longfun5(intn)
{longs;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);}
main()
{longx;
x=fun5(4);
printf("%ld\n",x);}
23.以下程序的运行结果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
24.以下程序的运行结果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
25.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
26.以下程序的输出结果是【】。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(6,3,a)
printf("%d,a)
}
27.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
28.执行下列语句段后,x的值是______。
int*p,x;
x=100;
p=&x;
x=*p+50;
29.一个模块直接调用的其他模块的模块个数称为______。
30.已知字符A的ACSII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
31.以下程序的输出结果是【】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",A);
}
32.以下程序可以把从键盘上输入十进制数(10ng型)以二到十六进制数的形式输出,请填空。
#include<stdio.h>
main()
{charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','
E','F'};
intc[64],d,i=0,base;
longn;
printf("Enteranumber:\n");scanf("%1d",&n);
printf("Enternewbase:\n");scanf("%1d",&base);
do
{c[i]=【】;
i++;
n=n/base;
}while(n!=0);
printf("Theresultis:\n");
for(--i;i>=0;--i)
{d=c[i];
printf("%c",b【】);
}
}
33.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法,这称为对象的______。
34.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
35.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
36.下面程序的运行结果是:【】。
typedefunionstudent
{charname[10];
longsno;
charsex;
floatscore[4];
}STU;
main()
{STUa[5];
Printf(“%d\n”,sizeof(a));
}
37.下面程序的输出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA"m,"BB","CC:,"DD"};
printf("%s%s%s\n,aa[em1],aa[em2],aa[em3]);
}
38.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
39.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。
40.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。
voidfunc(intx,inty,【】z)
{*z=x+y;
}
三、1.选择题(20题)41.当说明一个结构体变量时系统分配给它的内存是()。
A.各成员所需要内存量的总和
B.结构中第一个成员所需的内存量
C.成员中占内存最大者所需的容量
D.结构中最后一个成员所需要的内存量
42.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
43.有以下程序:main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序运行后的输出结果是(选项D中的第一行是空行)()。
A.n/NoYes/NoB./NoYesC./NoYes/NoD./NoYes
44.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。
A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值
45.若i是int型变量,且有下面的程序段:for(i=4;i<6;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);上面程序段的输出结果是______。
A.**4##5B.##4**5C.**4**5D.##4##5
46.阅读下面程序,则程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}
A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列
47.当变量c的值不为2、4、6时,值也为“真”的表达式是
A.(c==2)||(c==4)||(c==6)
B.(c>=2&&c<=6)||(c!=3)||(c!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)&&(c%2!=1)
48.阅读程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序运行后,如果从键盘上输入5,则输出结果是()
A.3B.4C.5D.6
49.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
50.设x=015,则x=x^017的值是()。
A.EOFB.-1C.非零值D.0
51.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL
52.软件调试的目的是______。
A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能
53.能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是()。
A.a>=10ora=10
B.a>=0|a<=10
C.a>=10&&a<=0
D.a>=10||a<=0
54.设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是()
A.1B.3C.7D.9
55.下列说法中错误的是A.A.只能在循环体内使用break语句
B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C.在while和do…while循环中,continue语句并没有使整个循环终止
D.continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
56.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是()。
A.1212B.117C.1111D.127
57.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
58.与十进制数255相等和二进制数是()
A.11101110B.11111110C.10000000D.11111111
59.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()
A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程
60.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
四、选择题(20题)61.下列叙述中错误的是()。
A.一种数据的逻辑结构可以有多种存储结构
B.数据的存储结构与数据处理的效率无关
C.数据的存储结构与数据处理的效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
62.有以下程序
63.
64.
65.在软件开发中,需求分析阶段产生的主要文档是()。
A.软件需求规格说明书B.数据库说明书C.集成测试计划D.概要设计说明书
66.有以下程序:
#include<stdio.h>
#include<strin9.h>
main()
{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}
程序运行后的输出结果是()。
A.3B.8C.4D.9
67.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。
structnode
{hardata;
structnode*next;)*P,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
68.有以下程序:
程序运行后的输出结果是()。
A.-2,3,B.-1,-2,C.-2,-3,D.-2,1
69.(61)数据结构中,与所使用的计算机无关的是数据的()
A.存储结构
B.物理结构
C.逻辑结构
D.物理和存储结构
70.有以下程序段:
当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0
71.
72.以下程序的输出结果是()。
inta=5;
floatx=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
A.62.000000B.62.800000C.63.000000D.62
73.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.3D.4
74.在结构化方法中,软件功能分别属于下列软件开发中的(
)阶段。A.详细设计B.需求分析C.总体设计D.编程调试
75.下列变量声明合法的是()。A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=0xfdaL;
D.float2aaa=1e-3;
76.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
77.有以下程序
.程序运行后的输出结果是()。
A.6B.9C.11D.7
78.有以下程序,若从键盘上输入7和3
main()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a<b)k=a%b;
elsek=b%a;
printf("%d\n",k);
}
程序运行后的输出结果是
A.7B.3
C.1D.0
79.
已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是()。
A.isupper(c)
B.A<=c<=Z
C.A<=c&&c<=Z
D.c<=(z-32)&&(a-32)<=c
80.有以下程序程序运行后的输出结果是()。
A.21B.11C.6D.120
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是计算正整数m
各位上数字的平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}
六、程序设计题(1题)82.规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。
参考答案
1.D
2.D解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。
3.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
4.B
5.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。
6.A
7.C先输出a、b表示退一格,当执行到:\b后,光标往后退,接着输出re'hi'y\(反斜杠后又加一个反斜杠的意思是要输出一个反斜杠),此时又执行:\b后,\就被ou覆盖。
8.BC语言中,数组名本身就是一个指针,指向数组内存的起始位置,选项A正确;已经定义的数组被分配了内存空间,所以可以读入数据到数组中,未赋初值的指针没有分配内存空间,不可以读入数据,选项B错误;可以将指针指向一个同类型的数组,选项C正确;指针指向一个数组后,可以通过移动指针,指向该数组中的任意一个元素,选项D正确。故本题答案为B选项。
9.A
10.C
11.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。
12.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。
13.C
14.C解析:字符串少一个结束标志,所以输出的结果不确定。
15.B常见的过程设计工具有图形土具(程序流程图、N—S图、PAD图、HIP0图)、表格工具(判定表)和语言工具(PDL)。DFD是数据流图,是描述数据处理过程的工具。
16.C解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止当前应用程序的运行,关闭当前窗口。
17.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。
18.C
19.A
20.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
21.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
22.9
23.aeiou
24.efghefgh解析:函数ss返回形参s所指向的符号串的后半部分,故p='efgh'。
25.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
26.3131解析:在函数调用时,形参值和改变,不会改变实参的值。
27.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
28.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。
29.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
30.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。
31.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。
32.n%base[d]
33.对象具有5个基本特点:①标识唯一性;②分类性;③多态性;④封装性;⑤模块独立性好。其中,封装性是指从外面看只能看到对象的外部特征,对象的内部特征即处理能力的实行和内部状态,对外是不可见的,对象的内部状态只能由其自身改变。\r\n\r\n
34.相邻相邻
35.物理独立性物理独立性
36.8080解析:数组a是共用体变量,共用体类型变量所占的内存长度为最大成员的长度,即单精度数组的长度,为4×4=16,因此,数组a所占的内存长度为5×16=80,所以最后输出的s的值为80。
37.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。
38.n/2n/2解析:删除一个元素,平均移动的元素个数为(n-1+n-2+…+0)/n=(n-1)/2;插入一个元素,平均移动元素个数为(n+n-1+n-2+…+1)/n=(n+1)/2;所以总体平均移动元素个数为n/2。
39.x<z‖y<zx<z‖y<z解析:本题考查逻辑运算符和逻辑表达式。x或y中至少有一个小于z,即x<z或y<z,是“或”的关系。
40.int*int*解析:从函数体中可看出,2是一个指向整型的指针,该函数的形参z是传地址调用。
41.A解析:本题主要考查结构体的内存使用:对结构体而言,结构中不同的成员分别使用不同的内存空间,一个结构所占内存空间的大小是结构中每个成员所占内存空间大小的总和,结构中每个成员相互独立。
42.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0:选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<B)&&!c||1),运算结果为0。
43.B解析:主函数中定义了一个字符数组s并赋初值,一个字符串指针变量ps并让它指向s。程序中p+4的地址为数组第5个元素的地址,而调用put(stradr)函数时,将从stradr这一地址开始,依次输出存储单元中的字符,遇到第一个“\\0”时结束输出,并自动输出一个换行符ad。r所以put(p+4)将输出n/No,put(s)将从s第一个元素开始输出到第3个元素结束(因为执行*(p+4)=0语句后s中的第5个元素的值为0,而s中的第4个元素为“\\”,puts将遇到“\\0”,结束输出),即输出yes。所以,4个选项中选项B符合题意。
44.B解析:由函数intfun(int*p){return*p;}的定义可知,返回值为整型指针变量p所指向的数据。
45.B解析:函数printf中的参数是三目条件表达式,循环控制变量i值为4时,i%2为0,格式控制字符串为'##%d\\n',输出为##4;循环控制变量i值为5时,i%2为1,格式控制字符串为'**%d\\n',输出为*5,两次输出不在同一行。
46.B解析:读懂两个循环的关系,是解这个题目的关键,本题的第一个for循环的作用是实现对数组元素的遍历,第二个循环的作用是排序。while(j>=0&&t>c[j]),这个语句是控制排序的关键语句,它即实现了比较两个元素大小的作用,又实现了元素向后移动的作用,不断地把大的数据向前移动,直到找到一个比它小的,或到数据的上界为止。
47.B解析:满足表达式(c>=2&&c<=6)的整型变量c的值是2,3,4,5,6。当变量c的值不为2,4,6时,其值只能为3或5,所以表达式c!=3和c!=5中至少有一个为真,即不论c为何值,选项B中的表达式都为“真”。
48.B
49.C解析:数据处理的最小单位是数据项;由若干数据项组成数据元素;而数据是指能够被计算机识别、存储和加工处理的信息载体;数据结构是指数据之间的相互关系和数据运算。故正确答案为选项C)。
50.D解析:文件状态检测函数feof(fp)的功能:测试所指的文件的位置指针是否已达到文件尾,如果已到达文件尾,则函数返回非0值;否则返回0,表示文件尚未结束。
51.B(27)B)解析:函数feof的功能是:测试fp所指的文件的位置是否已达到文件尾,如果达到文件尾,则函数返回非0值,否则返回0,表示文件尚未结束。
52.B解析:在对程序进行测试时会发现错误,这就要进行程序调试(排错)。程序调试活动由三部分组成:一是错误定位,根据错误的外部表现形式,确定程序中出错的位置,找出错误的内在原因;二是对程序进行修改,排除这个错误;三是进行回归测试,防止引进新的错误。所以程序调试的目的就是诊断和改正程序中的错误。软件调试不能改善软件的性能,也不能挖掘软件的潜能。
53.D解析:在C语言中,逻辑运算符有与&&、或||、非!,关系运算符有大于>、小于<、大于等于>=、小于等于<=、等于==,根据逻辑关系很容易看出,符合条件的选项为D。
54.B\nB)【解析】建堆的算法:首先将要排序的所有关键码放到一棵完全二叉树的各个结点中(这时的二叉树不具备堆的特性),然后,从i=[n/2](n为结点的个数)的结点Ki开始,逐步把以K[n/2],K[n/2]-1,K[n/2]-2,…为根的子树排成堆,直到以K1为根的树排成堆,就完成了建堆过程。此题中,n=16,i=[16/2]=8,即从第8个结点开始,建堆完成后如下图:
\n
\n所以经过初始建堆后关键码值B在序列中的序号是3。
\n
55.A解析:只能在循环体内和switch语句体内使用break语句,当break出现在循环体中的switch语句体时,其作用是跳出该switch语句体。当break出现在循环体中,但不在switch语句体中时,则在执行break后,跳出本层循环体。continue语句的作用是,跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。
56.B解析:题目中第1条要替换的语句i1=f(2);展开后是i1=(2*M);再展开为i1=(2*N+1);最后展开为i1=(2*5/1),结果使i1=11。而第2条语句i2=f(1+1);展开后为i2=(1+1*M);再展开为i2=(1+1*N+1);最后展开为i2=(1+1*5+1),结果使i2=7。故应该选择B。
57.D解析:所谓的交换类排序方法是指借助数据元素之间的互相交换进行排序的一种方法,包括冒泡排序和快速排序,冒泡排序是一种最简单的交换排序方法,它通过相邻元素的交换,逐步将线性表变成有序。
58.D
59.B软件设计包括软件的结构设计、数据接口设计和过程设计。其中软件结构设计主要包括系统由哪些子系统构成,以及这些子系统之间的关系是怎样的,并将这些内容编写成文档;数据接口设计的任务是为每个子系统设计其与其他子系统间的接口,并编写成文档,这个接口要是一个无二义的接口,不需要子系统的操作知识就可以使用;过程设计是指系统结构部件转换成软件的过程描述。
60.A解析:本题考查带参数的宏定义,参数只是简单的替换而不是求出其值后再替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值,即3*4的值,其结果为12。
61.B解析:一种数据的逻辑结构根据需要可以表示成多种存储结构,常用的存储结构有顺序、链接、索引等,选项A和选项D正确。采用不同的存储结构,其数据处理的效率不同,因此,在进行数据处理时,选择合适的存储结构是很重要的,选项C正确,选项B错误,应为本题正确答案。
62.Ap是指向二维字符数组第二行One*Dream[的数组指针,因此长度是l0,打印输出的也是该字符串。
63.D
64.D
65.A软件需求规格说明书是需求分析阶段最后的成果,它是作为需求分析的一部分而制定的可交付文档。概要设计说明书、数据库说明书、集成测试计划都是概要设计阶段需要编写的文档。
66.B\n本题考查strlen函数和转移字符,strlen函数的功能是求字符串的长度,在本题中有“\”,C语言中“\”是转义字符,在计算长度时会将转义符以及后面的第一个字符作为1个长度进行计算,所以答
\n
67.D由题目中线性链表的定义可知,要将q和r所指的结点交换前后位置,只要使q指向r的后一个结点,P指向r结点,r指向q结点即可。而在选项D中,r->next=q,这时r指向的节点为q;p->next=r,这时P指向的节点为r;q->next:r->next,因为r节点已经指向q,所以执行这个语句后q又指向q,所以选项D不正确。
68.Afun()函数使用了静态变量,静态变量只在声明时初始化一次。首先实参的数值是一12,if判断后输出负号,并将n=12,计算k+=n%10一k+=2—2,因此输出2,后将数值除以10,结果为1,递归调用fun()函数,第二次调用fun(),此时n=1,k=2,计算k+=n%10-÷k+=1——*3,因此打印3。故最后打印结果为一2,3,。故答案为A选项。
69.C
70.B本题考查通过scanf函数输入数据时的格式控制问题。变量J的格式控制为”%2d”,即只接收输人数据的前两位,从第三位开始直到空格之间的输入都会被保存到变量Y中,因为Y为浮点型数据,所以输出结果为选项B。
71.B
72.A
73.C该程序中int8pl=&a,+p2=&b,4P=&c;指定义三个指针变量,并赋值,即使pl指向a;p2指向b;p指向c。+P=。pl$(+p2)。;该条语句是给P所指的存储单元c赋值,就是pl所指的存储单元的值,即a的值,与p2所指的存储单元b的值相乘,也就是c=a+b,等价于c=1·3=3;因此C选项正确。‘
74.C总体设计过程通常由两个主要阶段组成:系统设计,确定系统的具体实现方案;结构设计,确定软件结构。为确定软件结构,首先需要从实现角度把复杂的功能进~步分解。分析员结合算法描述仔细分析数据流图中的每个处理,如果一个处理的功能过分复杂,必须把它的功能适当地分解成一系列比较简单的功能。
75.A本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言的一个关键字,不能再用做变量名和函数名;③c语言规定指数形式的实型数量e或E后面的指数必须是整数。
76.C\n面向对象的设计方法的基本原理是:使用现实世界的概念抽象地思考问题从而自然地解决问题。它虽强调模拟现实世界中的概念而不强调算法,但是它鼓励开发者在软件开发的过程中从应用领域的概念角度去思考。
\n
77.A本题首先定义了3个字符数flip、q、r,并分别被初始化。数组p;}i旨定的大小为20,初始化列表为la,b,c,d},即只指定了前4个元素的内容,根据c语言的规定,初始化列表不足时,其余元素均自动初始化为0。然后通过streat()函数,将字符串r连接到字符串p之后,即执行后p中的内容为“123d123de”。因为“strlen(q)”表示求字符串q的长度,很明显为3,所以语句“strcpy(p+strlen(q),q);”的作用就是:将字符串q复制到数9lp的第4个元素位置处。
78.B本题考查C语言中的求余数运算。
题目给出的程序首先通过scanf函数向整型变量a、b输入值7、3。程序最后的结果为输出k的值。if语句中的判别条件为a>b,若该条件成立,则令k等于a整除b后的余数,7整除3后所得到的余数为1。如果判别条件不成立,则令k等于b整除a后的余数,3整除7后所得到的余数为3。显然,判别条件是不成立的,故输出结果为3。
79.B
\n选项B先计算关系表达式“A<=c”的值是0还是l,再比较该值与字符z之间的大小关系,不能实现题目所要求的功能。
\n
80.A循环调用fun函数,依次返回值为23456,s原值为l,累加以上返回值,最终结果为21,所以答案选择A)。
81.\n\t(1)错误:longsum=1;
\n正确:longsum=0;
\n(2)错误:while(m)
\n正确:while(m);
\n【解析】由函数proc可知,变量sum中存放正整数m的各位上数字的平方和,其初始化为0。因此,“longsum=1;”应改为“longsum=0;”。按照C语言的语法规则,语句都以分号结束,应在do-while语句最后加上分号。因此,“while(m)”应改为“while(m);”。\n
82.
voidfun(char*a){
while(*a!=’、0。)
a++:
a一一;/*指针a指向字符串的尾部*/while(}a==’*。)
a一一;/·指针a指向最后一个字母*/
*(a+1)=’、0’;/*在字符串最后加上结束标志符·/
【考点分析】
本题考查:删除字符串尾部*号;删除的主要思想是把不删除的字符保留起来。
【解题思路】
对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘、0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非·号字符为止。最后在该字符后面加上结束符号’\0。2021-2022年安徽省宿州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.循环队列存储在数组A[0..m]中,则入队时的操作为()。
A.rear=rear+1
B.rear=(rear+1)mod(m-1)
C.rear=(rear+1)modm
D.rear=(rear+1)mod(m+1)
2.有以下程序
#include<stdio.h>
voidfun(char*t,char*s)
{while(*t!=0)t++;
while((*t++=*s++)!=0);
}
main()
{charss[10]="acc",aa[10]="bbxxyy";
fun(ss,aa);printf("%s,%s\n",ss,aa);
}
程序的运行结果是
A.accxyy,bbxxyy
B.acc,bbxxyy
C.accxxyy,bbxxyy
D.accbbxxyy,bbxxyy
3.对于n个结点的单向链表(无表头结点),需要指针单元的个数至少为______。
A.n-1B.nC.n+1D.2n
4.输入序列为ABC,可以变为CBA时,经过的栈操作为()。
A.push,pop,push,pop,push,pop
B.push,push,push,pop,pop,pop
C.push,push,pop,pop,push,pop
D.push,pop,push,push,pop,pop
5.下列合法的声明语句是()。
A.int_abc=50;
B.doubleint=3+5e2.5;
C.longdo=1L:
D.float3_asd=3e-3;
6.
7.语句“printf("akbre"\'hi\'y\\\bou\n")”;的输出结果是()。
A.akbre\'hi\'y'\\\bou
B.a\bre\'hi\\y\bou
C.re'hi'you
D.abre'hi'y\bou
8.关于数组和指针,以下说法错误的是()。
A.数组名本身就是一个指针,指向数组内存的起始位置
B.既可以读入数据到数组中,也可以读入数据到未賦初值的指针中
C.可以将指针指向一个同类型的数组
D.指针可以指向同类型的数组中的任意一个元素
9.线性表的顺序存储结构是一种()。
A.随机存取的存储结构B.顺序存取的存储结构C.索引存取的存储结构D.Hash存取的存储结构
10.一个有8个顶点的有向图,所有顶点的入度出度之和与所有顶点的出度之和的差是()
A.16B.4C.0D.2
11.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
12.有三个关系R、s和T如下:
由关系R和s通过运算得到关系T,则所使用的运算为()。
A.并B.自然连接C.笛卡尔积D.交
13.
14.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不确定D.bcdef
15.在软件设计中,不属于过程设计工具的是()。
A.PDLB.DFD图C.PAD图D.N—S图
16.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.将当前应用程序转为后台运行
B.退出Windows后再关机
C.终止当前应用程序的运行
D.退出Windows后重新启动计算机
17.在结构化方法中,软件功能分解属于下列软件开发中的阶段是______。
A.详细设计B.需求分析C.总体设计D.编程调试
18.有3个节点的二叉树可能有()种。
A.12B.13C.5D.15
19.在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是()。
A.访问第i个结点(1<=i<=n)和求第i个结点的直接前驱(2<=i<=n)
B.在第i个结点之后插入一个新结点(1<=i<=n)
C.删除第i个结点(1<=i<=n)
D.将n个结点从小到大排序
20.下列数据结构中,按先进后出原则组织数据的是
A.线性链表B.栈C.循环链表D.顺序表
二、2.填空题(20题)21.下列的for语句的循环次数为______。
for(x=1,y=0;(y!=19)&&(x<7);x++);
22.下面程序的输出结果是【】。
longfun5(intn)
{longs;
if((n==1)||(n==2))
s=2;
else
s=n+fun5(n-1);
return(s);}
main()
{longx;
x=fun5(4);
printf("%ld\n",x);}
23.以下程序的运行结果是【】。
main()
{char*k="aeiou";
for(;*k;k++)printf("%c",*k);
}
24.以下程序的运行结果是【】。
#include<string.h>
char*ss(char*s)
{returns+strlen(s)/2;}
main()
{char*p,*str="abcdefgh";
p=ss(str);printf("%s\n",p);
}
25.软件测试中路径覆盖测试是整个测试的基础,它是对软件【】进行测试。
26.以下程序的输出结果是【】。
fun(intx,inty,intz)
{z=x*x+y*y;}
main()
{inta=31;
fun(6,3,a)
printf("%d,a)
}
27.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
28.执行下列语句段后,x的值是______。
int*p,x;
x=100;
p=&x;
x=*p+50;
29.一个模块直接调用的其他模块的模块个数称为______。
30.已知字符A的ACSII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
31.以下程序的输出结果是【】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",A);
}
32.以下程序可以把从键盘上输入十进制数(10ng型)以二到十六进制数的形式输出,请填空。
#include<stdio.h>
main()
{charb[16]={'0','1','2','3','4','5','6','7','8','9','A','B','C','D','
E','F'};
intc[64],d,i=0,base;
longn;
printf("Enteranumber:\n");scanf("%1d",&n);
printf("Enternewbase:\n");scanf("%1d",&base);
do
{c[i]=【】;
i++;
n=n/base;
}while(n!=0);
printf("Theresultis:\n");
for(--i;i>=0;--i)
{d=c[i];
printf("%c",b【】);
}
}
33.在面向对象程序设计中,从外面看只能看到对象有外部特征,而不知道也无需知道数据的具体结构以及实现操作的算法,这称为对象的______。
34.顺序存储方法是把逻辑上相邻的结点存储在物理位置______的存储单元中。
35.当数据的物理结构(存储结构、存取方式等)改变时,不影响数据库的逻辑结构,从而不致引起应用程序的变化,这是指数据的【】。
36.下面程序的运行结果是:【】。
typedefunionstudent
{charname[10];
longsno;
charsex;
floatscore[4];
}STU;
main()
{STUa[5];
Printf(“%d\n”,sizeof(a));
}
37.下面程序的输出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA"m,"BB","CC:,"DD"};
printf("%s%s%s\n,aa[em1],aa[em2],aa[em3]);
}
38.对于长度为n的顺序存储的线性表,当随机插入和删除一个元素时,需平均移动元素的个数为【】。
39.设x、y、z均为int型变量,请写出描述“x或y中至少有一个小于z”的表达式______。
40.以下函数用来求出两整数之和,并通过形参将结果传回,请填充完整。
voidfunc(intx,inty,【】z)
{*z=x+y;
}
三、1.选择题(20题)41.当说明一个结构体变量时系统分配给它的内存是()。
A.各成员所需要内存量的总和
B.结构中第一个成员所需的内存量
C.成员中占内存最大者所需的容量
D.结构中最后一个成员所需要的内存量
42.设a、b和c都是int型变量,且a=3、b=4、c=5,则下面的表达式中,值为0的表达式是______。
A.'a'&&'b'
B.a<=b
C.a||+c&&b-c
D.!((a<b)&&!c||1)
43.有以下程序:main(){chars[]="Yes\n/No",*ps=s;puts(ps+4);*(ps+4)=0;puts(s);}程序运行后的输出结果是(选项D中的第一行是空行)()。
A.n/NoYes/NoB./NoYesC./NoYes/NoD./NoYes
44.已定义下列函数:intfun(int*p){return*p;)fun函数返回值是()。
A.不确定的值B.一个整数C.形参p中存放的值D.形参p的地址值
45.若i是int型变量,且有下面的程序段:for(i=4;i<6;i++)printf((i%2)?("**%d\n"):("##%d\n"),i);上面程序段的输出结果是______。
A.**4##5B.##4**5C.**4**5D.##4##5
46.阅读下面程序,则程序段的功能是#include"stdio.h"main(){intc[]={23,1,56,234,7,0,34},i,j,t;for(i=1;i<7;i++){t=c[i];j=i-1;while(j>=0&&t>c[j]){c[j+1]=c[j];j--;}c[j+1]=t;}for(i=0;i<7;i++)printf("%d",c[i]);putchar('\n');}
A.对数组元素的升序排列B.对数组元素的降序排列C.对数组元素的倒序排列D.对数组元素的随机排列
47.当变量c的值不为2、4、6时,值也为“真”的表达式是
A.(c==2)||(c==4)||(c==6)
B.(c>=2&&c<=6)||(c!=3)||(c!=5)
C.(c>=2&&c<=6)&&!(c%2)
D.(c>=2&&c<=6)&&(c%2!=1)
48.阅读程序:main(){intx;scanf("%d',&x);if(x--<5)printf("%d\n",x);elseprintf("%d\、n",x++);}程序运行后,如果从键盘上输入5,则输出结果是()
A.3B.4C.5D.6
49.数据处理的最小单位是()。
A.数据B.数据元素C.数据项D.数据结构
50.设x=015,则x=x^017的值是()。
A.EOFB.-1C.非零值D.0
51.设fp为指向某二进制文件的指针,且已读到此文件末尾,则函数feof(fp)的返回值为______。A.EOFB.非0值C.0D.NULL
52.软件调试的目的是______。
A.发现错误B.改正错误C.改善软件的性能D.挖掘软件的潜能
53.能正确表示逻辑关系“a>=10或a<=0”的C语言表达式是()。
A.a>=10ora=10
B.a>=0|a<=10
C.a>=10&&a<=0
D.a>=10||a<=0
54.设有关键码序列(Q,G,M,Z,A,N,B,P,X,H,Y,S,T,L,K,E),采用堆排序法进行排序,经过初始建堆后关键码值B在序列中的序号是()
A.1B.3C.7D.9
55.下列说法中错误的是A.A.只能在循环体内使用break语句
B.在循环体内使用break语句可以使流程跳出本层循环体,从而提前结束本层循环
C.在while和do…while循环中,continue语句并没有使整个循环终止
D.continue的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环判断
56.有以下程序:#include<stdio.h>#defineN5#defineMN+1#definef(x)(x*M)main(){inti1,i2;i1=f(2);i2=f(1+1);printf("%d%d\n",i1,i2);}程序的运行结果是()。
A.1212B.117C.1111D.127
57.简单的交换排序方法是()。
A.快速排序B.选择排序C.堆排序D.冒泡排序
58.与十进制数255相等和二进制数是()
A.11101110B.11111110C.10000000D.11111111
59.软件设计包括软件的结构、数据接口和过程设计,其中软件的过程设计是指()
A.模块间的关系B.系统结构部件转换成软件的过程描述C.软件层次结构D.软件开发过程
60.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
四、选择题(20题)61.下列叙述中错误的是()。
A.一种数据的逻辑结构可以有多种存储结构
B.数据的存储结构与数据处理的效率无关
C.数据的存储结构与数据处理的效率密切相关
D.数据的存储结构在计算机中所占的空间不一定是连续的
62.有以下程序
63.
64.
65.在软件开发中,需求分析阶段产生的主要文档是()。
A.软件需求规格说明书B.数据库说明书C.集成测试计划D.概要设计说明书
66.有以下程序:
#include<stdio.h>
#include<strin9.h>
main()
{printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}
程序运行后的输出结果是()。
A.3B.8C.4D.9
67.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。
structnode
{hardata;
structnode*next;)*P,*q,*r;
现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;
B.q-:>next=r;q->next=r->next;r->next=q;
C.q-:>next=r->next;r->next=q;p->next=r;
D.q-:>next=q;p->next=r;q->next=r->next;
68.有以下程序:
程序运行后的输出结果是()。
A.-2,3,B.-1,-2,C.-2,-3,D.-2,1
69.(61)数据结构中,与所使用的计算机无关的是数据的()
A.存储结构
B.物理结构
C.逻辑结构
D.物理和存储结构
70.有以下程序段:
当执行上述程序段,从键盘上输入555667777abc后,y的值为()。A.55566.0B.566.0C.7777.0D.566777.0
71.
72.以下程序的输出结果是()。
inta=5;
floatx=3.14;
a*=x*(‘E’-‘A’);
printf(“%f\n”,(float)a);
A.62.000000B.62.800000C.63.000000D.62
73.有以下程序:
程序执行后的输出结果是()。
A.1B.2C.3D.4
74.在结构化方法中,软件功能分别属于下列软件开发中的(
)阶段。A.详细设计B.需求分析C.总体设计D.编程调试
75.下列变量声明合法的是()。A.shorta=1.4e-1;
B.doubleb=1+3e2.8;
C.longdo=0xfdaL;
D.float2aaa=1e-3;
76.面向对象的设计方法与传统的面向过程的方法有本质不同,它的基本原理是()。
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.不强调模拟现实世界中的算法而强调概念
77.有以下程序
.程序运行后的输出结果是()。
A.6B.9C.11D.7
78.有以下程序,若从键盘上输入7和3
main()
{inta,b,k;
scanf("%d,%d",&a,&b);
k=a;
if(a<b)k=a%b;
elsek=b%a;
printf("%d\n",k);
}
程序运行后的输出结果是
A.7B.3
C.1D.0
79.
已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字堪的表达式是()。
A.isupper(c)
B.A<=c<=Z
C.A<=c&&c<=Z
D.c<=(z-32)&&(a-32)<=c
80.有以下程序程序运行后的输出结果是()。
A.21B.11C.6D.120
五、程序改错题(1题)81.下列给定程序中,函数proc的功能是计算正整数m
各位上数字的平方和。例如,输入498,则输出应该是161。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<stdio.h>#include<conio.h>longproc(10ngm){//****found****longsum=1;do{sum+=(m%10)*(m%10);m/=l0;//****found****}while(m)return(sum);}voidmain{longn;system("CLS");printf("Pleaseenteranumber:");scanf("%1d",&n);printf("\n%ld\n",proc(n));}
六、程序设计题(1题)82.规定输入的字符串中只包含字母和。号。请编写函数fun,其功能是:将字符串尾部的。号全部删除,前面和中间的*号不动。
参考答案
1.D
2.D解析:本题中fun函数实现了字符串函数strcat的功能,将字符串aa连接到字符串ss的末尾。调用fun函数时,形参t和s分别指向了字符串ss和aa,然后通过一个while循环使t指向字符串ss的结束符的位置,第二个while循环将字符串aa中的字符(包括结束符'\\0')逐个复制到字符串ss的末尾处。
3.C解析:在n个结点的单向链表(无表头结点)中,每个结点都有一个指针单元(即指针域),加上头指针,至少需要n+1个指针单元。
4.B
5.A解析:C语言规定,标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线。另外C语言规定了一些专用的标识符,它们有着固定的含义,不能更改。int就是表达变量类型的标识符,它不能再用做变量名和函数名,所以选项B)不正确。do是C语言的一个关键字,也不能再用做变量名和函数名,所以选项C)不正确。
6.A
7.C先输出a、b表示退一格,当执行到:\b后,光标往后退,接着输出re'hi'y\(反斜杠后又加一个反斜杠的意思是要输出一个反斜杠),此时又执行:\b后,\就被ou覆盖。
8.BC语言中,数组名本身就是一个指针,指向数组内存的起始位置,选项A正确;已经定义的数组被分配了内存空间,所以可以读入数据到数组中,未赋初值的指针没有分配内存空间,不可以读入数据,选项B错误;可以将指针指向一个同类型的数组,选项C正确;指针指向一个数组后,可以通过移动指针,指向该数组中的任意一个元素,选项D正确。故本题答案为B选项。
9.A
10.C
11.D程序调试是由程序开发者完成诊断和改正程序中的错误的过程;软件测试是由专门的测试人员完成,是发现错误而执行程序的过程;软件维护是指软件系统交付使用以后,为了改正错误或满足新的需要而修改软件的过程,是软件生存周期中非常重要的一个阶段。
12.D关系R与s经交运算后所得到的关系是由那些既在R内又在S内的共有元组组成的,记为RnS。
13.C
14.C解析:字符串少一个结束标志,所以输出的结果不确定。
15.B常见的过程设计工具有图形土具(程序流程图、N—S图、PAD图、HIP0图)、表格工具(判定表)和语言工具(PDL)。DFD是数据流图,是描述数据处理过程的工具。
16.C解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止当前应用程序的运行,关闭当前窗口。
17.C解析:软件系统结构的总体设计包括:基于功能层次结构建立系统、按功能划分成模块的层次结构、确定每个模块的功能、建立与已确定的软件需求的对应关系、确定模块间的调用关系和模块间的接口、评估模块划分的质量等方面。详细设计的任务是:在使用程序设计语言编制程序以前,对所采用算法的逻辑关系进行分析,设计出全部必要的过程细节,并给予清晰的表达。需求分析是指用户对目标软件系统在功能、行为、性能、设计约束等方面的期望。需求分析的任务是发现需求、求精、建模和定义需求,通常包括:功能需求、性能需求、环境需求、可靠性需求、安全保密要求、用户界面需求、资源使用需求、成本消耗需求、开发进度需求等。编程调试的任务是诊断和改正程序中潜在的错误。综上所述。软件功能分解只能发生在总体设计阶段。
18.C
19.A
20.B解析:栈是限定在二端进行插入与删除的线性表。在栈中,允许插入与删除的一端称为栈顶,而不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素,即栈是按照“先进后出”或“后进先出”的原则组织数据的。注意:队列组织数据的原则是“先进先出”或“后进后出”。注意:数据结构中,栈和队列组织数据的原则。
21.66解析:分析程序可知,每循环一次,x的值加1,然后检测循环控制条件(y!=19)&&(x<7),因y的值不变,故满足x<7时循环6次。
22.9
23.aeiou
24.efghefgh解析:函数ss返回形参s所指向的符号串的后半部分,故p='efgh'。
25.结构结构解析:路径测试是白盒测试方法中的—种,它要求对程序中的每条路径最少检查一次,目的是对软件的结构进行测试。
26.3131解析:在函数调用时,形参值和改变,不会改变实参的值。
27.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
28.150150解析:本题先给变量x赋初始值100,然后将指针p指向变量x,*p是取指针p所指地址的内容,即100,所以x=100+50=150。
29.扇出扇出解析:在结构图中,调用一个给定模块的模块个数称为扇入,一个模块直接调用的其他模块个数称为扇出。
30.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。
31.1616解析:在程序中首先将8赋值给变量a
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 池州2025年安徽池州石台县殡葬管理所编外工作人员招聘笔试历年参考题库附带答案详解
- 数字内容版权授权与变现模式考核试卷
- 生态旅游景区环境监测技术与应用研究
- 现代商业与网络文学内容的互动关系
- 再生塑料的环保认证与市场认可考核试卷
- 未来经济走势预测与当前财务策略调整
- 对机电安装工程总包的认识和相应的措施
- 现代办公室的隔音与降噪解决方案
- SMT贴片机考核试卷
- 太阳能光伏电站建设中的安全生产管理考核试卷
- 关于进行小区第一届业主委员会选举投票的公告
- 2023年山西国际能源集团有限公司招聘笔试题库及答案解析
- YC/T 295-2009卷烟制造过程能力测评导则
- 仁爱英语八年级阅读理解测试题和答案
- 山东省中考物理总复习 八上 第4讲 光现象
- DB11∕T 1875-2021 市政工程施工安全操作规程
- 心肺康复完整版本课件
- 传统节日春节英文介绍课件
- 质量奖现场评审问题集锦精编版
- 装配式结构技术课程教学大纲
- 水资源论证报告
评论
0/150
提交评论