其他语言

位置:IT落伍者 >> 其他语言 >> 浏览文章

C语言笔试题带答案(七)


发布日期:2018年02月10日
 
C语言笔试题带答案(七)

选择题(()~()每小题()()每小题分)

下列各题A)B)C)D)四个选项中只有一个选项是正确的请将正确选项涂写

在答题卡相应位置上答在试卷上不得分

()在计算机中算法是指_______

A)查询方法 ?           B)加工方法

C)解题方案的准确而完整的描述 ?  D)排序方法

答案C

评析计算机算法是指解题方案的准确而完整的描述它有以下几个基本特征:可行性确定性有穷性和拥有足够的情报

()栈和队列的共同点是_______

A)都是先进后出          ?B)都是先进先出

C)只允许在端点处插入和删除元素 ? D)没有共同点

答案C

评析栈和队列都是一种特殊的操作受限的线性表只允许在端点处进行插入和删除二者的区别是栈是一种后进先出的线性表而队列是一种先进先出的线性表

()已知二叉树BT的后序遍历序列是dabec中序遍历序列是debac它的前序遍历序列是_______

A)cedba     ?B)acbed    C)decab   ?D)deabc

答案A

评析二叉树BT的后序遍历序列为dabec故BT的根结点为c而BT的中序遍历序列是debac即遍历序列中最后一个结点为跟结点说明BT的右子树为空由BT的的后序遍历序列和中序遍历序列可知BT的左子树(LST)的后序遍历序列和中序遍历序列分别为dabe和deba(树是递归定义的)故LST的根结点是e在由LST的中序遍历序列可知其左子树为d因此BT的前序遍历序列为cedba

()在下列几种排序方法中要求内存量最大的是_______

A)插入排序?  ?B)选择排序 ? C)快速排序 ? D)归并排序

答案D

评析快速排序的基本思想是通过一趟排序将待排序记录分割成独立的两部分其中一部分记录的关键字均比另一部分记录的关键字小再分别对这两部分记录继续进行排序以达到整个序列有序插入排序的基本操作是指将无序序列中的各元素依次插入到已经有序的线性表中从而得到一个新的序列选择排序的基本思想是扫描整个线性表从中选出最小的元素将它交换到表的最前面(这是它应有的位置)然后对剩下的子表采用同样的方法直到表空为止归并排序是将两个或两个以上的有序表组合成一个新的有序表

()在设计程序时应采纳的原则之一是_______

A)程序结构应有助于读者理解    ?B)不限制goto语句的使用

C)减少或取消注解行        ?D)程序越短越好

答案A

评析滥用goto语句将使程序流程无规律可读性差添加的注解行有利于对程序的理解不应减少或取消程序的长短要依照实际需要而定并不是越短越好

()下列不属于软件调试技术的是_______

A)强行排错法  B)集成测试法? C)回溯法   D)原因排除法

答案B

评析调试的关键在于推断程序内部的错误位置及原因主要的调试方法有强行排错法回溯法和原因排除法

()下列叙述中不属于软件需求规格说明书的作用的是_______

A)便于用户开发人员进行理解和交流

B)反映出用户问题的结构可以作为软件开发工作的基础和依据

C)作为确认测试和验收的依据

D)便于开发人员进行需求分析

答案D

评析软件需求规格说明书是需求分析阶段的最后成果是软件开发中的重要文档之一它不能方便开发人员进行需求分析

()在数据流图(DFD)中带有名字的箭头表示_______

A)控制程序的执行顺序 ?     ?B)模块之间的调用关系

C)数据的流向 ?         ?D)程序的组成成分

答案C

评析在数据流图中用标有名字的箭头表示数据流数据流可以从加工流向加工也可以从加工流向文件或从文件流向加工并且可以从外部实体流向系统或从系统流向外部实体

()SQL语言又称为______

A)结构化定义语言          ?B)结构化控制语言

C)结构化查询语言          ?D)结构化操纵语言

答案C

评析结构化查询语言(Structured Query Language简称SQL)是集数据定义数据操纵和数据控制功能于一体的数据库语言

()视图设计一般有种设计次序下列不属于视图设计的是______

A)自顶向下   B)由外向内 ?    C)由内向外      D)自^芪向上

答案B

评析视图设计一般有种设计次序它们分别是自顶向下自底向上和由内向外它们又为视图设计提供了具体的操作方法设计者可根据实际情况灵活掌握可以单独使用也可混合使用

()以下有组用户标识符其中合法的一组是______

A)FOR     ?B)d        ?C)f一G      D)WORD

sub       DO         ?IF ?        void

Case       Size        ?abc         define

答案C

评析c语言的标识符的定义为以字母或下划线开头的由字母数字字符下划线组成的字符串而且标识符不能与关键字相同

()下列属于c语言语句的是______

A)print(&#;%d\n&#;a)         B)#include<stdioh>

C)a=bb=cc=a ?        D)/*this is a program*/

答案C

评析在c语言中一个完整的c语句必须在语句末尾出现分号分号是c语句的必要组成部分本题答案为C

()下列叙述中正确的是______

A)C程序中注释部分可以出现在程序中任何合适的地方

B)花括号{}只能作为函数体的定界符

C)构成C程序的基本单位是函数所有函数名都可以由用户命名

D)分号是C语句之间的分隔符不是语句的一部分

答案A

评析c程序中注释部分用/**/括起来可以出现在程序中任何合适的地方花括号{}不仅可作为函数体的定界符也可作为复合语句的定界符构成C程序的基本单位是函数一个语句必须在最后出现分号分号是C语句中不可缺少的部分

()以下合法的赋值语句是______

A)X=Y=?   B)D&#; ?      C)X+Y       D)C=int(A+B)

答案B

评析本题中的答案A与D都缺少而答案c中表达式是不能独立成为语句的答案B使用了c语言的自减运算符它就相当于D=Dl所以答案B为一赋值语句

()运行下面的程序其输出结果为______

main()

{

printf(%d%d)

}

A) ?    B)        C)       D)

答案A

评析在c中参与%运算的两个参数都必须为整型在大多数c编译器下(包括TurboC)都采用了靠近的原则即当两个运算量有一个为负数时余数的符号由被除数的符号决定故本题答案为A

()设xy均为int型变量且x=y=则print(&#;%d%d\n&#;x y)语句的输出结果是______

A)     ?B)        C) ?      ?D)}

答案D

评析c语言的自减运算符有前置与后置两种形式当自减运算符前置时变量先自减一后再参与表达式运算而后置时变量先参与表达式运算后再自身减一

()设x为int型变量执行以下语句x=x+=x=xxx的值为______

A)      ?B)        ?C)        ?D)

答案B

评析本题x=表达式X+=X=XX的求解步骤如下先进行X=XX的运算相当于X=X(Xx)=x=;再进行X+=X的运算即x=x+x=

()XYZ被定义为int型变量若从键盘给XYZ输入数据正确的输入语句是 ? ______

A)INPUT XYZ          ?B)scanf(%d%d%d&X&Y&Z)

C)scanf(%d%d%d&#;XYZ)   D)read(%d%d%d &X&Y&Z)

答案B

评析c语言中没有输入输出语句它是通过c语言提供的函数来实现的本题c中应为变量地址

()以下程序的输出结果是______

main()

{int a=

printf(%d\n(a+=a=a*a))

}

A)?     ?B)         C)         D)

答案D

评析赋值运算符的结合方向是自右至左所以表达式a+=a=a*a先运算最右边的a*a得再运算a=a即a=所以此时a的值由变成了最后运算a=a+()即a=()+()=

()设int型占个字节则unsigned int所能表示的数据范围是______

A) ?  ?B) ? ?C)     ?D)

答案A

评析本题int型占个字节unsigned m所能表示的数据范围是O~(^)

()设abcdmn均为int型变量且a=b=c=d=m=n=则逻辑表达式(m=a>b)&&(n=c>d)运算后n的值为______

A)?       B)         C)         ?D)

答案A

评析c语言中比较表达式的运算结果为代表不成立l表示成立

()以下程序的输出结果是______

main()

{im? num=

while(num<=)

{? num++printf(%d\nnum)? }

}

A)       B)          C) ?        D)

       ?          ?         

       ? ?         

       ?

答案B

评析while的执行过程是先计算条件表达式的值若成立则执行循环体重复上述过程直到条件表达式的值为(值为零)时退出循环并转下一语句去执行本题在输出num的值为之后r再判断while的循环条件<=不成立所以不再输出num的值故本题的答案选B

()下面的关键字中不能够从循环体中跳到循环体外的是______?

A)goto     ?B)break       ?C)return?     ?D)continue

答案B

评析在c语言中可以用break语句和continue语句跳出本层循环和结束本次循环goto语句可跳出多层循环如果在函数的循环体内使用return语句就会直接结束循环返回函数值

()以下各选项企图说明一种新的类型名其中正确的是______

A)tyrpedef vl int        ?B)typedef v=int

C)typedef int v         D)typedef vint

答案C

评析c语言中可以使用typedef来重新定义已有的数据类型相当于为数据类型取个别名

()为了避免嵌套的ifelse的二义性C语言规定else与______配对

A)缩排位置相同的if ?       B)其之前最近的if

C)其之后最近的if         ?D)同一行上的if

答案B

评析在if语句中又包含一个或多个if语句称为if语句的嵌套应当注意if与else的配对关系在c语言中从最内层开始else总是与它上面最近的(未曾配对的)if配对

()在调用函数时如果实参是简单变量它与对应形参之间的数据传递方式是______?

A)地址传递?             B)单向值传递

C)由实参传给形再由形参传回实参 ? D)传递方式由用户指定

答案B

评析c语言函数中的参数传递方式有传值与传址两种方式传值方式是指将实参的值复制一份传递给形参而传址方式是指将实参的变量地址传递给形参也就是实参的引用

()以下函数值的类型是______

fun(float x)

{float y

y=*x

Return y

}

A)int     B)不确定      ?C)void        D)float

答案A

评析c语言中如果函数前不加任何数据类型时缺省函数的类型为整型函数的类型就是函数返回值的类型

()以下选项中非法的字符常量是 ______

A)\t    B)      C)\n?     ?D)\xaa

答案C

评析C语言中字符常量是以单引号括起来的单个字符或为以与三位八进制数值或两位十六进制数值代替单个字符

()以下程序的输出结果是______

#include<stdioh>

main()

{

int a=

#define a lOO

printf(%da)

#undef a

printf (&#;%dta)

}

A) ?  ?B)      ?C)       D)

答案C

评析#define宏名的有效范围为定义命令之后到本源文件结束可以在程序中使用#undef命令终止宏定义的作用域本题由于#undef的作用使a的作用范围在#define a 到#undefa之间故答案为c

()若有说明int ij=*p=&i则能完成i=j赋值功能的语句是______

A)i=*p?    B)*p=*&j ?   ?C)i=&j      ?D)i=**p

答案B

评析指针是一种用来存放变量地址的特殊变量本题中指针变量p用于存放整型变量i的地址改变*p的值即为改变i的值又因为&∥两个运算符的优先级别相同按自右而左的方向结合所以&j先进行&j运算得j的地址再进行+运算取所得地址里面的值故t&j与i等价

()假定int类型变量占用两个字节若有定义int ?x[]={}则数组x在内存中所占字节数是______

A)       ?B)         ?C)        D)

答案D

评析当数组定义后系统就为其分配内存空间而不论其中有没有内容因此本题中数组x[]不论是否为其元素初始化它所分配的存储空间仍为+=个字节

()执行以下的程序段后m的值是______

int a[][]={{l}{}}

int m*p

p=&a[][]

m=p[

A) ?     ?B)         C)         D)不确定

答案B

评析程序中定义了一个指向整型变量的指针变量并对其赋值为二维整型数组a的首元素的地址P[]等价于*(p+)即二维数组a中第四个元素的值而a是一个*的二维数组其第四个元素为a[][]

()以下程序的输出结果是______

main()

{int? ia[]

for(i=i>=Oi&#;) a[i]=lOi

printf(%d%d%da[]a[]a[])

}

A)      B)l?       ?C)        D)

答案C

评析在本题运行时主要注意的是当i=a[i]==i=a[i]==i=a[i]==……依此类推直到i=a[i]==此时i的值已变为.判断for的循环条件不成立然后输出a[]a[]a[]分别为

()下面程序的输出结果为______?

#include<stringh>

main()

{

char pl[]=&#;abc&#;p[]=&#;ABC&#;str[]= &#;xyz&#;

strcpy(strstrcat(plp))

printf(&#;%s&#;str)

}

A)xyzabcABC?  B)abcABC ?     ?C)xyzabc      ?D)xyzABC

答案B

评析strcpy(strls)作用是将字符串s拷贝到字符数组strl中去strcat(字符数组字符数组)字符串接到字符串l的后面结果放在字符数组函数调用后返回字符数组l的地址

本题定义了三个字符数组plpstrstrcat(pp)函数的作用是将字符串数组p接到字符串p的后面结果放在字符数组p再通过sffcpy()函数将该字符串拷贝到str数组中原str数组中的字符串xyz被覆盖因此打印输出字符串str即可得到abcABC

()以下数组定义中不正确的是______

A)int a[] ?      ?B)int b[][]={)

C)int c[][]={} ?   D)int d[][]={{l}{l}{}}

答案D

评析一维数组的定义方式为

类型说明符数组名[常量表达式]

选项A符合此定义形式正确c语言中多维数组赋初值时可以部分赋值也可以不指定除第一维以外的其它维的大小故选项c正确另外如果对全部数组元素都赋初值则定义数组时对第一维的长度可以不指定但第二维的长度不能省所以选项B正确而选项D是错误的

()以下程序的输出结果是______

main()

{? jnt a[][]{{}{}{}}

printf(&#;%d%d%d%d\n&#;a[][]a[][]a[][]a[][])

}

A)?     B) ?      C)       ?D)输出值不定

答案A

评析对未给出初始值的整数数组元素被缺省初始化为零

()在说明语句int *f()标识符f代表的是______

A)一个用于指向整型数据的指针变量 ? B)一个用于指向一维数组的行指针

C)一个用于指向函数的指针变量 ?   D)一个返回值为指针型的函数名

答案D

评析带回指针值的函数其一般定义形式为

类型标识符? *函数名(参数表)

例如int *f(xy)

其中f是函数名调用它以后能得到一个指向整型数据的指针(地址)xy是函数f的形参在f的两侧分别为运算符和()运算符而()优先级高于s因此f先与()结合显然是函数形式这个函数前面有一个表示此函数是指针型函数(函数值是指针)前面的int表示返回的指针指向整型变量

()以下程序的输出结果是______

main()

{? char st[]= &#;hello\\t\\&#;;

printf(&#;%d%d\n&#;strlen(st)sizeof(st))

}

A)       B)       ?C) ?      D)

答案B

评析c语言中字符串是以字符结束的且strlen()函数计算的是字符前的所有字符的个数本题中strlen(st)应为数组定义以后系统就为其分配相应大小的内存空间而不论其中有没有内容sizeof()函数是计算变量或数组的所分配到的内存空间的大小所以本题的sizeof(st)为

()下面程序运行后的输出结果是______

int d=

fun(int p)

{ static int d=d+=p

printf(&#;%d&#;d)return d

}

main()

{int a=printf(&#;%d\n&#;fun(a+fun(d)))}

A)      B)        C)       D)

答案C

评析静态局部变量在编译时赋初值即只赋初值一次在程序运行时它已有初值以后每次调用时不再重新赋初值而只是保留上次函数调用结束时的值而对自动变量赋初值不是在编译时进行的而在函数调用时进行每调用一次函数重新给一次初值相当于执行一次赋值语句

本题在程序开头定义了全局变量d并赋初值在被调函数fun()中定义了静态局部变量d初值为在第一次调用函数fun时d初值为p由主函数传递过来的值为则d=d+p=+l=由于d是静态局部变量在函数调用结束后它仍保留d=再次调用fun函数d的初值为而由主函数传递的p的值为则此时d=d+p=+=最后打印输出d的值并返回主函数

()以下选项中不能正确赋值的是______

A)char s[]sl=&#;chest&#; ?  ?B)char s[]{Ctest)

C)char s[]= &#;Chest&#; ?  ?D)char*s=&#;Ctest\n&#;

答案A

评析c语言中不能将字符串常量直接赋给数组但在赋初值时可以

()以下程序输出正确的是______

alnovep(int *pint(*a)[]int n)

{int ij

for(i=i<ni++)

for(j= ;j<n;j++){ *p=a[i][j]p++}

}

main()

{int *pa[][]={{}{}}

p=(int*)malloc();

amovep(pa)

printf(%d%d\np[]p[])free(p)

}

A) ?     ?B)        C)         D)程序错误

答案A

评析本题main函数中定义了指针p和二维数组a通过函数amovep将数组的值存入指针p所指向的存储单元中a的各元素分别为a[][]=la[][]=a[][]=a[][]=a[l][]=a[][]=a[][O]=a[][]=a[][]=a

通过malloc()函数给指针分配内存空间free()函数用于释放指针变量所用内存空间在主函数中通过amovep(pa)调用函数amovep使得实参p与形参p实参数组a与形参中指向数组的指针变量共用同一存储空间最后输出p[]p[]为

()下面程序的输出结果是______

#define a

const b=

enum c{aa}

main()

{

printf(%d%d%d.sizeOf(a)sizeOf(b)sizeof(enum C))

}

A)   ?B)      ?C)?     ?D)

答案B

评析sizeof函数是取变量所占的存储空间的字节数标识a代表常量const b=其中数据类型可以缺省默认为整型enum c{ala}定义了一个枚举类型enum cala为枚举元素在c编译时对枚举元素按常量处理它们的值按定义顺序依次为因此它们的字节数均为

()以下程序的输出结果是______

struct HAR

{int? xystruct HAR *p} h[]

main()

{? h[]X=; h[O]y=

h[]x=h[]y=

h[]p=&h[]h[]p=h

printf(%d%d\n(h[O]p)>x(h[]p)>y)

}

A)?       B)         C)?        ?D)

答案D

评析本题中是一个含有两个结点的循环链表

c语言中结构体的定义为

struct结构体类型名

{

成员项表

}

()变量a所占的内存字节数是______?

A)       ?B)          C)          D)

Union U

{? char st[]

Int i

Long l

}

Struct A

{? int c

Union U u

}a

答案C

评析结构体变量所占内存长度是各成员占内存长度之和而共用体变量所占的内存长度等于最长的成员的长度本题结构体变量a中成员c为整型占个字节共用体变量u最大长度为个字节故选C

()以下程序的结果是______

int? ab

void fun()

{? a=b=)

main()

{int a=b=

fun()

printf(%d%d\nab)

}

A) ?   B)         C)      ?D)

答案B

评析全程变量是可以在子函数中对其值作改变且它也可作为函数间的值传递但当函数或子函数中定义了与全程变量名称相同的局部变量则全程变量将被屏蔽

()以下程序的输出结果是______

#define? M(xyz) x*y+z

main()

{? int a=lb=c=

printf(%d\nM(a+bb+cc+a))

}

A)      B)         C)?        D)

答案D

评析c语言的宏定义包括不带参数的宏定义与带参数的宏定义本题为带参数的宏定义其形式为#define宏名(形参表)? 字符串本题的M(a十bb+cc+a)被字符串a+b*b+c+c+a代替

()若有以下说明和语句

struct st

{int nchar *ch)

struct st a[]={abcdefghK}*p=a则值为的表达式是______

A)p++ >n    B)p一>n++      C)(*p)n++   ?D)+十p>n

答案D

评析根据结构变量的存储特点p+l意味着增加地址值为结构体数组a的一个元素所占的字节数即p++使p由a[]指向a[]起始地址本题++p>n得到p指向的结构体变量中成员n的值使之加l因为p指向数组a起始地址p>n的值为再执行自加l运行结果为

()整型变量x和Y的值相等且为非O值则以下选项中结果为的表达式是______

A)x||Y     B)X|Y ?       C)X&Y        D)X^Y

答案D

评析为或运算符当其左右表达式中只要一个为非零则整个表达式的值︱是按位或&是按位与^是按位异或这三位运算符是按值的二进制位来比较的

()C语言中组成数据文件的成分是______

A)记录?    B)数据行?       C)数据块      ?D)字符(字节)序列

答案D

评析c语言中的文件是流式文件流式文件是一种无结构文件即整个文件是一串字符流或二进制流文件的存取以字符或字节为单位

()下面的程序执行后文件testt中内容是______

#include<stdioh>

void fun(char *fnamechar *st)

{ FILE? *myfint i

myf=fopen(fname &#;w&#;)

for(i=i<strlen(st)i++)fputc(st[i]myf)

fclose(myf)

}

main()

{fun(&#;testt&#;&#;new world&#;)fun(&#;testt&#;&#;hello&#;)}

A)hello ? B)new worldhello? C)new world ? D)hellorid

答案A

评析c语言中文件有文本文件与二进制文件对文件的使用前必须先打开打开方式有只读写入读写等方式

填空题(每空分)

请将每一个空的正确答案写在答题卡的【】至【】序号的横线上答在试卷上不得分

()实现算法所需的存储单元多少和算法的工作量大小分别称为算法的? 【】? ?

答案】空间复杂度和时间复杂度

评析算法的复杂性是指对一个在有限步骤内终止算法和所需存储空间大小的估计算法所需存储空间大小是算法的空间复杂性算法的计算量是算法的时间复杂性

()数据结构包括数据的逻辑结构数据的? 【】? 以及对数据的操作运算

答案】存储结构

评析数据结构包括个方面即数据的逻辑结构数据的存储结构及对数据的操作运算

()一个类可以从直接或间接的祖先中继承所有属性和方法采用这个方法提高了软件的?  【】?

答案】可重用性

评析继承的优点相似的对象可以共享程序代码和数据结构从而大大减少了程序中的冗余提高软件的可重用性

()面向对象的模型中最基本的概念是对象和  ?【】?

答案】类

评析面向对象模型中最基本的概念是对象和类对象是现实世界中实体的模型化将属性集和方法集相同的所有对象组合在一起可以构成一个类

()软件维护活动包括以下几类改正性维护适应性维护? 【】? 维护和预防性维护

答案】完善性

评析软件维护活动包括以下几类改正性维护适应性维护完善性维护和预防性维护完善性维护是指为了满足用户对软件提出的新功能与性能要求需要修改或再开发软件以扩充软件功能增强软件性能改进加工效率提高软件的可维护性

()语句X++++XX=X+X=l+X执行后都使变量X中的值增l请写出一条同一功能的赋值语句(不得与列举的相同)? 【】 ?

答案】X+=

评析在c语言中使变量增l的方法有自增运算符与赋值语句其中自增运算符有前置与后置方式赋值语句也有两种类型

本题中的主要增l方式有x++++xX=X+Ix=+xx+=l

()设Y是int型变量请写出判断Y为奇数的关系表达式  【】 ?

答案】Y%==? 或Y%!=

评析判断变量是否为奇数可以用变量与取模判断结果是为或不为本题具体做法如下Y%==或Y% =

()? 以下程序的输出是? 【】 ?

main()

{

char strl[]=&#;How do you do&#;*pl=strl

strcpy(strl+strlen(strl)/&#;es she)

printf(&#;%s\n&#;p)

}

答案】How does she

评析strcpy(strls)字符串拷贝函数作用是将字符串s拷贝到字符数组strl中去strlen(str)测试字符串str的长度函数的值为字符串中实际长度不包括\O在内本题中strlen(strll的值为则strcpy(strl+strlen(strl)/&#;es she&#;)相当于strcpy(strl+&#;es she&#;)因此可得答案为How does she

()以上程序运行后的输出结果是? 【】   

main()

{int i=J=

do

{j=j+ii&#;}

while(i>)

printf(&#;%d\n&#;j)

}

答案

评析do...while语句的形式为

do

{

语句

}while(条件表达式)

当条件表达式为非零时继续执行循环体直到条件表达式为零时退出循环

()设有如下程序

main()

{int nln

scanf(&#;%df&#;&n)

while(n!=)

{? nl=n%lO

n=n

printf(&#;%d&#;n)

}

}

程序运行后如果从键盘上输入则输出结果为  【】   

答案

评析本题的程序的功能是将输入的整数反向输出

()以下程序输出的最后一个值? 【】 ?

Int  ff(int n)

{static int f=

f=f*n

retun f

}

main()

{ int i

for(i=i<=i++)printf(%d\nff(i))

}

答案【ll】

评析

静态变量的类型说明符是static静态局部变量属于静态存储方式它具有以下特点

①静态局部变量属于静态存储类别在静态存储区内分配存储单元在程序整个运行期间都不释放

②对静态局部变量是在编译时赋初值的即只赋初值一次在程序运行时它已有初值以后每次调用函数时不再重新赋初值而只是保留上次函数调用结束时的值

③如在定义局部变量时不赋初值的话则对静态局部变量来说编译时自动赋初值(对数值型变量)或空字符(对字符变量)(注意c语言中的非静态变量在定义时系统并不会自动给它赋初值)

④虽然静态局部变量在函数调用结束后仍然存在但其他函数是不能引用它的

本题中函数的功能是与for语句一起求一个整数的阶乘

()以下函数的功能是求x的y次方请填空.

double fun(double xint y)

{int i

double z

for(i=z=xi<yi++)z=z*? 【】  

return z

)

答案】x

评析函数的定义形式为

函数类型函数名(形参表)

{

类型说明语句

执行语句

}

本题中函数的功能是累积变量以求得变量的Y次方

()下列程序的输出结果是? 【】 ? ?

main()

{

int a[]={}*ptr=&a[]x=yz

for(y=Oy<y++)

z=(*(ptr+y)<x)?*(ptr十y)x

printf(%d\nz)

}

答案

评析条件运算符的优先级高于赋值运算符因此本题先计算关系表达式(*(ptr+y)<x)?*(ptr+y)x的值再赋给变量z当y=O时*(ptr+y)=而x=(*ptr+y)<x)条件为真则整个条件表达式的值为*(ptr+y)=所以Z=当y=l时*(ptr+y)=(*(pty+y)<x)条件为真则整个条件表达式的值为*(ptr+y)=所以z=当y=*(ptr+y)=(*(ptr+y)<x)条件为真则整个条件表达式的值为*(ptr+y)=所以z=循环结束因此输出z的结果为

()以下程序运行后的输出结果是? 【】 ?

main()

{ char s[]=*p

for(p=sp<s+p++)printf(%s\np)

}

答案

评析指针是一种数据类型这种数据类型的变量用来存放内存中分配的存储单元的首地址

指针的定义

类型说明符? *指针变量名

()若有定义语句char s[]d[]int j=i=且s中已赋字符串请填空以实现拷贝(注不使用逗号表达式)

while(s[i]){d[j]=? 【】  ? ?;j++}

d[j]=

答案】s[i++]

评析本题中为了能实现字符串的拷贝需要使字符数组s从头到尾依次遍历其所有元素本题应使用i的自增后置来实现

()若有如下结构体说明

struct STRU

{ int abchar cdouble d

struct STRU? *pl*p

}

请填空以完成对t数组的定义t数组的每个元素为该结构体类型

】  ?t[]

答案】struct STRU

评析结构体类型是构造数据类型是用户自己定义的一种类型

结构体类型的定义

struct结构体类型名

{

成员项表

}

定义结构体变量的的形式为

struct结构体类型名? 变量变量...

其中变量包括一般变量指针变量数组变量等

()下面的程序可对指定字符串中的字符串进行从大到小排序请将程序填完整(注程序采用了冒泡排序算法)

#include<stdioh>

#include<stringh>

main()

{? char *str=&#;ABCDabcd&#;temp

Int ni

n=strlen(str)

while(n&#;>)

for(i=i<ni++)

if(str[i]<str[i+])

{ temp=【】? ;

str[i]=str[i+]

_【】 ? =temp

}

Printf(_【】  )

}

答案】str[i]

】str[i+]

%s&#;str

评析本题要求将字符串str中的字符用冒泡排序算法从大到小排列其实现过程是将相邻两个字符进行比较如果当前字符小于下一个字符则通过中间变量temp将字符两两交换所以第一空应填str[i]第二空应填str[i+]最终打印输出得到的字符串str所以第三空应填%s&#;str

()以下程序段打开文件后先利用fseek函数将文件位置指针定位在文件末尾然后调 ? 用ftell函数返回当前文件位置指针的具体位置从而确定文件长度请填空

FILE *myflong? fl

myf=_【】  (&#;testt&#;&#;rb&#;)

fseek(myf()SEEK_END)fl+ftell(myf)

fclose(myf)

printf(%l d\n&#;f)

答案】fopen

评析C语言中的文件分为ASCII文件与二进制文件文件在使用前打开使用后要关闭

打开文件的函数为fopen()调用形式为fp=fopen(文件名使用文件方式)

关闭文件的函数为fclose()调用形式为fclose(fp)其中fp为文件指针

               

上一篇:C语言编程笔试题(第三十五套)

下一篇:C语言面试大全系列带面试题答案(23)