版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列有关格式输入函数scanf的叙述中正确的是()
A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”
B.可以只有格式控制项,没有地址列表项
C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);
D.当输入数据时,必须指明变量地址
2.
3.以下说法错误的是()。
A.散列法存储的思想是由关键字值决定数据的存储地址
B.散列表的结点中只包含数据元素自身的信息,不包含指针
C.负载因子是散列表的一个重要参数,它反映了散列表的饱满程度
D.散列表的查找效率主要取决于散列表构造时选取的散列函数和处理冲突的方法
4.若有"doublea;",则正确的输入语句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
5.广义表(a,b,c,d)的表尾是()。
A.aB.(a)C.(b,c,d)D.((b,c,c))
6.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储
7.计算机硬件组成中,CPU包含______。
A.控制器和存储器B.控制器和运算器C.控制器、运算器和存储器D.内存储器和外存储器
8.以下叙述错误的是()。
A.算术运算符中不包含“=”运算符
B.模运算符“%”是c语言基本的算术运算符
C.算术运算符中只有“*”、“/”优先级高于关系运算符
D.自加和自减运算符只能用于变量,而不能用于常量或表达式
9.下列能正确进行字符串赋值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={A,B,C,D,E};
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
10.下列定义数组的语句中错误的是()。
A.intx[2][3]={1,2,3,4,5,6};
B.intx[][3]={0};
C.intx[][3]={{1,2,3},{4,5,6}};
D.intx[2][3]={{1,2},{3,4},{5,6}};
11.
12.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
13.
14.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
15.下列关于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
16.有以下程序:
执行后的结果是()。A.7B.3C.2D.0
17.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序运行后的输出结果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0
18.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
19.下列选项中,当x为大于1的奇数时,值为0的表达式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
20.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____。
A.q一>next=p一>next;p一>next=q;
B.q一>next=p一>next;p一>next=q;
C.p一>next=q一>next;q=p;
D.p一>next=q一>next;q一>next=p;
二、2.填空题(20题)21.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;
for(b=s,a=s;b-s<13;b++)
if(【】)a=b;
printf("%d",*a);}
22.下面程序的运行结果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
23.算法的复杂度主要包括空间复杂度和______复杂度。
24.以下程序运行后的输出结果是()。
main()
{intm=011,n=11;
printf("%d%d\ff",++m,n++);
}
25.算法的基本特征是可行性、确定性、【】和拥有足够的情报。
26.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
27.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
28.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
29.以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
#defineN4
voidrotade(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=【】;【】=a[N-1][i];}}
30.strcat函数的作用是【】。
31.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
32.源程序文档化要求程序应加注释。注释一般分为序言性注释和【】注释。
33.以下程序的输出结果是【】。
main()
{
intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
34.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
35.在算法正确的前提下,评价一个算法的两个标准是空间复杂度和()。
36.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
37.以下程序的输出结果是______。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
38.在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为【】。
39.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
40.在树形结构中,树根结点没有______。
三、1.选择题(20题)41.有以下程序floatfun(intx,inty){return{x+y);}main(){inta=2,b=5,c=8;printf("%3.of\n",fun((int)fun(a+c,B),a-C));}程序运行后的输出结果是
A.编译出错B.9C.21D.9
42.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。
A.charstr[]="string";c=str;
B.scanf("%s",C);
C.c=getchar();
D.charstr[]="string";strcpy("C,str")
43.在下列选项中,不是一个算法一般应该具有的基本特征的是()。
A.确定性B.可行性C.无穷性D.拥有足够的情报
44.设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为______。
A.12B.144C.0D.132
45.设函数中有整型变量a,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()。
A.staticB.registerC.autoD.auto或register
46.按条件f对关系R进行选择,其关系代数表达式为
A.
B.
C.
D.
47.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}
A.1B.4C.9D.0
48.以下叙述中错误的是()。
A.C语句必须以分号结束
B.复合语句在语法上被看做一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
49.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要再测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
50.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A.m=123n=456p=789
B.m=123n=456p=789
C.m=123,n=456,p=789
D.123456789
51.详细设计中,可用于描述详细设计的工具有()
A.程序流程图,SC图、PAD图和PDL
B.程序流程图、N-S图、PAD图和PDL
C.数据流程图、N-S图、PAD图和PDL
D.程序流程图、BS图、PAD图和PDL
52.有以下程序
#include<stdio.h>
main()
{FILE*fp;intk,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是
A.12B.14C.1234D.123456
53.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;
A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;
54.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
55.有以下函数:fun(char*p){returnp;}该函数的返回值是()。
A.无确切值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
56.分析下列程序,其最终执行结果是______。main(){intn[3],i,j,k;for(i=0;i<3;i++)n[i]=O;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]-1;printf("%d\n",n[0]);}
A.-2B.-1C.0D.-3
57.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
58.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.下弄不属于软件调试技术的是______。
A.强行排错法B.集成测试法C.回溯法D.原因排除法
60.C语言结构体类型变量在程序运行期间
A.TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B.所有的成员一直驻留在内存中
C.只有最开始的成员驻留在内存中
D.部分成员驻留在内存中
四、选择题(20题)61.
62.
63.
64.有以下程序若想通过键盘输入,使得al的值为12,a2的值为34,el的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是()。
65.
66.
67.下面程序运行后的输出结果是()。
structabc
{
inta,b,c;
}
main()
{
structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A.5B.6C.7D.8
68.当用“#defineF37.5f”定义后,下列叙述正确的是()。
A.F是float型数B.F是Char型数C.F无类型D.F是字符串
69.下面叙述正确的是_______。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.算法的时间复杂度是指执行算法程序所需要的时间
70.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
71.
数字字符0的ASCII值为48,运行以下程序的输出结果是()。
main
(chara=1,b=2;
printf("%C,",b++);printf("%d\n",b—a);}
A.3,2B.50,2C.2,2D.2,50
72.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的输出结果是
A.3,9B.5,9
C.1,9D.1,1
73.阅读下面程序段,则执行后的结果为()。
A.64B.8C.56D.0
74.有以下程序:
运行后的输出结果是()。
A.MtemoonB.AftemoonC.MorningD.orning
75.
76.对字符数组s赋值,不合法的一个是()。
A.chars[]="Beijing"
B.chars[20]={"Beijing"}
C.chars[20];s="Beijing"
D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}
77.下列选项中不合法的十六进制数是()。A."0"xff
B."0"X11
C."0"x1g
D."0"Xabc
78.若有以下定义和语句:“doubler=99,*p=&r;*P=r;”,则以下正确的叙述是()。
A.两个*p含义相同,都说明给指针变量p赋值
B.在“doubler=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C.语句“*p=r;”把变量r的值赋给指针变量P
D.语句“*p=r;”取变量r的值放回r中
79.以下叙述中错误的是()。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
80.
有下列程序段:
intn,t=1,S=0;
scanf("%d",&n);
do{s=s+t;t=t-2;while(t!=n);
为使此程序段不陷入循环,从键盘输入的数据应该是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写一个函数,用来删除字符串中的所有*。例如,输入abc*de*f*gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。
2.B
3.B
4.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。
5.C
6.C
7.B
8.C
9.C选项A、B的空间不够;字符串存储要有结束符\0,且要占用一个空间,printf用来输出字符,不能输入字符串。
10.DD选项中“x[2][3]”定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,所以错误。故本题答案为D选项。
11.C
12.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
13.A
14.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
15.A解析:线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。
16.C调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);
调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);调用函数fun(3)时,由于X的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);调用函数fun(1)时,由于x的值为1,执行语句“return(3);”,函数的返回值为3。
因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。
17.A本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-5=5,所以c=5,再计算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案选择A。
18.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
19.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。
20.D
21.*b>*a
22.
23.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。
24.10111011解析:赋值表达式m=011中的常数011为八进制,++m后以十进制数格式“%d”输出为10。
25.有穷性有穷性解析:算法有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。
26.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
27.参照完整性参照完整性
28.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。
29.a[0][i]b[i][o]a[0][i]\r\nb[i][o]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中。
30.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。
31.19
32.功能性功能性
33.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2==1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。
34.246
35.时间复杂度时间复杂度解析:在算法正确的前提下,评价一个算法的两个标准是空间复杂度和时间复杂度。算法的时间复杂度,是指执行算法所需要的计算工作量。算法的空间复杂度是指执行这个算法所需要的内存空间。
36.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)
37.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
38.nn解析:在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为n。
39.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。
40.前件前件
41.B解析:本题考查的知识点是函数的参数类型、函数值类型及函数调用.fun()函数是将传进来的两个整型参数相加,把和作为函数值返回,.注意返回值为float型.在主函数调用了两次fun()函数,第一次调用时把表达式“a+c”和变量“b”的值求和,得到15转换为15.0作为函数的返回值。第二次调用把第一次调用的返回值通过强制类型转换成int型15,再和表达式“a-c”相加,得到结果9,转换成float型作为函数值返回。由于输出格式符为“%3.0f”输出时没有小数位,故输出为9.所以4个选项中B正确。
42.A在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla'字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。
43.C解析:作为一个算法,一般应具有的基本特征有:可行性、确定性、有穷性、拥有足够的情报。
44.C解析:表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算计a+=a,故表达式和a的值都为a+a=0。
45.A
46.C解析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。如果关系的逻辑条件为f,则R满足f的选择运算可以写成;бf(R)。
47.D解析:本题主要是考查带参数的宏定义及其相关运算。本题中宏运算过程如下:a=a/(S(k+m)/S(k+m))=a/(k+m*k+m/k+m*k+m)=9/(3+2*3+2/3+2*3+2)=0。
48.C解析:C程序中所有语句都必须由一个分号“;”作为结束符。如果只有一个分号,这个分号也是一条语句,称为“空语句”,程序执行时不产生任何动作。程序设计中有时需要加一个空语句来表示存在一条语句,但随意加分号也会导致逻辑上的错误,影响程序的运行。所以选项C的说法是错误的。
49.D解析:本题考核软件测试、软件调试和软件维护的概念。软件测试的目标是在精心控制的环境下执行程序,以发现程序中的错误,给出程序可靠性的鉴定。软件测试具有挑剔性,测试不是为了证明程序是正确的,而是在设想程序有错误的前提下进行的,其目的是设法暴露程序中的错误和缺陷,就是说,测试是程序执行的过程,目的在于发现错误;一个好的测试在于能发现至今未发现的错误;一个成功的测试是发现了至今未发现的错误。由于测试的这一特征,一般应当避免由开发者测试自己的程序。所以,选项A的说法错误。
调试也称排错,目的是发现错误的位置,并改正错误,经测试发现错误后,可以立即进行调试并改正错误;经过调试后的程序还需进行回归测试,以检查调试的效果,同时也可防止在调试过程中引进新的错误。所以,选项B的说法错误。
软件维护通常有4类:为纠正使用中出现的错误而进行的改正性维护;为适应环境变化而进行的适应性维护;为改进原有软件而进行的完善性维护;为将来的可维护和可靠而进行的预防性维护。软件维护不仅包括程序代码的维护,还包括文档的维护。文档可以分为用户文档和系统文档两类。但无论是哪类文档,都必须与程序代码同时维护。只有与程序代码完全一致的文档才有意义和价值。所以,选项C的说法错误。
综上所述,选项A、B、C的说法都错误,所以,选项D为正确答案。
50.A解析:正确输入各变量的值,输入的格式应该和输入语句中的“格式控制”字符串的格式对应一致。
51.B
52.D解析:将有6个元素的整型数组分两行输出到一个文件中,因为输出的都是数字并且每行都没有分隔符,所以当再对其进行读取操作时,每一行都会被认为是一个完整的数,而换行符则作为它们的分隔符。
53.C解析:本题主要考查怎样为嵌套定义的结构中的成员赋值:由于worker中的birth是一个st型的结构,在给birth赋值时,不能将birth作为一个整体,要用“.”运算再深入一层访问到最基本的成员x、y、z。
54.D解析:在定义函数时函数名后面括弧中的变量名称为“形式参数”(简称形参),在主调函数中调用一个函数时,函数名后面括弧中的参数(可以是一个表达式)称为“实际参数”(简称实参)。C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参,而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。故本题应该选择D。
55.B解析:return中返回的是指针p的值,也就是形参p中存放的地址值。
56.D解析:当i为0,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[0]-1,n[0]值变为-1:在j为1时,执行n[j]=n[i]-1;,即n[1]=n[0]-1,将-2赋给n[1]。当i为1时,内循环在j为0时,执行n[j]=n[i]-1;,即n[0]=n[1]-1,n[0]值变为-3;在j为1时,执行n[j]=n[i]-1;,即n[1]=n[1]-1,将-3赋给n[1];最后n[0]和n[1]的值均为-3。
57.C解析:选项A用了一个绝对值函数abs();选项B中用了一个“&&”逻辑与;选项C中,“||”左边的式子如为真,将不再判断其后的表达式的值;选项D为本题中数学关系式的一个等价命题。
58.B解析:本题主要考查结构指针:p=&st,访问结构体的成员,可以通过结构变量访问,即st.i,也可以用等价的指针形式,即(*p).i和p->i。
59.B解析:调试的关健在于推断程序内部的错误位置及原因。主要的调试方法有强行排错法、回溯法和原因排除法。
60.B解析:结构体类型的变量在程序运行期间要作为一个整体占用连续的内存单元。
61.B
62.C
63.B
64.A在输入多个数据时,如果格式控制串中没有非格式字符,则认为所有输入的字符均为有效字符。因此应按选项A)的顺序输人数据。
65.B
66.B
67.B结构体成员的引用;s[0].a=1,s[1].b=5,所以结果为6
68.D解析:字符替换定义格式为:#define标识符(形参表)形参表达式。题中F是代表形参表达式的标识符(字符串)。
69.C解析:算法的设计可以避开具体的计算机程序设计语言,但算法的实现必须借助程序设计语言中,提供的数据类型及其算法。数据结构和算法是计算机科学的两个重要支柱。它们是一个不可分割的整体。算法在运行过程中需辅助存储空间的大小称为算法的空间复杂度。算法的有穷性是指一个算法必须在执行有限的步骤以后.结束。算法的时间复杂度是指执行算法所需要的计算工作量,即算法执行过程中所需要的基本运算次数。
70.B解析:编译时,编译系统不为局部变量分配内存单元,而是在程序运行中,当局部变量所在的函数被调用时,编译系统根据需要要临时分配内存,调用结束空间释放;全局变量一经定义,编译系统为其分配固定的内存单元,在程序运行的自始至终都占用固定的单元。在考虑内存不定的情况下,最好使用全局变量。
71.C
\nb++是先用表达式的值然后自增l,因此表达式值为2,b为3;b-a=3-1=2,因此最后输出的结果为2,2,前一个为字符2,后一个为数字2。
\n
72.C本题中,程序开始定义了一个数组a,并对这个数组进行赋初值。然后定义一个整型变量i和一个整型指针变量p,并使指针变量p指向数组a的首地址。然后执行for循环,循环变量i的初值为0,循环结束条件为变量i的值大于等于4,循环变量i的值每循环一次自加1,通过这些分析我们知道,循环执行了4次结束。
第一次循环时,由于*p表示数组的第一个元素值1,那么执行a[i]=*p;语句,即将数组的第一个元素变为1;第二次循环时,由于i为1,即将数组的第二个元素变为1,同理,第三次与第四次循环分别将数组的第三和第四个元素值变为1。
循环结束,程序执行输出语句,这时数组中所有元素的值分别为1,1,1,1,9,因此,程序最后的输出结果是1,9,答案选C。
73.C函数之间的数据传递。如果没有指明函数值类型,则默认函数返回值的类型为int型。
74.B语句voidfun(char**P)中的形参是一个指向指针的指针,在调用函数fun(a)后,指针数组a加1,
75.D
76.C数组赋值时,字符串常量给出的是这个字符串在内存中所占存储单元的首地址,而s是一个不可重新赋值的数组名,所以此赋值不合法。
77.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。
78.B在定义*p=&r时,是表示r的地址赋给了p所指的存储单元,因此选项B正确。
79.C解析:在C语言中,除字符数组外,一个数组不能通过数组名对数姐进行整体引用,因此选项A是对的。数组名中存放的是一个地址常量,它代表整个数组的首地址,因此选项B是对的。C语言程序在运行过程中,系统不自动检验数组元素的下标是否越界,因此选项C是错误的。C语官规定可以通过赋初值来定义数组的大小,这时数组说明符的一对方括号中可以不指定数组的大小,因此选项D也是正确的。所以,4个选项中选项C符合题意。
80.D
\n本题主要考查do—while循环,因为变量t的初始值等于1,经过第一次do-while循环后,执行t=t-1这条语句一次,所以变量t的值为-1,判断关系表达式t!=n是否成立,如果关系表达式成立,则执行第二次循环,如果关系表达式不成立,退出循环。由此可见,只要输入变量n的值为负奇数,则一定会使t==n成立,故退出do-while循环。
\n
81.(1)错误:if((tt[i]>=ˊaˊ)||(tt[i]<=ˊzˊ))
正确:if((tt[i]>=ˊaˊ)&&(tt[i]<=ˊzˊ))
(2)错误:tt[i]+=32;
正确:tt[i]-=32;
【解析】题目要求将小写字母改为对应的大写字母,要判断是否是小写字母,只需判断字母是否在ˊaˊ~ˊzˊ,因此应该是“(tt[i]>=ˊaˊ)&&(tt[i]<=ˊzˊ)”;又已知小写字母的ASCⅡ码值比对应大写字母的ASCⅡ值大32,因此本题的解题思路是从字符串的第一个字母开始遍历,判断是否为小写字母,如果是,则ASCⅡ码值减32。
82.
【解析】根据题目中要求删除字符串中所有的*号,需要检查字符串中的每一个字符,将不是*号的字符放入原来的字符串中,形成新的字符串,最后在新的字符串的末尾加上结束符。
2021-2022年安徽省亳州市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列有关格式输入函数scanf的叙述中正确的是()
A.输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”
B.可以只有格式控制项,没有地址列表项
C.在输入数据时,必须规定精度。如:scanf("%4.2f",&d);
D.当输入数据时,必须指明变量地址
2.
3.以下说法错误的是()。
A.散列法存储的思想是由关键字值决定数据的存储地址
B.散列表的结点中只包含数据元素自身的信息,不包含指针
C.负载因子是散列表的一个重要参数,它反映了散列表的饱满程度
D.散列表的查找效率主要取决于散列表构造时选取的散列函数和处理冲突的方法
4.若有"doublea;",则正确的输入语句是()。
A.scanf("%1f",a);
B.scanf("%f",&a);
C.scanf("%1f",&a)
D.scanf("%1e",&a);
5.广义表(a,b,c,d)的表尾是()。
A.aB.(a)C.(b,c,d)D.((b,c,c))
6.字符串通常采用的两种存储方式是()A.散列存储和索引存储B.索引存储和链式存储C.顺序存储和链式存储D.散列存储和顺序存储
7.计算机硬件组成中,CPU包含______。
A.控制器和存储器B.控制器和运算器C.控制器、运算器和存储器D.内存储器和外存储器
8.以下叙述错误的是()。
A.算术运算符中不包含“=”运算符
B.模运算符“%”是c语言基本的算术运算符
C.算术运算符中只有“*”、“/”优先级高于关系运算符
D.自加和自减运算符只能用于变量,而不能用于常量或表达式
9.下列能正确进行字符串赋值的是()。
A.chars[5]={"ABCDE"};
B.chars[5]={A,B,C,D,E};
C.char*S;S="ABCDE";
D.char*s;printf("%《",s);
10.下列定义数组的语句中错误的是()。
A.intx[2][3]={1,2,3,4,5,6};
B.intx[][3]={0};
C.intx[][3]={{1,2,3},{4,5,6}};
D.intx[2][3]={{1,2},{3,4},{5,6}};
11.
12.已定义c为字符型变量,则下列语句中正确的是()。
A.c='97'B.c="97"C.c=97D.c="a"
13.
14.C语言可执行程序的开始执行点是()。
A.包含文件中的第一个函数B.程序中第一个函数C.程序中的main()函数D.程序中第一条语句
15.下列关于线性链表的描述中正确的是()。
A.存储空间不一定连续,且各元素的存储顺序是任意的
B.存储空间不一定连续,且前件元素一定存储在后件元素的前面
C.存储空间必须连续,且各前件元素一定存储在后件元素的前面
D.存储空间必须连续,且各元素的存储顺序是任意的
16.有以下程序:
执行后的结果是()。A.7B.3C.2D.0
17.有以下程序:#include<stdio.h>main(){inta=0,b=0,c=0;c=(a=a=5);(a=b,b+=4);printf("%d,%d,%d\n",a,bc);}程序运行后的输出结果是()。A.0,4,5B.4,4,5C.4,4,4D.0,0,0
18.有以下程序:程序运行后的输出结果是()。A.1.000000B.0.000000C.0.250000D.0.500000
19.下列选项中,当x为大于1的奇数时,值为0的表达式是()。
A.x%2==1B.x/2C.x%2!=0D.x%2==0
20.在一个单链表HL中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行____。
A.q一>next=p一>next;p一>next=q;
B.q一>next=p一>next;p一>next=q;
C.p一>next=q一>next;q=p;
D.p一>next=q一>next;q一>next=p;
二、2.填空题(20题)21.下面程序的功能是输出数组中最大的数,由a指针指向该元素。请填空。
main()
{ints[]={6,7,2,13,9,1,12,10,5,8,4,3,11},*a,*b;
for(b=s,a=s;b-s<13;b++)
if(【】)a=b;
printf("%d",*a);}
22.下面程序的运行结果是______。
#include<stdio.h>
main()
{inty,a;
y=2,a=1;
while(y--!=-1)
{do{a*=y;a++;}while(y--);}
printf("%d,%d",a,y);}
23.算法的复杂度主要包括空间复杂度和______复杂度。
24.以下程序运行后的输出结果是()。
main()
{intm=011,n=11;
printf("%d%d\ff",++m,n++);
}
25.算法的基本特征是可行性、确定性、【】和拥有足够的情报。
26.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
27.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
28.以下程序用来输出结构体变量ex所占存储单元的字节数,请填空。
structst
{charname[20];doublescore;};
main()
{structstex;
printf("exsize:%d\n",sizeof(【】));}
29.以下涵数rotate的功能是:将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中,把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b所指二维数组中其他数据不变。
#defineN4
voidrotade(inta[][N],intb[][N])
{inti,j;
for(i=0;i<N;i++)
{b[i][N-1]=【】;【】=a[N-1][i];}}
30.strcat函数的作用是【】。
31.某二叉树中度为2的节点有18个,则该二叉树中有()个叶子节点。
32.源程序文档化要求程序应加注释。注释一般分为序言性注释和【】注释。
33.以下程序的输出结果是【】。
main()
{
intp[7]={11,13,14,15,16,17,18};
inti=0,j=0;
while(i<7&&p[i]%2==1)j+=p[i++];
printf("%d\n",j);
}
34.以下程序的输出结果是______。
voidfun()
{staticinta=0;
a+=2;printf("%d",a);
}
main()
{intcc;
for(cc=1;cc<4;cc++)fun();
printf("\n");
}
35.在算法正确的前提下,评价一个算法的两个标准是空间复杂度和()。
36.数据库设计分为以下6个设计阶段:需求分析阶段、______、逻辑设计阶段、物理设计阶段、实施阶段、运行和维护阶段。
37.以下程序的输出结果是______。
#include<stdio.h>
voidswap(int*a,int*b)
{int*t;
t=a;a=b;b=t;
}
main()
{inti=3,j=5,*p=&i,*q=&j;
swap(p,q);printf("%d%d\n",*p,*q);
}
38.在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为【】。
39.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。
40.在树形结构中,树根结点没有______。
三、1.选择题(20题)41.有以下程序floatfun(intx,inty){return{x+y);}main(){inta=2,b=5,c=8;printf("%3.of\n",fun((int)fun(a+c,B),a-C));}程序运行后的输出结果是
A.编译出错B.9C.21D.9
42.设有定义:char*c;,以下选项中能够使字符型指针c正确指向一个字符串的是()。
A.charstr[]="string";c=str;
B.scanf("%s",C);
C.c=getchar();
D.charstr[]="string";strcpy("C,str")
43.在下列选项中,不是一个算法一般应该具有的基本特征的是()。
A.确定性B.可行性C.无穷性D.拥有足够的情报
44.设a=12,a定义为整型变量。表达式a+=a-=a*=a的值为______。
A.12B.144C.0D.132
45.设函数中有整型变量a,为保证其在未赋初值的情况下初值为0,应选择的存储类别是()。
A.staticB.registerC.autoD.auto或register
46.按条件f对关系R进行选择,其关系代数表达式为
A.
B.
C.
D.
47.执行下列程序后,输出的结果是()。#include<stdio.h>#defineS(X)X*Xvoidmain(){inta=9,k=3,m=2;a/=S(k+m)/S(k+m);printf("%d",a);}
A.1B.4C.9D.0
48.以下叙述中错误的是()。
A.C语句必须以分号结束
B.复合语句在语法上被看做一条语句
C.空语句出现在任何位置都不会影响程序运行
D.赋值表达式末尾加分号就构成赋值语句
49.下列叙述中正确的是()。
A.软件测试应该由程序开发者来完成
B.程序经调试后一般不需要再测试
C.软件维护只包括对程序代码的维护
D.以上三种说法都不对
50.有以下程序:main(){intm,n,p;scanf("m=%dn=%dp=%d",&m,&n,&p);printf("%d%d%d\n",m,n,p);}若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。
A.m=123n=456p=789
B.m=123n=456p=789
C.m=123,n=456,p=789
D.123456789
51.详细设计中,可用于描述详细设计的工具有()
A.程序流程图,SC图、PAD图和PDL
B.程序流程图、N-S图、PAD图和PDL
C.数据流程图、N-S图、PAD图和PDL
D.程序流程图、BS图、PAD图和PDL
52.有以下程序
#include<stdio.h>
main()
{FILE*fp;intk,n,a[6]={1,2,3,4,5,6};
fp=fopen("d2.dat","w");
fprintf(fp,"%d%d%d\n",a[0],a[1],a[2]);
fprintf(fp,"%d%d%d\n",a[3],a[4],a[5]);
fclose(fp);
fp=fopen("d2.dat","r");
fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);
fclose(fp);
}
程序运行后的输出结果是
A.12B.14C.1234D.123456
53.若定义下列结构体,结构体变量p的出生年份赋值正确的语句是()。structst{intx;inty;intz;}structworker{charname[20];charsex;structstbirth;}p;
A.x=1987B.birth.x=1987;C.p.birth.x=1987;D.p.x=1987;
54.若函数调用时的实参为变量时,以下关于函数形参和实参的叙述中正确的是()。
A.函数的实参和其对应的形参共占同一存储单元
B.形参只是形式上的存在,不占用具体存储单元
C.同名的实参和形参占同一存储单元
D.函数的形参和实参分别占用不同的存储单元
55.有以下函数:fun(char*p){returnp;}该函数的返回值是()。
A.无确切值B.形参p中存放的地址值C.一个临时存储单元的地址D.形参p自身的地址值
56.分析下列程序,其最终执行结果是______。main(){intn[3],i,j,k;for(i=0;i<3;i++)n[i]=O;k=2;for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]-1;printf("%d\n",n[0]);}
A.-2B.-1C.0D.-3
57.若x和y代表整型数,以下表达式中不能正确表示数学关系|x-y|<10的是
A.abs(x-y)<10
B.x-y>-10&&x-y<10
C.!(x-y)<-10‖!(y-x)>10
D.(x-y)*(x-y)<100
58.若有下列说明和语句,则对结构体变量st中成员i的引用方式不正确的是()。Structstu{inti;intname;}st,*p;p=&st;
A.st.iB.*p.iC.(*p).iD.p->i
59.下弄不属于软件调试技术的是______。
A.强行排错法B.集成测试法C.回溯法D.原因排除法
60.C语言结构体类型变量在程序运行期间
A.TC环境在内存中仅仅开辟一个存放结构体变量地址的单元
B.所有的成员一直驻留在内存中
C.只有最开始的成员驻留在内存中
D.部分成员驻留在内存中
四、选择题(20题)61.
62.
63.
64.有以下程序若想通过键盘输入,使得al的值为12,a2的值为34,el的值为字符a,c2的值为字符b,程序输出结果是:12,a,34,b则正确的输入格式是()。
65.
66.
67.下面程序运行后的输出结果是()。
structabc
{
inta,b,c;
}
main()
{
structabcs[2]={{1,2,3},{4,5,6}};
intt;
t=s[0].a+s[1].b;
printf("%d\n",t);
}
A.5B.6C.7D.8
68.当用“#defineF37.5f”定义后,下列叙述正确的是()。
A.F是float型数B.F是Char型数C.F无类型D.F是字符串
69.下面叙述正确的是_______。
A.算法的执行效率与数据的存储结构无关
B.算法的空间复杂度是指算法程序中指令(或语句)的条数
C.算法的有穷性是指算法必须能在执行有限个步骤之后终止
D.算法的时间复杂度是指执行算法程序所需要的时间
70.下列叙述中不正确的是()。
A.在C语言中调用函数时,只能把实参的值传送给形参,形参的值不能传送给实参
B.在C的函数中,最好使用全局变量
C.外部变量可以在函数之间传递数据
D.自动变量实质上是一个函数内部的局部变量
71.
数字字符0的ASCII值为48,运行以下程序的输出结果是()。
main
(chara=1,b=2;
printf("%C,",b++);printf("%d\n",b—a);}
A.3,2B.50,2C.2,2D.2,50
72.若有以下程序
#include<stdio.h>
main()
{inti;
inta[]={1,3,5,7,9}
int*p=a;
for(i=0;i<4;i++)
a[i]=*p;
printf("%d,%d\n",a[2],a[4]);
}
上面程序的输出结果是
A.3,9B.5,9
C.1,9D.1,1
73.阅读下面程序段,则执行后的结果为()。
A.64B.8C.56D.0
74.有以下程序:
运行后的输出结果是()。
A.MtemoonB.AftemoonC.MorningD.orning
75.
76.对字符数组s赋值,不合法的一个是()。
A.chars[]="Beijing"
B.chars[20]={"Beijing"}
C.chars[20];s="Beijing"
D.chars[20]={’B,’e’,’i’,’j’,’i’,’n’,’g’}
77.下列选项中不合法的十六进制数是()。A."0"xff
B."0"X11
C."0"x1g
D."0"Xabc
78.若有以下定义和语句:“doubler=99,*p=&r;*P=r;”,则以下正确的叙述是()。
A.两个*p含义相同,都说明给指针变量p赋值
B.在“doubler=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元
C.语句“*p=r;”把变量r的值赋给指针变量P
D.语句“*p=r;”取变量r的值放回r中
79.以下叙述中错误的是()。
A.对于double类型数组,不可以直接用数组名对数组进行整体输入或输出
B.数组名代表的是数组所占存储区的首地址,其值不可改变
C.当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息
D.可以通过赋初值的方式确定数组元素的个数
80.
有下列程序段:
intn,t=1,S=0;
scanf("%d",&n);
do{s=s+t;t=t-2;while(t!=n);
为使此程序段不陷入循环,从键盘输入的数据应该是()。
A.任意正奇数B.任意负偶数C.任意正偶数D.任意负奇数
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将tt所指字符串中的小写字母全部改为对应的大写字母,其他字符不变。例如,若输入“Ab,cD”,则输出“AB,CD”。请改正程序中的错误,使它能得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.请编写一个函数,用来删除字符串中的所有*。例如,输入abc*de*f*gh,则输出为abcdefgh。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。试题程序:
参考答案
1.D解析:如果是指针型变量或数组名,则变量前不加地址符号&,所以选项A的说法有误。必须有地址列表项才能实现正确输入,所以选项B的说法有误。在输入数据时,不可以指定实型数据的精度,所以选项C的说法有误。只有选项D的说法正确。
2.B
3.B
4.D解析:函数scanf()的调用形式是:scanf(格式字符串,输入项地址表)。其中,“格式字符串”是要输入的变量的格式符;“输入项地址表”是要输入的变量的地址。本题中定义变量a为双精度型变量,双精度变量的格式符为“1e”;变量的地址用取地址符“&”加变量名表示,如变量a的地址为“&a”。
5.C
6.C
7.B
8.C
9.C选项A、B的空间不够;字符串存储要有结束符\0,且要占用一个空间,printf用来输出字符,不能输入字符串。
10.DD选项中“x[2][3]”定义的是一个2行3列的二维数组,而在给数组元素赋值时却赋成了3行,所以错误。故本题答案为D选项。
11.C
12.C解析:本题考核的知识点是字符型变量的基本概念。用单引号括起来的一个字符称为字符常量,而选项B和选项D中用的是双引号,而用双引号括起来的字符为字符串常量,故选项B和选项D不正确。因为在C语言中,字符常量在存储时,并不是把该字符本身放到内存单元中去,而是将该字符的相应的ASCII代码放到存储单元中,所以C语言使字符型数据和整形数据之间可以通用,选项C正确.而选项A中,给字符型变量赋值时只能赋一个字符,而9,7作为字符时为两个字符且必须分别为单引号括起来,故选项A不正确,所以,4个选项中选项C符合题意。
13.A
14.C解析:每个C程序有且只有一个主函数main(),且程序必须从main函数开始执行,并在main()函数中结束。
15.A解析:线性表的链式存储结构中的结点空间是动态生成的,它们在内存中的地址可能是连续的,也可能是不连续的。
16.C调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);
调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);调用函数fun(3)时,由于X的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);调用函数fun(1)时,由于x的值为1,执行语句“return(3);”,函数的返回值为3。
因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。
17.A本题考查简单的赋值运算,在程序中c=(a-=am5),先算括号中的a-=a-5=5,所以c=5,再计算(a=b,b+=4);,a=b=0,b+=4=0+4=4,所以b=4,所以a=0,b=4,c=5,答案选择A。
18.D程序定义double变量x、y,给x赋初值2.0。if语句判断,当x小于0.0时,给y赋值0.0。否则当x小于10.0时,y的值为1.0/x;当x大于等于10.0时,y的值为1.0。题干中x的值为2.0,所以y的值为1.0/x,即0.500000。本题答案为D选项。
19.D解析:因为x的值为大于1的奇数,所以x除以2的余数等于1。所以选项D)等于关系表达式的结果为假,即等于0。
20.D
21.*b>*a
22.
23.时间时间解析:算法的复杂度主要指时间复杂度和空间复杂度。
24.10111011解析:赋值表达式m=011中的常数011为八进制,++m后以十进制数格式“%d”输出为10。
25.有穷性有穷性解析:算法有四个基本特征:可行性、确定性、有穷性和拥有足够的情报。
26.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
27.参照完整性参照完整性
28.structst或exstructst或ex解析:结构体类型数据,其数据成员各自占据不同的存储空间,整个结构体变量所占存储单元的字节数为每一个数据成员所占的存储空间的和。注意:共用体变量所占存储单元字节数的计算。
29.a[0][i]b[i][o]a[0][i]\r\nb[i][o]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组的第0列中。
30.连接两个字符数组中的字符连接两个字符数组中的字符解析:strcat函数的作用是连接两个字符数组中的字符串。
31.19
32.功能性功能性
33.2424解析:本题程序定义了一维数组p,有七个数组元素,整型变量i,j初值分别为0,当while的条件表达式(i<7&&p[i]%2==1)的值为真时,执行语句j+=p[i++];,如:当i=0时,i<7为真,p[i]%2=11%2=1,表达式(p[i]%2==1)的值为真,所以整个表达式(i<7&&p[i]%2==1)的值为真,执行j=j+p[i++]=0+11=11,i=1;,依此类推可以得出答案24。
34.246
35.时间复杂度时间复杂度解析:在算法正确的前提下,评价一个算法的两个标准是空间复杂度和时间复杂度。算法的时间复杂度,是指执行算法所需要的计算工作量。算法的空间复杂度是指执行这个算法所需要的内存空间。
36.概念设计阶段(数据库概念设计阶段)概念设计阶段(数据库概念设计阶段)
37.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,参形指针变量a和b分别指向i和j,在swap(int*a,int*b)执行完后,指针变量a和b分别指向j和i,而指针变量p,q所指向变量的值没有发生变化,所以输出结果为35。
38.nn解析:在长度为n的线性表中查找一个表中不存在的元素,需要的比较次数为n。
39.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。
40.前件前件
41.B解析:本题考查的知识点是函数的参数类型、函数值类型及函数调用.fun()函数是将传进来的两个整型参数相加,把和作为函数值返回,.注意返回值为float型.在主函数调用了两次fun()函数,第一次调用时把表达式“a+c”和变量“b”的值求和,得到15转换为15.0作为函数的返回值。第二次调用把第一次调用的返回值通过强制类型转换成int型15,再和表达式“a-c”相加,得到结果9,转换成float型作为函数值返回。由于输出格式符为“%3.0f”输出时没有小数位,故输出为9.所以4个选项中B正确。
42.A在题目的题干中定义了字符指针变量c,在选项A)中,首先定义字符数组s订,然后再把字符数组str的首地址赋给字符指针变量c。所以选项A)是正确的。在选项B)中,应改成scanf(”%s”,&c);在选项c)中,getchar函数的返回值是用户输入的第一个字符的ASCIl码,如出错返回.l,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取。即c只能指向一个字符而不能指向字符串。在选项D)中,strepy函数只是将sla'字符串中的内容赋给c,并没有使其指向str,所以选项D)是错误的。
43.C解析:作为一个算法,一般应具有的基本特征有:可行性、确定性、有穷性、拥有足够的情报。
44.C解析:表达式a+=a-=a*=a的运算方向是自右向左,即先计算a*=a,a值为a*a=144,再计算a-=a,a值为a-a=0,再计算计a+=a,故表达式和a的值都为a+a=0。
45.A
46.C解析:选择运算是一个一元运算,关系R通过选择运算(并由该运算给出所选择的逻辑条件)后仍为一个关系。这个关系是由R中那些满足逻辑条件的元组所组成。如果关系的逻辑条件为f,则R满足f的选择运算可以写成;бf(R)。
47
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 产科手术患者的营养支持
- 盐城市重点中学2026届中考模拟调研卷数学试题(一)含解析
- 浙江省绍兴市诸暨市浣江教育集团重点中学2025-2026学年高中中考第一次模拟考试语文试题含解析
- 2026年山东省临沂市平邑县初三2月初三网上质量检测试题语文试题含解析
- 山东省宁津县2026届初三下学期教学情况调研(一)英语试题试卷含解析
- 云南省大理州祥云县2025-2026学年下学期初三英语试题摸底联考考试试卷含解析
- 安徽省滁州市明光市2025-2026学年初三语文试题下学期第三次诊断考试试题含解析
- 江苏省苏州市吴中学区2025-2026学年中考模拟(一)语文试题含解析
- 上海市建平西校2026届初三5月半月考英语试题含解析
- 中医护理腰痛的康复
- 高中化学 摩尔质量气体摩尔体积学案 鲁科版必修1
- JT∕T 402-2016 公路货运站站级标准及建设要求
- 江苏省2024年中职职教高考文化统考财会专业综合理论试卷
- 钢结构房屋拆除施工方案
- 天耀中华合唱简谱大剧院版
- 双减背景下高效课堂教学策略
- 通风与空调工程技术交底汇编
- 滴灌通白皮书
- 绘本成语故事刻舟求剑
- 近似构成课件
- 物业管理案例分析.课件
评论
0/150
提交评论