该文档是2010年10月全国高等教育自学考试的高级语言程序设计(一)试题,主要考察了C语言的基础知识和编程概念。以下是部分内容的详细解析:
1. **标识符命名规则** - 用户自定义标识符应遵循一定的规则,如不能以数字开头,不能使用C语言的保留关键字。正确答案是C项,因为它虽然包含数字,但符合C语言标识符命名规范。
2. **C语言特性** - C语言中的函数可以没有return语句,主函数通常放在程序开头,但不是强制的;程序中一行可以写多条语句,但需要使用分号隔开;一个程序可以有多个函数,但必须有一个主函数作为程序入口。
3. **运算符优先级和类型转换** - 表达式A中,`a+=(b=4)*(a=3)` 先计算括号内的表达式,然后进行赋值和算术运算;B选项语法错误;C选项中`x % (-3)`会进行取模运算,而`y**3`是幂运算;D选项将整型变量转换为浮点型。
4. **数组初始化** - 二维数组中未指定行长度时,编译器会为其填充默认值,通常是整个数组的最大可能大小。在这个例子中,由于没有指定第二维,所以缺省行长度的最小值是数组中元素个数,即4。
5. **逻辑运算符和算术运算** - `!c`取反操作符得到布尔值,与`i++`结合,`j`的值为0;`i`自增后为1。
6. **数据类型和指针** - `STRING`类型定义了一个最多容纳255个字符的数组,`s`声明为该类型的指针,表示指向STRING类型的变量。
7. **算术运算符和自加** - `X += X -= X * X`先执行减法,再执行加法,最终结果是0。
8. **算术运算符** - `i+++j`首先计算`i`的递增值,即`i+1`,然后加上`j`,这里`i`的初始值为3,`j`为3,所以结果是9。
9. **保留关键字** - C语言的保留关键字包括但不限于`auto`, `break`, `case`, `char`, `const`, `continue`, `default`, `do`, `double`, `else`, `enum`, `extern`, `float`, `for`, `goto`, `if`, `int`, `long`, `register`, `restrict`, `return`, `short`, `signed`, `sizeof`, `static`, `struct`, `switch`, `typedef`, `union`, `unsigned`, `void`, `volatile`, `while`等,`real`和`integer`不是保留关键字。
10. **逗号运算符** - 表达式`(a,b)`和`(c,10)`中,逗号运算符会分别对每个操作数求值,但不返回值,这里不会改变变量`a`和`c`的值,只是按顺序进行计算。
11. **变量定义和初始化** - A项错误在于指针`p`直接指向`a`,而不是存储`a`的地址;B项错误地将`*a`赋值给`p`,应为`*p=a`;C项正确,`p`指向`a`的地址;D项错误地将`*p`赋值给`&a`,应该是`*p=a`。
12. **递归函数** - 选项B给出了一个递归函数`fac()`用于计算阶乘,它通过递归调用自身来实现,当`n`为0或1时,返回1,否则通过循环计算阶乘。
这个文档涵盖了C语言的关键知识点,包括数据类型、运算符、表达式、函数、数组、递归以及基本的编程规则,适合自学考试的学生复习和巩固基础知识。