![2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页](http://file4.renrendoc.com/view/cc324ea8c5d83d4985debf3a2860d3b4/cc324ea8c5d83d4985debf3a2860d3b41.gif)
![2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页](http://file4.renrendoc.com/view/cc324ea8c5d83d4985debf3a2860d3b4/cc324ea8c5d83d4985debf3a2860d3b42.gif)
![2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页](http://file4.renrendoc.com/view/cc324ea8c5d83d4985debf3a2860d3b4/cc324ea8c5d83d4985debf3a2860d3b43.gif)
![2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页](http://file4.renrendoc.com/view/cc324ea8c5d83d4985debf3a2860d3b4/cc324ea8c5d83d4985debf3a2860d3b44.gif)
![2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页](http://file4.renrendoc.com/view/cc324ea8c5d83d4985debf3a2860d3b4/cc324ea8c5d83d4985debf3a2860d3b45.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下选项中是非转义字符的是()。
A.‘\d’B.‘\t’C.‘\b’D.‘\r’
2.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
3.层次型、网状型和关系型数据库划分原则是()。
A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式
4.设以下变量均为int类型,则值不等于7的表达式是()。
A.(x=y=6,x+y,x+1)
B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)
D.(y=6,y+l,x=y,x+1)
5.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。
A.for(i=0;i<10;i++)scanf(“%d”,p+i);
B.for(i=0;i<10;i++)scanf(“%d”,*p+i);
C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));
D.for(i=0;i<10;i++)scanf(“%d”,x[i]);
6.sizeof(float)是()。
A.一种函数调用B.一种函数定义C.一个浮点表达式D.一个整型表达式
7.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
8.
9.设有定义“intk=0;”,以下选项的4个表达式中与其他3个表达式的值不相同的是()。
A.++kB.k+=1C.k++D.k+1
10.
11.堆的形状是一棵_______。
A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树
12.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
13.现有如下定义语句int*p,s[20],i;p=s;表示数组元素s[i]的表达式不正确的是
A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)
14.下列存储器中,存取速度最快的是()。
A.软盘B.硬盘C.光盘D.内存
15.下面不能正确表示a*b/(c*d)的表达式是()。
A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d
16.
17.以下选项中,算术表达式的值与其他3个不同的是()。
A.3/5.B.3./5C.3/5D.3.0/5.0
18.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()
19.若有定义“intx[10],*pt=x;”,则对x数组元素的引用正确的是()。
A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)
20.下列关于栈的叙述中,正确的是()。
A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对
二、2.填空题(20题)21.下列程序执行后输出的结果是【】。
main()
{intarr[10],i,k=0;
for(i=O;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
22.下面程序把从终端读入的10个整数以二进制方式写入一个名为bi.dat的新文件中。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if(fp=fopen(【】)==NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】;
}
fclose(fp);
}
23.以下程序的功能是:对输入的一行字符串的数字字符按它们的字面值累加,输出此累加和。例如,输入一行字符是:ab34dh8u,输出值应当是15。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charch;inta,s;
【】;
while((ch=getchar())【】)
if(isdigit(ch))
{a=【】;s+=a;}
printf("s=%d\n\n",s);}
24.问题处理方案的正确而完整的描述称为______。
25.以下程序的输出结果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
26.以下程序运行后的输出结果是【】。
main()
{inti,n[]=10,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
27.若a=10,b=20,则表达式!(a<b)的值是【】。
28.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
29.下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请补充完整。
main()
{inti,j;
for(i=0;【】;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
30.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
31.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
32.以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如;str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。
char*fun(char*str,charc)
{intn=0;char*p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!='\O')n++;
if(p[n]='\0')returnNULL;
return(【】);
}
33.软件工程研究的内容主要包括:【】技术和软件工程管理。
34.若有以下程序:
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
执行后的输出结果是【】。
35.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【】两个含义。
36.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
37.以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。
intisprime(inta)
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)【】;
【】;
}
38.下列程序的输出结果是______。
#include<stdio.h>
sb(ints[].intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8);
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf(:%d",x);
}
printf("\n");
}
39.下列程序的功能是将2个数从小到大输出。
main()
{floata,b,【】;
scanf(【】,&a,&b);
if(a>b)
{t=a;
【】;
b=t;
}
printf("%5.2f,%5.2f\n",a,b);
}
40.下列程序的运行结果是【】。
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)a[j++]=i;
*n=j;
}
main()
{intaa[M],n,k;
fun(10,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");
}
三、1.选择题(20题)41.源程序的文档化不包括()。
A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
42.若有以下说明和定义:typcdefint*INTEGER;INTEGERp,*q;以下叙述正确的是()。
A.p是血型变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名
43.算法的空间复杂度是指()。
A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间
44.有以下程序main(){char*s="abcde";s+=2;printf("%ld\n",s);}程序运行后的输出结果是()
A.cdeB.字符c的ASCII码值C.字符c的地址D.出错
45.进行二分法查找,则线形表______。
A.必须以顺序方式存储
B.必须以链接方式存储,且数据元素已按值排好序
C.必须以链接方式存储
D.必须以顺序方式存储,且数据元素已按值排好序
46.以下程序运行后,输出结果是
#definePT5.5
#defineS(x)PT*x*x
#include<stdio.h>
main()
{inta=1,b=2;
printf("%4.1f\n",S(a+b));}
A.49.5B.9.5C.22D.45
47.信息隐蔽的概念与下述哪一种概念直接相关()。
A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度
48.有以下程序中若有如下说明和定义语句;charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;…}以下选项中对函数fun的正确调用语句是______。
A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);
49.下列叙述中,不属于软件需求规格说明书的作用的是()
A.便于用户,开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
50.设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。
A.1B.2C.8D.4
51.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为``
A.log2n
B.n2
C.O(n1.5)
D.n(n-1)/2
52.下列关于类、对象、属性和方法的叙述中,错误的是()。
A.类是对一类具有相同的属性和方法对象的描述
B.属性用于描述对象的状态
C.方法用于表示对象的行为
D.基于同一个类产生的两个对象不可以分别设置自己的属性值
53.算法的时间复杂度是指______。
A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
54.数据厍系统的核心是()。
A.数据模型B.软件开发C.数据库设计D.数据库管理系统
55.若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是()
A.double*pB.float**pC.double**pD.float*p
56.有以下程序:#include<stdio.h>prt(int*m,intn)inti;for(i=0;i<n;i++)m[i]++;main()}inta[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。
A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1
57.若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是
A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]
58.数字字符“2”的ASCII码为十进制数50,数字字符“5”的ASCII码为十进制数()
A.52B.55C.54D.53
59.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5
60.对下述程序的判断中,正确的是
#include<stdio.h>
voidmain()
{char*p,s[128];
p=s;
while(strcmp(s,"End"))
{printf("Inputastring:");gets(s);
while(*p)
putchar(*p++);}}
A.此程序循环接收字符串并输出,直到接收字符串"End"为止
B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止
C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作
D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串
四、选择题(20题)61.在下述程序中,判断条件“i>j”共执行的次数是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d",s);
break;
}s+=i;
}
}
A.4B.7
C.5D.6
62.
63.有以下程序(strcat函数用以连接两个字符串)
64.
65.以下叙述中错误的是(
)。A.预处理命令行必须位于源文件的开头B.宏替换可以出现在任何一行的开始部位C.宏替换的作用一直持续到源文件结尾D.宏替换不占有程序的运行时间
66.有以下程序:
i
程序运行后的输出结果是()。。,
A.3,4B.4,1C.2,3D.1,2
67.写出下列程序段的输出结果()。
main()
{intx=5;inty=10;
printf("%d\n",x++);
printf("%d\n",++y);}
A.5B.6C.6D.5
10101111
68.若有下列定义(设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
69.以下叙述中正确的是()。
A.C程序中注释部分只能放在程序最后
B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号不是语句的一部分,是C语句之间的分隔符
70.
71.
72.
有下列程序:
main
{charp[]={a,h,c},q[]="a";
printf("%d%d\n".sizeof(P),sizeof(q));
}
程序运行后的输出结果是()。
A.44B.33C.34D.43
73.
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
74.
75.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
76.以下程序中函数f的功能是:当na9为1时,进行由小到大排序;当na9为0时,进行由大到小排序。
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
77.若有以下程序段输出结果:是()。
A.4B.8C.16D.2
78.在软件设计中,不属于过程设计工具的是()。
A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图
79.有以下程序在VC6平台上编译运行。程序运行后的输出结果是(
)。
A.4,8B.4,4C.2,4D.10,6
80.对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
五、程序改错题(1题)81.下列给定的程序中,函数proc的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。例如,排序前的数据为:1132-5214则排序后的数据为:-52111432请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;//****found****for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[[i]<a[p])p=i;t=a[p];a[p]=aEj3;//****found****a[p]=t;}}voidmain{intarr[M]={11,32,-5,2,14},i,m=5;printf("排序前的数据:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");proc(arr,m);printf("排序后的顺序:");for(i=0;i<m;i++)printf("%d",arr[i]);printf("\n");}
六、程序设计题(1题)82.编写函数fun(),其功能是计算:
s作为函数值返回。
在C语言中可调用log(n)函数求1n(n)。log函数的引
用说明为:doublelog(doublex)。
例如,若m的值为20,则fun()函数值为6.506583。
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。
试题程序:
参考答案
1.AC语言中,转义字符又称反斜线字符,这些字符常量总是以一个反斜线开头后加一个特定的字符。题干中,‘\\t’表示横向跳若干格,‘\\b’表示退格符,‘\\r’表示回车符,选项B、C、D正确,选项A错误。故本题答案为A选项。
2.D解析:中序遍历的递归算法定义:①遍历左子树;②访问根结点;③遍历右子树。前序遍历的递归算法定义:①访问根结点;②遍历左子树;③遍历右子树。后序遍历的递归算法定义:①遍历左子树;②遍历右子树;③访问根结点。根据前序遍历的结果可知,a是根结点。由中序遍历的结果dgbaechf可知,d、g、b是左子树的结点,e、c、h、f是右子树的结点。再由前序遍历的结果bdg可知,b是a左边子树的根,由cefh可知,c是a右边子树的根。再由中序遍历的结果dgb可知,d、g是b左边子树的结点,b右边子树无结点。再由前序遍历结果dg可知,d为b左子树的根,g是以d为根的子树的右结点。至此,a的左子树已完全弄清楚了。同样的道理,可以弄清楚以c为根的子树的结点位置。所以可知后序遍历的结果是D。
3.D层次模型的基本结构是树形结构,网状模型是一个不加任何条件限制的无向图,关系模型采用二维表来表示,所以三种数据库的划分原则是数据之间的联系方式。
4.C
5.AC语言中scanf函数的声明为“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2个参数是地址。因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故本题答案为A选项。
6.D解析:sizeof(float)是c语言内部规定的用于计算单精度型变量(float)在计算机的内存中所占用的字节数量的函数,返回一个整数值。
7.D执行第一次for循环时,用表达式p[i][J]!=\o来判断字符串数组指针P是否到达字符串的结尾,如果没有到达,继续执行while中的语句。if语句表示(p[i][j]-\o)除2的余数不为0时,即字符串所有奇数,执行后面的语句。所以退出第1次for的循环体时,输出为397,执行第2次循环体。对字符串“2584”进行处理,输出结果为5,因而最后输出结果为3975。
8.A
9.C表达式“++k”是先使得k的值自增1后再使用。表达式“k++”是先取得k的值再将k的值自增1。所以C选项中表达式的值为0,而其他3个选项中表达式的值均为1。故本题答案为C选项。
10.A
11.C
12.A本题考查函数的调用,从主函数传递到调用函数中,*a的值为0,因此当执行完调用函数后,b[0]的值为6。
13.C解析:当p指向s数组的首地址时,表示数组元素s[i]的表达式应当有:①s[i],②,(s+i),③*(p+i),④p[i]四种形式。选项C)错误的原因是,数组的地址是不可变的,指针的地址是可以变的。
14.D\nD【解析】存储器中.存取速度最快的是内存。
\n
15.A
16.D
17.CC语言中除法运算有两个运算数,两个整数的除法运算会舍去小数部分,结果为整数;由于C语言中浮点数的小数形式必须要有小数点,所以选项A(5.)、B(3.)、D(3.0和5.0)都是浮点数。选项A、B运算时自动将另一个整数转换成浮点数,然后再运算,选项D中两个都是浮点数,浮点数的除法运算结果还是浮点数。所以本题中选项A、B、D运算结果是浮点数,选项C运算结果是整数。故本题答案为C选项。
18.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。
19.D选项A中,“pt+3”使指针变量Pt移动3个单元,指向第4个元素,不能正确引用。运算符“*”与“&”放在一起,其作用相互抵消,且下标10超出了数组下标范围,所以B选项错误。“*(pt+i)”表示引用指针pt所指元素后的第i个元素,引用数组第11个元素,C选项错误。故本题答案为D选项。
20.B栈是先进后出,因此,栈底元素是先入栈的元素,栈顶元素是后入栈的元素。
21.1212解析:本题的第一个for循环用于给数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。
22."bi.dat"fp'bi.dat'\r\nfp解析:打开文件函数fopen的参数是文件名,因此有fopen('bi.dat');而写文件的参数是文件指针,因此有fwrite(&j,sizeof(int),1,fp);
23.s=0\r\n!='\\n'\r\nch-'0's=0\r\n!='\\n'\r\nch-'0'解析:按照题目的要求,s用于保存累加结果;while语句用于得到一个字符串,并以'\\n'结束;if语句用于判断一个字符是否为数值型,如果是就将其累加至s中。
24.算法或程序或流程图算法或程序或流程图解析:算法是问题处理方案正确而完整的描述。
25.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。
26.1371513715解析:本题中,定义了一个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。
27.00解析:已知a=10,b=20,所以逻辑表达式a<b的值为true,即为1,在这个表达式前面有一个逻辑运算符!,表示反操作,所以整个语句的值应当为false,即为0。
28.—对多—对多解析:实体之间的联系可以归结为一对一、一对多与多对多。如果一个学校有许多学生,而一个教师只归属于一个学生,则实体集学校与实体集学生之间的联系属于一对多的联系。
29.i<10i%3!=0i<10\r\ni%3!=0解析:本题要求输出100以内能被3整除且个位数为6的所有整数,程序中j=i*10+6;语句是求个位数为6的整数,由此可得出程序的循环次数为i<10。然后通过if语句判断整数是否能被3整除,若不能则继续下一次循环,若能则输出该整数,所以逻辑表达式为j%3!=0。
30.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
31.a=14a=14解析:逗号表达式的值是以逗号分隔的最后一个表达式的值。所以题目中的语句a=(3*5,a+4);就等价于a=a+4;。故本题输出结果是a=14。
32.&P(n)或p+n&P(n)或p+n解析:因为n被初始化为0、p被初始化指向str所指字符串的首地址,所以while循环的功能是从str所指字符串的第1个字符开始比较,若等于c或等于字符串结束符'\\0'就跳出循环。故循环结束后,若p[n]为'\\0',则证明str所指字符串不包含c中的字符,应该返回NULL,否则应该返回p[n]的地址值。返回NULL在第2条if语句中已经实现,所以我们应该填入的表达式为p[n]的地址值,即&p[n]或p+n。
33.软件开发
34.77解析:本题考查英文字母ASCII码值的概念。字符参与运算的值是其对应的ASCII码,字符H的ASCII码为72,A的ASCII码为65,0的ASCII码为48,所以a=72-65+48=55,ASCII码值为55的字符是7。
35.逻辑独立性逻辑独立性解析:数据独立性是数据与程序间的互不依赖性,即数据库中数据独立于应用程序而不依赖于应用程序。数据独立性一般分为物理独立性与逻辑独立性两个含义。注意:在人工管理阶段,文件系统阶段和数据库管理阶段中数据独立性的特点。
36.x+8sin(x)x+8,sin(x)解析:考查考生对函数调用相关知识的了解。用x+8代替函数fun(doublex)中形式参数x;用sin(x)代替函数fun(doublex)中形式参数x。
37.return0或return(0)return1或return(1)return0或return(0)\r\nreturn1或return(1)解析:素数是指只能被1和其本身整除,不能被其他任何整数整除的数。根据if条件语句,若形参a对i取余等于0,则形参a可以被其他数整除,所以第一处填return0;若形参a对i取余不等于0,则形参s不可以被其他数整除,所以第二处填return1。
38.86518651解析:主程序中,第一次循环时,i=0,调用sb(s,x)子函数,此时n=3,x=s[n]=s[3]=8,然后将n减1变为2;第二次循环时,i=1,调用sb(s,x)子函数,因为将n定义为了静态变量,所以此时n=2,返回x=s[n]=s[2]=6;第三次循环时,i=2,调用sb(s,x)子函数,此时n=1,返回x=s[n]=s[1]=5;第四次循环时,i=3,调用sb(s,x)子函数,此时n=0,返回x=s[n]=s[0]=1。此程序实际上是将数组s逆序输出。
39.t"%f%f"a=b
40.77解析:程序中的if(i%7==0||i%11==0)是找出能被7或11整除的所有整数,a[j++]=i是将满足条件的数放到a数组中,变量j记录了满足条件的数据个数,main函数通过变量n得到此数据个数。如果m的值为50,即表达式fun(10,aa,&n)为fun(50,aa,&n)时,输出结果为:711142122283335424449
41.B解析:源程序的文档化主要包括3点:(1)符号名应具有一定实际的含义,便于理解程序功能:(2)正确的程序注释;(3)良好的视觉组织。利用空格、空行、缩进等技巧使程序层次清晰。
42.B解析:INTEGER是类型名,由它来间接定义p和*q的类型,因此,p是基类型为int的指针变量,故选项A不正确,选项.B正确,q是二级指针变量,它指向基类型是int的指针变量,故选项C,D不正确。所以4个选项中B正确。
43.D【解析】算法的空间复杂度是指执行这个算法所需要的内存空间。一个算法所占用的存储空间包括算法程序所占的空间、输入的初始数据所占的存储空间以及算法执行中所需要的额外空间。其中额外空间包括算法程序执行过程中的工作单元以及某种数据结构所需要的附加存储空间。如果额外空间量相对于问题规模来说是常数,则称该算法是原地工作的。在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术,以便尽量减少不必要的额外空间。
44.C
45.D
46.A解析:考查宏替换的使用。宏替换用'#define宏名宏体'的形式来定义。在进行编译预处理时,将把程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传递及结果返回等操作;宏替换只是简单的字符替换,不进行计算,因而本题中的S(a+b)进行宏替换后为PT*1+2*1+2=5.5*1+2*1+2=9.5。
47.B解析:信息隐蔽是指在一个模块内包含的信息(过程或数据),对于不需要这些信息的其他模块来说是不能访问的。模块独立性是指每个模块只完成系统要求的独立的子功能,并且与其他模块的联系最少且接口简单。衡量软件的模块独立性的度量标准是耦合性和内聚性。一个模块的耦合性越强,则该模块的模块独立性越强。
48.A解析:(*f1)()=fun可以理解为将fun函数的函数名称用(*f1)()来代替了,因此高调用fun时就可以用(*f1)()来代替,因此只有A是正确的。
49.D解析:软件需求规格说明书SRS,SoftwareRequirementSpecification)是需求分析阶段的最后成果,是软件开发中的重要文档之一。它有以下几个方面的作用,①便于用户、开发人员进行理解和交流;②反映出用户问题的结构,可以作为软件开发工作的基础和依据;③作为确认测试和验收的依据。
50.C
\n在C语言中各种数据类型在内存中所占的字节数与机器的位数有关,16位机中(也就是在标准c中),若int类型数据占2个字节,则float类型数据占4个字节,double类型数据占8个字节。
\n
51.D解析:假设线性表的长度为n,则在最坏情况下,冒泡排序要经过n/2遍的从前往后的扫描和n/2遍的从后往前的扫描,需要的比较次数为n(n-1)/2。
52.DD)【解析】类是对一类具有相同的属性和方法对象的描述,属性用于描述对象的状态,方法用于表示对象的行为,基于同一个类产生的两个对象是可以分别设置自己的属性值的。
53.C解析:算法的时间复杂度实际上就是执行算法程序所需要的计算工作量。为了客观地反映算法性能,在度量算法的时间复杂度时,应该与编写算法程序所使用的程序设计语言、执行算法程序时所使用的计算的工具以及程序员的水平无关。选项A错误,因为同一算法程序在运行速度不同的计算机上运行时,其计算时间是不同的。选项B错误,因为算法所编写的程序长度往往与程序设计语言以及程序员的水平有关,同一个算法,用不同的程序设计语言或者不同的程序员所编写出的程序其长度可能会大不相同。选项D错误,因为根据一个算法所编制出的程序之中,其指令条数往往与程序设计语言以及程序员的水平有关,不能用算法程序中的指令条数来度量算法的时间复杂度。所以,本题正确答案为C。
54.D解析:数据库管理系统DBMS是数据库系统的核心。DBMS是负责数据库的建立、使用和维护的软件。DBMS建立在操作系统之上,实施对数据库的统一管理和控制。用户使用的各种数据库命令以及应用程序的执行,最终都必须通过DBMS。另外,DBMS还承担着数据库的安全保护工作,按照DBA所规定的要求,保证数据库的完整性和安全性。
55.C解析:从上面程序中对指针变量p值的定义可见,p所指单元的内容又是一个地址,这个地址是申请分配内存空间后的返回首地址,而分配的空间中又存放double型的数据,因此p是指向指针的指针变量,通过两层间接寻址对double型的数据操作,故正确答案应该是选项C。
56.B解析:prt(a,5);用数组名a作函数实参,不是把a数组的值传递给形参m,而是将数组a的首地址传递给指针变量m,使指针变量m指向数组a的首地址,这样他们就占用同一段内存单元。当改变了指针变量所指向的存储单元中的内容,也就改变了数组a中的元素。函数pit的作用是将指针变量m所指向的存储单元中的各元素值加1,也就是数组a中各元素的值加l,所以输出结果为:2,3,4,5,6,
57.D解析:C语言中数组下标是从0开始的,所以二维数组a[2][3]的第一维下标取值为0、1;第二维的下标取值为0、1、2,因而选项A)、B)、C)都是错误的,选项D)表示数组元素a[0][0]。
58.D
59.C解析:这是一个逗号表达式,它的值应为表达式y=x+3/2的值,而前一个表达式已给x赋值1,在没有进行类型转换的情况下,3/2的值为1,所以x+3/2的值应为2.0。
60.B解析:此题考查了字符串输入函数gets和字符串比较函数strcmp,另外还有字符输出函数putchar。gets从标准输入设备中读入全部字符,包括空格,直到遇到回车符为止。strcmp是字符串比较函数,即strcmp(字符串1,字符串2),如果字符串1=字符串2,则函数值为0;如果字符串1>字符串2,则函数值为一正整数;如果字符串1<字符串2,则函数值为一负整数。putchar(c)函数将字符c输出到标准输出设备上。
61.D本题主要要求我们求判断条件“i>j”执行的次数。在本题的程序中,首先定义了四个整型变量,并分别赋初值,然后执行for循环结构,该循环结构中都是缺省语句,那么如果循环体中没有break语句,程序将面临死循环,从后面的程序中我们可以看出,程序中存在一条break语句。
第一次循环时,变量k的值为2,变量i的值被改变为2,而此时变量j的值为10,执行if(i>j)语句,结果为假,不执行break语句,然后改变变量s的值,一次循环结束。
通过对这次循环的分析,我们发现变量k的值一直没被改变,而变量i值的改变与变量k有关,且每循环一次增加2,那么变量i的改变轨迹应该为0,2,4,6,8,10,12,当i等于12时,其值大于j,条件判断语句结果为真,执行break语句,结束循环。从这里我们可以推断出循环执行的次数为6,因此,判断条件“i>j”执行的次数也为6次,本题的正确答案选D。
62.D
63.A在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。
64.A
65.AC语言中对于预处理命令行的位置没有明确的规定。通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。
66.C本题考查结构体数组的相关操作,dt为结构体数组,那么指针P指向了结构体数组的一个元素,所以P一>x为1,P一>Y为2,结果为2,3。选项C正确。
67.D++是自增运算符,但作为前缀和后缀是不一样的,对于变量本身没有差别,但对于表达式的值有影响,x++,表达式先去x的值5作为输出,然后再加1,++y是先增1,然后取自增后的值为表达式的值,所以输出结果为11
68.B本题考查函数的输出格式。在printf函数,格式说明符中有两个“%”说明;将第1个%后面的字符原样输出,并不输出其对应r的变量值。
69.B花括号可以作为函数体的定界符,也可以作为复合语句的定界符。函数是c程序的基本单位,用户可以命名自定义函数,而库函数名是固定的。c语句以分号结尾,分号是语句的一部分。
70.A
71.C
72.C
\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。
\n
\n
\n
73.B
\n选项A、C、D分别用一个ifelse语句、两个if语句和条件表达式表达了计算公式的含义。
\n
74.D
75.A解析:在C语言中,应当在定义函数时指定函数值的类型。凡不加类型说明的函数,默认按整型处理。在定义函数时对函数值说明的类型一般应该和return语句中的表达式类型一致。如果函数值的类型和return语句中的表达式类型不一致,则以函数值的类型为准,由系统自动进行转换,即函数类型决定返回值的类型。
76.B本题重点考察函数的参数传递,函数的参数传递分为传值和传地址两种情况。本题就是结合数组考查参数传递的情形。函数f完成的功能是对数据进行排序,语句f(&a[2],5,O)的作用是对从a[2]开始的5个元素进行从大到小排序。注意:这里传递的是地址&a[2],所以排序操作可看作是直接对数组a操作,执行后的结果为5,4,7,6,3,2,1,8,9,10。语句f(a,5,1)对数组a的前5个元素从小到大排序,排序后数组为:3,4,5,6,7,2,1,8,9,10。因此B选项正确。
77.Ar右移1位,结果为4,所以选择A。
78.D解析:PDL一种设计性语言,用于书写软件设计规约。它是软件设计中广泛使用的语言之一。N-S图是无线的流程图,是算法描述工具;PAD图是问题分析图,它用二维树状结构的图表示程序的控制流,将这种图转换为程序代码比较容易。此3类均是过程设计工具,数据流图(DataFunctionDiagram):又名数据功能图表,简称DFD,是采用图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一种图示方法。
79.Ac语言中利用sizeof()函数判断数据类型长度,在VC6平台中,整型数据int占4个字节,double型数据占8个字节。因此本题答案为A)。
80.C任何一个C语言程序的执行都是从主函数main开始,至主函数main结束。故本题答案为C选项。
81.(1)错误:for(j=0;j<n-1;j++);正确:for(j=0;j<n-1j++)(2)错误:a[p]=t;正确:a[j]=t;【解析】for循环结束的标志是for后的一个语句,如果for后面直接跟一个分号,说明是一个空循环不执行任何功能,因此“for(j=0;j<n-1;j++);”后面的分号应该去掉;当a[i]<a[p]时两元素互换,因此“a[p]=t;”应改为“a[j]=t”。
82.
【解析】题目要求写出程序实现数学表达式的功能,需要用for循环计算累加的结果,调用sqrt函数实现求平方根。循环变量的范围是1~m,每次循环都进行一次累加求和。需要特别注意的是,log函数的形式参数为double型变量,用于循环的计数变量为整数,所以必须强制转换。最后返回所求出的平方根。
2021-2022年河北省唐山市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下选项中是非转义字符的是()。
A.‘\d’B.‘\t’C.‘\b’D.‘\r’
2.若某二叉树的前序遍历访问顺序是abdgcefh,中序遍历访问顺序是dgbaechf,则其后序遍历的结点访问顺序是()。
A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca
3.层次型、网状型和关系型数据库划分原则是()。
A.记录长度B.文件的大小C.联系的复杂程度D.数据之间的联系方式
4.设以下变量均为int类型,则值不等于7的表达式是()。
A.(x=y=6,x+y,x+1)
B.(x=y=6,x+y,y+1)
C.(x=6,x+1,y=6,x+y)
D.(y=6,y+l,x=y,x+1)
5.设有定义“intx[10],*p=x,i;”,若要为数组x读入数据,以下选项正确的是()。
A.for(i=0;i<10;i++)scanf(“%d”,p+i);
B.for(i=0;i<10;i++)scanf(“%d”,*p+i);
C.for(i=0;i<10;i++)scanf(“%d”,*(p+i));
D.for(i=0;i<10;i++)scanf(“%d”,x[i]);
6.sizeof(float)是()。
A.一种函数调用B.一种函数定义C.一个浮点表达式D.一个整型表达式
7.有下列程序:main(){char*P[]={"3697","2584");inti,j;longnum=0;for(i=0;i<2;i++){j=0;while(p[i][j]!=\0){if((p[i][j]-t\0)%2)num=10*num+p[j][j]-0;j+=2;}}printf("%d\n",num);}程序执行后的输出结果是()。A.35B.37C.39D.3975
8.
9.设有定义“intk=0;”,以下选项的4个表达式中与其他3个表达式的值不相同的是()。
A.++kB.k+=1C.k++D.k+1
10.
11.堆的形状是一棵_______。
A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树
12.下列程序执行后的输出结果是()。voidfunc(int*a,intb[]){b[0]=*a+b;}main{inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}A.6B.7C.8D.9
13.现有如下定义语句int*p,s[20],i;p=s;表示数组元素s[i]的表达式不正确的是
A.*(s+i)B.*(p+i)C.*(s=s+i)D.*(p=p+i)
14.下列存储器中,存取速度最快的是()。
A.软盘B.硬盘C.光盘D.内存
15.下面不能正确表示a*b/(c*d)的表达式是()。
A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d
16.
17.以下选项中,算术表达式的值与其他3个不同的是()。
A.3/5.B.3./5C.3/5D.3.0/5.0
18.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()
19.若有定义“intx[10],*pt=x;”,则对x数组元素的引用正确的是()。
A.pt+3B.*&x[10]C.*(pt+10)D.*(x+3)
20.下列关于栈的叙述中,正确的是()。
A.栈底元素一定是最后入栈的元素B.栈操作遵循先进后出的原则C.栈顶元素一定是最先入栈的元素D.以上三种说法都不对
二、2.填空题(20题)21.下列程序执行后输出的结果是【】。
main()
{intarr[10],i,k=0;
for(i=O;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
22.下面程序把从终端读入的10个整数以二进制方式写入一个名为bi.dat的新文件中。
#include<stdio.h>
FILE*fp;
main()
{inti,j;
if(fp=fopen(【】)==NULL)exit(0);
for(i=0;i<10;i++)
{scanf("%d",&j);
fwrite(&j,sizeof(int),1,【】;
}
fclose(fp);
}
23.以下程序的功能是:对输入的一行字符串的数字字符按它们的字面值累加,输出此累加和。例如,输入一行字符是:ab34dh8u,输出值应当是15。请填空。
#include<stdio.h>
#include<ctype.h>
main()
{charch;inta,s;
【】;
while((ch=getchar())【】)
if(isdigit(ch))
{a=【】;s+=a;}
printf("s=%d\n\n",s);}
24.问题处理方案的正确而完整的描述称为______。
25.以下程序的输出结果是【】。
main()
{unsignedshorta=65536;intb;
printf("%d\n",b=A);
}
26.以下程序运行后的输出结果是【】。
main()
{inti,n[]=10,0,0,0,0};
for(i=1;i<=4;i++)
{n[i]=n[i-1]*2+1;
printf("%d",n[i]);
}
27.若a=10,b=20,则表达式!(a<b)的值是【】。
28.实体之间的联系可以归结为一对一的联系,一对多的联系与多对多的联系。如果一个学校有许多学生,而一个学生只归属于一个学校,则实体集学校与实体集学生之间的联系属于【】的联系。
29.下面程序的功能:输出100以内能被3整除且个位数为6的所有整数,请补充完整。
main()
{inti,j;
for(i=0;【】;i++)
{j=i*10+6;
if(【】)continue;
printf("%d",j);
}
}
30.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
31.执行以下程序后的输出结果是【】。
main()
{inta=10;
a=(3*5,a+4);printf("a=%d\n",a);
}
32.以下函数fun的功能是返回str所指字符串中以形参c中字符开头的后续字符串的首地址,例如;str所指字符串为:Hello!,c中的字符为e,则函数返回字符串:ello!的首地址。若str所指字符串为空串或不包含c中的字符,则函数返回NULL。请填空。
char*fun(char*str,charc)
{intn=0;char*p=str;
if(p!=NULL)
while(p[n]!=c&&p[n]!='\O')n++;
if(p[n]='\0')returnNULL;
return(【】);
}
33.软件工程研究的内容主要包括:【】技术和软件工程管理。
34.若有以下程序:
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",a);
}
执行后的输出结果是【】。
35.数据库系统阶段的数据具有较高独立性,数据独立性包括物理独立性和【】两个含义。
36.以下程序中,函数fun的功能是计算x2-2x+6,主函数中将调用fun函数计算:
y1=(x+8)2-2(x+8)+6
y2=sin2(x)-2sin(x)+6
请填空。
#include"math.h"
doublefun(doublex){return(x*x-2*x+6);}
main()
{doublex,y1,y2;
printf("Enterx:");scanf("%lf",&x);
y1=fun(【】);
y2=fun(【】);
printf("y1=%lf,y2=%lf\n",y1,y2);
}
37.以下isprime函数的功能是判断形参a是否为素数,如果是素数,函数返回1,否则返回0。
intisprime(inta)
inti;
for(i=2;i<=a/2;i++)
if(a%i==0)【】;
【】;
}
38.下列程序的输出结果是______。
#include<stdio.h>
sb(ints[].intb)
{staticintn=3;
b=s[n];
n--;
return(b);
}
main()
{ints[]={1,5,6,8);
inti,x=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf(:%d",x);
}
printf("\n");
}
39.下列程序的功能是将2个数从小到大输出。
main()
{floata,b,【】;
scanf(【】,&a,&b);
if(a>b)
{t=a;
【】;
b=t;
}
printf("%5.2f,%5.2f\n",a,b);
}
40.下列程序的运行结果是【】。
#include<stdio.h>
#defineM100
voidfun(intm,int*a,int*n)
{inti,j=0;
for(i=1;i<=m;i++)
if(i%7==0||i%11==0)a[j++]=i;
*n=j;
}
main()
{intaa[M],n,k;
fun(10,aa,&n);
for(k=0;k<n;k++)
if((k+1)%20==0)printf("\n");
elseprintf("%4d",aa[k]);
printf("\n");
}
三、1.选择题(20题)41.源程序的文档化不包括()。
A.符号名的命名要有实际意义B.正确的文档形式C.良好的视觉组织D.正确的程序注释
42.若有以下说明和定义:typcdefint*INTEGER;INTEGERp,*q;以下叙述正确的是()。
A.p是血型变量
B.p是基类型为int的指针变量
C.q是基类型为int的指针变量
D.程序中可用INTEGER代替int类型名
43.算法的空间复杂度是指()。
A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.算法执行过程中所需要的存储空间
44.有以下程序main(){char*s="abcde";s+=2;printf("%ld\n",s);}程序运行后的输出结果是()
A.cdeB.字符c的ASCII码值C.字符c的地址D.出错
45.进行二分法查找,则线形表______。
A.必须以顺序方式存储
B.必须以链接方式存储,且数据元素已按值排好序
C.必须以链接方式存储
D.必须以顺序方式存储,且数据元素已按值排好序
46.以下程序运行后,输出结果是
#definePT5.5
#defineS(x)PT*x*x
#include<stdio.h>
main()
{inta=1,b=2;
printf("%4.1f\n",S(a+b));}
A.49.5B.9.5C.22D.45
47.信息隐蔽的概念与下述哪一种概念直接相关()。
A.软件结构定义B.模块独立性C.模块类型划分D.模块耦合度
48.有以下程序中若有如下说明和定义语句;charfun(char*);main(){char*s="one",a[5]={0},(*f1)()=fun,ch;…}以下选项中对函数fun的正确调用语句是______。
A.(*f1)(a);B.*f1(*s);C.fun(&a);D.ch=*f1(s);
49.下列叙述中,不属于软件需求规格说明书的作用的是()
A.便于用户,开发人员进行理解和交流
B.反映出用户问题的结构,可以作为软件开发工作的基础和依据
C.作为确认测试和验收的依据
D.便于开发人员进行需求分析
50.设在C语言中,float类型数据占4个字节,则double类型数据占()个字节。
A.1B.2C.8D.4
51.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为``
A.log2n
B.n2
C.O(n1.5)
D.n(n-1)/2
52.下列关于类、对象、属性和方法的叙述中,错误的是()。
A.类是对一类具有相同的属性和方法对象的描述
B.属性用于描述对象的状态
C.方法用于表示对象的行为
D.基于同一个类产生的两个对象不可以分别设置自己的属性值
53.算法的时间复杂度是指______。
A.执行算法程序所需要的时间B.算法程序的长度C.算法执行过程中所需要的基本运算次数D.算法程序中的指令条数
54.数据厍系统的核心是()。
A.数据模型B.软件开发C.数据库设计D.数据库管理系统
55.若定义了以下函数:voidf(……){……*p=(double*)malloc(10*sizeof(double));……}p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是()
A.double*pB.float**pC.double**pD.float*p
56.有以下程序:#include<stdio.h>prt(int*m,intn)inti;for(i=0;i<n;i++)m[i]++;main()}inta[]={1,2,3,4,5},i;prt(a,5);for(i=0;i<5;i++)printf("%d,",a[i]);}程序运行后的输出结果是()。
A.1,2,3,4,5,B.2,3,4,5,6,C.3,4,5,6,7,D.2,3,4,5,1
57.若有定义:inta[2][3];,以下选项中对a数组元素正确引用的是
A.a[2][!1]B.a[2][3]C.a[0][3]D.a[1>2][!1]
58.数字字符“2”的ASCII码为十进制数50,数字字符“5”的ASCII码为十进制数()
A.52B.55C.54D.53
59.若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是()A.1B.2C.2.0D.2.5
60.对下述程序的判断中,正确的是
#include<stdio.h>
voidmain()
{char*p,s[128];
p=s;
while(strcmp(s,"End"))
{printf("Inputastring:");gets(s);
while(*p)
putchar(*p++);}}
A.此程序循环接收字符串并输出,直到接收字符串"End"为止
B.此程序循环接收字符串,接收到字符串"End"则输出,否则程序终止
C.此程序循环接收字符串并输出,直到接收字符串"End"为止,但因为代码有错误,程序不能正常工作
D.此程序循环接收字符串并将其连接在一起,直到接收字符串"End"为止,输出连接在一起的字符串
四、选择题(20题)61.在下述程序中,判断条件“i>j”共执行的次数是
main()
{inti=0,j=10,k=2,s=0;
for(;;)
{i+=k;
if(i>j)
{printf("%d",s);
break;
}s+=i;
}
}
A.4B.7
C.5D.6
62.
63.有以下程序(strcat函数用以连接两个字符串)
64.
65.以下叙述中错误的是(
)。A.预处理命令行必须位于源文件的开头B.宏替换可以出现在任何一行的开始部位C.宏替换的作用一直持续到源文件结尾D.宏替换不占有程序的运行时间
66.有以下程序:
i
程序运行后的输出结果是()。。,
A.3,4B.4,1C.2,3D.1,2
67.写出下列程序段的输出结果()。
main()
{intx=5;inty=10;
printf("%d\n",x++);
printf("%d\n",++y);}
A.5B.6C.6D.5
10101111
68.若有下列定义(设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
69.以下叙述中正确的是()。
A.C程序中注释部分只能放在程序最后
B.花括号“{“和”}”可以作为函数体的定界符,也可以作为复合语句的定界符
C.构成C程序的基本单位是函数,所有函数名都可以由用户命名
D.分号不是语句的一部分,是C语句之间的分隔符
70.
71.
72.
有下列程序:
main
{charp[]={a,h,c},q[]="a";
printf("%d%d\n".sizeof(P),sizeof(q));
}
程序运行后的输出结果是()。
A.44B.33C.34D.43
73.
有以下计算公式
若程序前面已在命令中包含math.h文件,不能够正确
计算上述公式的程序段是()。
A.if(x>=0)y=sqrt(x);elsey=sqrt(-x);
B.y=sqrt(x)if(x<0)y=sqrt(0x);
C.if(x>=O)y=sqrt(x);If(x<O)y=sqrt(0x);
D.y=sqrt(x>=0?x:0x);
74.
75.在C语言中,函数返回值的类型最终取决于()。
A.函数定义时在函数首部所说明的函数类型
B.return语句中表达式值的类型
C.调用函数时主调函数所传递的实参类型
D.函数定义时形参的类型
76.以下程序中函数f的功能是:当na9为1时,进行由小到大排序;当na9为0时,进行由大到小排序。
程序运行后的输出结果是()。
A.1,2,3,4,5,6,7,8,9,10,
B.3,4,5,6,7,2,1,8,9,10,
C.5,4,3,2,1,6,7,8,9,10,
D.10,9,8,7,6,5,4,3,2,1,
77.若有以下程序段输出结果:是()。
A.4B.8C.16D.2
78.在软件设计中,不属于过程设计工具的是()。
A.PDL(过程设计语言)B.PAD图C.N-S图D.DFD图
79.有以下程序在VC6平台上编译运行。程序运行后的输出结果是(
)。
A.4,8B.4,4C.2,4D.10,6
80.对于一个正常运行的C程序,以下叙述中正确的是()。
A.程序的执行总是从main函数开始,在程序的最后一个函数中结束
B.程序的执行总是从程序的第一个函数开始,在main函数结束.
C.程序的执行总是从main函数开始、
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
五、程序改错题(1题)81.下列给定的程序中,函数proc的功能是:用选择法对数组中的m个元素按从小到大的顺序进行排序。例如,排序前的数据为:1132-5214则排序后的数据为:-52111432请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>#defineM20voidproc(inta[],intn){inti,j,t,P;//****found****for(j=0;j<n-1;j++);{p=j;for(i=j;i<n;i++)if(a[[i]<a[p])p=i;t=a[p];a[p]=aEj3;//****found****a[p]=t;}}voidmain
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 《隧道的结构荷载》课件
- 如何招聘人才课件
- 《库存管理案例》课件
- 2025至2031年中国学生笔记本电脑行业投资前景及策略咨询研究报告
- 2025至2031年中国卧式干湿多用蒸箱行业投资前景及策略咨询研究报告
- 1.1 公有制为主体 多种所有制经济共同发展 【知识精研】高中政治统编版必修二经济与社会
- 《虞美人》《鹊桥仙》课件 【知识精研】统编版高一语文必修上册
- 《沟通与交流的礼仪》课件
- 《财务报表编制教学》课件
- 《copd的评估及治疗》课件
- (高清版)TDT 1048-2016 耕作层土壤剥离利用技术规范
- 市场调研与咨询行业的市场调研方法创新培训
- 2024年人工智能助力社会治理现代化
- 29.4常见肿瘤标志物讲解
- 华为企业大学培训体系
- 学生奖励兑换券模板
- 手术室医院感染控制规范
- 铸牢中华民族共同体意识主题班会教案
- 运营与管理行业培训资料
- 48贵州省贵阳市2023-2024学年五年级上学期期末数学试卷
- 骑手食品安全培训
评论
0/150
提交评论