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

admin2021-06-10  15

问题 使用VC6打开考生文件夹下的源程序文件modi 1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
    150
    200
    注意:错误的语句在//********error********的下面,修改该语句即可。
    提示:定义Numberl为一个整型数据位长的变量。
    1    #include
    2    //******error******
    3    Struct
    4    {
    5    //******error******
    6    int Numberl:1 ;
    7    int Number2;
    8  }MyStruct ;
    9    void mein()
    10    {
    11    MyStruct mstr ;
    12    mstr.Numberl=15 0;
    13    mstr.Number2=15 ;
    14    //******error******
    15    int*ptr=&mstr.Numberl ;
    16    cout<<*ptr<    17    *ptr=200;
    18    cout<<*ptr<    19    }

选项

答案(1)typedef struct (2)int Numberl: 32 或 int Numberl; (3)int*ptr=(int*) &mstr;

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

最新回复(0)