二级C语言31Word文档下载推荐.docx
《二级C语言31Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《二级C语言31Word文档下载推荐.docx(22页珍藏版)》请在冰豆网上搜索。
解析:
[解析]凡是表达式都有一个值,即运算结果。
k++的表达式值为0,k再进行增1运算;
k+=1是赋值表达式,其作用是取k中的值加1后再放到k变量中,即表达式的值为1;
++k是先进行k增1运算,表达式的值为1;
k+1=0+1,其运算的结果为1。
所以选项A中表达式的值与其他三个表达式不同。
2.以下程序的输出结果是{{U}}{{/U}}
voidfun(float*p1,float*p2,float*s)
{s=(float*)calloc(1,sizeof(float));
*s=*p1+*p2++;
}
main()
{floats[2]={1.1,2.2},b[2]=<10.0,20.0},*s==a;
fun(a,b,s);
printf("
%5.2f/n"
,*s);
}
∙A.11.10
∙B.12.00
∙C.21.10
∙D.1.10
1.00)
A.
D.
3.以下函数返回a所指数组中最小的值所在的下标值fun(int*a,intn){inti,j=0,p;
p=j;
for(i=j;
i<n;
i++)if(a[i]<a[p])______;
return(p);
}在横线处应填入的是A)i=pB)a[p]=a[i]C)p=jD)p=i
[解析]该程序先判断a[i]<a[p],如果条件为真,则a[i]比当前设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p,即将比较过的最小元素下标保留在p中,作为下面判断的标准。
4.下列叙述中正确的是
∙A.线性链表是线性表的链式存储结构
∙B.栈与队列是非线性结构
∙C.双向链表是非线性结构
∙D.只有根结点的二叉树是线性结构
[解析]一个非空的数据结构如果满足下列两个条件:
①有且只有一个根结点;
②每一个结点最多有一个前件,也最多有一个后件,则称为线性结构。
线性链表是线性表的链式存储结构,故选项A的说法是正确的。
栈与队列是特殊的线性表,它们也是线性结构,故选项B的说法是错误的;
双向链表是线性表的链式存储结构,其对应的逻辑结构也是线性结构,而不是非线性结构,故选项C的说法是错误的;
二叉树是非线性结构,而不是线性结构,故选项D的说法是错误的。
5.有以下程序:
point(char*p){P+=3;
)
{charb[4]={'
a'
'
b'
c'
d'
},*p=b;
point(p);
%c/n"
*p);
程序运行后的输出结果是______。
∙A.a
∙B.b
∙C.c
∙D.d
[解析]本题的考点是C语言的函数参数的传递方式(传值)。
函数poret的形参是一个char型指针p,当调用point(p)时,将指针p的值传递给形参,函数point中的p+=3,并不影响主程序main中的p值,因此函数调用结束后,p仍指向b的首地址,输出*p的值应是字符a。
6.下列选项中不属于结构化程序设计方法的是______。
∙A.自顶向下
∙B.逐步求精
∙C.模块化
∙D.可复用
[解析]结构化程序设计方法的主要原则可以概括为:
自顶向下,逐步求精,模块化,限制使用goto语句。
7.下列叙述中正确的是{{U}}{{/U}}。
∙A.数据的逻辑结构与存储结构必定一一对应
∙B.由于计算机存储空间是向量式的存储结构,因此,数据的存储结构一定是线性结构
∙C.程序设计语言小的数组.般是顺序存储结构,因此,利用数组只能处理线性结构
∙D.以上3种说法都不对
[解析]一种数据的逻辑结构根据需要可以表示成多种存储结构,数据的逻辑结构与存储结构不一定一一对应,选项A错误。
计算机的存储空间是向量式的存储结构,但一种数据的逻辑结构根据需要可以表示成多种存储结构,如线性链表是线性表的链式存储结构,数据的存储结构不一定是线性结构,因此选项B错误。
数组一般是顺序存储结构,但利用利用数组也能处理非线性结构。
选项C错误。
由此可知,只有选项D的说法正确。
8.软件工程的理论和技术性研究的内容主要包括软件开发技术和{{U}}{{/U}}。
∙A.消除软件危机
∙B.软件工程管
∙C.程序设计自动化
∙D.实现软件可重用
B.
[解析]软件工程的目标是:
在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。
基于这一目标,软件工程的理论和技术性研究的内容主要包括软件开发技术和软件工程管理。
9.以下选项中不属于C语言的类型的是
∙A.signedshortint
∙B.unsignedlongint
∙C.unslgnedint
∙D.longshort
本题考核的知识点是c语言中的数据类型。
在选项中很明显选项A为无符号短整型,选项B为无符号长整型,选项C为无符号整型,而选项D的类型在C语言中不存在。
所以,4个选项中D为所选。
10.有下列程序:
{intk=5;
while(--k)printf("
%d"
k-=3);
/n"
);
执行后的输出结果是{{U}}{{/U}}。
∙A.1
∙B.2
∙C.4
∙D.死循环
[解析]在程序语句中,k的初始值为5,进行第1次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出1,此时k的值变为1。
程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。
所以程序的最后结果为1。
11.在“文件包含”预处理语句的使用形式中,当#include后面的文件名用””(双撇号)括起时,寻找被包含文件的方式是{{U}}{{/U}}。
∙A.直接按系统设定的标准方式搜索目录
∙B.先在源程序所在的目录搜索,如没找到,再按系统没定的标准方式搜索
∙C.仅仅搜索源程序所在目录
∙D.仅仅搜索当前目录
[解析]#include“文件名”,预处理程序首先在引用被包含文件的源文件所在的目录下搜索指定的文件,如没找到,再按系统指定的标准目录搜索。
12.以下程序的输出结果是______。
{chara[]="
programming"
,b[]="
language"
;
char*p1,*p2;
inti;
p1=a;
p2=b;
for(i=0;
i<7;
i++)
if(*(p1+i)==*(p2+i))printf("
%c"
,*(p1+i));
∙A.gm
∙B.rg
∙C.or
∙D.ga
13.有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向此链表中的3个连续结点。
structnode
{intdata;
structnode*next;
}*p,*q,*r;
现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是
∙A.p->next=q->next;
∙B.p-next=p->next->next;
∙C.p->next=r;
∙D.p=q->enxt;
[解析]本题考查链表结点的删除。
q->next中存放的是r所指结点的首地址,将r所指结点的首地址存于p->next中,则实现删除q所指结点的功能,并保持链表连续,p所指结点与r所指结点相连。
14.下面说明不正确的是{{U}}{{/U}}。
∙A.chara[10]="
china"
∙B.chara[10],*p=a;
p="
chiua"
∙C.char*a;
a="
∙D.chara[10],*p;
p=a="
[解析]C语言中操作一个字符串常量的方法有:
①把字符串常量存放在一个字符数组之中。
②用字符指针指向字符串,然后通过字符指针来访问字符串存储区域。
当字符串常量在表达式中出现时,根据数组的类型转换规则,它被转换成字符指针。
本题选项D)错误的关键是对数组初始化时,可以在变量定义时整体赋初值,但不能在赋值语句中整体赋值。
15.下列程序的输出结果是{{U}}{{/U}}。
#include<stdio.h>
intfun(intx)
{intp;
if(x==0‖x==1)
return3;
else
p=x-fun(x-2);
returnp;
voidmain()
{printf("
/n%d"
fun(5));
∙A.5
∙B.3
∙C.7
∙D.1
[解析]本题考查函数的递归调用。
在函数递归调用时,fun(5):
a=5-fun(3)->fun3:
a=3-fun
(1)->fun
(1):
a=3,反推回去fun(3):
a=3-3=0->fun(5):
a=5-0=5,最后的计算结果为5。
16.以下程序段的输出结果是
chars[]="
//141/141abc/t"
;
printf("
%d/n"
strlen(s));
∙A.9
∙B.12
∙C.13
∙D.14
[解析]本题考核的知识点是字符串的长度。
字符数组中可以存放字符串,但字符数组的长度并不是字符串的长度,字符串的长度是指字符数组中存放的有效字符个数,即,'
/0'
之前的字符数。
字符数组s中依次存放的字符是:
'
/"
1"
4"
141"
a"
b"
c"
/t'
和最后一个字符串结束标记'
,故字符串的长度是9。
所以,4个选项中A为所选。
17.有三个关系R、S和T如下:
由关系R和S通过运算得到关系T,则所使用的运算为______。