使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为 150 200 注意:错误的语句在//******error******的下面,修改该语句即可。 提示:定义

admin2021-02-22  25

问题 使用VC++6.0打开考生文件夹下的源程序文件1.cpp,该程序运行时有错,请改正程序中的错误,使程序输出的结果为
    150
    200
    注意:错误的语句在//******error******的下面,修改该语句即可。
    提示:定义Numl为一个整型数据位长的变量。
试题程序:
#include
//********error********
struct
{
//********error********
  int Num1:1;
  int Num2:
}
MyStruct;
void main()
{
MyStruct mstr;
mstr.Num1=150:
mstr.Num2=15;
//********error********
int*ptr=&mstr.Num1;
cout<<*ptr<*ptr=200;
cout<<*ptr<}

选项

答案(1)“typedef struct”。 (2)“int Num1:32;”或“int Num1;”。 (3)“int*ptr=(int*)&mstr;”。

解析 第1处是定义结构体,结构体定义的一般形式为
struct(结构体名)
{
<成员列表>
}
    <变量名列表>;
    程序当中定义结构体名放在后面,MyStruct为结构体变量类型,相当于typedef为已有的类型定义一个新的类型,第1处应改为“typedef struct”。第2处是定义Num1为一个整型数据变量,整型数据位数为32(4字节),因此第2处应改成“intNum1:32;”或“int Num1;”。ptr为整型数据指针,mstr为MyStruct类型结构变量,两者类型不一致应该做强制类型转换,第3处应改成“int*ptr=(int*)&mstr;”,表示将mstr的地址给ptr,ptr指向MyStruct的第一个域Numl,Numl也是整形,类型一致,故可通过ptr指针来改变Num1的值。
转载请注明原文地址:https://kaotiyun.com/show/O6fp777K
0

最新回复(0)