C++编程:找出打印M的语句

需积分: 9 3 下载量 129 浏览量 更新于2024-08-23 收藏 8.66MB PPT 举报
在C++程序设计中,谭浩强所著的教材中,有一道题目要求根据给出的结构体定义来判断能够打印出字母M的语句。首先,我们来看一下题目中的结构体`person`: ```cpp struct person { char name[9]; int age; }; ``` 然后,我们有这样一个结构体数组`class`,包含了四个`person`对象: ```cpp struct person class[10] = { {"Jone", 17}, {"Paul", 19}, {"Mary", 18}, {"Adam", 16} }; ``` 题目给出的四个输出语句是: 1. `cout << class[3].name << endl;` 2. `cout << class[3].name[1] << endl;` 3. `cout << class[2].name[1] << endl;` 4. `cout << class[2].name[0] << endl;` 分析这些语句: - 第一句会打印出`class[3]`对应的`name`字段,也就是"Mary",因为数组下标从0开始,`class[3]`对应的是第四个元素,即Mary,其名字首字符是"M"。 - 第二句`cout << class[3].name[1]`会打印出`Mary`的第二个字符,即'y',所以输出结果是'y'。 - 第三句`cout << class[2].name[1]`同样会打印出`Paul`的第二个字符,即'u',输出结果是'u'。 - 最后一句`cout << class[2].name[0]`会打印出`Paul`的第一个字符,即'P',但由于`name`数组实际上只存储了9个字符(包括空字符),所以这里输出的是字符串结束符'\0',不是"M"。 只有第一个语句`cout << class[3].name << endl;`能够打印出字母"M",因为其他三个语句分别输出的是'y', 'u', 和字符串结束符。C++语言的特点在这里体现出来,特别是数组和结构体的使用,以及字符数组的处理,包括索引和边界条件。此外,这段代码展示了C++编程中的基本元素,如结构体、数组和输出流控制,以及字符数组的访问方式。学习者可以通过这个例子理解结构化编程和数组操作在实际编程中的应用。同时,它也提示了编程时注意数组索引和数据类型的有效性,避免潜在的运行时错误。