




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2021年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有‘\0’
2.若要判断char型变量c中存放的是否为小写字母,以下正确的表达式是()。A.'a'<=c<='z'
B.(c>='a')&&(c<='z')
C.(c>='a')‖(c<='z')
D.('a'<=c)AND('z'>=c)
3.若串S=,software,其子串的数目是()。
A.8B.37C.36D.9
4.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系
B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项
C.一个关系的属性名表称为关系模式
D.一个关系可以包括多个二维表
5.以下程序的输出结果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
6.链表不具有的特点是()。A.A.不必事先估计存储空间
B.可随机访问任意元素
C.插入、删除不需要移动元素
D.所需空间与线性表长度成正比
7.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){ if(x%3) { printf(“%”d,x--); continue; }printf(“%d,”,--x);}}程序的运行结果是()。
A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
8.在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()。
A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next
9.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B.计算机只能处理由0和1的代码构成的二进制指令或数据
C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D.每一种高级语言都有它对应的编译程序
10.若函数中有定义语句:inta;,则()。
A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值
11.下面程序的输出结果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
12.表达式a+=a-=a=9的值是()。
A.9B.-9C.18D.0
13.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
14.阅读以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("请输人2个数:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}该程序在编译时产生错误,其出错原因是()。A.定义语句出错,case是关键字,不能用做用户自定义标识符
B.定义语句出错,printF不能用做用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
15.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19
16.下列给字符数组初始化中,()是正确的。
A.chars2[3]="xyz";
B.chars1[]="abcd";
C.chars3[][3]={'a','x','y'};
D.chars4[2][3]={"xyz","mnp"};
17.若有定义“doublex,y,*px,*py;”,执行了“px=&x;py=&y;”之后,正确的输入语句是()。
A.scanf(“%lf%le”,px,py);
B.scanf(“%f%f”,&x,&y);
C.scanf(“%f%f”,x,y);
D.scanf(“%lf%lf”,x,y);
18.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化
19.十六进制数BB转换成十进制数是()
A.192B.256C.187D.121
20.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
二、2.填空题(20题)21.以下程序中,fun函数的功能足求3行4列二维数组每行尢素中的最大值。请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,B);for(i=0;j<3;i++)printf("%4d",b[i]);printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)if(())x=ar[i][j];br[i]=x;}}
22.有以下程序:
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是【】。
23.以下程序是求矩阵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]);}
24.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为【】。
25.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
26.下面程序的输出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
27.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。
inti=8,j=9;floatx=123.456;
print("i=%oj=%o\n",i,j);
28.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
29.若a的值为1,则表达式!a‖++a的值是______。
30.下列程序的运行结果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf"\n");
}
31.某二义树中度为2的结点有18个,则该二叉树中有______个叶子结点。
32.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。
#include<string.h>
main()
{charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"eshe");
printf("%s\n",p1);
}
33.数据流的类型有______和事务型。
34.若有如下程序:
main()
{inta[][2]={1,2,6,9,11},(*t)[2];
t=a;
printf("%d,%d\n",*(t[1]+1),(*t)[1]);
}
则程序运行后输出的结果是【】。
35.下面程序的运行结果是______。
voidswap(int*a,int*B)
{
int*t;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
36.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是【】。
37.下列程序的运行结果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
38.以下程序的输出结果是12.00,请将空白处填写完整。
main()
{inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1*2;
printf("%52f\n",z);
}
39.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
40.下列程序输出的结果是【】。
fun(intx)
{staticinta=3;
a+=x;
return(a);
}
main()
{intk=2,m=1,n;
n=fun(k);
n=fun(m);
printf("%d\n",n);
}
三、1.选择题(20题)41.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量
42.以下叙述中正确的是A.A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中
43.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表
44.下面被调用函数sub的函数值的类型是()sub(floatA){floatb;b=a*a+1;returnb;}
A.单精度型B.双精度型C.空类型D.整型
45.数据库设计包括两个方面的设计内容,它们是()
A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计
46.下面这个程序段的时间复杂度是()。for(i=1;i<n;i++){y=y+3;for(j=0;j<=(2*n);j++)x++;}
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n2)
47.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是
A.fun("abc",3.0);
B.t=fun('D',16.5);
C.fun('65',2.8);
D.fun(32,32);
48.以下不能正确定义二维数组的选项是A.inta[2][2]={{1},{2}};
B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},2,3};
D.inta[2][]={{1,2},{3,4}};
49.在C语言中,要求运算数必须是整型的运算符是()
A.%B./C.<D.!
50.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);retumy-x-1;}
A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面
51.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()
A.控制流B.加工C.数据存储D.源和潭
52.有下列二叉树,对此二叉树中序遍历的结果为()。
A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE
53.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
54.以下不构成无限循环的语句或者语句组是()。
A.n=0;
B.n=0;do{++n;}while(n<=0);while(1){n++}
C.n=10;
D.for(n=0,i=1;;i++)n+=i;while(n);{n--;)
55.阅读下面程序,则执行后的结果是#include"stdio.h"main(){charstr[]="tomeetme",*p;for(p=str;p<str+7;p+=2)putchar(*p);printf("\n");}.
A.tomeetmeB.tmemC.oeteD.tome
56.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。
A.12B.15C.16D.20
57.
(3)
A.p->nextB.pC.sD.s>next
58.有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))
59.以下程序段的输出为()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有语法错误
60.执行以下程序后,a,b的值分别是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
四、选择题(20题)61.程序调试的目的是
A.发现程序中的错误B.改正程序中的错误C.验证程序的正确性D.改善软件的性能
62.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。A.A.isupper(c)B.'A'<=c<='Z'
C.'A'<=c&&c<='Z'
D.c<=('z'-32)&&('a'-32)<=c
63.
64.
65.
66.
67.
68.栈和队列的共同点是()。
A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点
69.有以下程序:
程序运行后的输出结果是()。
A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,
70.(40)将E-R图转换到关系模式时,实体与联系都可以表示成()
A.属性
B.关系
C.键
D.域
71.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的()。
A.charstr[]="string";c=str;
B.scanf(%s,c):
C.c=getchar();
D.*c="strin9";
72.下列程序的输出结果是()。
char*p1="abcd",*p2="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A.xyabcABB.abcABzC.ABabczD.xycdBCD
73.
74.
以下程序执行后sum的值是()。
main
{inti,sum;
for(i=1;i<6;i++)sum+=i:
printf("1%d\n",sum):
}
A.15B.14C.不确定D.0
75.有以下程序:
#include<stdio.h>
intf(intx):
main
{intn=1,m;
m=f(f(f(n)));printf("%d\n",m);
}
intf(intx)
{returnx*2;)
程序运行后的输出结果是()。
A.1B.2C.4D.8
76.以下叙述中正确的是(.。
A.调用printf函数时,必须要有输出项
B.使用putChar函数时,必须在之前包含头文件stdio.h
C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出
D.调用getChar函数读入字符时,可以从键盘上输入字符所对应的ASCIl码
77.有以下程序:
#include<stdio.h>
main()
{unsignedchara=8,C;
C=a>>3:
printf("%d\n",c);
}
程序运行后的输出结果是()。
A.32B.16C.1D.0
78.在数据库设计中,将E—R图转换成关系数据模型的过程属于()。
A.需求分析阶段B.概念设计阶段C.逻辑设计阶段D.物理设计阶段
79.
80.在“文件包含,预处理语句的使用形式中,当#include后面的文件名用(双引号)括时,寻找被包含文件的方式是()。
A.直接按系统设定的标准方式搜索目录
B.先在源程序所在的目录搜索,如没找到,再按系统设定的标准方式搜索
C.仅仅搜索源程序所在目录
D.仅仅搜索当前目录
五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:实现两个变量值的交换,规定不允许增加语句和表达式。例如,变量a中的值原为8,b中的值原为3,程序运行后,a中的值为3,b中的值为8。请改正程序中的错误,使它得出正确的结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构!试题程序:
六、程序设计题(1题)82.学生的记录由学号和成绩组成,M名学生的数据已在主函数中放人结构体数组stu中。请编写函数proc(),它的功能是:函数返回指定成绩的学生数据,指定的成绩在主函数中输入。若没找到指定的成绩,在结构体变量中给学号置空串,给成绩置-1,作为函数值返回。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数proc()的花括号中填人所编写的若干语句。试题程序:
参考答案
1.A题目的fun函数内,while循环条件为“(*b=*a)!=‘\\0’”,执行时先把指针a所指向的字符赋给指针b所在的内存单元。如果该字符不是结束标识‘\\0’,执行循环体“a++;b++;”,指针a、b分别指向下一个字符单元。再判断循环条件,如果成立,继续把指针a所指向的字符赋给指针b所在的内存单元,直到遇到结束标识为止。故本题答案为A选项。
2.BC语言中,char型变量的值是其对应字符的ASCII值,可以做比较运算。由于小写字母的ASCII值按字母表的顺序连续递增,因此判断char型变量c是不是小写字母时,判断c的ASCII值是否在’a’和’z’之间,即(c>=’a’)&&(c<=’z’)。本题答案为B选项。
3.B
4.C解析:在格式化模型中,要事先根据应用的需要,确定数据之间的逻辑关系,即先对数据进行结构化。在关系模型中,不需要事先构造数据的逻辑关系,只要将数据按照一定的关系存入计算机,也就是建立关系。所以选项A错误。对于一个表示关系的二维表,其最基本的要求是表中元组的每一个分量必须是不可分的数据项,即不允许表中再有表。所以,选项B、D说法是错误的。一个关系的属性名表称为关系模式,也就是二维表的表框架,相当于记录型。因此,选项C说法正确。
5.D当k=1时,循环成立,输出w[l]的数组即EFGH,接着执行k++后k为2;当k=2时,循环成立,输出w[2]的数组即IJKL,接着执行k++后,k为3;当k=3时,循环不成立,退出。
6.B链表采用的是链式存储结构,它的结点空间可以动态申请和释放;它的数据元素的逻辑次序靠结点的指针来指示,插入、删除不需要移动数据元素。但是链式存储结构也有不足之处:每个结点中的指针域需额外占用存储空间,它是一种非随机存储结构。
7.Dcoutimie语句的作用是跳出循环体中剩余的语句而进行下一次循环。第1次循环,x的值为8,循环体中if条件成立,输出X的值8后将x减1,再执行continue语句,跳出本次循环。第2次循环,x的值为6,不满足循环体内的if条件,执行输出“--x”的操作,即输出5后跳出循环。第3次循环,x的值为4,满足循环体内的if条件,执行输出“x--”的操作,即输出4后将x值减一,执行continue语句,跳出本次循环。第4次循环,x的值为2,满足循环体内的if条件,执行输出“x--”的操作,输出2后将x减1,执行continue语句,跳出本次循环。在进行for条件表达式中第3个表达式“x--”的操作后,x的值为0,不满足条件,结束循环。所以运行结果为8,5,4,2,。故本题答案为D选项。
8.C
9.C本题主要考查我们对C语言一些基础知识的掌握情况。下面分别分析本题的四个选项。
由于高级程序设计语言具有可读写、可理解性好等特点,这就要求高级程序设计语言用接近人们习惯的自然语言和数学语言作为语言的表达形式,选项A的说法正确。
在计算机中,机器可以接受和处理的只能是由0和1组成的二进制代码,用高级语言编写的程序都需要经过编译和连接,使其转化为二进制代码才能被机器执行。因此,选项B的说法正确。
C语言源程序经过C语言编译程序编译之后生成一个后缀为.OBJ的二进制文件(称为目标文件);最后要由“连接程序”把此.OBJ文件与C语言提供的各种库函数连接起来生成一个后缀为.EXE的可执行文件。因此,选项C的说法不正确。
由于高级语言编写的程序都需要经过编译和连接,才能被计算机执行,因此,每一种高级语言都有它对应的编译程序,D选项的说法正确。
10.C用int方法定义变量时,编译器仅为变量开辟存储单元,并没有在存储单元中放任何值,此时变量中的值是无确定的,称变量值”无意义”。因此,本题正确答案为c。
11.A解析:p为指针型变量。第一次循环,p=s,p的值为字符数组s的首地址,输出字符串'ABCD'。p++,第二次循环,p的值为字符数组s的首地址加1,输出字符串'BCD'。p++,第三次循环,p的值为字符数组s的首地址加2,输出字符串'CD'。p++,第4次循环,p的值为字符数组s的首地址加3,输出字符串\'D'。
12.D解析:+=、-=、=等符号优先级相同结合性是由右至左,所以选D。
13.A左移运算符“<<”是双目运算符,其功能是把“<<”左边的运算数的各二进位全部左移若干位,由“<<”右边的数指定移动的位数,高位丢弃,低位补0。例如,a<<4是把a的各二进位向左移动4位。如a=00000011(十进制3),左移4位后为00110000(十进制48)。
14.A本题中定义了整形变量case,但case是关键字,关键字不能用做标识符。单精度printF不是关键字,因为标识符区分大小写。所以A不正确。
15.Bfun(x+2)表示的是结构体数组中的第3个元素即{03,"Zhao",l8),而输出的是name元素,所以答案为B。
16.A
17.A因为x和y都是double型数据,输入时的格式字符应为%lf,B、C选项错误。D选项中的“scanf(“%lf%lf”,x,y);”应为“scanf(“%lf%lf”,&x,&y);”。故本题答案为A选项。
18.C栈是先进后出的数据结构,在对栈操作的整个过程中,栈底指针不变,入栈与出栈操作均由栈顶指针的变化来完成,因此本题答案为c)。
19.C
20.D解析:C语言的宏定义包括不带参数的宏定义与带参数的宏定义。本题为带参数的宏定义,其形式为:
#define宏名(形参表)字符串
本题的M(a+b,b+c,c+a)被字符串a+b*b+c+c+a代替。
21.x<ar[i][j]x<ar[i][j]解析:本题考查的是循环的嵌套。本题定义了二维数组a,存放3行4列的数组元素,定义了,一维数组b用于存放每行的最大数。存函数fun中,通过二重for循环求每行的最大数,外层for循环用于控制行数,内层for循环用于控制列数。当外层循环执行一次时,内层循环则执行4次,并求出了这一行的最大值x,最后将每一行求出最大值x赋值给存放最大值的数组br,故本题答案为x<ar[i][j]。
22.87788,7,7,8解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。
23.a[i][j]+b[i][j]a[i][j]+b[i][j]解析:求两个矩阵的和只要将对应元素相加即可。
24.上溢上溢解析:入队运算是指在循环队列的队尾加入一个新元素。这个运算有两个基本操作:首先将队尾指针进一(即rear=rear+1),并当rear=m+1时,置rear=1;然后将新元素插入队尾指针指向的位置。当循环队列非空(s=1)且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算,这种情况称为“上溢”。
25.k=p;k=p;解析:为要寻找数组中的最大元素的下标,需先预设1个临时最大元素的下标,并顺序逐一考查数组的元素,当发现当前元素比临时最大元素更大时,就用当前元素的下标更新临时最大元素下标。直至考查了数组的全部元素后,这临时最大元素下标就是数组的最大元素下标。通常预设的最大元素下标是数组的首元素下标,考查是从首元素开始顺序向后继元素考查。程序中,存储临时最大元素下标的变量是k,变量p控制顺序考查的循环控制变量。当发现当前元素s[p]比临时最大元素s[k)更大时,应该用p更新k。所以在空框处应填入代码“k=p;”。
26.DDBBCCDDBBCC解析:C语言对枚举的定义规定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。
27.1011
28.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。
29.11解析:逻辑运算中,非1即0,非0即1,!a=0,++a为逻辑1,所以0和1相或结果为1。
30.24682,4,6,8解析:子函数fun()的功能是将数组a中的元素都自加一遍,然后仍然将结果存在原数组中,其实就是将数组a的每个元素都变为原来的2倍,然后输出。在主程序中首先通过intfun()定义了子函数fun(),然后再调用fun()。
31.1919解析:二叉树具有如下性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。根据题意,度为2的节点为18个,那么,叶子结点就应当是19个。
32.HowdoesheHowdoeshe解析:本题的关键在于表达式str1+strlen(str1)/2,注意“/”的用法,可得str1+13/2=str1+6。
33.变换型变换型
34.929,2解析:本题开始定义了一个int型二维数组a,并赋以5个初值,系统使数组的最高维为3,并让a[0][0]=1,a[0][1]=2,a[1][0]=6,a[1][1]=9,a[2][0]=11,a[2][1]因为初值不够而初始化为0。然后定义一个行指针t指向数组a的首地址,因为表达式t[1]表示指向元素a[1][0]的int型指针,t[1]+1表示指向a[1][1]的int型指针,故*(t[1]+1)返回的是a[1][1]的值9。而*t表示指向元素a[0][0]的int型指针,故(*t)[1]返回的是a[0][1]的值2。所以正确答案应该为9,2。
35.3535解析:在主函数中通过定义和赋初值使p和q分别指向了x和y,执行函数调用“swap(p,q)”,把p和q中的地址值传给了形参指针变量a和b,a和b分别指向7实参x和y。在函数swap()中交换了指针变量a和b的值,并没有交换a和b指向的实参的值,所以函数调用返回后x和y依旧是原来的值。
36.11解析:首先计算if语句后面的表达式,根据运算符的优先级可知,先算“a!=0”,该值为1,再把1赋值给p,结果为1(真),执行其后的printf语句,输出的值为1。
37.11<CR>23<CR>5(<CR代表换行)11<CR>23<CR>5(<CR,代表换行)解析:本题通过语句“for(i=2;i<5;i++)a[i]=a[i-2]+a[i-];”将数组中前面两项的和赋值给数组当前元素,得到a的值应为(1,1,2,3,5)。语句if(i%2==0)pfintf('\\n')是要将数组中的元素以每行2个的形式输出。
解析:a/2=9/2=4,1/2=0,于是根据输出结果就有下列等式:z=4+2*x/1.1=12.0,化简后,为x/1.1=4,x=4.4。
39.自顶向下自顶向下解析:在程序设计时,应先考虑总体,后考虑细节,逐步使问题具体化,对复杂的问题,应该设计一些子目标作为过渡,上述方法概括为:自顶向下,逐步细化。
40.6
41.A本题考查的知识点是转义字符。题目中的关键是八进制101的十进制是多少.八进制的101转换为十进制为65,也就是字符A的ASCII。
42.C
43.A\r\n二分法又叫折半(对分)查找法,只适合于顺序存储的有序表(是指线性表中的元素按值非递减排列)。二分法的基本思想是:设有序线性表的长度为n,被查元素为X,则二分查找的方法如下:
将X与线性表的中间项进行比较:若中间项的值等于x,则说明找到,查找结束;若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分)以相同的方法进行查找;若X大于中间项的值,则在线性表的后半部分(即中间项以后的部分)以相同的方法进行查找、这个过程-直进行到查找成功或于表长度为0,(说明线性表中没有这个元素为止)顺序存储的线性袁在计算机中-般用一个-维数组来表示,在数组中我们可以通过数组名和下标来对数组中的任意一个元素进行访问,而在链表(不管是有序还是无序)中,要对元素进行访问必须从表头结点开始,顺着链条一个一个结点进行搜索,因此选项A正确
44.D
45.A解析:模式设计和内模式设计是概念设计的两种方法。物理设计是根据特定的计算机系统,对数据的存储结构和存取方法进行设计,从而实现从逻辑结构到物理结构的转换。从系统开发的角度来看,结构特性设计和行为特性-设计是数据库应用系统所具有的两个特性。结构特性的设计,设计各级数据库模式(静态特性):行为特性的设计,改变实体及其特性,决定数据库系统的功能(动态特性)。
46.D解析:语句的频度指的是该语句重复执行的次数。一个算法中所有语句的频度之和构成了该算法的运行时间。在本例算法中,语句①的频度是n-1,语句②的频度是(n-1)(2n+1)-2n2-n-1。则该程序段的时间复杂度是T(n)=n-1+2n2-n-1=O(n2)。
47.D解析:题目中定义的函数fun()有两个参数,一个是字符型变量ch,另一个是浮点型变景x,函数类型是void即无返回值。选项A调用fun的第1个参数是字符串常量与字符变量不匹配,所以不正确。选项B是有返回值函数的调用形式,不正确。选项C的第1个参数是错误的字符常量,字符常量是用单引号括起来的—个字符(是转义字符可能有多个字符),故也不正确。选项D使用两个整型常量调用fun这在C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择D。
48.D解析:选项A)定义的数组按行各数组元素分别是:1,0,2,0;选项B)定义的数组按行各数组元素分别是:1,2,3,4;选项C)定义的数组按行各数组元素分别是:1,0,2,3;因为定义数组时,第一维的长度可以不指定,第二维的长度必须指定,所以选项D)错。
49.A解析:题目的四个选项中,B、C、D都不要求运算数必须为整数,参与模运算(%)的运算数必须是整型数据。
50.A解析:在函数体内定义一字符型指针并指向形参,然后遍历其中各字符直到NULL,最后返回字符串首尾地址的差值,即字符串的长度。
51.A解析:数据流图包括4个方面,即加工(转换)(输入数据经加工变换产生输出)、数据流(沿箭头方向传送数据的通道,一般在旁边标注数据流名)、存储文件(数据源)(表示处理过程中存放各种数据的文件)、源和潭(表示系统和环境的接口,属系统之外的实体)。不包括选项中的控制流。
52.B解析:对二又树的中序遍历是指:首先遍历左子树,然后访问根结点,最后遍历右子树。在遍历左,右子树时,注意依旧按照“左子树—根结点—右于树”的顺序。
53.A解析:本题考查带参数的宏定义,参数只是简单的替换而不是求出其值后再替换形式参数。本题中用a++替换X,用b++替换Y,再求(a++)*(b++)的值,即3*4的值,其结果为12。
54.A解析:本题主要考查各种循环语句的掌握情况。选项A中为dowhile循环语句,首先执行do后面的语句++n;得n=1,while条件表达式为假,退出循环。选项B中,while条件表达式的值始终为1,条件为真,构成无限循环。选项C中while(n);语句循环体为空,n的值在循环中一直保持不变,构成无限循环。选项D中,i=1,for语句中条件判断语句为空,永远为真,构成无限循环。
55.B解析:存放字符串的字符数组的名字就是这个字符串的首地址。本题的功能是对于字符串“tomeetme”进行选择式输出,从第一个字母开始,每输出一个字符即跳过一个。
56.A解析:本题的考查点是宏定义。a++的形式应当先使用a值,然后a才进行自加1运算,所以程序在进行SUB()乘法运算的时候,仍取a,b的原值,最后输出的结果是12。
57.B解析:主函数中,定义了一个结构体型指针变量head,然后将函数CreatList()的返回值赋给指针变量head,从这里可知函数CreatList()的返回值为structnode*类型,所以第48处的空格处应该填structnode*,故48题选项C正确;在函数CreatList()中首先定义三个结构体型指针变量b,p和q。然后调用malloc()函数分配了一个结点空间,并让指针h指向它,开始指针p、q和h都指向它,然后调用一个while循环语句,当到达字符串数组s的末尾结束循环,在每次循环中,分配一个结点空间,并让p指向它,然后让该结点的data域的值等于字符串指针s所指的值,故49处的空格处应填*s,因此第49题的正确的答案为选项A;接下来让指针q所指结点的指针城指向结点p,然后让指针q指向该指针的所指结点的下一个结点即p,所以第50个空格处应该填p,因此第50题应该选择B。所以48题4个选项中选项C符合题意:第49题4个选项中选项A符合题意;第50题4个选项中选项B符合题意。
58.D解析:本题考查数组指针的应用。选项D)第一层括号中为数组a中第i项元素的值,外面再加指针运算符没有意义。
59.B
60.C解析:a=p1==&m;等价于a=(P1==&m);将p1是否等于m的地址的逻辑值(0)赋给变量a;在b=(*p1)/(*p2)+7;语句中,(*P1)/(*p2)=0,因此将表达式的值7赋给变量b。
61.B调试也称排错或纠错。它与成功的测试形影相随,测试成功的标志是发现错误。根据错误迹象,诊断错误的原因和位置,进而改正程序中的错误,这就是调试的任务。
调试分为静态调试和动态调试,静态调试就是指对源程序进行分析,然后确定可能出错的地方并进行排错。动态调试是指对程序的运行进行跟踪并观察其出错点,然后进行排错。
静态调试通常可以采用如下两种方法。
(1)输出寄存器的内容
在测试中出现问题,设法保留现场信息。把所有的寄存器和主存中有关部分的内容打印出来(通常以八进制或十六进制的形式打印),进行分析研究。用这种方法调试,输出的是程序的静止状态(程序在某一时刻的状态),效率非常低,不得已才采用。
(2)为取得关键变量的动态值,在程序中插入打印语句。这是取得动态信息的简单方法,并可检验在某事件后某个变量是否按预期要求发生了变化。此方法的缺点是可能输出大量需要分析的信息,必须修改源程序才能插入打印语句,这可能改变关键的时序关系,引入新的错误。
动态调试通常利用程序语言提供的调试功能或专门的调试工具来分析程序的动态行为。一般程序语言和工具提供的调试功能有检查主存和寄存器;设置断点,即当执行到特定语句或改变特定变量的值时,程序停止执行,以便分析程序此时的状态。
62.B选项B先计算关系表达式“'A'<=c”的值是0还是l,再比较该值与字符'z'之间的大小关系,不能实现题目所要求的功能。
63.D
64.B
65.D
66.C
67.D
68.C栈和队列都是一种特殊的操作受限的线性表,只允许在端点处进行插入和删除。二者的区别是:栈只允许在表的一端进行插入或删除操作,是一种“后进先出”的线性表;而队列只允许在表的一端进行插入操作,在另一端进行删除操作,是一种“先进先出”的线性表:本题答案为C)。
69.Afopen(”data.chit“,”w+”);W+打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件存在则建立该文件。rewind(fp);使文件fp的I位置指针指向文件开始。fprintf(fp,”%d\n”,a[5一i]);将8[i]输出到fp指向的文件中。fseanf(fp,”%d”,&k);将fp读I入到变量k中,第一个for循环将数组中元素倒着输入到fp指l向的文件中,rewind()则指向文件开始,因此打印是数组a的I倒叙。故打印为6,5,4,3,2,1。答案为A选项。
70.B
71.A选项B是从键盘上输入字符串,选项C是接收字符,选项D不正确。
72.D
73.C
74.C
\nsum+=i等价于sun+i,在本题中sum没有赋初值,而题中只输出sum的值,因此整个结果为不确定值。
\n
75.D本题考查函数返回值作参数,最初n=1,f(n)=f(1)=2,将f(n)的结果代入第二个f(n)中,即f(f(n))=f(2)=4,所以f(f(f(f(n))))=f(4)=8。
76.B本题考查的是标准输入输出函数。在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令”#include”将头文件”stdio.h”包括到用户源文件中。调用printf函数时可以没有输出项,比如printf(””)是允许的。c语言中整数的输出形式中没有十二进制的形式。getchar函数读人字符时可以得到第一个输入字符的ASCIl码,无法通过输入相应字符的ASCIl得到该字符。
77.C\n题中定义了无符号数,c=a>>3;是指右移3位,然后输出。结果为C。
\n
78.CC)【解析】逻辑结构设计的任务:概念结构是各种数据模型的共同基础,为了能够用某一DBMS实现用户需求,还必须将概念结构进一步转化为相应的数据模型,这正是数据库逻辑结构设计所要完成的任务。它包括从E—R图向关系模式转换和逻辑模式规范化及调整、实现。
79.D
80.B#include”文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。
81.(1)错误:t=x;x=y;
正确:t=*x;。x=y;
(2)错误:return(y);
正确:return(t);或returnt;
【解析】该题考查的是指针型变量的使用和如何通过return语句返回函数值。首先应该明确,题目中给出的X是指针型函数,所以数据交换时应使用“*x”而不是“x”;t是一个中间变量,而且由赋值语句“b=fun(8a,b)”可知,返回值将赋给变量b,而b中应存放交换前*X中的值,所以返回的变量应为t。而非y。
82.
【解析】要返回指定成绩的学生数据,首先应该将所有学生的成绩与指定成绩相比较。如果有学生的成绩与指定成绩相等,则将该学生的记录返回给主函数,否则将学号置成空串,成绩置一l返回给主函数。
2021年贵州省六盘水市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________
一、单选题(20题)1.下列函数的功能是()。voidfun(char*a,char*b){while((*b=*a)!=‘\0’){a++;b++;}}
A.将a所指字符串赋给b所指空间
B.使指针b指向a所指字符串
C.将a所指字符串和b所指字符串进行比较
D.检查a和b所指字符串中是否有‘\0’
2.若要判断char型变量c中存放的是否为小写字母,以下正确的表达式是()。A.'a'<=c<='z'
B.(c>='a')&&(c<='z')
C.(c>='a')‖(c<='z')
D.('a'<=c)AND('z'>=c)
3.若串S=,software,其子串的数目是()。
A.8B.37C.36D.9
4.下列叙述中正确的是A.为了建立一个关系,首先要构造数据的逻辑关系
B.表示关系的二维表中各元组的每一个分量还可以分成若干数据项
C.一个关系的属性名表称为关系模式
D.一个关系可以包括多个二维表
5.以下程序的输出结果是()。main{charw[][10]={"ABCD","EFGH","IJKL","MNOP"),K;for(k=1;k<3;k++)printf("%s\n",w[k]);A.ABCDFGHKLB.ABCDEFGUC.EFGJKOD.EFGHUKL
6.链表不具有的特点是()。A.A.不必事先估计存储空间
B.可随机访问任意元素
C.插入、删除不需要移动元素
D.所需空间与线性表长度成正比
7.有以下程序:#include<stdio.h>main(){intx=8;for(;x>0;x--){ if(x%3) { printf(“%”d,x--); continue; }printf(“%d,”,--x);}}程序的运行结果是()。
A.7,4,2,B.8,7,5,2,C.9,7,6,4,D.8,5,4,2,
8.在一个链式队列中,假设f和r分别为队头和队尾指针,则删除结点的运算是()。
A.r=f->nextB.r=r->nextC.f=f->nextD.f=r->next
9.以下说法错误的是A.A.高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式
B.计算机只能处理由0和1的代码构成的二进制指令或数据
C.C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件
D.每一种高级语言都有它对应的编译程序
10.若函数中有定义语句:inta;,则()。
A.系统将自动给a赋初值为0B.系统将自动给a赋初值一lC.这时a中的值无意义D.这时a中无任何值
11.下面程序的输出结果是()。chars()="ABCD",*p;main(){for(p=s;p<s+4;p++)printf("%s\n",p);)
A.ABCDBCDCDDB.ABCDC.DCBAD.ABCDABCABA
12.表达式a+=a-=a=9的值是()。
A.9B.-9C.18D.0
13.在位运算中,操作数左移一位,其结果相当于A.A.操作数乘以2
B.操作数除以2
C.操作数除以4
D.操作数乘以4
14.阅读以下程序:#include<stdio.h>main(){intcase;floatprintF;printf("请输人2个数:");scanf("%d%fl"&case,&printF);printf("%dofof\n",case,printF);}该程序在编译时产生错误,其出错原因是()。A.定义语句出错,case是关键字,不能用做用户自定义标识符
B.定义语句出错,printF不能用做用户自定义标识符
C.定义语句无错,scanf不能作为输入函数使用
D.定义语句无错,printf不能输出case的值
15.有以下程序:#include<stdio.h>structstu{intnum;charname[l0];intage;};voidfun(structstu*p){printf("%s\n",p->name);}main(){structstux[3]={{01,"Zhang",20),{02,"Wang",l9},{03,"Zha0",l8}};fun(x+2);}程序运行后的输出结果是()。A.ZhangB.ZhaoC.WangD.19
16.下列给字符数组初始化中,()是正确的。
A.chars2[3]="xyz";
B.chars1[]="abcd";
C.chars3[][3]={'a','x','y'};
D.chars4[2][3]={"xyz","mnp"};
17.若有定义“doublex,y,*px,*py;”,执行了“px=&x;py=&y;”之后,正确的输入语句是()。
A.scanf(“%lf%le”,px,py);
B.scanf(“%f%f”,&x,&y);
C.scanf(“%f%f”,x,y);
D.scanf(“%lf%lf”,x,y);
18.下列叙述中正确的是()。A.在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化
B.在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化
C.在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化
D.在栈中,栈中元素不会随栈底指针与栈顶指针的变化而动态变化
19.十六进制数BB转换成十进制数是()
A.192B.256C.187D.121
20.以下程序的输出结果是______。#defineM(x,y,z)x*y+zmain(){inta=1,b=2,c=3;printf("%d\n",M(a+b,b+c,c+a));}
A.19B.17C.15D.12
二、2.填空题(20题)21.以下程序中,fun函数的功能足求3行4列二维数组每行尢素中的最大值。请填空。voidfun(int,int,int(*)[4],int*);main(){inta[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;fun(3,4,a,B);for(i=0;j<3;i++)printf("%4d",b[i]);printf("\n");}voidfun(intm,intn,intar[][4],int*br){inti,j,x;for(i=0;i<m;i++){x=ar[i][0];for(j=0;j<n;j++)if(())x=ar[i][j];br[i]=x;}}
22.有以下程序:
main()
{inta=7,b=8,*p,*q,*r;
p=&a;q=&b;
r=p;p=q;q=r;
printf("%d,%d,%d,%d\n",*p,*q,a,b);
}
程序运行后的输出结果是【】。
23.以下程序是求矩阵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]);}
24.当循环队列非空且队尾指针等于队头指针时,说明循环队列已满,不能进行人队运算。这种情况称为【】。
25.下面程序的功能是输出数组s中最大元素的下标,请填空。
main()
{intk,p,s[]={1,-9,7,2,-10,3};
for(p=0,k=p;p<6;p++)
if(s[p]>s[k])【】
printf("%d\n",k);}
26.下面程序的输出是【】。
main()
{enumem{em1=3,em2=1,em3};
char*aa[]={"AA","BB","CC","DD"};
printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);
}
27.若有下列定义(设int类型变量占两个字节),则i=【】,j=【】。
inti=8,j=9;floatx=123.456;
print("i=%oj=%o\n",i,j);
28.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。
29.若a的值为1,则表达式!a‖++a的值是______。
30.下列程序的运行结果是______。
#include<stdio.h>
main()
{intfun();
fun();
}
fun()
{staticinta[4]={1,2,3,4};
inti;
for(i=0;i<4;i++)a[i]+=a[i];
for(i=0;i<4;i++)printf("%d,",a[i]);
printf"\n");
}
31.某二义树中度为2的结点有18个,则该二叉树中有______个叶子结点。
32.下列程序中字符串中各单词之间有一个空格,则程序的输出结果是【】。
#include<string.h>
main()
{charstr1[]="Howdoyoudo",*p1=str1;
strcpy(str1+strlen(str1)/2,"eshe");
printf("%s\n",p1);
}
33.数据流的类型有______和事务型。
34.若有如下程序:
main()
{inta[][2]={1,2,6,9,11},(*t)[2];
t=a;
printf("%d,%d\n",*(t[1]+1),(*t)[1]);
}
则程序运行后输出的结果是【】。
35.下面程序的运行结果是______。
voidswap(int*a,int*B)
{
int*t;
t=a;a=b;b=t;
}
main()
{
intx=3,y=5,*p=&x,*q=&y;
swap(p,q);
printf("%d%d\n",*p,*q);
}
36.若有以下程序:
main()
{int,p,a=5;
if(P=a!=0)
printf("%d\n",p);
else
printf("%d\n",p+2);
}
执行后输出结果是【】。
37.下列程序的运行结果是______。
main()
{inti,a[10];
a[0]=a[1]=1;
for(i=2;i<5;i++)
a[i]=a[i-2]+a[i-1];
for(i=0;i<5;i++)
{if(i%2==0)printf("\n");
printf("%d",a[i]);
}
}
38.以下程序的输出结果是12.00,请将空白处填写完整。
main()
{inta=9,b=2;
floatx=【】,y=1.1,z;
z=a/2+b*x/y+1*2;
printf("%52f\n",z);
}
39.在程序设计阶段应该采取______和逐步求精的方法,把一个模块的功能逐步分解,细化为一系列具体的步骤,继而用某种程序设计语言写成程序。
40.下列程序输出的结果是【】。
fun(intx)
{staticinta=3;
a+=x;
return(a);
}
main()
{intk=2,m=1,n;
n=fun(k);
n=fun(m);
printf("%d\n",n);
}
三、1.选择题(20题)41.已知大写字母A的ASCII码值是65,小写字母a的ASCII码是97,则用八进制表示的字符常量'\101'是A.字符AB.字符aC.字符eD.非法的常量
42.以下叙述中正确的是A.A.C程序中的注释只能出现在程序的开始位置和语句的后面
B.C程序书写格式严格,要求一行内只能写一个语句
C.C程序书写格式自由,一个语句可以写在多行上
D.用C语言编写的程序只能放在一个程序文件中
43.下列数据结构中,能用二分法进行查找的是()。
A.顺序存储的有序线性表B.线性链表C.二叉链表D.有序线性链表
44.下面被调用函数sub的函数值的类型是()sub(floatA){floatb;b=a*a+1;returnb;}
A.单精度型B.双精度型C.空类型D.整型
45.数据库设计包括两个方面的设计内容,它们是()
A.概念设计和逻辑设计B.模式设计和内模式设计C.内模式设计和物理设计D.结构特性设计和行为特性设计
46.下面这个程序段的时间复杂度是()。for(i=1;i<n;i++){y=y+3;for(j=0;j<=(2*n);j++)x++;}
A.O(log2n)
B.O(n)
C.O(nlog2n)
D.O(n2)
47.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是
A.fun("abc",3.0);
B.t=fun('D',16.5);
C.fun('65',2.8);
D.fun(32,32);
48.以下不能正确定义二维数组的选项是A.inta[2][2]={{1},{2}};
B.inta[][2]={1,2,3,4};
C.inta[2][2]={{1},2,3};
D.inta[2][]={{1,2},{3,4}};
49.在C语言中,要求运算数必须是整型的运算符是()
A.%B./C.<D.!
50.下述函数功能是______。intfun(char*x){char*y=x;while(*y++);retumy-x-1;}
A.求字符串的长度B.求字符串存放的位置C.比较两个字符串的大小D.将字符串x连接到字符串y后面
51.数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是()
A.控制流B.加工C.数据存储D.源和潭
52.有下列二叉树,对此二叉树中序遍历的结果为()。
A.ABCDEFB.BDAECFC.ABDCEFD.ABCDFE
53.有以下程序:#include<stdio.h>#defineF(X,Y)(X)*(Y)main(){inta=3,b=4;printf("%d\n",F(a++,b++));}程序运行后的输出结果是()。
A.12B.15C.16D.20
54.以下不构成无限循环的语句或者语句组是()。
A.n=0;
B.n=0;do{++n;}while(n<=0);while(1){n++}
C.n=10;
D.for(n=0,i=1;;i++)n+=i;while(n);{n--;)
55.阅读下面程序,则执行后的结果是#include"stdio.h"main(){charstr[]="tomeetme",*p;for(p=str;p<str+7;p+=2)putchar(*p);printf("\n");}.
A.tomeetmeB.tmemC.oeteD.tome
56.请读程序:#include<stdio.h>#defineSUB(X,Y)(X)*Ymain(){inta=3,b=4;printf("%d\n",SUB(a++,b++));}上面程序的输出结果是()。
A.12B.15C.16D.20
57.
(3)
A.p->nextB.pC.sD.s>next
58.有以下语句,则对a数组元素的引用不正确的是inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;
A.a[p-a]B.*(&a[i])C.p[i]D.*(*(a+i))
59.以下程序段的输出为()staticchara[]="language",b[]="progratne";char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k<7;k++)if(*(ptr1+k)==*(ptr2+k))printf("%c",*(ptr1+k));
A.gaeB.gaC.languageD.有语法错误
60.执行以下程序后,a,b的值分别是()。#include<stdio.h>main(){inta,b,k=4,m=6,*p1=&k,*p2=&m;a=p1==&m;b=(*p1)/(*p2)+7;printf("a=%d\n",a);printf("b=%d\n",b);}
A.-1,5B.1,6C.0,7D.4,10
四、选择题(20题)61.程序调试的目的是
A.发现程序中的错误B.改正程序中的错误C.验证程序的正确性D.改善软件的性能
62.已有定义:charc;,程序前面已在命令行中包含ctype.h文件,不能用于判断c中的字符是否为大写字母的表达式是()。A.A.isupper(c)B.'A'<=c<='Z'
C.'A'<=c&&c<='Z'
D.c<=('z'-32)&&('a'-32)<=c
63.
64.
65.
66.
67.
68.栈和队列的共同点是()。
A.都是先进后出B.都是先进先出C.只允许在端点处插入和删除元素D.没有共同点
69.有以下程序:
程序运行后的输出结果是()。
A..3,2,1,B.1,2,3,4,5,6,C.1,1,1,1,1,lD.6,6,6,6,6,6,
70.(40)将E-R图转换到关系模式时,实体与联系都可以表示成()
A.属性
B.关系
C.键
D.域
71.设有定义:“char*c;”,以下选项中能够使字符型指针c正确指向一个字符串的()。
A.charstr[]="string";c=str;
B.scanf(%s,c):
C.c=getchar();
D.*c="strin9";
72.下列程序的输出结果是()。
char*p1="abcd",*p2="ABCD",str[50]="xyz";
strcpy(str+2,strcat(p1+2,p2+1));
printf("%s",str);
A.xyabcABB.abcABzC.ABabczD.xycdBCD
73.
74.
以下程序执行后sum的值是()。
main
{inti,sum;
for(i=1;i<6;i++)sum+=i:
printf(
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年第八届“人才·南平校园行”活动暨光泽县紧缺急需医疗人才引进考前自测高频考点模拟试题及答案详解(典优)
- 2025湖北咸宁市通城县城市发展建设投资(集团)有限公司招聘模拟试卷完整参考答案详解
- 2025湖北襄阳市枣阳市招聘事业单位人员206人模拟试卷附答案详解(模拟题)
- 2025广东广州市百万英才汇南粤广州中医药大学第三附属医院招聘14人考前自测高频考点模拟试题及答案详解(各地真题)
- 2025北京市海淀区中关村第二小学科学城北区分校招聘考前自测高频考点模拟试题及参考答案详解1套
- 2025江西交科交通工程有限公司招聘1人考前自测高频考点模拟试题及参考答案详解一套
- 2025广西贵港桂平市江口中心卫生院招聘3人模拟试卷及答案详解(新)
- Glutaryl-CoA-Glutarylcoenzyme-A-生命科学试剂-MCE
- 安全培训效果评价报告课件
- 广州资料员培训课件
- (完整)五年级上册生命与安全教案
- 从动态血压监测指南共识看高血压的管理课件
- 02项目一:02我国动车组的主要型号 (1)课件讲解
- 教科版科学四年级上册第一单元《声音》大单元整体教学设计
- 医院培训课件:《中医护理技术质量与安全管理》
- 历史课程中的跨学科教学与学科整合
- 技能培训资料:高压电动机线圈更换注意事项
- 移情训练法移情训练法
- 《大卫 科波菲尔(节选)》《复活》《老人与海》《百年孤独》 统编版高中语文选择性必修上册
- 2019版35kV输变电工程典型设计铁塔型录
- 展厅施工方案表
评论
0/150
提交评论