版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年陕西省咸阳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下能够正确描述“k是大于0的偶数”的表达式是()。
A.(k>0)&&(k%2!=1)
B.(k>0)&&(k%2=0)
C.(k>0)||!(k%2)
D.(k>0)||(k%2==0)
2.静态链表中指针表示的是()。
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
3.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩
4.允许对队列进行的操作有()。
A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素
5.语句int(*ptr)的含义是()。A.A.ptr是一个返回值为int的函数
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
6.以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序错误
7.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审
8.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
9.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
10.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5B.2和4C.4和2D.5和1
11.有以下程序:#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.acc,bbxxyy
B.accbbxxyy,bbxxyy
C.accxxyy,bbxxyy
D.accxyy,bbxxyy
12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}编译时编译器提示错误信息,你认为出错的语句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;
13.表达式a*(-b+c)的逆波兰式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序执行后输出结果是()。A.n=5B.n=2C.n=3D.n=4
15.用树形结构表示实体之间联系的模型的是
A.关系模型B.网状模型C.层次模型D.以上三个都是
16.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。
A.先序遍历B.中序遍历C.后序遍历D.按层遍历
17.下列叙述中错误的是()。A.程序可以由多个程序文件组成
B.一个C语言程序只能实现一种算法.
C.程序可以由一个或多个函数组成
D.一个C函数可以单独作为一个C程序文件存在
18.
19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5
20.针对简单程序设计,以下叙述的实施步骤顺序正确的是()。
A.确定算法和数据结构、编码、调试、整理文档
B.编码、确定算法和数据结构、调试、整理文档
C.整理文档、确定算法和数据结构、编码、调试
D.确定算法和数据结构、调试、编码、整理文档
二、2.填空题(20题)21.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间。
st=(char*)【】;
22.执行以下程序后sum的值是【】。
main()
{
inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
23.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
24.需求分析的最终结果是产生【】。
25.在进行软件结构设计时,应遵循的最主要原理是【】。
26.以下程序的输出结果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
27.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
28.目前实际存在和使用的广域网基本上都是采用______拓扑结构类型。
有以下程序:
#include<string.h>
structSTU
{intnum;
floatTotalScore;};
voidf(structSTUp)
{structSTUs[2]={{20041,703},{20045,537}};
p.num=s[1].num;p.TotalScore=s[1].TotalScore;
}
main()
{structSTUs[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n",s[0].num,s[0],TotalScore);
}
程序运行后的输出结果是【】。
29.在树形结构中,树根结点没有______。
30.下面程序的输出结果是【】。
#include<stdio.h>
main()
{char*p={"BOOL""OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%",*p[i]);
printf("\n");
}
31.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
32.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
33.以下程序运行后的输出结果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
34.下列程序执行后输出的结果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
35.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。
36.当输入的数据为2、5时,则下列程序的运行结果为【】。
#include<stdio.h>
#definemax100
main()
{
intf[max],i,j,k,m;
scanf("%d%d",&k,&m);
for(i=0;i<=m;i++)f[i]=0;
f[k-1]=1;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)f[i]+=f[i];
printf("%d%10d%10d\n",k,m,f[m]);
getch();
}
37.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
38.下列程序的运行结果为【】。
main()
{inta=5,b=5,y,z;
y=b-->++a?++b:a;
z=++a>b?a:y;
printf("%d,%d,%d,%d",a,b,y,z);
}
39.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;
三、1.选择题(20题)41.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);
42.已有定义int(*q)(),指针q可以()。
A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型
43.下列程序的运行结果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}
A.正数B.负数C.零D.不确定的值
44.若变量已正确定义,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其输出结果是()。
A.0,0B.0,1C.1,1D.程序进入无限循环
45.结构化程序设计主要强调的是
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
46.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序运行后的输出结果是()。
A.6,1B.2,1C.6,0D.2,0
48.以下有关宏替换的叙述不正确的是()。
A.双引号中出现的宏名不替换B.使用宏定义可以嵌套C.宏定义仪仪是符号替换D.宏名必须用大写字母表示
49.若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是()。
A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}
B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}
C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}
D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}
50.不是面向对象程序设计的可维护性的优点的是()
A.用面向对象的方法开发的软件稳定性比较好B.易于移植C.易于和调试D.用面向对象的方法开发的软件比较容易理解
51.下列程序的运行结果为
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
52.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于19.0,b赋予22.0,c赋予33.0,不正确的输入形式是______。
A.10<回车>22<回车>33<回车>
B.19.0,22.0,33.0<回车>
C.19.0<回车>22.033.0<同车>
D.1022<回车>33<回车>
53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。
A.7B.6C.8D.无确定值
54.若有下列定义,则对a数组元素地址的正确引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
55.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。
A.2B.4C.6D.8
56.不能把字符串"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!";
57.以下各选项均为说明一种新的类型名,其中正确的是()。
A.typedefv1int;
B.typedefv1=int;
C.typedefintv1;
D.typedefv1=int;
58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序运行后的输出结果是______。
A.64,28B.4,4C.4,3D.64,64
59.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
60.在下列关于二叉树的叙述中,正确的一项是
A.在二叉树中,任何一个结点的度都是2
B.二叉树的度为2
C.在二叉树中至少有一个结点的度是2
D.一棵二叉树的度可以小于2
四、选择题(20题)61.
62.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
该程序的输出结果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
63.
64.(46)面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是()
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
65.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
66.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
67.在单链表中,增加头结点的目的是()。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现
68.
69.下列关于指针变量赋空值的说法错误的是
A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;
C.赋值语句可以表达为变量名=0;D.一个指针变量可以被赋空值
70.以下选项中,能用作数据常量的是______。A.o115B.0118C.1.5e1.5D.115L
71.有以下程序
.程序运行后的输出结果是()。
A.6B.9C.11D.7
72.有以下程序:
程序执行后的输出结果是()。
A.20B.25C.45D.36
73.(2)以下数据结构中不属于线性数据结构的是()
A.队列
B.线性表
C.二叉树
D.栈
74.(15)在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是()
A.概要设计
B.详细设计
C.可行性分析
D.需求分析
75.
76.有以下程序
#include<stdio.h>
main()
{
intnum=0;
while(num<=2)
{
num++;
printf("%d\n",num);
}
}
上面程序的输出结果是
77.有以下程序:
若运行时输入:246<;回车>;,则输出结果为()。
A.204B.200C.240D.246
78.有以下程序:
voidmain()
{
inty=10;
while(y>>1){printf("y=%d\n",y);}
}
程序执行后的输出结果是()。
A.y=0
B.y=-1
C.y=1
D.while构成无限循环
79.程序中已构成如下图所示的不带头结点的单向链表结构,指针变量s、p、q均已正确定义,并用于指向链表结点,指针变量s总是作为指针指向链表的第一个结点。
若有以下程序段:
该程序段实现的功能是()。
A.删除尾结点B.尾结点成为首结点C.删除首结点D.首结点成为尾结点
80.
五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。请修改程序中的错误,使它能得到正确结果。注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdlib.h>#include<conio.h>#include<stdio.h>doubleproc(intn){doublesum,s0,s1,s2,s;intk;sum=1.0;if(n<=2)sum=0.0;s0=0.0;s1=0.0;s2=1.0;//****found****for(k=4;k<n;k++)}{s=s0+s1+s2;sum+=S:s0=s1;s1=s2;//****found****s2=s;returnsum;}voidmain{intn;system("CLS");printf("InputN=");scanf("%d",&nJ;printf("%f\n",proc(n));}
六、程序设计题(1题)82.下列程序定义了MM的二维数组,并在主函数中自动赋值。请编写函数proc(inta[][M]),该函数的功能是:使数组左下半三角元素中的值全部置成0。例如,a数组中的值为:
注意:部分源程序给出如下。
请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填入所编写的若干语句。
试题程序:
参考答案
1.A判断k大于0的表达式为“k>0”,判断k是偶数的表达式为“k%2==0”或“k%2!=1”。两个表达式必须都成立才能确定k是大于0的偶数,则对应的表达式为“(k>0)&&(k%2==0)”或“(k>0)&&(k%2!=1)”。故本题答案为A选项。
2.C
3.C学号是学生表S的主键,课号是课程表C的主键,所以选课表SC的关键字就应该是与前两个表能够直接联系且能唯一定义的学号和课号,所以选择C项。
4.D
5.C本题考查的是指向函数的指针。函数指针定义的基本格式为:类型标识符(*指针变量名)()。“类型标识符”为函数返回值的类型。
6.A解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5,a[1][0]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过mailoc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。
7.C【答案】:C
【知识点】:需求分析阶段的任务
【解析】:需求分析阶段的任务是深入描述软件的功能和性能,确定软件设计的约束和软件同其他系统元素的接口细节,定义软件的其他有效性需求,借助于当前系统的逻辑模型导出目标系统逻辑模型,解决目标系统“做什么”的问题。可分为需求提出、需求描述及需求评审三个阶段。从此可以看出需求分析的任务不包括制定软件集成测试计划,故选C。
8.A解析:对线性表进行二分法检索,要求线性表是按顺序方式存储的,并按关键码值的大小排好序,而不是按关键码的检索频率排序。
9.B#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。
10.B
11.B在函数fun中,前一个while循环的作用是,如果形参指针t所指内容不为0,则让t增1,直到它指向0;后一个while循环的作用是,将s所指内容赋给t所指地址,然后两者同时增1,直到赋给t的内容为0。由此可见,函数fun的作用就是将形参s所指字符串连接到形参t所指字符串末尾,相当于库函数strcat。主函数中使用fun将数组aa中的字符串连接到数组ss中原有字符串之后,所以执行完后,ss中的字符串为“accbbxxyy”。程序最后输出的结果是accbbxxyy,bbxxyy。故本题答案为B选项。
12.A本题考查指针,pl=&k表示P指向k的地址,则*p=k,依次类推,在对指针进行赋值时没有错误。a=/*p+m赋值,在c语言中"/*"表示的注释,所以答案选择A。
13.D
14.Dcontinue语句的作用是结束本次循环,即跳过本次循环体中余下尚未执行的语句,接着再一次进行循环的条件判定。
15.C解析:在数据库系统中,由于采用的数据模型不同,相应的数据库管理系统(DBMS)也不同。目前常用的数据模型有三种:层次模型、网状模型和关系模型。在层次模型中,实体之间的联系是用树结构来表示的,其中实体集(记录型)是树中的结点,而树中各结点之间的连线表示它们之间的关系。因此,本题的正确答案是C。
16.A
17.B在一个C语言程序中可以进行多种算法的实现,对算法的个数没有规定,所以B)错误。
18.C
19.C后缀自增运算“t++”表示先运算,再自加。语句“if(t++<6)printf(“%d\\n”,t);elseprintf(“%d\\n”,t--);”中t的初值为6,则“t++<6”,条件为假,t自增至7,执行“printf(“%d\\n”,t--);”,此时t=7,输出t值为7,之后进行自减操作t=6。因此输出的结果为7。故本题答案为C选项。
20.A\nC语言中程序中的步骤实现为:先确定程序中的算法和数据结构,然后进行程序的编码,再进行对程序的调试,最后进行文档的整理和记录。使用这种步骤可以方便程序的编写以及在完成后提高代码的重用性。
\n
21.malloc(11)或malloc(sizeof(char*)11)malloc(11)或malloc(sizeof(char*)11)解析:该题主要考查malloc函数的使用。一个字符在内存中占一个字节,因此malloc的参数为11。也可按指向字符指针的大小来分配。
22.1515解析:程序的功能是求1、2、3、4、5的和即15。
23.*(p+5)或p[5]*(p+5)或p[5]
24.需求规格说明书需求规格说明书解析:软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。需求规格说明书包括正确性、无歧义性、完整性、可验证性、一致性、可理解性、可修改性和可追踪性等。
25.模块独立原理模块独立原理
26.43214321解析:静态存储类的局部变量其生存期为整个程序的运行期间,作用域却只是定义它的函数或局部范围。注意:局部变量和全局变量的作用域。
27.数据存储数据存储
28.2004170320041703解析:由于参数传递只是将实参的值复制到形参中,形参与实参拥有各自的存储空间,因此形参的改变并不影响实参,所以并不改变s的情况。
29.前件前件
30.SO
31.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。
32.HelloHello解析:字符串中,数值0或符号'/0'表示字符串的结束。本题中,b[5]被赋了0值,表明字符串b的第六个字符就是结束标志。因此,只输出前五个字符,即Hello。
33.132132解析:本题考核的知识点是for循环与switch语句的综合运用。主函数中用了一个for循环,for循环里嵌套了一个switch语句,for循环了三次,当i=9时,i/10=0,执行switch语句中case0分支,m和n的值各加1,变为1和1,然后遇到breake语句,退出switch语句;当i=10,i/10=1,执行switch语句中default分支,使k和n的值各加1,变为1和1,退出switch语句:当i=11时,i/10=1,执行switch语句中default分支,k和n的值各加1变,为2和3,退出switch语句,循环结束。故该空格处应该填132。
34.1212解析:本题的第—个for循环用于绐数组arr赋初值,第二个for循环用于求和运算。由于第二个for循环初始值为1,而循环条件为i<4,所以求的是arr[1]到arr[3]及i的和,所以输出结果为12。
35.模块化模块化
36.255
37.67G67G解析:由于\'5\'-\'3\'=2,所以a=\'A\'+\'5\'-\'3\'=\'C\',按'%d'格式输出\'C\'的ASCII码为67;同理,\'6\'-\'2\'=4,b=a+\'6\'-\'2\'=\'C\'+4=\'G\',按'%c'格式输出为\'G\'。
38.7467
39.t*10或10*tt*10或10*t解析:本题要求累加一系列有规律的数,从输出结果来看,s保存的是最终结果,而s在循环体中,每次累加一个t,则说明t在5次循环中分别等于1.12、123、1234、12345;而t每次循环等于“填空内容”加上循环变量i,又因为i在5次循环中分别等于1、2、3、4,5,所以t每次循环要加的“填空内容”应分别为0、10、120,1230,12340,这一系列值正好是前一次t的值的10倍.所以“填空内容”应是t*10。
40.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。
41.B解析:scanf()函数要求将输入的数据存入变量所在的地址。选项A不是C语言中的输入语句,故选项A不正确;选项C中输入的是变量字符串而不是地址字符串,不满足scanf()函数要求将输入的数据存入变量所在的地址,故选项C不正确;选项D不是C语言中的输入语句,故选项D不正确:所以,4个选项中选项B符合题意。
42.A解析:本题考查的是指向函数的指针。函数指针的定义方式是:类型标识符(*指针变量名)()。其中,“类型标识符”为函数返回值的类型;“指针”指向函数的入口地址。
43.A解析:本题考查字符串比较函数和两个字符串比较的原则两个知识点:①原则是依次比较两个字符串同—位置的一对字符,若它们的ASCII码值相同,则继续比较下一对字符,若它们的ASCII码值不同.则ASCII码值较大的字符所在的串符串较大;若所有字符相同,则两个字符串相等;若一个字符串全部i个字符与另一个字符串的前i个字符相同,则字符串较长的较大。②strcmp(s1,s2)的返回值,当str1<str2时,返回值<0;当str1=str2时,返回值为0;当str1>str2,返回值>0。
44.B解析:do…while循环的执行过程如下:①执行do后面的循环体中的语句。②计算while后一对圆括号中表达式的值。当值为非0时,转去执行步骤①;当值为0时,执行步骤③。③退出do…while循环。对于本题变量i的初始值等于“0”,接着执行do后面的循环体中的语句,输出变量i的值0。再判断while后面括号中表达式i++的值,其值为0,所以循环结束。此时变量i的值经过自加已经变为1,所以再次输出i的值“1”。
45.B
46.B解析:所谓中序遍历是指在访问根结点、遍历左子树与遍历右子树这三者中,首先遍历左子树,然后访问根结点,最后遍历右子树;并且在遍历左、右子树时,仍然先遍历左子树,然后访问根结点,最后遍历右子树。
47.B解析:本题的考点是关于C语言的整数运算和逻辑运算。由于d初值为25,“a=d/10%9中d/10”整除结果是2,再用9求余结果仍是2,因此a的值为2。而对于“b=a&&(-1)”,由于a值为2不为0,-1也不为0,因此“a&&(-1)”结果为真,b值是1。输出结果应该是2、1。正确选项是B。
48.D解析:本题考查宏替换的规则。宏替换分为简单的字符替换和带参数的宏替换两类。使用宏时应注意以下几点:①定义仅仅是符号替换,不是赋值语句,因此不做语法检查;②为了区别程序中其他的标识符,宏名的定义通常用大写字母,但不是必须用大写;③双引号中出现的宏名不替换;④使用宏定义可以嵌套,即后定义的宏中可以使用先定义的宏。
49.A解析:C语言程序从main函数开始执行,当程序中定义了多个函数时,通常情况下是先定义后调用。若被调用函数定义在主调函数之后,则必须先声明后调用。在选项A)中,先执行main函数,并调用了fun函数,而fun函数在此调用之前无定义也无声明,故无法正常识别调用,所以错误。
50.B
51.A解析:本题考查了用字符指针引用字符数组中的字符及对字符的操作。函数abc()的for语句执行过程是:从字符指针str所指向的字符数组的第一个元素开始,逐一判断字符是否为'c',若不是就执行一次数组元素的赋值过程,若字符为'c'就不执行。
52.B解析:用scanf函数输入多个数据时,数据间的分隔符可以是空格、回车符或制表符,本题中选项A、C和D的输入方法都是正确的。因scanf函数中的控制字符中没有非格式字符“,”,因此选项B中以“,”作为分隔符是错误的。
53.A解析:本题定义了一个指向由3个元素组成的一维数组的指针变量pa,通过赋值让它指向具有2行3列的数组a,此时用指针变量pa,表示数组元素a[i][j]的形式是pa[im][j])。for循环执行了3次;第一次i值为0,执行pa[1][0]=pa[1][0]-1,执行后a[1][0]的值变为3;第二次i值为1,执行pa=[1][1]=pa[1][1]-1,执行后a[1][1]的值为4;第三次i值为2,执行pa[1][2]=1,执行后a[1][2]的值变为1。故prinff语句输入的值为2+4+1=7。所以,A选项为所选。
54.D解析:本题考查如何引用数组元素的地址。
选项A)中,p+5引用的是a[5]的地址,而数组a只有5个元素,即a[0]、a[1]、a[2];a[3]、a[4],所以引用错误;选项B)中,*a+1指的是将数组a的第一个元素加1;选项C)中,这种引用方式错误;选项D)中,&a[0]引用的是数组的首地址。
55.B解析:函数fib内部有两个递归调用,当n=3时,fib(n-1)返回2,fib(n-2)也返回2,所以fib(n-1)+fib(n-2)的值为4。
56.B解析:在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。
57.C解析:使用typedef定义新类型名的一般格式是:typedef<旧类型名><新类型名>。选项A,int是C语言中已经有的类型名,不能再被定义成其他类型名,故不正确:选项B的格式不正确;选项C是将v1定义成int型,正确;选项D格式不正确。所以,应该选择C。
58.C解析:根据题意,il=f(8)/f(4)进行宏替换后.i1=(8*8)/(4*4)=4,i2=f(4+4)/f(2+2)=(4+4*4+4)/(2+2*2+2)=24/8=3。所以输出结果为4、3。
59.A解析:“%”是求余运算符或模运算符,“%”两侧均应为整型数据,选项A)中的x是double型数据。
60.D解析:本题考查了二叉树的基本概念。在二叉树中,叶子节点的度是1;当该二叉树为空树时,根节点的度为零;为非空树时,根节点的度为2。
61.D\r\n
62.C题目中给出的程序分为两个部分:主函数main和函数f。在主函数中初始化定义了一个整型数组a,大小为6,并定义了两个数组指针p,q。指针p指向数组第一个元素的地址,指针q指向数组最后一个元素的地址。主函数包含一个while语句,循环条件为p<q,while语句内部先调用了f函数,p、q指针为该函数的实参,随后进行了p++操作和q--,即使p指针指向下一个元素的地址,q指针指向前一个元素的地址。由于是数组存储,必然存在初始时,有p<q,当p>=q时,while语句结束。while语句后面是for语句,该语句的作用是输出数组a[]中所有的数据。
f函数的形参为整型指针,函数的功能是使得输入的指针变量所指向的数据进行交换,由于使用的是指针变量,故在f函数中对指针的操作结果会影响调用函数中(main)实参所指数据的改变,题目中f函数的调用实质是将main函数中的p、q指针所指的数据进行交换,也将导致数组a中相应的数据进行交换。结合while语句,也就是将数组a中的第1个数据与第6个数据进行交换,第2个数据与第5个数据进行交换,以此类推,得到结果10,8,6,4,2,1。
63.D
64.C
65.B解析:在C语言的数组元素的引用方法,我们在前面已经讲过了,比如数组元素a[0],可以用表达式*(p+0),即*p来引用,对于数组元素a[1],可以用表达式*(p+1)来引用,在这里,p+1的值就是数组元素a[1]的地址,对此地址使用“间接访问运算符”:*(p+1)就代表存储单元a[1],注意:一对圆括号不可少。同样,对于数组元素a[2],则可以用表达式。(p+2)来引用…,对于数组元素a[9],可以用表达式,(p+9)来引用。因此,当指针变量p指向a数组的起始地址时,若0≤i<10,则数组元素a[i]可以用*(p+i)来表示。
66.C在本题程序中,首先定义了一个全局整型变量b,并给其赋初值为2,然后定义一个函数func,该函数带有一个指针类型的形参,在函数体中,通过形参的值来改变全局变量b的值,b+=*a等价于b=b+(*a),然后通过return语句返回计算后的变量b的结果。
在主函数中,定义两个整型变量a和res,并都赋初值为2,然后调用func函数,传递的形参是变量a的地址,即使形参指针变量a指向实参变量a的值,通过b+=*a计算,可以得到b=2+2=4。由于变量b是一个全局变量,作用域是整个程序,而非函数func,因此,在主函数中变量res的最后结果为2+4=6,程序最后的输出结果为6。
67.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。
68.A
69.A本题考查的是对指针变量赋空值。在C语言中用NULL给指针赋空值,如p=NULL。当指针值为NULL时,指针不指向任何有效数据。由于NULL与整数0相对应,所以有下面三条语句等价:
p=NULL;p=0;p=’\\0’。
70.D在C语言中,有整型常量、实型常量、字符常量和字符串常量等类型。整型常量和实型常量又称数值型常量。基本整型常量只能用数字表示,不带小数点,例如12、-1和0等,在VC6.0中可以在整型常量的后面加—个字母l(L的小写)或L;实型常量必须用带小数点的数表示,例如3.14159、-2.71828、0.0等;选项A中字母o不符合要求,选顶B中超出八进制的范围,选项C中e后面的不为整数,因此选顶D是正确的。
71.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个元素位置处。
72.B统计1~9九个数中的奇数和,此题考察指向数组的指针。C语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此·(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。
73.C所谓的线性结构是指:如果一个非空的数据结构满足下列两个条件,即1)有且只有一个根结点;2)每一个结点最多有一个前驱,也最多有一个后继。同时满足两个条件的有队列、线性表和栈,而二叉树的结点可能存在两个后继,所以不是线性结构。
74.D注:即第一个阶段
75.B
76.C本题考查while()语句。程序中使用的是while循环,为“当型”循环结构,即当条件为真时循环,将值代入循环,当num为3时,循环的条件已经为假,将不再循环。故本题答案为C。
77.A本题中输入的3个数据2,4,6分别赋值给了x[0[0],x[1][0],x[2][0]。x[o][1]仍为初始时的0,所以打印输出时的结果为A选项。
78.D位运算;条件判断y>>1对循环没有任何影响,始终为真,所以循环是一个无限循环。
79.D本题考查链表的操作,本题中首先是s指向了它的下个结点,题目中说明了s总是指向链表的第一个结点,然后while循环找到链表的最后一个元素,然后最后一个元素指向了之前链表的头结点,之前头结点指向了空结点,所以本题实现的功能是使首结点成为尾结点。选项D正确。
80.B
81.(1)错误:for(k=4;k<n;k++)正确:for(k=4;k<=11;k++)(2)错误:s2=S;正确:s2=s;)【解析】题目中要求计算数列前n项的和,包括第n项,因此“for(k=4;k<n;k++)”中的“k<n”应改为“k<=n”;根据C语言的语法规则,for循环体中的多条语句必须在大括号“{”和“}”之间,因此,要在语句s2=s;后加上)。
82.
【解析】要使数组左下半三角元素中的值全部置成0,先要找出数组的下半三角元素,再将其值全部赋值为0。二维数组中下半三角元素的特点为,其列下标小于其行下标。根据这个特点,将二维数组的下半三角元素都赋值为0。
2021年陕西省咸阳市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________
一、单选题(20题)1.以下能够正确描述“k是大于0的偶数”的表达式是()。
A.(k>0)&&(k%2!=1)
B.(k>0)&&(k%2=0)
C.(k>0)||!(k%2)
D.(k>0)||(k%2==0)
2.静态链表中指针表示的是()。
A.内存地址B.数组下标C.下一元素地址D.左、右孩子地址
3.设有表示学生选课的三张表,学生s(学号,姓名,性别,年龄,身份证号),课程c(课号,课名),选课SC(学号,课号,成绩),则表sc的关键字(键或码)为()。
A.课号,成绩B.学号,成绩C.学号,课号D.学号,姓名,成绩
4.允许对队列进行的操作有()。
A.对队列中的元素排序B.取出最近进队的元素C.在队头元素之前插入元素D.删除队头元素
5.语句int(*ptr)的含义是()。A.A.ptr是一个返回值为int的函数
B.ptr是指向int型数据的指针变量
C.ptr是指向函数的指针,该函数返回一个int型数据
D.ptr是一个函数名,该函数的返回值是指向int型数据的指针
6.以下程序输出正确的是______。amovep(int*p,int(*a)[3],intn){inti,j;for(i=0;i<n;i++)for(j=0;j<n;j++){*p=a[i][j];p++;}}main(){int*p,a[3][3]={{1,3,5},{2,4,6}};p=(int*)malloc(100);arnovep(p,a,3);printf("%d%d\n",p[2],p[5];free(p);}
A.56B.25C.34D.程序错误
7.下面不属于需求分析阶段任务的是()。
A.确定软件系统的功能需求B.确定软件系统的性能需求C.制定软件集成测试计划D.需求规格说明书评审
8.对线性表进行二分法检索,其前提条件是()。
A.线性表以顺序方式存储,并按关键码值排好序
B.线性表以顺序方式存储,并按关键码的检索频率排好序
C.线性表以链式方式存储,并按关键码值排好序
D.线性表以链式方式存储,并按关键码的检索频率排好序
9.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
10.若用一个大小为6的数值来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为()。
A.1和5B.2和4C.4和2D.5和1
11.有以下程序:#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.acc,bbxxyy
B.accbbxxyy,bbxxyy
C.accxxyy,bbxxyy
D.accxyy,bbxxyy
12.有以下程序:#include<stdio.h>main(){inta,b,k,m,*pl,*p2;k=1,m=8;p1=&k,p2=&m;a=/*pl-m;b=*p1+*p2+6;printf("%d",a);printf("%d\n",b);}编译时编译器提示错误信息,你认为出错的语句是()。A.a=/*pl-m;B.b=*p1+*p2+6;C.k=1,m=8;D.pl=&k,p2-&m;
13.表达式a*(-b+c)的逆波兰式是()
A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*
14.有以下程序:main{inti,n=0:for(i=2;i<5;i++){do{if(i%3)continue:n++:}while(!i);n++:}printf("n=%d\n",n);}程序执行后输出结果是()。A.n=5B.n=2C.n=3D.n=4
15.用树形结构表示实体之间联系的模型的是
A.关系模型B.网状模型C.层次模型D.以上三个都是
16.采用邻接表存储的图的深度优先遍历算法类似于二叉树的()。
A.先序遍历B.中序遍历C.后序遍历D.按层遍历
17.下列叙述中错误的是()。A.程序可以由多个程序文件组成
B.一个C语言程序只能实现一种算法.
C.程序可以由一个或多个函数组成
D.一个C函数可以单独作为一个C程序文件存在
18.
19.有以下程序:#include<stdio.h>main(){intt;scanf(“%d”,&t);if(t++<6)printf(“%d\n”,t);elseprintf(“%d\n”,t--);printf(“\n”);}执行时输入6并按<Enter>键,则输出结果是()。A.6B.8C.7D.5
20.针对简单程序设计,以下叙述的实施步骤顺序正确的是()。
A.确定算法和数据结构、编码、调试、整理文档
B.编码、确定算法和数据结构、调试、整理文档
C.整理文档、确定算法和数据结构、编码、调试
D.确定算法和数据结构、调试、编码、整理文档
二、2.填空题(20题)21.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间。
st=(char*)【】;
22.执行以下程序后sum的值是【】。
main()
{
inti,sum;
for(i=1;i<6;i++)
sum+=i;
printf("%d\n",sum);
}
23.若有以下定义,则不移动指针p,且通过指针p引用值为98的数组元素的表达式是______。
intw[10]={23,54,10,33,47,98,72,80,61},*p=w;
24.需求分析的最终结果是产生【】。
25.在进行软件结构设计时,应遵循的最主要原理是【】。
26.以下程序的输出结果是【】。
#include<stdio.h>
main()
{ints[]={1,2,3,4},i;
intx=0;
for(i=0;i<4;i++)
{x=sb(s,x);
printf("%d",x);}
printf("\n");}
sb(s1,y)
int*s1,y;
{staticinti1=3;
y=s1[i1];
i1--;
return(y);}
27.数据字典是各类数据描述的集合,它通常包括5个部分,即数据项、数据结构、数据流、______和处理过程。
28.目前实际存在和使用的广域网基本上都是采用______拓扑结构类型。
有以下程序:
#include<string.h>
structSTU
{intnum;
floatTotalScore;};
voidf(structSTUp)
{structSTUs[2]={{20041,703},{20045,537}};
p.num=s[1].num;p.TotalScore=s[1].TotalScore;
}
main()
{structSTUs[2]={{20041,703},{20042,580}};
f(s[0]);
printf("%d%3.0f\n",s[0].num,s[0],TotalScore);
}
程序运行后的输出结果是【】。
29.在树形结构中,树根结点没有______。
30.下面程序的输出结果是【】。
#include<stdio.h>
main()
{char*p={"BOOL""OPK","H","SP"};
inti;
for(i=3,i>=0;i--,i--)printf("%",*p[i]);
printf("\n");
}
31.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。
32.下列程序段的输出结果是【】。
main()
{charb[]="Hello,you";
b[5]=0;
printf("%s\n",B);
}
33.以下程序运行后的输出结果是______。
main()
{
inti,m=0,n=0,k=0;
for(i=9;i<=11;i++)
switch(i/10)
{
case0:m++;n++;break;
case10:n++;;break;
default:k++;n++;
}
printf("%d%d%d\n",m,n,k);
}
34.下列程序执行后输出的结果是【】。
main()
{intarr[10],i,k=0;
for(i=0;i<10;i++)arr[i]=i;
for(i=1;i<4;i++)k+=arr[i]+i;
printf("%d\n",k);
}
35.结构化程序设计方法的主要原则可以概括为自顶向下、逐步求精、______和限制使用goto语句。
36.当输入的数据为2、5时,则下列程序的运行结果为【】。
#include<stdio.h>
#definemax100
main()
{
intf[max],i,j,k,m;
scanf("%d%d",&k,&m);
for(i=0;i<=m;i++)f[i]=0;
f[k-1]=1;
for(i=k;i<=m;i++)
for(j=i-k;j<=i-1;j++)f[i]+=f[i];
printf("%d%10d%10d\n",k,m,f[m]);
getch();
}
37.已知字符'A'的ASCII码为65,以下程序运行后的输出结果是【】。
#include<stdio.h>
main()
{chara,b;
a='A'+'5'-'3';b=a+'6'-'2';
printf("%d%c\n",a,b);
}
38.下列程序的运行结果为【】。
main()
{inta=5,b=5,y,z;
y=b-->++a?++b:a;
z=++a>b?a:y;
printf("%d,%d,%d,%d",a,b,y,z);
}
39.以下程序的功能是计算:s=1+12+123+1234+12345。请填空。
main()
{intt=0,s=0,i;
for(i=1;i<=5;i++)
{t=i+______;s=s+t;}
printf("s=%d\n",s);
}
40.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;
三、1.选择题(20题)41.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);
42.已有定义int(*q)(),指针q可以()。
A.指向函数的入口地址B.代表函数的返回值C.表示函数的类型D.表示函数返回值的类型
43.下列程序的运行结果是()。#include<stdio.h>#include<string.h>main(){char*s1="ahDuj";char*s2="ABdUG":intt;t=strcmp(s1,s2);printf("%d",t);}
A.正数B.负数C.零D.不确定的值
44.若变量已正确定义,有以下程序段:i=0;doprintf("%d,",i);while(i++);printf("%d\h",i);其输出结果是()。
A.0,0B.0,1C.1,1D.程序进入无限循环
45.结构化程序设计主要强调的是
A.ZBTYCPXAB.ATBZXCYPC.ZBTACYXPD.ATBZXCPY
46.设有下列二叉树:
对此二叉树中序遍历的结果为______。
A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA
47.有以下程序:main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,B);}程序运行后的输出结果是()。
A.6,1B.2,1C.6,0D.2,0
48.以下有关宏替换的叙述不正确的是()。
A.双引号中出现的宏名不替换B.使用宏定义可以嵌套C.宏定义仪仪是符号替换D.宏名必须用大写字母表示
49.若下列各选项中所有变量已正确定义,函数fun通过return语句返回一个函数值,以下选项中错误的程序是()。
A.main(){...x=fun(2,10);...}floatfun(inta,intb){...}
B.floatfun(inta,intb){...}main(){...x=fun(i,j);...}
C.floatfun(int,int);main(){...x=fun(2,10);...}floatfun(ihta,intb){...}
D.main(){floatfun(inti,intj);...x=fun(i,j);...}floatfun(inta,intb){...}
50.不是面向对象程序设计的可维护性的优点的是()
A.用面向对象的方法开发的软件稳定性比较好B.易于移植C.易于和调试D.用面向对象的方法开发的软件比较容易理解
51.下列程序的运行结果为
#include<stdio.h>
voidabc(char*str)
{inta,b;
for(a=b=0;str[a]!='\0';a++)
if(str[a]!='c')
str[b++]=str[a];
str[b]='\0';}
voidmain()
{charstr[]="abcdef";
abc(str);
printf("str[]=%s",str);}
A.str[]=abdefB.str[]=abcdefC.str[]=aD.str[]=ab
52.若变量已正确说明为float类型,要通过语句scanf("%f%f%f",&a,&b,&c);给a赋于19.0,b赋予22.0,c赋予33.0,不正确的输入形式是______。
A.10<回车>22<回车>33<回车>
B.19.0,22.0,33.0<回车>
C.19.0<回车>22.033.0<同车>
D.1022<回车>33<回车>
53.有以下程序:main(){inta[][3]={{1,2,3},{4,5,0}},(*pa)[3],i;pa=a;for(i=0;i<3;i++)if(i<2)pa[1][i]=pa[1][i]-1;elsepa[1][i]=1;printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}执行后输出结果是()。
A.7B.6C.8D.无确定值
54.若有下列定义,则对a数组元素地址的正确引用是()。
inta[5],*p=a;
A.p+5B.*a+1C.&a+1D.&a[0]
55.有如下程序:longfib(intn){if(n>2)return(fib(n-1)+fib(n-2));elsereturn(2);}main(){printf("%ld\n",fib(3));}该程序的输出结果是______。
A.2B.4C.6D.8
56.不能把字符串"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!";
57.以下各选项均为说明一种新的类型名,其中正确的是()。
A.typedefv1int;
B.typedefv1=int;
C.typedefintv1;
D.typedefv1=int;
58.有以下程序:#definef(x)(x*x)main(){inti1,i2;i1=f(8)/f(4);i2=f(4+4)/f(2+2);printf("%d,%d\n",i1,i2);}程序运行后的输出结果是______。
A.64,28B.4,4C.4,3D.64,64
59.已知各变量的类型说明如下:intk,a,b;unsignedlongw=5;doublex=1.42;则以下不符合C语言语法的表达式是():
A.x%(-3)B.w+=-2C.k=(a=2,b=3,a+b)D.a+=a-=(b=4)*(a=3)
60.在下列关于二叉树的叙述中,正确的一项是
A.在二叉树中,任何一个结点的度都是2
B.二叉树的度为2
C.在二叉树中至少有一个结点的度是2
D.一棵二叉树的度可以小于2
四、选择题(20题)61.
62.有如下程序
voidf(int*x,int*y)
{intt;
t=*x;*x=*y;*y=t;
}
main()
{inta[6]={1,2,4,6,8,10},i,*p,*q;
p=a;q=&a[5];
while(p<q)
{f(p,q);p++;q--;}
for(i=0;i<6;i++)
printf("%d,",a[i]);
}
该程序的输出结果是
A.1,2,4,6,8,10B.10,8,4,6,2,1
C.10,8,6,4,2,1D.10,2,4,6,8,1
63.
64.(46)面向对象的设计方法与传统的的面向过程的方法有本质不同,它的基本原理是()
A.模拟现实世界中不同事物之间的联系
B.强调模拟现实世界中的算法而不强调概念
C.使用现实世界的概念抽象地思考问题从而自然地解决问题
D.鼓励开发者在软件开发的绝大部分中都用实际领域的概念去思考
65.有如下说明inta[10]={1,2,3,4,5,6,7,8,9,10},*p=a;则数值为9的表达式是()
A.*p+9B.*(p+8)C.*p+=9D.p+8
66.下列程序的输出结果是
intb=2;
intfunc(int*a)
{b+=*a;return(b);}
main()
{inta=2,res=2;
res+=func(&a);
printf("%d\n",res);
}
A.2
B.4C.6
D.8
67.在单链表中,增加头结点的目的是()。
A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现
68.
69.下列关于指针变量赋空值的说法错误的是
A.当赋空值的时候,变量指向地址为0的存储单元B.赋值语句可以表达为变量名=’\0’;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度大数据中心服务运营合同
- 2024年度文化娱乐活动组织居间合同
- 2024年度麻石开采权转让合同
- 2024年度工厂企业草坪除草维护合同
- 2024年度餐饮服务采购合同
- 2024版国际lng购销合同价格波动条款
- 2024年度建筑行业工程审计服务合同
- 2024年度机器人研发与制造合同
- 预算与考核在财务管理中的作用计划
- 有效时间管理提升工作效率计划
- 2024-2030年中国房车行业竞争战略发展趋势预测报告
- 2023年8月26日事业单位联考C类《职业能力倾向测验》试题
- 2023年天津公务员已出天津公务员考试真题
- 施工现场临水施工方案
- 2022年公务员多省联考《申论》真题(四川县乡卷)及答案解析
- 艾滋病职业防护培训
- 全科医生转岗培训结业考核模拟考试试题
- 2025年高考数学专项题型点拨训练之初等数论
- 上海市浦东新区2024-2025学年六年级上学期11月期中数学试题(无答案)
- 吃动平衡健康体重 课件 2024-2025学年人教版(2024)初中体育与健康七年级全一册
- 通信技术工程师招聘笔试题与参考答案(某世界500强集团)2024年
评论
0/150
提交评论