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

admin2015-05-30  26

问题 使用VC6打开考生文件夹下的源程序文件modil.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为:
    1
    0
    注意:错误的语句在//********error********的下面,修改该语句即可。
    1  #include
    2    struct Struct
    3  {
    4    union
    5    {
    6    int a;
    7    char c[4];
    8    };
    9    int b;
    10    //********error********
    11  }
    12  void main()
    13    {
    14    Struct m;
    15    //********error********
    16    m.c[0]=0;
    17    m.c[1]=0;
    18    m.c[2]=0;
    19    //********error********
    20    m.c[3]:1;
    21    m.b=m.c[3];
    22    cout<    23    }

选项

答案(1) }; (2)m.c[0]=1 ; (3)m.C[3]=0;

解析 程序当中定义了一个结构体Struct,Struct内含有2个成员变量:共用体和整型变量b,共用体由整型变量a和字符数组c[4]组成,int型变量32位,而c[4]刚好也是32位,因此a和字符数组c[4]存放在同一内存单元中。
    [解题思路]
    (1)第1表示在结构体定义内,结构体定义的一般形式为:
    struct<结构体名>
    {
    <成员列表>
  }<变量名列表>;
  这里定义的结构体并没有变量名列表,但是结构体定义一定是以“;”结束的,因此第1个标识下应改为“};”。
    (2)根据题目要求程序输出结果分别为“1”和“0”,即结构体变量m的成员变量a的值为1,b的值为0,又a和字符数组c[4]存放在同一段内存单元中,因此a的值可由数组c[4]决定(两者使用同一地址单元),故c[0]表示a的低8位,c[1]为a的第二个8位,c[2]为a的第三个8位,c[3]为a的最高8位,a=O,所以c[0]:l,c[1]:c[2]=c[3]=0,故第2个标识下应改为“m.c[01=1;”。
    (3)由(2)分析可知第3个标识下应改为“rn.c[3]=0;”。
转载请注明原文地址:https://kaotiyun.com/show/7PNp777K
0

最新回复(0)