东大22春《高级语言程序设计基础》在线作业:单选题解析

版权申诉
0 下载量 178 浏览量 更新于2024-08-12 收藏 22KB DOC 举报
"东大22春《高级语言程序设计基础》在线平时作业1-00001,涵盖了C语言的基础知识,包括字符型变量的赋值、指针与数组的关系、结构体的内存占用、宏定义的使用、字符串处理、循环控制以及二维数组的初始化等。" 在C语言中,字符型变量`ch`可以存储ASCII码值,选项A、B、C都是正确的赋值方式,但D选项`ch='a+b';`是错误的,因为这试图将两个字符相加,而C语言中字符常量之间用加号连接会产生一个整型值,而不是字符。 指针与数组的关系在第二题中有所体现。如果定义了一个整型数组`int x[10]`,并声明指针`p=x`,那么`(p+5)`将指向数组的第六个元素的地址,因此答案是C,表示数组元素x[6]的地址。 第三题考察了结构体的内存占用。结构体`struct date`包含三个整型成员,每个整型通常占4个字节,因此结构体的大小是3个整型的总和,即12字节。但由于内存对齐的原因,编译器可能会在结构体中插入额外的字节,使得其实际大小为6字节,所以输出为C,6。 第四题涉及宏定义。选项D的宏定义`#define MUL(x,y)((x)(y))`在任何情况下都不会引起二义性,因为它确保了无论`x`和`y`是什么类型,都会先计算括号内的表达式再进行乘法操作。 第五题中,`char pc[] = {"aaa", "bbb", "ccc", "ddd"}`定义的`pc`实际上是一个字符数组,`pc[0]`代表的是字符串的首字符,即'a',因此答案B正确。 第六题的for循环不会执行,因为初始条件`k=2`,但判断条件是`k==0`,这在一开始就不满足,所以循环次数为0次。 第七题中,正确初始化二维数组的语句是B,`inta[][3]={{1,2,3},{4,5,6}};`,这将创建一个2行3列的数组,并分别赋值。 第八题,浮点型变量不能直接进行类型转换赋值给另一个浮点型变量,如`y=int(5);`,这会导致编译错误,答案是B。 第九题的程序段中,`printf("%dn",(x=35,x+5));`会先执行`x=35`,然后执行`x+5`,但由于逗号运算符的存在,最后输出的是`x+5`的结果,即40,但注意题目要求的是执行后`x`的值,所以答案是B,15。 第十题的代码片段没有给出完整,因此无法直接确定执行后`y`的值。 第十一题讨论了C语言中的共用体类型数据,共用体允许在一个内存位置存储多个不同类型的数据,但同一时间只能访问其中一个成员。 这些题目涵盖了C语言的基础概念,对于初学者来说是非常好的练习,有助于巩固对变量、指针、数组、结构体、宏定义、循环控制等基础知识的理解。