版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021-2022年山东省德州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.C程序是由()构成的。
A.主程序与子程序B.主函数与子函数C.一个主函数与若干个其他函数D.主函数与子程序
2.以下选项中可作为C语言合法常量的是_____。A.-80B.-080C.-8e1.0D.-80.Oe
3.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是()。
A.6B.4C.3D.2
4.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
5.线性表(a1,a2,?,an)以链式方式存储,访问第i位置元素的时间复杂度为()。
A.O(0)B.O(1)C.O(n)D.O(n2)
6.对包含N个元素的散列表进行检索,平均检索长度________
A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是
7.以下关于算法的叙述中错误的是()。
A.算法可以用伪代码、流程图等多种形式来描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码
8.
9.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()
10.C语言中最简单的数据类型包括()。
A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.字符型、实型、逻辑型
11.有下列程序:程序执行后的输出结果是()。A.Sun,f,90,Sun,f,90
B.Zhao,m,85,Sun,f,90
C.Zhao,m,85,Qian,f,95
D.Sun,f,90,Qian,f,95
12.执行下列程序中的输出语句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13
13.
14.在inta=3,int*p=&a;中,*p的值是()
A.变量a的地址值B.无意义C.变量p的地址值D.3
15.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。
A.t1=t2;
B.t2.num1=tl.numl;
C.t2.mark=tl.mark;
D.t2.num2=tl.num2;
16.以下叙述中错误的是()。
A.通过指针变量存取某个变量值的方式称为“直接存取”方式
B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值
C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址
D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型
17.
18.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
19.设有定义“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]);
20.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
二、2.填空题(20题)21.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。
22.以下函数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];}}
23.数据结构分为逻辑结构和存储结构,循环队列属于______结构。
24.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
25.以下程序的输出结果是【】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",A);
}
26.以下程序的输出结果是【】。
#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);
}
27.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z+0;
elseZ+=1;
primf(“%d\n",z);
}
28.下程序的输出结果是【】。
#include<stdio.h>
#defineMAX_COUNT4
voidfun()
main()
{intcount;
for(count=1;count<=MAX_COUNT;coun++)fun();
}
voidfun()
{staicinti;
i+=2;
printf(”%d,i);
}
29.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。[*]
#include<stdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node;
Nodefun(chars)/*建立链表*/
{…}
voiddisp(Node*h)
{Node*
30.本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。voidbubble(inta[],intn){inti,j,max,temp;max=n-1;do{j=0;for(i=0;i<max;i++)if(a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;j=i;}max=j;}while(());}
31.下面程序的输出结果是【】。
unsignedfun6(unsignednum)
{unsignedk=1;
do{k*=hum%10;
num/=10;}while(num);
return(k);}
main()
{unsignedn=26;
printf("%d\n",fun6(n));}
32.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d”,______);
printf(“%d\n”,______);
33.已知字符A的ACSII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
34.以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}
35.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
36.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。
37.在数据库的概念结构设计中,常用的描述工具是【】。
38.以下程序的运行结果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
39.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
40.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",A);
}
执行后输出结果是【】。
三、1.选择题(20题)41.C语言程序的基本单位是______。
A.程序行B.语句C.函数D.字符
42.若有定义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)
43.以下程序的输出结果是_______。main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.0l2345C.12345D.543210
44.不能把字符串"Hello!"赋给数组b的语句是______。
A.charb[10]={'H','e','l','l','o','!'};
B.charb[10]={'h','e','l','l','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
45.下面不属于软件工程的三个要素的是A.A.工具B.过程C.方法D.环境
46.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%%5.0f%c%d",58,76273.0'-',2278);fclose(fp);}
A.5876273-2278
B.5876273.000000-2278
C.5876273-2278
D.因文件为二进制文件而不可读
47.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不确定D.bcdef
48.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
49.下列叙述中,不符合良好程序设计风格要求的是()
A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息
50.下列关于栈的描述中错误的是()
A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针
51.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
52.下面程序在屏幕上的输出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc
53.有以下程序:main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",C);}执行后的输出结果是()。
A.1B.2C.3D.4
54.若有定义int*p[3];,则以下叙述中正确的是______。
A.定义了一个基类型为int的指针变量p,该变量有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向二维数组的指针变量p,所指一维数组应具有三个int类型元素
55.数据存储和数据流都是______,仅仅是所处的状态不同。
A.分析结果B.事件C.动作D.数据
56.在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是
A.1B.2C.7D.11
57.有下列程序:#include"stdio.h"main(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d",y,x);}程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
58.设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)
59.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i
A.45B.50C.60D.55
60.下面不属于软件设计原则的是
A.抽象B.模块化C.自底向上D.信息隐藏
四、选择题(20题)61.
62.
63.设有如下三个关系表
下列操作中正确的是()。
A.T=RnSB.T=RUSC.T=R×SD.T=R/S
64.对于一个正常运行的C程序,以下叙述中正确的是()。A.程序的执行总是从main函数开始
B.程序的执行总是从程序的第一个函数开始,在main函数结束
C.程序的执行总是从main函数开始,在程序的最后一个函数中结束
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
65.以下不能正确表示代数式4cd/ab的C语言表达式县().
A.4*c*d/a/bB.c*d/a/b*4C.c/a/b*d*4D.4*c*d/a*b
66.现有格式化输入语句,
已知在输入数据后,
x,Y,z的值分别是23,56,78,则下列选项中正确的输入格式是()。
A.23,56,78<Enter>
B.x=23,y=56,z=78<Enter>
C.x=23C,sumy=56,z=78<Enter>
D.x=23],sum]y=56,line]z=78<Enter>
67.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源
68.
69.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
70.有以下程序:
voidmain()
{inta=1,b;
for(b=1;b<1;b++)
{if(a>=8)break;
if(a%2==1){a+5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是()。
A.3B.1C.5D.6
71.
72.
73.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
74.下列C语言用户标识符中,不属于合法标识符的是
A._1B.d3_7C._a7D.m—n
75.
76.若有定义“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
77.
78.假定int类型变量占用两个字节,其有定义intx[10]={0,2,4};,则数组x在内存中所占字节数是
A.3B.6C.10D.20
79.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
A.自然连接B.交C.投影D.并
80.有以下程序:
程序运行后的输出结果是()。
A.ABCDDEFEDBD
B.abcDDfefDbD
C.abcAAfefAbA
D.Abcddfefdbd
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数.不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.编写fun()函数,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。
yn+1=cos(yn)
迭代步骤如下:
(1)取y1初值为0.0;
(2)y0=y1,把y1的值赋给y0;
(3)y1=cos(y0),求出一个新的y1;
(4)若y0=y1的绝对值小于0.000001,则执行步骤
(5),否则执行步骤(2);
(5)所求y1就是方程COS(y)-y=0的一个实根,作为函数值返回。
程序将输出结果Result=0.739085。
请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
部分源程序给出如下。
试题程序:
参考答案
1.B
2.A解析:C语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。
3.C
4.C
5.C
6.C
7.B【答案】B
【知识点】算法描述
【解析】一个算法应该有0个或多个输入,但是必须有一个或多个输出。
8.C
9.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。
10.B解析:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等,所以a+7=c+b是错的。因此,正确答案是选项B),它相当于a=(b=c+2),可分解为两个表达式:b=c+2和a=b。
11.A程序定义结构体类型STU,定义类型STU的全局变量a。main函数定义局部类型为STU变量b,并对它初始化,调用函数f。将局部变量c的各个成员值赋给a,覆盖a的旧值,将a的新值返回并赋给b,此时a、b的各个成员值都是Sun,f,90,程序输出:Sun,f,90,Sun,f,90。本题答案为A选项。
12.C本题考查逗号表达式。程序输出时输出一个%d,所以输出第一个a的值与后续无关。本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。
13.A
14.D
15.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。
16.A通过指针变量存取某个变量值的方式称为“间接存取”方式,选项A错误;头文件stdio.h中定义了NULL,在程序的开头包含stdio.h后,可以给指针变量赋NULL值,表示一个空指针,选项B正确;将一个指针变量中的值赋给另一个指针变量,这两个指针变量指向同一地址,选项C正确;C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型,选项D正确。故本题答案为A选项。
17.A
\r\n
18.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。
①有且仅有一个特定的称为根的结点。
②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。
因此,本题的正确答案有且只有一个。
19.AC语言中scanf函数的声明为“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2个参数是地址。因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故本题答案为A选项。
20.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。
21.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
22.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。
23.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。
24.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。
25.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。
26.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。
27.11解析:ifelse语句的功能:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。
28.2468(若字符间有空格扣1分)2468(若字符间有空格扣1分)
29.
30.max>0max>0解析:本题是典型的冒泡排序题,每一次for循环将从数组a中找出剩下数中的最大的值放在这些数的最前端,若数组a中有n个数,则完成数组排序共需n-1次循环。令max=n-1,每次循环后i值增1,i<max条件不足,即n-1次循环后,此时i=j=max=0,循环结束。
31.1212解析:do…while循环的一个比较显著的特点是:先执行一次循环体然后再判断循环的条件是否满足,若满足则接着进入下一次循环,否则就退出循环。注意:3种循环结构的比较。
32.k*kk*k解析:本题考查的知识点是scarf()函数和printf()函数的用法。scanf()函数有两个参数,第一个参数是格式控制部分(格式控制部分是字符串,主要由“%”号和格式字符组成)第二个参数是一地址列表(地址列表是由多个地址组成,可以是变量的地址,也可以是字符串的首地址)。而第一个空格处位于scanf()函数的第二个参数处,所以,第一个空应该填地址k。printf()函数有两个参数,第一个参数是输出格式字符串(输出格式字符串是由控制输出格式的字符和非格式字符组成的,通常是字符常量。非格式字符作为输出数据的间隔,输出时原样输出)第二个参数为一输出表达式表(输出表达式表是由若干个需要计算和输出的表达式组成的,表达式之间用逗号分隔开)。而第;个空位于printf()函数的第二个参数处,所以应该填*K。
33.B66B66解析:printf函数的功能是按照指定的格式,在标准输出设备上输出数据,它有两种参数:格式控制参数和输出项参数。本题中,printf('%c%d\\n',ch,ch)表示以字符格式和十进制整数格式输出ch,B的ACSII码值为66,即在计算机中B的十进制整数格式是66。所以,输出为B66。
34.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求两个矩阵的和只要将对应元素相加即可。
35.12300123001,2,3,0,0,1,2,3,0,0,解析:本题考查文件读写函数fread和fwrite的用法。fwrite函数将数组a的前5个元素输出到文件fp中两次,共10个字节,再调用fread函数从文件fp中读取这10个字节的数据到数组a中,此时数组a的内容就变为{1,2,3,0,0,1,2,3,0,0},最后的输出结果为'1,2,3,0,0,1,2,3,0,0,'。
36.对象对象解析:将属性、操作相似的对象归为类,也就是说,类是具有共同属性、共同方法的对象的集合。
37.E-R图E-R图解析:E-R图是设计概念模型的有力工具。
38.99解析:本题考查宏定义与三目运算符的综合用法,宏定义是原样替换,本题中,如果a>b成立,则a+1的值为整个表达式的值,否则为b+1的值为整个表达式的值,(应注意后面的加1)。
39.参照完整性参照完整性
40.77解析:字符型数据可作为整型参加算术运算,其值为其对应的ASCII码。'H'-'A',的结果是7,加'0'后是'7'的ASCII码,所以输出的是字符'7'。
41.C解析:C语言是一个函数语言,C语言的主体就是一个主函数,然后有库函数和用户自定义的函数来配合主函数完成一系列的任务,所以说,C语言的基本单位是函数。
42.C
43.B解析:函数的递归调用就是在调用一个函数的过程中又出现直接或间接地调用该函数本身。fun函数共被调用6次,即fun(5)、fun(4)、fun(3)、fun(2)、fun(1)、fun(O)。其中fun(5)是main函数调用的。
44.B解析:在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。
45.D解析:软件工程包括3个要素,即方法、工具和过程。
46.C解析:fprintf函数工作时,多个数据间不会自动加分隔符,选项A错误;浮点数的输出格式是“%5.0f”表明其小数部分输出0位,即没有输出,所以选项B也是错误的。
47.C解析:字符串少一个结束标志,所以输出的结果不确定。
48.A解析:auto变量:无static声明的局部变量。用auto作存储类别的声明时,可以不写auto,存储类别隐含确定为auto(自动存储类别),是动态存储方式。大多数变量是自动变量。用static声明的局部变量是静态局部变量。函数调用结束后静态局部变量占据的内存存储单元空间不释放,局部变量保留原值,下次调用时可以继续使用该值。用extern声明外部变量,外部变量即全局变量,可以用extern声明来改变全局变量的作用域,实际上,关键字'auto'可以省略,auto不写则隐含确定为'自动存储类别',属于动态存储方式。
49.A解析:本题考查软件工程的程序设计风格。软件在编码阶段,力求程序语句简单、直接,不能只为了追求效率而使语句复杂化。除非对效率有特殊的要求,程序编写要做到清晰第一、效率第二。
人们在软件生存期要经常阅读程序,特别是在软件测试和维护阶段,编写程序的人和参与测试、维护的人都要阅读程序,因此要求程序的可读性要好。
正确的注释能够帮助读者理解程序,可为后续阶段进行测试和维护提供明确的指导。
所以注释不是可有可无的,而是必须的,它对于理解程序具有重要的作用。
I/O信息是与用户的使用直接相关的,因此它的格式应当尽可能方便用户的使用。在以交互式进行输入/输出时,要在屏幕上使用提示符明确提示输入的请求,指明可使用选项的种类和取值范围。经过上述分析可知,选项A是不符合良好程序设计风格要求的。
50.B解析:在栈中,允许插入与删除的一端称为栈顶,不允许插入与删除的另一端称为栈底。栈顶元素总是最后被插入的元素,从而也是最先能被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。即栈是按照先进后出(FILO,FirstInLastOut)或后进先出(LIFO,LastInFirstOut)的原则组织数据的,因此,栈也被称为先进后出表或后进先出表。由此可以看出,栈具有记忆作用。答案B错在带链的栈的结点存储顺序与其逻辑顺序是可以不一致的。
51.B解析:scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故选项A不正确;选项C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,故选项C不正确;选项D不是C语言中的输入语句,故选项D不正确:所以,4个选项中选项B符合题意。
52.BC语言中允许使用一种特殊形式的字符常量,就是以一个“\\”开头的字符序列,这样的字符称为“转义字符”。常用的转义字符有:\\n,换行;\\t,水平制表;\\b,退格;\\r,回车。
53.C解析:*p1=1,*p2=3,*p=3,指针p指向变量c,故正确选项为C。
54.B解析:由于运算符[]优先级比*高,int*p[3];相当于int*(p[3]);,表示数组p的三个元素都是指针变量,且每个元素都是基类型为int的指针。
55.D解析:数据流图有4种成分:源点或终点、处理、数据存储和哦数据流。数据存储是处于静止状态的数据,数据流是处于运动中的数据。
56.D解析:结构体变量所占用内存的字节数是其所有成员所占用内存字节数之和。本题中整型变量i所占用的内存是2字节,字符型变量ch所占用的内存是1字节,双精度型变量f所占用的内存是8字节,三者相加即可。
57.A解析:本题考查while循环.y的值在while循环的控制表达式中加1,在循环体内减1,所以总的y值不变,且控制条件++y永远非零。当x加到7时不满足循环条件,结束循环。
58.D解析:选项A:'a'&&'b'是字符a与b的相与,不为0:选项B:a<=b,由题中变量赋值可知,结果为1。选项C:a||+c&&b-c,结果为1;选项D:!((a<B)&&!c||1),运算结果为0。
59.C解析:本题中fun()函数通过一个for循环来累计形参数组x的前n个元素之和。在主函数中,第1次调用fun(a,5)时,返回的值应该是数组a的前5个元素的和,而第2次调用fun(b,4)时,返回的值除了本次累计的数组b前4个元素的和外,还要加上上次累计的值。所以,最后输的s的值为数组a所有元素之和的两倍加上数组b所有元素之和,结果是60。故应该选择C。
60.C解析:软件设计的原则包括:抽象、模块化,信息隐蔽和模块独立性。所以自底向上不是软件设计原则。答案为C。
61.B
62.A
63.C\n对于两个关系的合并操作可以用笛卡尔积表示。设有n元关系R和in元关系s,它们分别有P和q个元组,则R与S的笛卡儿积记为R×S它是一个m+n元关系,元组个数是P×q由题意可得,关系T是由关系R与关系s进行笛卡尔积运算得到的。
\n
64.A程序的执行总是从main函数开始,在main函数中结束,其他函数通过main函数调用执行,所以A)正确。
65.Dc语言中算术运算符的结合性均为自左向右。选项D中表达式计算结果是4cdb/a,和题目要求的代数式不一致,因此选项D不能正确表示题目所给代数式的内容。
66.D若在scanf的格式化控制串中插人了其他字符,则在输入时要求按一一对应的位置原样输入这些字符。格式化输入函数必须严格按照双引号里面的格式进行输入。所以选择D,也可以输入x=23],sum]Y=56,line]z=78L<Enter>即是否输入最后的L都不影响前面三个变量的赋值。在格式化输出函数中,格式控制串中除了合法的格式说明外,可以包含任意的合法字符。
67.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。
68.A
69.B解析:条件表达式的形式为:“表达式1?表达式2:表达式3”。其含义为:当“表达式1”的值为非零时,求出“表达式2”的值,此时“表达式2”的值就是整个条件表达式的值;当“表达式1”的值为零时,求出“表达式3”的值,此时“表达式3”的值就是整个条件表达式的值。对于本题来说,当表达式EXP为非0值时条件成立,即执行语句i++;当EXP等于0时,执行语句j--;这等同于条件表达式“(EXP!=0)?i++:i++;”。
70.Ba=1,执行for循环,b=1;b<1不成立,所以退出循环,执行后面的语句(printf),最后输出b
71.D
72.C
73.BSEEK_SET代表文件的开始,SEEK_END代表文件末尾,SEEK_CUR代表文件当前位置。
74.D所谓标识符,是指常量、变量、语句标号以及用户自定义函数的名称。C语言规定标识符只能由字母、数字、下画线组成,并且只能以字母、下画线开头。一些标识符被赋予特定的含义就叫做保留字(或称为关键字)。
选项D“m—n”中含有非法字符“—”。
75.C
76.C“P”是指针变量,指向一个地址:“*P”为P指针所指向地址的内容“&”是取变量地址。
77.A
78.Dx数组共有10个元素,在花括弧内只提供3个初值,这表示只给前面的3个成员赋值,后7个元素的值为0,所以一共有20个字节。
79.A解析:结构化程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性地转向程序的任一处,在传统流程图中,就是用上节我们提到的“很随意”的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。
80.B在内存中,字符数据以ASCIl码存储,它的存储形式与整数的存储形式类似。c语言中,字符型数据和整型数据之间可以通用,也可以对字符型数据进行算术运算,此时相当于对它们的ASCIl码进行算术运算,在本题中,s++相当于s=s+1,即让s指向数组中的下一个元素。
81.(1)错误:*t=calloe(rn,sizeof(STU))
正确:t=(structss*)calloc(m,sizeof(STU))
(2)错误:t[k].num=b[j].num
正确:t[k]=b[j]
【解析】因为t是一个指向动态存储空间的指针变量,因此“*t=calloc(rn,sizeof(STU))”应改为“t=(structss*)calloc(m,sizeof(STU))”;而题目要求把学生的全部内容互换,即整个结构体的内容,而不是某个成员变量的值,因此“t[k].num=b[j].num”中的.num应去掉。
82.
【解析】进入fun()函数,根据题中给出的求解步骤,首先y1初值为0.0;若y0-yl的绝对值大于0.000001就循环进行迭代,即“y0-yl;yl-cos(yO);”,直到满足题目中的要求,返回y1,即实根。本题考查了do-while用法。
2021-2022年山东省德州市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.C程序是由()构成的。
A.主程序与子程序B.主函数与子函数C.一个主函数与若干个其他函数D.主函数与子程序
2.以下选项中可作为C语言合法常量的是_____。A.-80B.-080C.-8e1.0D.-80.Oe
3.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1,则栈S的容量至少应该是()。
A.6B.4C.3D.2
4.若已定义x和y是整型变量,x=2;,则表达式y=2.75+x/2的值是()。
A.5.5B.5C.3D.4.0
5.线性表(a1,a2,?,an)以链式方式存储,访问第i位置元素的时间复杂度为()。
A.O(0)B.O(1)C.O(n)D.O(n2)
6.对包含N个元素的散列表进行检索,平均检索长度________
A.为o(log2N)B.为o(N)C.不直接依赖于ND.上述三者都不是
7.以下关于算法的叙述中错误的是()。
A.算法可以用伪代码、流程图等多种形式来描述
B.一个正确的算法必须有输入
C.一个正确的算法必须有输出
D.用流程图描述的算法可以用任何一种计算机高级语言编写成程序代码
8.
9.将两个字符串连接起来组成一个字符串时,选用()函数。A.strlen()B.strcpy()C.strcat()D.strcmp()
10.C语言中最简单的数据类型包括()。
A.整型、实型、逻辑型B.整型、实型、字符型C.整型、字符型、逻辑型D.字符型、实型、逻辑型
11.有下列程序:程序执行后的输出结果是()。A.Sun,f,90,Sun,f,90
B.Zhao,m,85,Sun,f,90
C.Zhao,m,85,Qian,f,95
D.Sun,f,90,Qian,f,95
12.执行下列程序中的输出语句后,a的值是()。main{inta;printf(“%d\n”,(a=2*3,a*5,a+7));}A.17B.37C.6D.13
13.
14.在inta=3,int*p=&a;中,*p的值是()
A.变量a的地址值B.无意义C.变量p的地址值D.3
15.设有定义:“struct{charmarkp[l2];intnuml;doublenum2;}tl,t2;”,若变量均已正确赋初值,则以下语句中错误的是()。
A.t1=t2;
B.t2.num1=tl.numl;
C.t2.mark=tl.mark;
D.t2.num2=tl.num2;
16.以下叙述中错误的是()。
A.通过指针变量存取某个变量值的方式称为“直接存取”方式
B.在程序的开头包含头文件stdio.h后,可以给指针变量赋NULL值
C.将一个指针变量中的值赋给另一个指针变量,则这两个指针变量指向同一地址
D.C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型
17.
18.树是结点的集合,它的根结点数目是()。
A.有且只有1B.1或多于1C.0或1D.至少2
19.设有定义“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]);
20.下列不属于软件工程的3个要素的是______。
A.工具B.过程C.方法D.环境
二、2.填空题(20题)21.在C语言中,while和do…while循环的主要区别是______的循环至少被执行一次。
22.以下函数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];}}
23.数据结构分为逻辑结构和存储结构,循环队列属于______结构。
24.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z=0;
elsez+=1;
printf("%d\n",z);
}
25.以下程序的输出结果是【】。
main()
{inta=0;
a+=(a=8);
printf("%d\n",A);
}
26.以下程序的输出结果是【】。
#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);
}
27.下列程序的输出结果是______。
#include<stdio.h>
main()
{intx=3,y=2,z=1;
if(x<y)
if(y<0)z+0;
elseZ+=1;
primf(“%d\n",z);
}
28.下程序的输出结果是【】。
#include<stdio.h>
#defineMAX_COUNT4
voidfun()
main()
{intcount;
for(count=1;count<=MAX_COUNT;coun++)fun();
}
voidfun()
{staicinti;
i+=2;
printf(”%d,i);
}
29.以下程序中函数fun的功能是:构成一个如图所示的带头结点的单词链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。[*]
#include<stdio.h>
typedefstructnode/*链表结点结构*/
{charsub[3];
structnode*next;
}Node;
Nodefun(chars)/*建立链表*/
{…}
voiddisp(Node*h)
{Node*
30.本程序用冒泡法对数组a[]的元素从大到小排序,请在程序空白处填空。voidbubble(inta[],intn){inti,j,max,temp;max=n-1;do{j=0;for(i=0;i<max;i++)if(a[i]<a[i+1]){temp=a[i];a[i]=a[i+1];a[i+1]=temp;j=i;}max=j;}while(());}
31.下面程序的输出结果是【】。
unsignedfun6(unsignednum)
{unsignedk=1;
do{k*=hum%10;
num/=10;}while(num);
return(k);}
main()
{unsignedn=26;
printf("%d\n",fun6(n));}
32.设有定义:intn,*k=&n;以下语句将利用指针变量k读写变量n中的内容,请将语句补充完整。
scanf(“%d”,______);
printf(“%d\n”,______);
33.已知字符A的ACSII码值为65,以下语句的输出结果是______。
charch='B';
printf("%c%d\n",ch,ch);
34.以下程序是求矩阵a、b的和,结果存入矩阵c中,请填空。#include<stdio.h>main(){inta[4][4]={1,2,6,7},{0,4,2,-8},{1,4,5,2},{2,4,6,8}};intb[4][4]={{-4,0,7,9},{2,-7,7,4),{6,9,0,1),{8,8,6,5)};inti,j,c[4][4];for(i=0;i<4;i++)for(j=0;j<4;j++)c[i][j]=();for(i=0;i<4;i++)for(j=0;j<4;j++)printf("%d",c[i][j]);}
35.以下程序的运行结果是【】。
#include<stdio.h>
main()
{FILE*fp;inta[10]={1,2,3,0,0},i;
fp=fopen("d2.dat","wb");
fwtite(a,sizeof(int),5,fp);
fwrite(a,sizeof(int),5,fp);
fclose(fp);
fp=fopen("d2.dat","rb");
fread(a,sizeof(int),10,fp);
fclose(fp);
for(i=0;i<10;i++)printf("%d",a[i]);
}
36.在面向对象的程序设计中,类描述的是具有相似性质的一组【】。
37.在数据库的概念结构设计中,常用的描述工具是【】。
38.以下程序的运行结果是【】。
#defineMAX(a,b)(a>b?a:b)+1
main()
{inti=6,j=8,k;
printf("%d\n",MAX(i,j));
}
39.关系模型的完整性规则是对关系的某种约束条件,包括实体完整性、______和自定义完整性。
40.若有以下程序
main()
{chara;
a='H'-'A'+'0';
printf("%c\n",A);
}
执行后输出结果是【】。
三、1.选择题(20题)41.C语言程序的基本单位是______。
A.程序行B.语句C.函数D.字符
42.若有定义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)
43.以下程序的输出结果是_______。main(){intw=5;fun(w);printf("\n");}fun(intk){if(k>0)fun(k-1);printf("%d",k);}
A.54321B.0l2345C.12345D.543210
44.不能把字符串"Hello!"赋给数组b的语句是______。
A.charb[10]={'H','e','l','l','o','!'};
B.charb[10]={'h','e','l','l','o','!'};
C.charb[10];strcpy(b,"Hello!");
D.charb[10]="Hello!";
45.下面不属于软件工程的三个要素的是A.A.工具B.过程C.方法D.环境
46.下述程序向文件输出的结果是______。#include<stdio.h>voidmain(){FILE*fp=fopen("TEST","wb");fprintf(fp,"%%5.0f%c%d",58,76273.0'-',2278);fclose(fp);}
A.5876273-2278
B.5876273.000000-2278
C.5876273-2278
D.因文件为二进制文件而不可读
47.下面程序的输出结果是main(){charstr[10],c='a';inti=0;for(;i<5;i++)str[i]=c++;printf("%s",str);}
A.abcdeB.aC.不确定D.bcdef
48.在c语言中,变量的隐含存储类别是()。
A.autoB.staticC.externD.无存储类别
49.下列叙述中,不符合良好程序设计风格要求的是()
A.程序的效率第一,清晰第二B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息
50.下列关于栈的描述中错误的是()
A.栈是先进后出的线性表B.栈只能顺序存储C.栈具有记忆作用D.对栈的插入与删除操作中,不需要改变栈底指针
51.X、Y、Z被定义为int型变量,若从键盘给X、Y、Z输入数据,正确的输入语句是______。
A.INPUTX,Y,Z;
B.scanf("%d%d%d",&X,&Y,&Z);
C.scanf("%d%d%d",X,Y,Z);
D.read("%d%d%d",&X,&Y,&Z);
52.下面程序在屏幕上的输出是______。main(){printf(“ab\b\bc”);}A.ab\b\bcB.acC.abcD.abc
53.有以下程序:main(){inta=1,b=3,c=5;int*p1=&a,*p2=&b,*p=&c;*p=*p1*(*p2);printf("%d\n",C);}执行后的输出结果是()。
A.1B.2C.3D.4
54.若有定义int*p[3];,则以下叙述中正确的是______。
A.定义了一个基类型为int的指针变量p,该变量有三个指针
B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C.定义了一个名为*p的整型数组,该数组含有三个int类型元素
D.定义了一个可指向二维数组的指针变量p,所指一维数组应具有三个int类型元素
55.数据存储和数据流都是______,仅仅是所处的状态不同。
A.分析结果B.事件C.动作D.数据
56.在16位IBM-PC机上使用C语言,若有如下定义structdata{inti;charch;doublef;}b;则结构变量b占用内存的字节数是
A.1B.2C.7D.11
57.有下列程序:#include"stdio.h"main(){intx=0;inty=0;while(x<7&&++y){y--;x++;}printf("%d,%d",y,x);}程序的输出结果是()。
A.0,7B.7,7C.0,6D.1,6
58.设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)
59.有以下程序:intfun(intx[],intn){staticihtsum=O,i;for(i=O;i
A.45B.50C.60D.55
60.下面不属于软件设计原则的是
A.抽象B.模块化C.自底向上D.信息隐藏
四、选择题(20题)61.
62.
63.设有如下三个关系表
下列操作中正确的是()。
A.T=RnSB.T=RUSC.T=R×SD.T=R/S
64.对于一个正常运行的C程序,以下叙述中正确的是()。A.程序的执行总是从main函数开始
B.程序的执行总是从程序的第一个函数开始,在main函数结束
C.程序的执行总是从main函数开始,在程序的最后一个函数中结束
D.程序的执行总是从程序的第一个函数开始,在程序的最后一个函数中结束
65.以下不能正确表示代数式4cd/ab的C语言表达式县().
A.4*c*d/a/bB.c*d/a/b*4C.c/a/b*d*4D.4*c*d/a*b
66.现有格式化输入语句,
已知在输入数据后,
x,Y,z的值分别是23,56,78,则下列选项中正确的输入格式是()。
A.23,56,78<Enter>
B.x=23,y=56,z=78<Enter>
C.x=23C,sumy=56,z=78<Enter>
D.x=23],sum]y=56,line]z=78<Enter>
67.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源
68.
69.设有条件表达式:(EXP)?i++;j--,则以下表达式中(EXP)完全等价的是()。
A.(EXP==0)B.(EXP!=0)C.(EXP==1)D.(EXP!=1)
70.有以下程序:
voidmain()
{inta=1,b;
for(b=1;b<1;b++)
{if(a>=8)break;
if(a%2==1){a+5;continue;}
a-=3;
}
printf("%d\n",b);
}
程序运行后的输出结果是()。
A.3B.1C.5D.6
71.
72.
73.函数fseek(pf,OL,SEEKEND)中的SEEKENE代表的起始点是()。
A.文件开始B.文件末尾C.文件当前位置D.以上都不对
74.下列C语言用户标识符中,不属于合法标识符的是
A._1B.d3_7C._a7D.m—n
75.
76.若有定义“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
77.
78.假定int类型变量占用两个字节,其有定义intx[10]={0,2,4};,则数组x在内存中所占字节数是
A.3B.6C.10D.20
79.有三个关系R、S和T如下:
则由关系R和S得到关系T的操作是()。
A.自然连接B.交C.投影D.并
80.有以下程序:
程序运行后的输出结果是()。
A.ABCDDEFEDBD
B.abcDDfefDbD
C.abcAAfefAbA
D.Abcddfefdbd
五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是:对M名学生的学习成绩,按从低到高的顺序找出m(m≤10)名学生来,并将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。
请改正程序中的错误,使它能得出正确的结果。
注意:不要改动main函数.不得增行或删行,也不得更改程序的结构。
试题程序:
六、程序设计题(1题)82.编写fun()函数,它的功能是:利用以下所示的简单迭代方法求方程cos(y)-y=0的一个实根。
yn+1=cos(yn)
迭代步骤如下:
(1)取y1初值为0.0;
(2)y0=y1,把y1的值赋给y0;
(3)y1=cos(y0),求出一个新的y1;
(4)若y0=y1的绝对值小于0.000001,则执行步骤
(5),否则执行步骤(2);
(5)所求y1就是方程COS(y)-y=0的一个实根,作为函数值返回。
程序将输出结果Result=0.739085。
请勿改动main()函数与其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
部分源程序给出如下。
试题程序:
参考答案
1.B
2.A解析:C语言的常量分为整型常量、实型常量和字符型常量。选项A属于实型常量中的十进制小数形式的表示法,是合法的。
3.C
4.C
5.C
6.C
7.B【答案】B
【知识点】算法描述
【解析】一个算法应该有0个或多个输入,但是必须有一个或多个输出。
8.C
9.C将两个字符串连接起来组成一个字符串,选用strcat函数来连接。
10.B解析:选项A)中包含一个不合法的运算符“:=”;选项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等,所以a+7=c+b是错的。因此,正确答案是选项B),它相当于a=(b=c+2),可分解为两个表达式:b=c+2和a=b。
11.A程序定义结构体类型STU,定义类型STU的全局变量a。main函数定义局部类型为STU变量b,并对它初始化,调用函数f。将局部变量c的各个成员值赋给a,覆盖a的旧值,将a的新值返回并赋给b,此时a、b的各个成员值都是Sun,f,90,程序输出:Sun,f,90,Sun,f,90。本题答案为A选项。
12.C本题考查逗号表达式。程序输出时输出一个%d,所以输出第一个a的值与后续无关。本题考查逗号表达式。本题的返回值是a+7,a=2*3=6,a+7=13(注意:本题问的是a的值,而不是程序的输出值)。
13.A
14.D
15.C结构体不能通过结构体名字整体赋值,通过结构体名.成员名的方式赋值。所以C选项错误。
16.A通过指针变量存取某个变量值的方式称为“间接存取”方式,选项A错误;头文件stdio.h中定义了NULL,在程序的开头包含stdio.h后,可以给指针变量赋NULL值,表示一个空指针,选项B正确;将一个指针变量中的值赋给另一个指针变量,这两个指针变量指向同一地址,选项C正确;C语言中函数返回值的类型可以是简单的数据类型,也可以是指针类型,选项D正确。故本题答案为A选项。
17.A
\r\n
18.A树形结构是一类重要的非线性数据结构。树是n(n≥0)个结点的集合,对应任意一棵非空树,它具有以下几点重要的性质。
①有且仅有一个特定的称为根的结点。
②当n>1时,其余结点可分为m(m>0)个互不相交的有限集T1,T2,…,TM,其中每一个集合本身又是一棵树,称为子树。
因此,本题的正确答案有且只有一个。
19.AC语言中scanf函数的声明为“scanf(“<格式化字符串>”,<地址表>);”,可知scanf的第2个参数是地址。因此,从4个答案中可以判断,只有选项A是p[i]的地址,其他的均是变量本身。故本题答案为A选项。
20.D解析:本题考查了软件工程的基本概念。软件工程包括3个要素,即方法、工具和过程。方法是完成软件工程项目的技术手段;工具支持软件的开发、管理和文档生成;过程支持软件开发的各个环节的控制和管理。
21.do…whiledo…while解析:考查while和do…while循环的主要区别。while循环的控制出现在循环体之前,只有当while后面的表达式的值为非零时,才可能执行循环体;在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此无论表达式的值是否为零,循环体至少要被执行一次。
22.a[0][i]b[i][0]a[0][i]\r\nb[i][0]解析:b[i][N-1]=a[0][i]实现把a所指二维数组中的第0行放到b所指二维数组的最后一列中,b[i][0]=a[N-1][i]实现将a所指N行N列的二维数组中的最后一行放到b所指二维数组中的第0列。
23.存储或物理或存储结构或物理结构存储或物理或存储结构或物理结构解析:数据的逻辑结构在计算机存储空间中的存放形式称为数据的存储结构(也称数据的物理结构)。所谓循环队列,就是将队列存储空间的最后一个位置绕到第一个位置,形成逻辑上的环状空间。供队列循环使用。可知,循环队列应当是物理结构。
24.11解析:ifelse语句的功能是:若表达式的值为真,执行语句1,并跳过其他语句,执行ifelse语句的下一条语句,若表达式的值为假,跳过语句1,执行语句2,依次往下判断。题中,x=3,y=2,第一个if语句的控制条件x<y就不满足,又没有与之配对的else语句,所以直接执行printf语句,在整个过程中变量z的值都没发生变化。
25.1616解析:在程序中首先将8赋值给变量a,然后在进行复合赋值运算。即a=a+a=8+8=16,所以该空格处应该填16。
26.3535解析:函数swap(int*a,int*b)的功能是实现*a和*b中两个数据的交换,在主函数中调用swap(p,q)后,形参指针变量a和b分别指向i和j,在swap(int*a,i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年物业管理师考试物业管理信息化建设与应用模拟试题及答案
- 湖南省湘教版高中化学高二年级上册第10章习题集及答案
- 公共卫生执业医师考试学校卫生与儿童保健备考习题及答案
- 上海市统编版金融风险管理专项训练习题集及答案
- 2026年统计师资格考试统计设计模拟试卷及答案
- 2026年建筑工程施工资料验收管理考试冲刺练习题及答案
- 2026年浙江省主治医师考试外科学试题及答案
- 2026年护士执业资格考试综合模拟试卷附答案
- 年产1500万件金属喇叭网生产项目可行性研究报告模板-申批备案
- 2026年今年高考会出现的题目及答案
- 《建筑法》培训教学课件
- 达到退休年龄劳动合同终止协议书
- 卫生院居民档案复核制度
- 两侧带挡土墙施工方案
- 2.1.4圆盘漏洞理论
- 出生医学证明教学课件
- 国企文员考试试题及答案
- Unit 3 Same or Different?语法填空专题复习练习题(含答案解析)人教版八年级英语上册
- GB/T 9945-2025热轧球扁钢
- 神经外科危重病人护理常规
- 中债登培训课件
评论
0/150
提交评论