2022年自学考试《C语言程序设计》习题及答案17
【1.81】已知:
struct
{int i;
char c;
float a;
}test;
则sizeof(test)的值是。
A)4 B)5 C)6 D)7
【1.82】已知:
union
{int i;
char c;
float a;
}test;
则sizeof(test)的值是。
A)4 B)5 C)6 D)7
【1.83】已知:
union u_type
{int i;
char ch;
float a;
}temp;
现在执行'temp.i=266;printf('%d',temp.ch)'的结果是。
A)266 B)256 C)10 D)1
【1.84】若有以下程序段:
struct dent
{int n;
int*m;
};
int a=1,b=2,c=3;
struct dent s[3]={{101,&a},{102,&b},{103,&c}};
struct dent*p=s;
则以下表达式中值为2的是。
A)(p++)->m B)*(p++)->m C)(*p).m D)*(++p)->m
【1.85】若有以下说明语句,则对结构变量pup中sex域的正确引用是。
struct pupil
{char name[20];
int sex;
}pup,*p;
p=&pup;
A)p.pup.sex B)p->pup.sex C)(*p).pup.sex D)(*p).sex
【参考答案】
【1.81】答案:D
【1.82】答案:A
【1.83】答案:C
注释:联合变量temp的成员是占用同一存储单元,它的长度是4个字节。266的二进制表示是100001010,存放在存储单元的低端两个字节,如下图:
高字节
0 0 0 0 0 0 0 1
低字节0 0 0 0 1 0 1 0
引用temp.ch进行输出,只取最低的第一个字节。
【1.84】答案:D
注释:由于结构指针指向了结构数组的0号元素,所以表达式(p++)->m的含义是先取出m(变量a的地址),然后指针p加1。表达式*(p++)->m的含义是先取出m的内容(变量a的值),然后指针p再加1。表达式(*p).m的含义是取出m(变量a的地址)。表达式*(++p)->m的含义是先将指针p加1,然后再取m的内容(变量b的值)。
【1.85】答案:D
热门推荐:
自考有疑问、不知道如何选择主考院校及专业、不清楚自考当地政策,点击立即了解》》
推荐阅读: