问答题
使用VC6打开考生文件夹下的源程序文件modi1.cpp,但该程序运行时有错,请改正程序中的错误,使程序输出的结果为: 1 0 注意:错误的语句在//********error********的下面,修改该语句即可。#include<iostream.h>struct struct{ union { int a; char c[4]; }; int b; //********error********}Void main(){ struct m; //********error******** m.c[0]=0; m.c[1]=0; m.c[2]=0; //********error******** m.c[3]=1; m.b=m.c[3]; cout<<m.a<<endl<<m.b<<endl;}
【正确答案】正确答案:(1)}; (2)m.c[0]=1; (3)m.c[3]=0;
【答案解析】解析:(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=0,所以c[0]=1,c[1]=c[21=c[3]=0,故第2个标识下应改为“m.c[0]=1;”。 (3)由(2)分析可知第3个标识下应改为“m.c[3]=0:”。