c选择题解答.docx
- 文档编号:15152231
- 上传时间:2023-07-01
- 格式:DOCX
- 页数:126
- 大小:150.86KB
c选择题解答.docx
《c选择题解答.docx》由会员分享,可在线阅读,更多相关《c选择题解答.docx(126页珍藏版)》请在冰点文库上搜索。
c选择题解答
目录
选择题1(081)-1-
选择题2(082)-14-
选择题3(091)-27-
选择题4(092)-39-
选择题5(101)-50-
选择题6(102)-64-
选择题7(111)-76-
选择题8(112)-89-
选择题1(081)
(1)程序流程图中有箭头的线段表示的是
A)图元关系B)数据流C)控制流D)调用关系
答案:
C
分析:
在程序流程图中常用的图形符号如图所示:
(2)结构化程序设计的基本原则不包括
A)多态性B)自顶向下C)模块化D)逐步求精
答案:
A
分析:
结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用GOTO语句。
(3)软件设计中模块划分应遵循的准则是
A)低内聚低耦合B)高内聚低耦合C)低内聚高耦合D)高内聚高耦合
答案:
B
分析:
一般来说,软件设计时应尽量做到高内聚,低藕合,即减弱模块之间的藕合性和提高模块内的内聚性,从而提高模块的独立性。
(4)在软件开发中,需求分析阶段产生的主要文档是
A)可行性分析报告B)软件需求规格说明书
C)概要设计说明书D)集成测试计划
答案:
B
软件需求规格说明书是需求分析阶段的最后成果,是软件开发中的重要文档之一。
(5)算法的有穷性是指
A)算法程序的运行时间是有限的B)算法程序所处理的数据量是有限的
C)算法程序的长度是有限的D)算法只能被有限的用户使用
答案:
A
分析:
算法的有穷性是指一个算法应包含有限的操作步骤而不能是无限的。
算法的有穷性还应该包括合理的执行时间的含义。
因为,如果一个算法需要执行一百年,显然失去了实用价值。
(6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是
A)快速排序B)冒泡排序C)直接插入排序D)堆排序
答案:
D
分析:
各种排序在最坏情况下的比较次数:
冒泡排序法:
n(n-1)/2
快速排序法:
n(n-1)/2
简单插入排序法:
n(n-1)/2
希尔排序法:
O(n1.5)
简单选择排序法:
n(n-1)/2
堆排序法:
O(nlog2n)
(7)下列关于栈的叙述正确的是
A)栈按“先进先出”组织数据B)栈按“先进后出”组织数据
C)只能在栈底插入数据D)不能删除数据
答案:
B
分析:
栈是一种特殊的线性表,它是限定仅在一端进行插入和删除运算的线性表。
(8)在数据库设计中,将E-R图转换成关系数据模型的过程属于
A)需求分析阶段B)概念设计阶段C)逻辑设计阶段D)物理设计阶段
答案:
C
分析:
数据库的逻辑设计主要工作是将E-R图转换成指定RDBMS中的关系模式。
(9)有三个关系R、S和T如下:
R:
B
C
D
a
0
k1
b
1
n1
S:
B
C
D
f
3
h2
a
0
k1
n
2
x1
T:
B
C
D
a
0
k1
有关系R和S通过运算得到关系T,则所使用的运算为
A)并B)自然连接C)笛卡尔积D)交
答案:
D
答案:
关系R与S经交运算后所得到的关系是由那些既在R内又在S内的有序组所组成,记为R∩S。
(10)设有表示学生选课的三张表,学生S(学号,姓名,性别,年龄,身份证号),课程C(课号,课名),选课SC(学号,课号,成绩),则表SC的关键字(键或码)为
A)课号,成绩B)学号,成绩
C)学号,课号D)学号,姓名,成绩
答案:
C
分析:
关系模型中的一个重要概念是键(Key)或码。
键具有标识元组、建立元组间联系等重要作用。
在二维表中凡能惟一标识元组的最小属性集称为该表的键或码。
(11)以下叙述中正确的是
A)C程序中的注释只能出现在程序的开始位置和语句的后面
B)C程序书写格式严格,要求一行内只能写一个语句
C)C程序书写格式自由,一个语句可以写在多行上
D)用C语言编写的程序只能放在一个程序文件中
答案:
C
(12)以下选项中不合法的标识符是
A)printB)FORC)&aD)_00
答案:
C
分析:
C语言规定,合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线。
(13)以下选项中不属于字符常量的是
A)'C'B)"C"C)'\xCC0'D)'\072'
答案:
B
分析:
字符常量是指用一对单引号括起来的一个字符,包括转义字符。
转义字符形式上有多个字符或数字组成,但它表示的是一个字符常量。
(14)设变量已正确定义并赋值,以下正确的表达式是
A)x=y*5=x+zB)int(15.8%5)C)x=y+z+5,++yD)x=25%5.0
答案:
C
分析:
赋值号=左端只能是变量,不能是表达式,选项A错;
强制类型转换符是(类型),选项B错,应为(int)15.8%5;
选项C对,是逗号表达式;
求余运算符%两端必须为整型,选项D错。
(15)以下定义语句中正确的是
A)inta=b=0;B)charA=65+1,b='b';
C)floata=1,*b=&a,*c=&b;D)doublea=0.0;b=1.1;
答案:
B
分析:
选项A错:
作为赋值语句可以写作a=b=0;,
作为定义语句只能不能写作inta=b=0;,可写作inta=0,b=0;
选项C错,由于变量b是指针变量,其地址不能赋给同类型的变量c。
选项D错,变量间用逗号分开,不能用分号分开。
(16)有以下程序段
charch;intk;
ch='a';k=12;
printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);
已知字符a的ASCll十进制代码为97,则执行上述程序段后输出结果是
A)因变量类型与格式描述符的类型不匹配输出无定值
B)输出项与格式描述符个数不符,输出为零值或不定值
C)a,97,12k=12
D)a,97,k=12
答案:
D
(17)已知字母A的ASCⅡ代码值为65,若变量kk为char型,以下不能正确判断出kk中的值为大写字母的表达式是
A)kk>='A'&&kk<='Z'B)!
(kk>='A'‖kk<='Z')
C)(kk+32)>='a'&&(kk+32)<='z'D)isalpha(kk)&&(kk<91)
答案:
B
分析:
由于小写字母的SACII码比对应的大写字母的ASCII大32,所以选项C正确;
函数isalpha(kk)判断kk是否为字母,而(kk<91)保证kk是大写字母,所以选项D正确。
(18)当变量c的值不为2、4、6时,值也为“真”的表达式是
A)(c==2)‖(c==4)‖(c==6)B)(c>=2&&c<=6)‖(c!
=3)‖(c!
=5)
C)(c>=2&&c<=6)&&!
(c%2)D)(c>=2&&c<=6)&&(c%2!
=1)
答案:
B
分析:
选项A,C,D都表示:
当c的值为2,4,6之一时为真,其他为假;选项B表示:
当c取任何值时都为真。
(19)若变量已正确定义,有以下程序段
inta=3,b=5,c=7;
if(a>b)a=b;c=a;
if(c!
=a)c=b;
printf("%d,%d,%d\n",a,b,c);
其输出结果是
A)程序段有语法错B)3,5,3C)3,5,5D)3,5,7
答案:
B
分析:
注意第二行是两个语句:
if(a>b)a=b;
c=a;
(20)有以下程序
#include
main()
{intx=1,y=0,a=0,b=0;
switch(x)
{case1:
switch(y)
{case0:
a++;break;
case1:
b++;break;
}
case2:
a++;b++;break;
case3:
a++;b++;
}
printf(“a=%d,b=%d\n”,a,b);
}
程序的运行结果是
A)a=1,b=0B)a=2,b=2C)a=1,b=1D)a=2,b=1
答案:
D
(21)有以下程序
#include
main()
{intx=8;
for(;x>0;x--)
{if(x%3){printf(“%d,”,x--);continue;}
printf(“%d,”,--x);
}
}
程序的运行结果是
A)7,4,2B)8,7,5,2C)9,7,6,4D)8,5,4,2
答案:
D
(22)以下不构成无限循环的语句或者语句组是
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--;}
答案:
A
分析:
选项C中while的循环体为空语句;选项D中的for的循环条件省略,表示真。
(23)有以下程序
#include
main()
{inta[]={1,2,3,4},y,*p=&a[3];
--p;y=*p;printf(“y=%d\n”,y);
}
程序的运行结果是
A)y=0B)y=1C)y=2D)y=3
答案:
D
(24)以下错误的定义语句是
A)intx[][3]={{0},{1},{1,2,3}};
B)intx[4][3]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
C)intx[4][]={{1,2,3},{1,2,3},{1,2,3},{1,2,3}};
D)intx[][3]={1,2,3,4};
答案:
C
分析:
定义二维数组时,如果对全部元素都赋初值,则第一维的长度可不指定,但第二维长度不能省略。
(25)设有如下程序段
chars[20]=“Bejing”,*p;
p=s;
则执行p=s;语句后,以下叙述正确的是
A)可以用*p表示s[0]
B)s数组中元素的个数和p所指字符串长度相等
C)s和p都是指针变量
D)数组s中的内容和指针变量p中的内容相等
答案:
A
(26)若有定义:
inta[2][3];,以下选项中对a数组元素正确引用的是
A)a[2][!
1]B)a[2][3]C)a[0][3]D)a[1>2][!
1]
答案:
D
分析:
a[1>2][!
1]即a[0][0]
(27)有定义语句:
chars[10];,若要从终端给s输入5个字符,错误的输入语句是
A)gets(&s[0]);B)scanf(“%s”,s+1);C)gets(s);D)scanf(“%s”,s[1]);
答案:
D
(28)以下叙述中错误的是
A)在程序中凡是以“#”开始的语句行都是预处理命令行
B)预处理命令行的最后不能以分号表示结束
C)#defineMAX是合法的宏定义命令行
D)C程序对预处理命令行的处理是在程序执行的过程中进行的
答案:
D
分析:
无参数宏定义格式为
#define宏名字符串
其中字符串可以是空的。
(29)以下结构体类型说明和变量定义中正确的是
A)typedefstructB)structREC;
{intn;charc;}REC;{intn;charc;};
RECt1,t2;RECt1,t2;
C)typedefstructREC;D)struct
{intn=0;charc=’A’;}t1,t2;{intn;charc;}RECt1,t2;
答案:
A
(30)以下叙述中错误的是
A)gets函数用于从终端读入字符串
B)getchar函数用于从磁盘文件读入字符
C)fputs函数用于把字符串输出到文件
D)fwrite函数用于以二进制形式输出数据到文件
答案:
B
分析:
getchar函数用于从终端读入字符。
(31)有以下程序
#include
main()
{ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;
for(i=0;i<12;i++)c[s[i]]++;
for(i=1;i<5;i++)printf("%d",c[i]);
printf("\n");
}
程序的运行结果是
A)1234B)2344C)4332D)1123
答案:
C
分析:
第一个for循环的功能是使c[1]的值为数组s中1的个数,c[2]的值为数组s中2的个数,依次类推。
(32)有以下程序
#include
voidfun(int*s,intnl,intn2)
{inti,j,t;
i=nl;j=n2;
while(i } main() {inta[10]={1,2,3,4,5,6,7,8,9,0},k; fun(a,0,3);fun(a,4,9);fun(a,0,9); for(k=0;k<10;k++)printf("%d",a[k]);printf("\n"); } 程序运行的结果是 A)0987654321B)4321098765C)5678901234D)0987651234 答案: C 分析: 函数fun的功能是将数组中的元素值逆序存放,如 执行fun(a,0,3);后,数组a的元素为{4,3,2,1,5,6,7,8,9,0}。 执行fun(a,4,9);后,数组a的元素为{4,3,2,1,0,9,8,7,6,5}。 执行fun(a,0,9);后,数组a的元素为{5,6,7,8,9,0,1,2,3,4}。 (33)有以下程序 #include #include voidfun(char*s[],intn) {char*t;inti,j; for(i=0;i for(j=i+1;j if(strlen(s[i])>strlen(s[j])){t=s[i];s[i]=s[j];s[j]=t;} } main() {char*ss[]={"bcc","bbcc","xy","aaaacc","aabcc"}; fun(ss,5);printf("%s,%s\n",ss[0],ss[4]); } 程序的运行结果是 A)xy,aaaaccB)aaaacc,xyC)bcc,aabccD)aabcc,bcc 答案: A 分析: 函数fun的功能是按字符串的长度升序排序。 (34)有以下程序 #include intf(intx) {inty; if(x==0||x==1)return(3); y=x*x-f(x-2); returny; } main() {intz; z=f(3);printf("%d\n",z); } 程序的运行结果是 A)0B)9C)6D)8 答案: C 分析: 递归函数的执行过程如下: (35)有以下程序 #include voidfun(char*a,char*b) {while(*a==’*’)a++; while(*b=*a){b++;a++;} } main() {char*s=”****a*b****”,t[80]; fun(s,t);puts(t); } 程序的运行结果是 A)*****a*bB)a*bC)a*b****D)ab 答案: C 分析: fun(s,t)的功能是将s中第一个非*号的字符开始的字符串赋给t。 (36)有以程序 #include #include typedefstruct{charname[9];charsex;floatscore[2];}STU; voidf(STUa) {STUb={“Zhao”,’m’,85.0,90.0};inti; strcpy(a.name,b.name); a.sex=b.sex; for(i=0;i<2;i++)a.score[i]=b.score[i]; } main() {STUc={“Qian”,’p’,95.0,92.0}; f(c);printf(“%s,%c,%2.0f,%2.0f\n”,c.name,c.sex,c.score[0],c.score[1]); } 程序的运行结果是 A)Qian,f,95,92B)Qian,m,85,90 C)Zhao,f,95,92D)Zhao,m,85,90 答案: A 分析: 函数f的参数是数值,不是指针,不能改变主调函数中的变量的值。 (37)有以下程序 #include main() {FILE*fp;inta[10]={1,2,3},i,n; fp=fopen(“dl.dat”,”w”); for(i=0;i<3;i++)fprintf(fp,”%d”,a[i]); fprintf(fp,”\n”); fclose(fp); fp=fopen(“dl.dat”,”r”); fscanf(fp,”%d”,&n); fclose(fp); printf(“%d\n”,n); } 程序的运行结果是 A)12300B)123C)1D)321 答案: B 分析: 往文件写数据时用的格式说明符”%d”没有其他字符,所以三个整数写到一起,最后以换行符’\n’结束,所以读取数据时,作为一个数据读出。 (38)变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制表示的形式是11110000。 若要求将a的高4位取反,低4位不变,所要执行的运算是 A)a^bB)a|bC)a&bD)a<<4 答案: A 分析: 选项A计算如下 0 1 0 1 1 1 0 1 ^ 1 1 1 1 0 0 0 0 1 0 1 0 1 1 0 1 (39)在C语言中,只有在使用时才占用内存单元的变量,其存储类型是 A)auto和registerB)extern和registerC)auto和staticD)static和register 答案: A (40)设有定义语句int(*f)(int);,则以下叙述正确的是 A)f是基类型为int的指针变量 B)f是指向函数的指针变量,该函数具有一个int类型的形参 C)f是指向int类型一维数组的指针变量 D)f是函数名,该函数的返回值是基类型为int类型的地址 答案: B 选择题2(082) (1)一个栈的初始状态为空。 现将元素1、2、3、4、5、A、B、C、D、E依次入栈,然后再依次出栈,则元素出栈的顺序是 A)12345ABCDEB)EDCBA54321 C)ABCDE12345D)54321EDCBA 答案: B 分析: 栈是先进后出的线性表。 (2)下列叙述中正确的是 A)循环队列有队头和队尾两个指针,因此,循环队列是非线性结构 B)在循环队列中,只需要队头指针就能反应队列中元素的动态变化情况 C)在循环队列中,只需要队尾指针就能反应队列中元素的动态变化情况 D)循环队列中元素的个数是由队头和队尾指针共同决定 答案: D 分析: 在循环队列中,从队头指针front指向的位置直到队尾指针rear指向的前一个位置之间所有的元素均为队列中的元素。 (3)在长度为n的有序线性表中进行二分查找,最坏情况下需要比较的次数是 A)O(N)B)O(n2)C)O(log2n)D)O(nlog2n) 答案: C 分析: 可以证明,对于长度为n的有序线性表,在最坏情况下,二分查找只需要比较log2n次,顺序查找需要比较n次。 O(log2n)表示与log2n是同一个数量级,只相差一个常数系数。 (4)下列叙述中正确的是 A)顺序存储结构的存储一定是连续的,链式存储结构的存储空间不一定是连续的 B)顺序存储结构只针对线性结构,链式存储结构只针对非线性结构 C)顺序存储结构能存储有序表,链式存储结构不能存储有序表 D)链式存储结构比顺序存储结构节省存储空间 答案: A (5)数据流图中带有箭头的线段表示的是 A)控制流B)事件驱动C)模块调用D)数据流 答案: D 分析: 数据流图(DataFlowDiagram,DFD)是描述数据处理过程的工具,是从数据传递和加工的角度,以图形的方式描绘数据在系统中流动和处理的过程。 数据流图的基本图形元素有4种: ①圆形: 加工。 输入数据经加工变换产生输出。 ②矩形: 表示数据的源点或终点。 是系统和环境的接口,属系统之外的实体。 ③箭头: 数据流。 沿箭头方向传送数据的通道。 ④双杠: 表示存储文件(数据源)。 即处理过程中存放各种数据文件。 (6)在软件开发中,需求分析阶段可以使用的工具是 A)N-S图B)DFD图C)PAD图D)程序流程图 答案: B 分析: 需求分析阶段可以使用的工具有数据流图(DataFlowDiagram,DFD)、数据字典、判定表和判定树等。 (7)在面向对象方法中,不属于“对象”基本特点的是 A)一致性B)分类性C)多态性D)标识唯一性 答案: A 分析: 对象有如下一些基本特点。 标识惟一性: 指对象是可区分的,并且由对象的内在本质来区分,而不是通过描述来区分。 分类性: 指可以将具有相同属性和操作的对象抽象成类。 多态性: 指同一个操作可以是不同对象的行为。 封装性: 指将一组数据和与之相关的操作放在一起,形成能动的实体——对象。 (8)一间宿舍可住多个学生,则实体宿舍和学生之间的联系是 A)一对一B)一对多C)多对一D)多对多 答案: B (9)在数据管理技术发展的三个阶段中,数据共享最好的是 A)人工管理阶段B)文件系统阶段 C)数据库系统阶段D)三个阶段相同 答案: C (10)有三个关系R、S和T如下: R A B m 1 n 2 S B C 1 3 3 5 T A B C m 1 3 由关系R和S通过运算得到关系T,则所使用的运算为 A)笛卡尔积B)交C)并D)自然连接 答案: D 分析: 自然连接满足下面的条件: ①两关系间有公共域; ②通过公共域的相等值进行连接。 (11)以下叙述中正确的是 A)C程序的基本组成单位是语句B)C程序中每一行只能写一条语句 C)简单C语句必须以分号结束D)C语句必须在一行内写完 答案: C (12)计算机能直接执行的程序是 A)源程序B)目标程序C)汇编程序D)可执行程序 答案: D
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 选择题 解答