足球 恶意犯规:c语言试题

来源:百度文库 编辑:杭州交通信息网 时间:2024/05/02 09:47:08
【1.80】已知:
struct person
{ char name[10];
int age;
}class[10]={"LiMing",29,"ZhangHong",21,"WangFang",22};
下述表达式中,值为72的一个是____。
A) class[0]->age + class[1]->age+ class[2]->age
B) class[1].name[5]
C) person[1].name[5]
D) clase->name[5]

答案是B,请给出详细的分析过程

class[10]={"LiMing",29,"ZhangHong",21,"WangFang",22};
这是给结构体数组赋值.就是
class[0].name=”LiMing";
class[0].age=29;
class[0].name=”ZhangHong";
class[0].age=21;
class[0].name=”WangFang";
class[0].age=22;

那class[0].name[5]=H
正好是72.

A的答案是29+21+21
C的答案是错的.不能用结构体的名字.
D也是错的.classs是数组的名字(是一个常量指针,不能变.),不用这种形式.只有指针时才用->.

事实胜于雄辩!这个程序我运行过。
答案是B。因为“H”的ASCii码是72。
A语法错误。因为操作符"->"要求左端是指针,而class[0],class[1],class[2]只是数组中的元素。
C语法错误。一般类型名(person)除了计算长度外不会再对它进行操作。而是对变量操作。
D无语法错误,但是结果不对。clase->name[5]指得是"g",结果为103。操作符"->"要求左端是指针,而class是数组的名字代表地址,可以把它看作指针。但是它与指针之间是有区别的,比如指针试变量,而数组是常量。
以上都是我查阅相关书籍并且运行程序总结得出的结论。

“H”的ASCii码是72
class[1]是,"ZhangHong",21,"name[5]是“H”
不知对否
我的第一印象选a,这题真怪,现实用不着