C语言程序设计:选择题集锦

需积分: 24 13 下载量 63 浏览量 更新于2024-07-13 收藏 282KB PPT 举报
"C语言习题,包括函数调用、标识符、关键字、字符与字符串、数据类型、逻辑运算及表达式" C语言是一门强大的编程语言,它以简洁和高效著称。以下是对给定习题中涉及知识点的详细解释: 1. **函数**:在C语言中,每个函数由函数说明部分(声明)和函数体组成。函数可以互相调用,主函数(main函数)可以调用其他任何非主函数,而其他非主函数也可以相互调用。但程序的执行总是从main函数开始。 2. **函数调用**:在函数调用时,实际参数会为形式参数分配内存,实际参数和形式参数可以同名,这不会引起冲突,因为它们的作用域不同。主调函数和被调用函数可以不在同一个文件中,只要正确地包含了相应的头文件或进行了外部声明。函数间可以通过全局变量传递数据。 3. **标识符**:C语言中的标识符可以由字母、数字和下划线组成,且不能以数字开头。合法的标识符有`num_bak`,但`break`和`class+2`是非法的,因为`break`是保留关键字,`class`在某些上下文中也是保留的,而`+`不允许在标识符中。 4. **关键字**:C语言的关键字包括`switch`、`case`和`default`等,但`begin`不是C语言的关键字。 5. **键盘符号和转义字符**:键盘符号是指可以直接在键盘上输入的字符。`\n`、`\t`、`\b`是转义字符,分别代表换行、制表符和退格。`074`不是一个转义字符,因为它不是一个标准的八进制转义序列。 6. **字符串常量**:字符串常量通常由双引号包围,例如`"ABC"`。单引号用于表示字符常量,如`'abc'`。在内存中,`'\n'`占用一个字节,表示换行。 7. **字符串长度**:字符串`"xyz"`在内存中占用4个字节,包括结束的空字符`\0`。 8. **长整型常数**:以`L`或`l`结尾的数字表示长整型,如`0L`。 9. **数据类型与存储**:`char`类型的变量在内存中存储ASCII代码值。 10. **逻辑运算**:逻辑运算符`||`和`&&`具有短路特性。表达式`(m = a == b) || (n = c == d)`如果`a == b`为真,则`m`为1,后续的`n = c == d`不会执行,因此`n`保持为0,结果是`m = 1, n = 0`。 11. **算术运算**:`b = a / 2`将使`b`等于2.5,`b = 6 - (--a)`在`a`减1后变为`b = 6 - 4`,即`b = 2`。 12. **逗号运算符**:`x = (a = 3, b = a--)`将先执行`a = 3`,然后`b = a--`,所以`b`最终为3,`a`为2,`x`为3。 13. **逻辑与运算**:`(m = a > b) && (n = a > b)`,如果`a`、`b`都是1,`a > b`为假,所以`m`和`n`都为0。 14. **复合赋值运算**:`a += a - a * a`首先执行`a * a`得到9,然后`a - 9`得到-6,最后`a += -6`,`a`的值变为-3。 15. **运算符优先级**:在`<=`, `=`,`%`, `&&`中,最高优先级是`%`(取模运算符)。 16. **后缀递减运算符**:`i---i`在某些编译器下可能会导致错误,因为两个递减操作没有明确的顺序。 17. **表达式求值**:`a+++b+++c++`的求值顺序取决于编译器,可能的结果不唯一,但表达式本身在某些情况下可能导致未定义行为。 18. **浮点型表达式**:`x=1, y=x+3`,`x`会被赋值为1,然后`y`会等于`1 + 3`,即`4`。 这些是C语言的基础概念,熟练掌握它们对于理解和编写C程序至关重要。通过练习和理解这些习题,可以加深对C语言的理解和运用。