《2023年全国计算机二级C语言知识点.docx》由会员分享,可在线阅读,更多相关《2023年全国计算机二级C语言知识点.docx(23页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、数组下标的下限是0。全国计算机二级C语言公共基础知识一、数据结构与算法1、完全二叉树是属于非线性结构,但其最佳存储方式是顺序存储方式2、顺序存储结构中也许根节点不唯一,故也许不是线性结构3、算法的有穷性是指,算法中的操作环节为有限个,且每个环节都能在 有限时间内完毕4、法复杂度涉及算法的时间复杂度和算法的空间复杂度。算法设计必 须考虑执行算法所需要的资源,即时间与空间复杂度5、算法的优劣取决于算法复杂度,与程序的环境无关,当算法被编程实 现之后,程序的运营受到计算机系统运营环境的限制6、循环队列中,由于指针超过队列地址最大值时会移动到队列最小地 址处,所以队头指针可以大于也可以小于队尾指针7、
2、 链式存储结构中每个结点都由数据域与指针域两部分组成,增长了存储空间8、循环队列是队列的一种顺序存储结构,用队尾指针rear指向队列中 的队尾元素,用排头指针front指向排头元素的前一个位置9、设循环队列为Q( 1 : m),其初始状态为f r o n t= r ea r =mo通过一系列入队与退队运算后,fro n t= X, r e ar= Yo现要在该算法的复杂程序不是由操作环节多少决定的,而是准时间复杂度与空间复杂度来衡量C编译程序把文献后缀为.c的源程序文献编译成文献后缀为.obj 的二进制文献,链接将一个或多个目的文献与程序用到的库文献连 接起来,形成一个可以在操作系统直接运营的
3、执行程序.exe4、 一个算法应当具有以下五个重要的特性:有穷性,拟定性,输 入,输出以及可行性只有同时包含三种基本结构时,程序才是结构化程序。一个结构化程序可以包含顺序、分支、循环结构中的一种或多种stdio. h文献中包含标准输入输出函数的函数说明,预解决指令 ttinclud e 是使程序可以去该文献中找到printf, s can f 等函数以便使用5、 计算机能直接执行的程序是二进制的可执行程序,扩展名为.exe 10、算法的特性:有穷性。一个算法(对任何合法的输入)在执行有穷 步后可以结束,并且在有限的时间内完毕。拟定性。算法中的每一步都 有确切的含义。可行性。算法中的操作可以用已
4、经实现的基本运算执 行有限次来实现。输入:一个算法有零个或者多个输入,零个输入就 是算法自身拟定了初始条件。输出:一个算法有一个或者多个输出,以 反映出数据加工的结果11、算法的描述有伪代码、流程图、N-S结构图等cE-R是实体联系模 型12、C语言中的非执行语句不会被编译,不会生成二进制的机器指令。C 程序通过编译、连接环节之后才干形成一个真正可执行的二进制机器 指令文献。 用C语言编写的程序称为,它以ASCI I代码形式存放在一 个文本文献中。C语言源程序经编译后生成后缀为.obj的目的程序。13、C语言的数值常量中不能夹带空格。在C语言中运算符两侧的运 算数据类型可以不一致,且结果与精度
5、较高的保持一致,14、C语言程序是由函数组成的。可以单独进行编译。每个C程序中必 须包含一个m a in函数,但不一定是每个C程序文献中必须有,用户单独 编写的某个函数也可以存储为一个C程序文献15、一个普通的C函数可以单独作为一个C的程序文献存在被包含到其 他程序中16、在复合语句中,不仅可以有执行语句,还可以有定义语句,定义语 句应当出现在执行语句的前面17、C语言中的某些语句可以不用分号,例如if语句18、关键字不可用做用户标记符19、C语言的标记符分为3类:关键字、预定义标记符和用户标记符。常量不属于标记符20、一条C语句相应转换成一条机器指令二、运算符与表达式1、s izeof是C语
6、言中的一个操作符(operator)。其作用就是返回一个对象或者类型所占的内存字节数2、条件表达式:x =表达式1?表达式2:表达式3的含义是:先求解表 达式1,若为非0 (真),则求解表达式2,将表达式2的值赋给X。若表达 式1的值为0 (假),则求解表达式3,将表达式3的值赋给x3、C语言中没有V运算符a脏b表达a=a% (b)c语言中人的意思是按位异或4、c语言中”人的意思是按位异或,运算符号按位或 I ,把两个数 化为二进制,异为1,同为0,如1 0的二进制为000010103 的二进制为0 0 00001 11 0 *3=99的二进制为0 0 001 0 01&按位与运算,同为1,异
7、为05、在VC6.0平台中,整型int占有4个字节,d o u b 1 e型数据占有8个 字节。6、算术运算符+的优先级高于-二7、十进制二进制:十进制除以2,记录余数直到除尽到0,其二进制为这些余数倒着排列。10/2=5余0, 5/2=2余1,2/2=1余0,1/2=0余1,则10的二进制为10二,由于二进制有8个字节,则1 0的二 进制为0000101 0 o8、二进制十进制:例:00001 0 0 11*274-1)+0*273-1 )+0*2*(2- 1 )+1*2-(1-1)=90 00 0 11111*2X4- 1 )+1*273-1) +1*22-1)+1*2-(1-1 ) =1
8、59、e xpl & exp 2 ,规则为:对expl求值,若为0,则表达式为0, 且不计算ex p2;若expl非0,则求e x p2值,作为表达式值10、右移运算符,按位右移运算规则是将一个操作数先转换成二 进制数,然后将二进制数各位右移若干位,移出的低位舍弃;并在高 位补位,若为无符号数,右移时左边高位移入0。例:a=8=01000,执行 a2后,a=0 0 01 0 =211、在C语言中,乘除法优先级要高于加减法,另一方面,除法运算符/两边参与运算对象都是整数,运算结果要取整12、逗号表达式的值为其中最后一个表达式的值13、i+,先使用后自增自增和自减运算符的两种用法:前置运算,运算符
9、放在变量之前,规则是先使变量的值增(或减)1 ,然后以变 化后表达式的值参与其他运算:后置运算,运算符放在变量之后,规则 是变量先参与其他运算,然后再使变量的值增(或减)1例:s um = p ad = 5; pA d = s u m+ + , p A d+, + p A d ;得:当(*$次)=o时,结束循环,返回字符o的ASCH码o s um=5, pad=5;pAd=5, sum=6, pAd= 6 , p Ad = 714、计算5/2,结果取整数值2。 ”运算符的两个操作值必须为整型 数据15、在C语言中,逻辑真值相应非0。,分支结构的流程走向是根据表 达式的值,并不仅仅是算数表达式的
10、值16、rand ()产生随机整数三,基本语句1、复合语句可以包含多条语句,在其中可以定义局部变量2、花括号对不仅用来表达函数的开头和结尾,也可以用于表达复合 语句3、C语言中的语句必须以分号“;“结束,所以空语句表达为不是 空行4、定义语句应当出现在执行语句的前面,在pr i n t f和scan f函数 中都可以指定数据的宽度,scan f ()的格式控制串可以使用其他非 空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配,。复合 语句可以由任意多条语句构成,可以使一条也可以没有5、当(*s tr)=0时,结束循环,返回字符0的ASCII码06、wh i le循环语句一般形式为:wh
11、ile (表达式)循环体,执行过 程为,一方面判断表达式,成立(非0)则执行循环体,不成立(0)则退 出循环7、gets函数,ge tchar是用于从终端读入字符。fputs函数用于把 字符串输出到文献。fwri t e函数用于以二进制形式输出数据到文献 8、sc anf ()语句中用空格”间隔不同的字符串。g e tcha r ()函 数从终端读入一个字符作为函数值,把读入的字符赋给变量c ho在 输入时,空格、回车符都将作为字符读入,并且只有在用户敲入回车键 时,读入才开始执行。ge t s。函数的调用形式为:gets(str_adr),其中st r _adr是存放输入字符串的起始地址,可
12、以是字 符数组名、字符数组元素的地址或字符指针变量。gets函数用来从终 端键盘读入字符串(涉及空格符),直到读入一个换行符为止。getcO 函数的调用形式为:ch=g e tc( p f)其中p f是文献指针,函数的功能是 从pf指定的文献中读入一个字符,并把它作为函数值返回9、scanf函数中的格式控制字符串是为了输入数据用的,无论其中有 什么字符,也不会输出到屏幕上。scanf。的格式控制串可以使用其他 非空白字符,如逗号,但在输入时必须输入这些字符,以保证匹配就可 以。Print f函数可以输出常量也可以输出变量,Pr i nf函数可以 用“ %来输出百分号%10、数组第一个数为0 由
13、printf输出的数据都隐含右对齐。Printf 输出数据所占的宽度由系统决定11、条件运算符组成条件表达式的一般形式为:表达式1? 表达 式2:表达式3其求值规则为:假如表达式1的值为真,则以表达式2的值作为条件 表达式的值,否则以表达式2的值作为整个条件表达式的值四、选择结构1、在C语言中,逻辑真值相应非0。2、逻辑非(即运算符!)的运算级别是最高的;算术运算符优先级较 高,关系和逻辑运算符优先级较低。3、for语句的一般形式为:。r(表达式1;表达式2;表达式3 )语句其循环中的表达式1 (循环变量赋初值)、”表达式2 (循环条件) 和表达式3(循环变量增量)都是选择项,即可以缺省,但“
14、;“不能 缺省。该题目中省略了表达式1 (循环变量赋初值)和”表达式3 (循环变量增量)。4、&只有运算对象均非零结果才为真。逻辑与只有在&符号两边 操作均为真时,逻辑与为真。|只要有一个对象非零结果就是真。逻辑 或当且只当 I |符号两边操作至少有一个为真时,逻辑或结果为真 5、a!=b表达a不等于b时,运算结果为1 ,或者为06、逻辑与运算符遵循“短路求值”策略,即只有在仅靠左操作数的值无 法拟定该逻辑表达式的结果时,才会求解右操作数例:若有定义:inta = O, b = 0, c =0, d= 0 ;,有C语言表达式 (a+ & b+) ? c+ : d + + ,以下关于其执行顺序的
15、叙述对的是先执行a +,表达式a +的值为0,由此即可拟定(a +&b+)的值为0, 因此执行d +7、if语句中表达式为1直接执行。为0执行e Ise五、循环结构1、条件表达式的执行次数总是比循环体的执行次数多一次2、设有以下代码while (条件表达式1)循环体A; whil e (条件表达式2);w h ile (条件表达式1)(d o ( whil e (条件表达式2);)假设表达式1与表达式2成立次数为nl与n 2。若nln2,则循环体A 执行次数为n2+l, B执行次数n2 + l;若n 2,则循环体A执行次数 为nl, B执行次数nl3、while循环语句一般形式为:whil e
16、(表达式)循环体,执行过 程为:一方面判断表达式,成立(非0)则执行循环体,不成立(0)则 退出循环。dowhil e循环语句一般形式为:d。循环体 w h ile(表达式),执行过程为:一方面执行循环体,之后判断表达式,成 立(非0)则再一次执行循环体,不成立(0)则退出循环。4在条件相同的情况下,do- whi 1 e循环比whil ed o多执行一次 函数体 两种循环都是在表达式为0时结束循环。do-while循环由 表达式真假判断是否退出循环,也可以用b r eak语句退出循环5、,whi 1 e语句的语义是:计算表达式的值,当值为真(非0)时,执行循环体语句. i n t k= 0
17、;whil e ( k=l ) k+;wh i le( k =1) = whil e (1),是死循环, 执行无限次。6、只要适本地修改代码,就可以将do-while与w h i 1 e互相转换。for语句使用最为灵活,它完全可以取代wh i 1 e语句;7、s k - 0为是s 口数组的k所相应的字符串长度。8、在C语言中档于号用二二”表达,一个“二“表达赋值六、数组1、*与&放在一起作用抵消,*(pt+i )表达引用指针pt所指元素后的第i个元素2 # inclu d e main() in t c6=10,20,30, 4 0,5 0, 60 , *p,*s;p = c; s = & c
18、 5;p r intf(%dn, s-p );语句P = c ;指将c 0 元素的地址赋给指针变量p;语句s = &c 5 ;指将c 5元素的地址赋给 指针变量s3、 # inclu d e mai n () in t a5 =2,4,6 , 8,10,*p,*k;p = a; k = &p;prin t f (%d , * ( p+ );pr i n t f(%d n, *k );一方面通过P=a使p指向数组的第1个元素,所以输出2;在输出2以后,由于p+ + ,即p就指向数 组的第2个元素,*1就是取出p所指向元素的值,而p指向的是数组的第2个元素,即输出4 4、通过一条语句可以定义多个数
19、组;数组说明符的一对方括号中可以是整型常量,可以是整型 常量表达式;在引用数组元素时,卜.标表达式必须是整型的。数组下标的卜.限是0c5. chara 2 = ” A, ;不合法,应为 c h a r a 2 = A JB ;;用字符串方式赋值比用字符逐个赋值要多占1个字节6、数组下标的下限是0。7、数组名后面括号的值必须是整形常量,不可以是变量8、static内部静态变量是始终存在的,当函数被调用退出后,内部静态变量会保存数据,再次调用该函数时,以前调用时的数值仍然保存着9、vo i d fu n (i nt int n ) /* fun函数的功能是将a所指数组元素从大到小排序 */ fun
20、(c+4, 6);叩指排序从第5个元素开始进行从大到小排序。10、 数组说明的一般形式为:类型说明符数组名常量表达式。11、 指针的赋值一方面基类型必须一致,s二维数组名,是二维数组的首地址,其基类型是一个具有10个元素的字符数组。P是一个字符指针变量,其基类型是一个字符,k是一个行指 针,其基类型是具有3个元素的字符型数组。七、函数1、C程序中主函数不能被其他函数调用, main函数可以放在程序开始也可以放在中间,也可以放 在最后,位置不固定,但程序执行时必须从ma i n函数开始,在C程序的函数中不能定义另一个函 数,可以声明或调用另一个函数.每个C程序中必须包含一个main函数,但不定是
21、每个C程序文 献中必须有,用户单独编写的某个函数也可以存储为一个C程序文献2、数学库中定义了函数的名称、参数个数与类型、返回值类型与具体的函数体。编译预解决 时,预解决程序将杳找指定的被包含文献,并将其复制到include命令出现的位置上,不 引用math. h文献,文献编译时,编译器无法辨认没有被定义的sin函数。若要使用C数学库中的sin函数,需要在源程序的头部加上才 i nclude 循环队列中寻找最大值的元素,最坏情况下需要比较的次数为(1)若XY,则次数为m (Y-X)T(2)若XVY,则次数为丫一 XT1 0、循环队列中的元素个数与队头指针和队尾指针的变化而变化11、队列的修改是依
22、先进先出的原则进行的12、设计算法时不仅要考虑对数据对象的运算和操作,还要考虑算法的 控制结构13、顺序表具有以下两个基本特性:(1 )线性表中所有元素所占的存储 空间是连续的;(2)线性表中各数据元素在存储空间中是按逻辑顺序依 次存放的。(3)在顺序表中,每个元素占有相同的存储单元14、设栈的顺序存储空间为S (0: 49),栈底指针bottom=X,栈顶指针 t o p=Y (指向栈顶元素)。则栈中的元素个数为X-Y+115、设栈的顺序存储空间为S(1 : m),初始状态为t op=m+1 (X)。现通过一系列入栈与退栈运算后,top = 20(Y),则当前栈中的元素个数为m+l-20=m
23、-19 (X-Y)16、设栈的顺序存储空间为S(l: 50),初始状态为top=0。现通过一 系列入栈与退栈运算后,t o p=2 0 (X),则当前栈中的元素个数为 20 (X)二、程序设计基础1、结构化程序设计的思想涉及:自顶向下、逐步求精、模块化、限制 使用g 0to语句通过引用math. h文献,说明s i n函数的参数个数和类型,以及函数返回值类型3、函数调用时,函数名称是需要区分大小写的;函数名不允许以数字开头;在函数中允许有多个r e t urn语句,但每次调用只能有一个r e turn语句被执行4、用户自己定义的函数能调用库函数也可以调用自定义函数;对了不同函数的形式参数可以
24、使用相同名称的标记符;关广函数的定义不可以嵌套,但函数的调用可以嵌套。5、不能将一个整数直接赋给指针变量作为地址。函数的返回值可以是地址,即指针。函数调 用中形参值的变化不会传递给实参。6、C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只由实参传给形参, 而不能由形参传回来给实参。在内存中,实参单元与形参单元是不同的单元。7、C程序必须由一个或一个以上的函数组成:函数调用可以作为一个独立的语句存在:若函 数有返回值,必须通过ret urn语句返回8、语句f(&a2, 5,0)的作用是对从a2开始的5个元素进行从大到小排序。9、voi d f (int *s) * s =k;
25、 mai n () int m=3, *p=&m;f(p);p rintf (*%d , %d*, m, * p ):m=3, p指向叫调用函数f ,将实参p中m的地址传递给形参s, s指向m,贝ijk赋值给m, m=5, p仍然指向m,故输出5, 510、函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值 反向地传送给实参。因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化A.指针1、在计算机内存中,用一个字节表达一个内存单元并为每一个存储单元编号,这个编号就是存 储单元的地址一个变量的地址称为该变量的指针。专门用来存放变量地址的变量,称为 指针变量。常
26、量存储在编译文献中,不能取地址。一个指针变量的地址只能赋给指向这种类型 的指针变量,与其自身类型不同,不能赋值,未赋初值的指针变量自动赋任意地址值2、所有地址值所占字节都是同样的,故指针变量所占内存大小同样:不能随意把一个地址存放到任何一个指针变量中去,只能把具有相同类型的变量的地址,存放到这个指针变量中,结构体变量与某个成员类型不同,不能用同样的指针指向它们3、include void f (i n t *p, in t * q );main()(int m = l/n=2, *r=&m;f( rz&n);pr i nt f (%d,%)v oi d f(int *p,int *q)|p=p
27、+ 1 ;*q = *q+l;)在f(int *p,in t *q)函数中,执行P =p+l是将p所相应的地址加1,而*q=*q+l是将q所指向的n的 地址所相应的值加1 ,所以m的得知所相应的值没有变,而n的值则为3了。4、假如p是指针变量,则* P表达变量p所指向的地址的值:假如P是指针变量,则&P表达 变量p的地址;假如P是指针变量,* P +1表达将p所指的值加上1,而*( P +1)表达的是先将 指针右移一位再取所指向变量的值。5、虽然不同基类型的指针变量占用字节数是相同的,但是不能混用。6、f Io a t a10, x;表达式a+1不是非法的;语句a = &x;是非法的7、a =
28、( *ptr) +表达把指针ptr相应地址单元里的值赋给a,再将p t r相应地址单元里的值加18、定义指针P后,必须指针p进行初始化就进行赋值9、i nt x=2, *p=&x; float y = 3. 0; ch a r z=c由于x是一个整形变量,将x地址赋值 给p指针后,对P进行加一运算,p指针的值相称于加4 (整型变量的地址占4个字节),此时p指 向了未知的内存地址,对未知内存地址进行操作具有安全隐患1 0、把一个指针变量的值赋给另一个指针变量,但一定要保证这两个指针变量的基类型是相 同的;只要两个指针变量基类型相同,可以指向同一个对象11、函数的返同值可以是地址,即指针.函数调用
29、中形参值的变化不会传递给实参。不能将一 个整数直接赋给指针变量作为地址;函数可以返回地址值;改变函数形参的值,不会改变相应 实参的值;当在程序的开头包含头文献s t di o .h时,可以给指针变量赋NULL12、指针是用来存放地址的变量,用(类型名*指针变量名)的形式定义。赋值时应将某个变量地 址即&x赋给指针变量)。1 3、,p=NU L L;和p=0;或P =、0;等价;语句p=NULL;执行后,指针P并不是指向地址为。的 存储单元,而是具有一个拟定的值-空。14、指针变量的赋值只能赋予地址,决不能赋予任何其它数据,否则将引起错误;p=NULL;和 p=0;是等价的;指向同一数组的两指针
30、变量进行关系运算可表达它们所值数组元素之间的关 系。假如企图通过一个空指针来访问一个存储单元,将会得到一个犯错信息15、不可以取个常数或表达式的地址赋值给同类型的指针变量;通过强制类型转换可以将一种类型的指针变 量赋值给另一种类型的指针变量16、若有定义语句:i nta2 3L*p3;则以下语句中对的的是A) p=a;p 0)=a;B) p0=&a(l2;p 1 =& a ;参考答案:C【解析】A选项错误,由J:p是指向一个指针数组,作为数组名,不能指向别的地方。B选项错 误,由于p0是一个int指针,也就是i nt*:而a是一个指向指针的指针int*。C选项对的, 由于p0是一个int*,
31、a 1 2是int, &al2是i n t ,类型吻合。D选项错误,由于a作为 数组名,不能取地址。即使能取,p 1是int*, & a是int*,类型不对。因此C选项对的。17 int *p; scanf(%d, p );没有对指针进行初始化,无效指针18、不允许把一个数赋予指针变量,被赋值的指针变量前不能再加”*“说明符19、若有定义语句:inta10= 0,1, 2, 3, 4,5, 6, 7, 8, 9, *p=a;,以下选项中错误引用a数组元素的是 (其中 OWi10)* (*(a+ i )A) a p-a piB) *( &a i)* P=a,将数组a的首地址赋给指针p。a+i表达
32、数组a中第i个元素的地址,引用其中元素为 *(a+i) , A选项引用错误。p -a= 0 , B选项引用的元素为a0。C选项中p i 表达p后i个地 址的元素a i o D选项中&a i取ai地址,*(& a i)取这个地址内的元素,即为a i 。 本题选择A选项20、malloc函数的原型为:mal 1 o c (s i z c)函数的作用是在内存的动态存储区分派一个 长度为si z e的连续空间。九、编译预解决和动态储存分派1、预解决命令是以“旷号开头的命令,它们不是C语言的可执行命令,这些命令应当在函数之 外书写,一般在源文献的最前面书写,但不是必须在起始位置书写,所以B),C)错误。
33、C)语 言的预解决可以实现宏定义和条件编译等功能2、宏定义写在函数的花括号外边,作用域为其后的程序,通常在文献的最开头。宏定义必须位 于源程序中所有语句之前是错误的。宏名一般用大写,但不是必须用大写,宏展开不占运营时 间,只占编译时间,函数调用占运营时间(分派内存、保存现场、值传递、返回值)。宏替换 没有数据类型限制3、#defi n e N 10 0在编译程序对C源程序进行预解决时用100替换标记符N4、不带参数的宏定义是用一个指定的标记符来代表一个字符串,其一般形式如下:#def i ne 宏名替换文本。需要注意:(1)在#de fine、宏名和替换文本之间用空格隔开,(2)在C程 序中,
34、宏定义的定义位置一般写在程序的开头;(3)宏名一般用大写字母表达,便于与变量名 区别;(4)宏定义是用宏名来表达一个字符串,在宏展开时以该字符串取代宏名,这只是一种简 朴的代换,预解决程序对它不做任何检查;(5)宏定义不是语句,在行末不加分号,如加上分号 则连分号也一起替换:(6 )宏定义必须写在函数之外,其作用域为从宏定义命令起到源程序结 束,如要终止其作用域可使用#undcf命令。B选项define前多了一个井缺少”替换文本“ 宏名”“替换文本”位置反了,不能将一个自定义标记符宏定义为关键字5、#de f i ne SU B (a) ( a ) (a)d=SUB (a+b)*c;SU B(
35、a+b) * c= (a+ b )-(a+b)* c =6、f(x) x*x*xf(a+ 1 ) = a +l*a+l*a+l=3*a + l=l 0 ,f(a+l)=(a+l) * (a+l)*(a+ 1 ) =647、在一个程序中,允许使用任意数量的川n c lud e命令行包含文献被修改了,包含该文献的源程序必须重新进行编译和连接。8、考察预解决命令行,预解决是在程序编译之前进行的。预解决命令行的最后不能以分号表 达结束;# d efine MAX是合法的宏定义命令行;在程序中凡是以“ # 开始的语句行都是预 解决命令行十、结构体与共用体1 . typed e f类型名 新类型名表达为一
36、个已有定义的类型标记符重新定义一个类型名2、关键字t ypedef的作用只是将C语言中的已有的数据类型作了置换,并不是增长新的类型;可 以用lyp e d e畸已存在的类型用一个新的名字来代表;用lyp e def定义新的类型名后,原有类型 名仍有效:用lypede阿认为各种类型起别名,但不能为变量起别名3、ty p e d ef st r uct S i nt g; char h; T;可用T定义结构体变量4、t yp e d e f struct a b c i nt n;do u b 1 e m; ABC;A BC x, y;typ e def对已存在的类型使用一个新的名字5、使用typ
37、 edef说明新类型名时,其格式是:typedef原类型名 新类型名;在程序中,允 许用typedef来说明一种新的类型名;使用typedef说明新类型名时.,后面能加分号;在使用t ype def改变原类型的名称后,可以使用原类型名。6、 type def的作用是用一个新的标记符来代表已存在的类型名:可以用t y pe d ef说明的新类型名来定义变量7、typedef int T 10;T a20:新定义的类型T为大小为10的整型数组,定义的T型变量a 2 0,等价于定义了一个整型20行 10列二维数组8、type de f s t rue t Date1 nt yea r ;int mo
38、nt h ;in t day; DAT E:则以下叙述中错误的是D A T E是用户定义的结构体变量A) str u c t Date是用户定义的结构体类型DATE是用户说明的新结构体类型名B) s tru ct是结构体类型的关键字C语言允许用typedef说明一种新类型名,其一般形式如下:typedef类型名 新类型名;, 题目中定义了新类型Date,这种类型变量包含3个成员,DATE是这种新类型的名字。DATE是 用户说明的新结构体类型名,不是结构体变量,C选项叙述对的,A选项叙述错误,选择A选项。 stru c t Date是用户定义的结构体类型,B选项叙述对的。st r uct是结构体
39、类型的关键字,D选 项叙述对的。9、C语言中没有逻辑类型;若要保存带有多位小数的数据,可以用单精度类型也可以用双精度类 型,解决包含不同类型的相关数据可以定义为结构体类型,整数类型可以无误差的表达自然数, 10、一个结构体类型可以由多个称为成员(或域)的成分组成:结构体类型中的成分可以是结构 体:定义结构体时编译程序并不会给它分派内存空间:结构体中各个成分的类型可以是不同样 的11、不能在定义结构体的同时,又用结构体类型名定义变量。十一、文献1、文献是由数据序列组成,可以构成二进制文献或文本文献2、f p = fo pen (res. t x t, w); fp u tc ( K + i, f
40、 p);fclosc(fp):执行打开文献res. ixl、写入文献、再关闭文献的操作,由于fop 6门函数使用卬模式 写文献,所以每次打开res .txt后,都删除文献中的原有数据,再重新写入新数据。3、文献指针指向的是文献缓冲区,而不是文献自身位置,文献指针是指针类型的变量;f scanfO 函数作用是从指定的文献中格式化读数据,读取数据类型由格式控制符决定4、文献指针是程序中用FILE定义的指针变量;在C语言中用一个指针变量指向一个文献,这个 指针称为文献指针。通过文献指针就可对它所指的文献进行各种操作。文献指针不是文献位置 指针5、文献指针是指针变量,存储的是文献缓存区首地址6、所谓文
41、献指针,事实上是指向一个结构体类型的指针变量,这个结构体中包具有文献的一些 信息,如缓冲区的地址,在缓冲区中当前存取的字符的位置.,对文献是读”还是写“,是否犯 错,是否已经碰到文献结束标志等信息。7、当对文献的读(写)操作完毕之后,必须将它关闭,否则也许导致数据丢失;打开一个已存在 的文献并进行了写操作后,原有文献中的所有数据不一定被覆盖,也可以对源文献进行追加操 作等。在一个程序中当对文献进行了写操作后,不用先关闭该文献然后再打开,才干读到第1个 数据,可以用fs e ek()函数进行重新定位即可。C语言中的文献可以进行随机读写。2、结构化程序涉及的基本控制结构只有三种,即顺序结构、选择结
42、构 与循环结构3、在软件设计中使用的工具PAD图,不使用的工具数据流图(DFD 图)4、对象有如下一些基本特点:标记唯一性、分类性、多态性、封装 性、模块独立性好5、多态性是指同一个操作可以是不同对象的行为6、整数类实例涉及:十进制常量用09表达,不能以0开头;八进制常 量用0 7表达,必须用0开头;十六进制常量用09和AF(af)表 达,必须以Ox或0 X开头。7、字符实例的一般形式是用一对单引号括起来的一个字符。此外 ASCII码中尚有一些控制字符,C语言中用转义字符的形式来书写这些 常,转义字符一反斜杠()开始,后面跟1个字符或字符序列8、继承是面向对象的方法的一个重要特性,是使用己有的
43、类的定义作 为基础建立新类的定义技术。广义的说,继承是指可以直接获得已有 的性质和特性,而不必反复定义它们,所以说继承是指类之间共享属 性和操作的机制三、软件工程基础1、软件指的是计算机系统中与硬件互相依赖的另一部分,涉及程序、 数据和有关的文档2、软件具有以下特点:(1)软件是一种逻辑实体,具有抽象性;(2)软件 没有明显的制作过程;(3)软件在使用期间不存在磨损、老化问题; (4)对硬件和环境具有依赖性;(5)软件复杂性高,成本昂贵;(6) 软件开发涉及诸多的社会因素,如知识产权等3、软件生命周期可以分为软件定义、软件开发与软件运营维护三个阶 段。重要活动阶段是:可行性研究与计划阶段,需求
44、分析,软件设计, 软件实现,软件测试,运营和维护(同9)4、计算机软件按功能分为应用软件、系统软件、支撑软件(或工具软 件)o系统软件是管理计算机的资源,提高计算机的使用效率,为用户提 供各种服务的软件,如操作系统、数据库管理系统、编译程序、汇编 程序和网络软件等5、数据定义语言:负责数据的模式定义与数据的物理存取构建;数据 操纵语言:负责数据的操纵,涉及查询及增、册人改等操作;数据控 制语言:负责数据完整性、安全性的定义与检查以及并发控制、故障恢 复等功能。6、软件工程包含3个要素:方法、工具和过程7、软件产品从考虑其概念开始,到该软件产品不能使用为止的整个时 期都属于软件生命周期8、数据库
45、系统的三级模式是概念模式、外模式和内模式。概念模式 是数据库系统中全局数据逻辑结构的描述,是全体用户公共数据视 图。外模式也称子模式或用户模式,它是用户的数据视图,给出了每个 用户的局部数据描述。内模式又称物理模式,它给出了数据库物理存储结构与物理存取方法9、软件生命周期分为3个时期共8个阶段:软件定义期,涉及问题定 义、可行性研究、需求分析;软件开发期,涉及概要设计、具体设 计、实现、测试;运营维护期,即运营维护阶段。可行性研究属于软件 定义期任务(同3)10、可行性分析阶段:可行性分析报告。需求分析阶段:软件规格说 明书,初步的用户手册。软件设计阶段:概要设计说明书,具体设计说 明书,测试
46、计划初稿。软件实践阶段:用户手册,操作手册等面向用户 的文档和单元测试计划。软件测试阶段:测试分析报告。1 1、概要设计说明书是总体设计阶段产生的文档。集成测试计划是 在概要设计阶段编写的文档。需求规格说明书是后续工作如设计、编 码等需要的重要参考文档12、需求分析阶段的工作可以分为4个方面:需求获取、需求分析、编 写需求规格说明书和需求评审,涉及拟定软件系统的功能1 3、(1)在测试之前制定测试计划,并严格执行,测试用例的选择不可 随意,应选择有代表性的,尽也许发现迄今为止尚未发现的错误。(2) 测试主线目的是尽也许多地发现并排除软件中隐藏的错误软件测试 是保证软件质量、可靠性的关键环节。1
47、 4、在需求分析阶段可以使用的工具有数据流图DFD图,数据字典D D,鉴定树与鉴定表15、数据流图中带箭头的线段表达的是数据流1 6、数据字典(DD)所定义的对象都包含于数据流图(DFD图)17、软件需求规格说明书有以下几个方面的作用。便于用户、开发 人员进行理解和交流;反映出用户问题的结构,可以作为软件开发 工作的基础和依据;作为确认测试和验收的依据18、软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规 模适当、模块的依赖关系适当19、从技术观点上看,软件设计涉及软件结构设计、数据设计、接口设 计、过程设计。20、减少耦合性提高内聚性有助于提高模块的独立性(高内聚低耦合)21、扇入指的是调用一个给定模块的模块个数2 2、扇出指的是由一个模块直接调用的其他模块数3、结构化程序的三种基本控制结构:顺序、选择和循环(反复)3 4、在数据流图中,用标有名字的箭头表达数据流。在程序流程图 中,用标有名字的箭头表达控制流。25、软件测试的目的是为了发现错误而执行程序的过程。程序调试的 基本环节有:错误定位、修改设计和代码,以排除错误、进行回归测 试,防止引进新
限制150内