东大高级语言设计基础作业1:字符串操作、条件表达式与C语言特性

版权申诉
0 下载量 185 浏览量 更新于2024-08-12 收藏 22KB DOC 举报
本题是针对东北大学2022春季《高级语言程序设计基础》课程的在线平时作业第二题,主要考察了C语言的基础知识。以下是详细解析: 1. 题目涉及到了字符串操作,`strcpy` 函数用于复制一个字符串到另一个字符串。在`char s1[] = "Shenyang", s2[10], s3, s4 = "NEU_soft";`中,由于`s4`是一个带有初始值的字符数组,应将整个字符串复制到其他数组中。选项D `strcpy(s4, s1);` 正确地将`s1`的内容复制到了`s4`。 2. 想要根据数字`num`的奇偶性判断表达式的真假,选项A `num % 2 == 1` 表示num除以2余1,即奇数,因此满足要求;B `!(num % 2 == 0)` 也正确,因为`num % 2 == 0`判断偶数,取反即为奇数;C `!(num % 2)` 是奇数的否定,即偶数,不满足要求;D `num % 2` 也是判断奇偶性,选项C错误。 3. C语言编译系统处理宏命令的方式是在预处理阶段(preprocessing),即对源代码进行编译前的文本替换,而不是在编译、链接或运行时。 4. 在`while (!y)`循环中,`!y`等价于`y == 0`,因为逻辑非运算符`!`相当于取反,`y`为0时结果为真,非0为假。 5. 对二维数组`inta[2][3]`,其元素地址可以通过索引计算。`a[0][0]`是第一个元素的地址,`(a + 1)`代表数组的所有元素,`(a[1] + 2)`表示第二行的第三个元素,而`a[1] + 3`错误地多加了数组的元素长度。 6. `if(xy) z=x; x=y; y=z;`这组语句执行后,由于条件`xy`为`10 * 20`,结果为真,所以`z`被赋值为`x`的值10,然后`x`被赋值为`y`的值20,最后`y`也被赋值为`z`的新值10。因此,结果是`x=20, y=30, z=10`。 7. `fopen`函数用于打开文件,如果失败,会返回`NULL`,表示无法打开指定的文件。 8. C语言程序从`main()`函数开始执行,因此该函数通常放置在程序文件的任何位置,只要在其他所有函数调用之前即可。 9. 数组初始化语句`inta[10]={6,7,8,9,10}`中,`{}`用于指定初始值,由于数组下标从0开始,所以这5个初值依次赋给了`a[0]`至`a[4]`。 10. 关于`typedef`,选项A正确,`typedef`不能定义变量名,只能定义类型别名;B也正确,`typedef`可以用来定义新的数据类型名;C选项可能是关于`typedef`的误述,因为`typedef`确实可以用于类型定义。 这道题目涵盖了C语言的基本语法、数据结构、控制结构、文件操作以及预处理器指令等多个方面,旨在检验学生对C语言基础的理解和应用能力。
2024-09-09 上传