C语言程序设计:函数调用与程序结构解析

需积分: 0 0 下载量 109 浏览量 更新于2024-08-05 收藏 287KB PDF 举报
"这篇复习题主要涵盖了C语言的基础知识,包括函数调用方式、程序编译过程、标识符定义规则、常量定义、条件判断语句的等价形式、main函数的特性、switch语句的使用以及for循环的执行情况。此外,还涉及到了指针和数组的使用。" 1. C语言函数可以嵌套调用,也可以递归调用。这个说法是正确的。在C语言中,函数可以嵌套调用,即一个函数内部可以调用另一个函数。同时,函数也支持递归调用,即函数在执行过程中调用自身。递归调用在解决某些问题时非常有用,但需要注意避免无限递归。 2. C语言中,除了main函数,其他的函数完全可以作为单独的文件存在。这种说法是错误的。C语言允许将各个函数分别写在不同的源文件中,然后通过#include预处理指令或者在主程序中extern声明来引用这些外部函数,从而实现模块化编程。 3. 关于C语言程序的编译和运行,两个说法都是正确的。C语言程序需要经过编译(将源代码转换为机器码)和链接(将各个编译后的对象文件合并成可执行文件)才能运行。源程序不能直接在计算机上运行,必须先进行编译。 4. 在C语言中,合法的用户标识符不能以数字开头,也不能是保留关键字。所以,选项B中的`_01B`是非法的,因为以数字开头。 5. 选项B中的`1.234e0.4`不是一个合法的常量,因为指数部分不能包含小数点。 6. 选项C中的`i=a%11;`是不合法的,因为`%`是取余运算符,只能用于整数操作,而`a`是`double`类型。 7. 与`if(a)a++;`等价的语句是`if(a!=0)a++;`,因为非零值在条件判断中被视为真,零值被视为假。 8. 选项B错误,因为C语言的源程序如果没有main函数将无法运行,因为程序的执行总是从main函数开始。 9. switch语句中的表达式可以是任何类型,只要能和case后面的常量表达式进行比较即可,所以可以是任意合法的数值。 10. 给出的程序会先将`x`自增1变为12,然后输出,因此结果是`12`。 11. for循环`for(i=0;i=1;i++)`中,由于`i=1`是赋值操作而非条件判断,所以循环体永远不会执行,因为`i`始终为1,导致`i<1`这个条件永远不满足。 12. 给数组a中下标为4的元素读入数据的正确语句应该是`scanf("%lf", &a[4]);`,因为`a`是`double`类型数组,要用`%lf`格式符,并且`&a[4]`获取的是第5个元素的地址。 以上就是复习题21中涉及的C语言知识点的详细解析。这些题目涵盖了C语言的基础语法、控制结构、数据类型、函数调用和指针等多个方面,是学习C语言的重要练习。