问答题
使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 150 200 注意:错误的语句在//*****error******的下面,修改该语句即可。提示:定义Number1为一个整型数据位长的变量。#include<iostream.h>//*****error******struct{ //*****error****** int Number1:1; int Number2;}MyStruct;void main(){ MyStruct mstr; mstr.Number1=150; mstr.Number2=15; //*****error****** int *ptr=&mstr.Number1; cout<<*ptr<<end1; *ptr=200; cout<<*ptr<<endl;}
【正确答案】正确答案:(1)typedef struct (2)int Number1:32; 或int Number1; (3)int* ptr=(int*)&mstr;
【答案解析】解析:(1)第1标识下是定义结构体,结构体定义的一般形式为: struct<结构体名> { <成员列表> }<变量名列表>; 程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1个标识下应改为“typedef struct”。 (2)第2标识下是定义Number1为一个整型数据 变量,整型数据位数为32(4字节),因此第2个标识下应改成“int Number1:32;”或“int Number1;”。 (3)ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3个标识下应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Number1,Number1也是整形,类型一致,故可通过ptr指针来改变Number1的值。