C语言期末考试重点题解与分析

版权申诉
0 下载量 121 浏览量 更新于2024-08-29 收藏 29KB DOC 举报
"C语言期末考试题和答案解析" 在C语言中,源程序的基本单位是函数,因此选项B是正确的。程序的执行流程通常从main()函数开始。在选择题的第二题中,给定的代码片段试图将整数5除以7并打印结果。由于5除以7得到的浮点数部分被截断,结果会是0,所以选项C是正确答案。 第三题的表达式(a=5,b=2,a>b?a++:b++,a+b)涉及了三元运算符和自增运算。首先,a被赋值为5,然后比较a和b,因为a大于b,所以执行a++,使得a变为6,最后计算a+b得到11。但是题目要求只考虑表达式的值,因此答案是9,即在执行完三元运算符后的a+b的结果,选项C正确。 第四题的赋值语句中,a首先被赋值为125,接着a=(int)125%4,这里的125%4等于1,所以a变为1,最后a=5<<2,左移运算符<<将5向左移动两位,相当于5乘以2的2次方,即20,所以选项C正确。 第五题的while循环条件是k=0,这是一个赋值表达式,它总是返回非零值(这里k会被赋值为0),导致循环永远不执行,所以选项C是正确答案。 第六题,程序定义了一个打印星号的函数prt(),并在main()函数中通过循环调用该函数,所以输出会是连续的星号行,总共有3行,每行3个星号,因此正确答案是A***。 第七题,C语言中函数的定义不能嵌套,但函数的调用可以嵌套,选项B正确。第八题,函数调用func((e1,e2),(e3,e4,e5))中,两个括号内的逗号运算符会产生两个参数,所以总共是2个实参,答案是A。 第九题,宏定义ADD(x)实际上是x*x,所以当计算ADD(a+b)*c时,先计算a+b得到10,然后是10*10得到100,再乘以c(7)得到700,选项D正确。 第十题,结构体worker中包含了int、char数组、char和联合体,int是4字节,char数组最多20字节(实际可能更少,取决于字符串结束符),char是1字节,联合体中三个int各占4字节,但由于它们共享空间,所以只占用4字节。因此,系统为变量w分配的总空间是20+1+4=25字节,选项C正确。 第十一题,枚举类型定义中,mon被赋值为4,所以thu的值是4+3=7,因此值为5的枚举常量是thu,选项D正确。 第十二题的选项没有给出,但通常这类型的题目会测试对枚举类型的理解或其它C语言特性。如果选项是关于其他枚举常量的值,解题方法会类似上面的分析。 这些是C语言的一些基本概念和常见考点,包括程序结构、运算符优先级、循环控制、函数调用、内存管理、枚举类型等。理解和掌握这些知识点对于C语言的学习至关重要。