C语言考试的一些有关问题!问
C语言考试的一些问题!!!急问
要考试了,请各位强人帮忙做一些题目,并解释下为什么,谢谢.
1. 【 】ER模型可以转换成关系模型。当两个实体间联系是 M:N 联系时,它通常可转换成多少各个关系模式:
A. A. 2
B. 3
C. M+N
D. M*N
2. 【】若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
A、1
B、2
C、2.0
D、2.5
3. 【 】在32位的操作系统中,下面一段语句定义了两个结构
#pragma pack(1)
typedef struct
{
char a;
int b;
}fisrtstruc;
#pragma pack(2)
typedef struct
{
char a;
int b;
}secondstruc;
则sizeof(fisrtstruc)和sizeof(secondstruc)分别为:
A. 6,8
B. 5, 6
C. 5, 8
D. 6, 5
4. 【 】在32位系统下,局部变量在堆栈上顺序排列,下面函数的执行结果为:
int func()
{
int a1;
char a2[4];
int a3;
a1 = 5;
a3 = 6;
memset(a2,0x2, 5);
return (a1+a3);
}
A. 0x8
B. 0x7
C. 0xb
D. 0x02000005
E. 0x02000006
------解决方案--------------------
2 C
3 C
------解决方案--------------------
3题选B。
#pragma pack(1) 声明按一字节对齐,所以结构体fisrtstruc在内存空间是按字节连续存储的,不存在补齐的情况。
#pragma pack(1) 声明按二字节对齐,结构体secondstruc在内存空间的存储情况是:第一个char类型的占一个字节,紧接着补齐一个字节,而他的第二个成员为int,占4字节,故最终为6字节。
------解决方案--------------------
1D,属于数据库的知识,联系是多对多的,对每个实体1可以有N个实体2对应,而一共有M个实体1,故一共有M*N个关系。
2C,除法中有浮点型的时候除后的结果也是浮点型的。
3B,#pragma pack(n)定义的是对齐方式,#pragma pack(1)就是以1字节为单位对齐,那就是本来占用的字节,sizeof(char)=1,在32位系统中sizeof(int)=4,结果就为5;,#pragma pack(2)就是以两字节对齐,本来是占用5位,不过为了对齐要空出一位。
4A,在windows系统中,栈从高地址向低地址分配,因此这个程序中栈的结果是:a1,a2[3],a2[2],a2[1],a2[0],a3(从高地址到低地址),memset(a2,0x2, 5)是将a2的5个元素都赋值为2,但是a2就4个元素,这时a1就是实际上的a[4],故a1被改为2,所以a1+a3=8.
要考试了,请各位强人帮忙做一些题目,并解释下为什么,谢谢.
1. 【 】ER模型可以转换成关系模型。当两个实体间联系是 M:N 联系时,它通常可转换成多少各个关系模式:
A. A. 2
B. 3
C. M+N
D. M*N
2. 【】若已定义x和y为double类型,则表达式:x=1,y=x+3/2的值是
A、1
B、2
C、2.0
D、2.5
3. 【 】在32位的操作系统中,下面一段语句定义了两个结构
#pragma pack(1)
typedef struct
{
char a;
int b;
}fisrtstruc;
#pragma pack(2)
typedef struct
{
char a;
int b;
}secondstruc;
则sizeof(fisrtstruc)和sizeof(secondstruc)分别为:
A. 6,8
B. 5, 6
C. 5, 8
D. 6, 5
4. 【 】在32位系统下,局部变量在堆栈上顺序排列,下面函数的执行结果为:
int func()
{
int a1;
char a2[4];
int a3;
a1 = 5;
a3 = 6;
memset(a2,0x2, 5);
return (a1+a3);
}
A. 0x8
B. 0x7
C. 0xb
D. 0x02000005
E. 0x02000006
------解决方案--------------------
2 C
3 C
------解决方案--------------------
3题选B。
#pragma pack(1) 声明按一字节对齐,所以结构体fisrtstruc在内存空间是按字节连续存储的,不存在补齐的情况。
#pragma pack(1) 声明按二字节对齐,结构体secondstruc在内存空间的存储情况是:第一个char类型的占一个字节,紧接着补齐一个字节,而他的第二个成员为int,占4字节,故最终为6字节。
------解决方案--------------------
1D,属于数据库的知识,联系是多对多的,对每个实体1可以有N个实体2对应,而一共有M个实体1,故一共有M*N个关系。
2C,除法中有浮点型的时候除后的结果也是浮点型的。
3B,#pragma pack(n)定义的是对齐方式,#pragma pack(1)就是以1字节为单位对齐,那就是本来占用的字节,sizeof(char)=1,在32位系统中sizeof(int)=4,结果就为5;,#pragma pack(2)就是以两字节对齐,本来是占用5位,不过为了对齐要空出一位。
4A,在windows系统中,栈从高地址向低地址分配,因此这个程序中栈的结果是:a1,a2[3],a2[2],a2[1],a2[0],a3(从高地址到低地址),memset(a2,0x2, 5)是将a2的5个元素都赋值为2,但是a2就4个元素,这时a1就是实际上的a[4],故a1被改为2,所以a1+a3=8.