-
试题
选择题
1
、以下程序的输出结果是:
2
0
rn
正确值
2 0
r
转义符:回车,
n
转义符:
换行
#include <>
int
main()
{
int n = 4;
while (n--)
{
printf(
}
printf(
return 0;
}
2
、设有以下宏定义:
#define N 4
#define Y(n) ((N+1)*n)
则执行语句:
Y(5+1)
为:
< br> 26
3
、
enum ENUM_A
{
x1,
y1,
z1 = 5,
如果
#define Y(n) ((N+1)*(n))
则
Y(5+1)
为
30
a1,
b1
};
enum ENUM_A
enumA = y1;
enum ENUM_A
enumB = b1;
请问
enu
mA
和
enumB
的值是多少
1 7
x1=0,y1=1,a1=6,b1=7
4
、若有函数
max(a,b)
,并且函数指针变量
p
已经指向函数,当调用该函数时正确的
调用方
法是:
(*p)(,)
5
、对栈
S
进行下列操作:
push(1),
push(5), pop(), push(2), pop(), pop(),
则此时栈
顶元素是:
NULL
6
、在一个
32
位的操作系统中,设<
/p>
void *p = malloc
(
1
00
)
,请问
sizeof
(
p
)的结果是:
4
p>
7
、若已定义
: int a[9],
*p = a;
并在以后的语句中未改变
p
的值,不能表示
a[1]
地址的
表
达式是:
C
a
的值不能改变
A
)
p+1 B)a+1
C) a++ D) ++p
8
、设有如下定义:
unsigned long plArray[] =
{6,7,8,9,10};
unsigned long
*pulPtr;
则下列程序段的输出结果是什么
D
pulPtr = plArray;
*(pulPtr + 2) += 2;
printf(
A) 8, 10
B) 6, 8 C) 7, 9 D) 6, 10
9
、以下程序运行后,输出结果是什么
C
void main()
{
char *szStr
=
szStr +=
2;
printf(
return;
}
A) cde B)
p>
字符
c
的
ASCI
I
码值
C)
字符
c
的地址
D)
出错
10
、给出以下定义:
char X[] =
0
char Y[] =
{'h', 'e', 'l', 'l', 'o'};
则正确的叙述为:
C
A
)
数组<
/p>
X
和数组
Y
等价
B)
数组
< br>X
和数组
Y
的长度相同
C)
数组
X
p>
的长度大于数组
Y
的长度
< br> D)
数组
X
的长度
小于数组
Y
的长度
11
、在
3
2
位
X86
下,有下列程序
#include <>
void main()
{
union
{
int k;
char i[2];
} *s,
a;
s = &a;
s->i[0] = 0x39;
s->i[1] = 0x38;
printf(
}
输出结果是:
B
编译后的结果为
CCCC3839,
答案
A
A) 3839 B) 3938 C)
380039 D)
不可预知
12
、有如下函数定义:
unsigned long MyFunc(unsigned long
ulKey)
{
return (((ulKey & 0x000000ffUL) <<
24) |
((ulKey &
0x0000ff00UL) << 8) |
((ulKey & 0x00ff0000UL) >> 8) |
((ulKey & 0xff000000UL) >>
24));
}
则
MyFunc(0x)
的返回值是:
C
A) 0x B) 0x
C) 0x D) 0x
1
3
、
(
(a>b)a:b
)代表什么含义:
b
A)
代表
a,b
之中较小的那个值
B)
代表
a,b<
/p>
之中较大的那个值
C)
代表
a
是否比
b
大
D)
语法错误
14
、某系统总线的一个总线周期包含
3
个时钟周期,每个总线周期可以传送
32
位数据。若
总线的时钟频率为
33MHz
,
则总线带宽为多少
MB/s
B
A
)
11 B) 22 C) 33 D) 44
总线数据传输率
=
时钟频率
/
每个总线包含的时钟周期数
*
每个总线
周期传送的字节数
,
33MHZ/3*(32/8)=44M
B/S,
答案为
D
15
、如下定义,则
s
在内存中占多大空间
A
union
{
struct
{
unsigned char aa:4;
unsigned char ab:4;
} a;
unsigned char c;
unsigned char d;
}
s;
A) 1 byte B) 2byte
C) 3byte D) 4byte
16
、如下定义:
union tagAAAA
{
struct
{
char ucFirst;
short usSecond;
char ucThird;
}half_a;
long lI;
}number;
在按
1
字节对齐情况下,
sizeof(union
tagAAAA)
的大小是:
A
在按
4
字节对齐情况下,<
/p>
sizeof(union
tagAAAA)
的大小是:
D
sizeof(a)
为
8byte
,
所
以
C
A) 4byte B) 6byte C) 8byte
D) 12byte
17
、
0x
在采用
BigE
ndian
中内存的排列顺序是
A
,在采用
LittleEndian
内存中的
p>
排列顺序是
C
。
(答案从左到右内存地址依次增加)
A) 12 34 56 78 B) 34 12 78 56
C) 78 56 34 12 D) 56 78 12 34
大端系统和小端系统
18
、关于静态变量,下面说法“不
正确”的有:
A
A)
静态变量在堆栈中分配
B)
静态变量的作用域一定是局部的,例如在一个文件内或一
个函数内
C)
静态变量可分为静态局变量和静态全局部变量
D)
静态变量存在于数据段中
静态全局变量是位于数据段并且在程序开始运行的时候被加。
程序的动态的局部变量则分配在堆栈里面。
19
、下面正确的有
A
A)
在中断中,不能同步获取信号量,但是可以释放信号量
B)
在中断中,可以使用系统调用
s
leep
函数来等待一会儿
C) <
/p>
每一个进程有自己的独立地址空间,每一个线程程序也有自己的独立地址空间
(共享进
程空间)
D)
CPU
占用率为
60%
,
意思是
CPU
有
60%
的时间在运行指令
40%
的时间没有运行指令
20
、设有如下定义:
int
(*ptr)()
;则以下叙述中正确的是:
C
A) ptr
是指向一维数组的指针变量
B) p
tr
是指向
int
型数据的指针变量<
/p>
C) ptr
是指向函数的指针,该
函数返回一个
int
型数据
D) ptr
是一个函数名,该函数的返回值是指向
int
型数据的指针
21
、在
Windows95
环境下,定义数组:
int
**a[2][4
];
则数组
a
所占用的内存单元为:<
/p>
D
A
)
8
字节
B)
32
字节
C)
64
字节
D
)不确定
数组
a
中元素为
8
个指针,一个指针为
4
个字节,
8*4=32
字节,答案为
B
22
、有国际标准化组织(
ISO
)和国际电信联盟(
ITU-T
)共同提出的开放
系统互联(
OSI
)
参考模型中共有<
/p>
B
层,参考模型的最高层则为
C
层。
A) 4
B
)
7
C
)应用
D)
会话
23
、关于以太网中的
ARP
协议,描
述错误的是:
A
A)
根据
IP
地址查询其对应的
MAC
地址
B)
p>
根据
MAC
地址查询其对应的
IP
地址,便于
IP
通信<
/p>
C)
通过
A
RP
协议产生的
IP
和
MAC
地址的映射,超时会淘汰
D) ARP
请求中的
MAC
地址为广播地址
2
4
、关于
TCP
、
UDP
及其上层的应用,描述错误的是:
B
A
)
TCP
协议面向连接的,
UDP
协议是面向无
连接的
B) UDP
不保证数据的可
靠传送,而文件的传递时要求必须无错传送的,因而所有基于文件
传递的应用都不能基于
UDP
,如:
TFTP
C) telnet
是基于
TCP
的终端应用,连续输入的多个字符可能会被封装到一个
T
CP
包中
D)
在同一个节点上,基于
TCP
和
U
DP
的应用端口号可以重叠
改错题
1
、请指出下面程序的错误
unsigned char i = 10;
char b = 100;
char *p;
void
f(void)
{
while(--i >= 0)
{
*(p++) = b;
}
}
while
中,比较结果永远为真,死循环
定义
< br>p
为野指针
2
、下面函数要实现打印
hello
world
的功能,请问程序中有何错误
void*
GetMemory()
{
char str[] =
return str;
}
void
Test()
{
char *str = NULL;
str = (char*)
GetMemory();
printf(str);
}
GetMemory
中返回局部的地址
3
、请问如下代码有什么错误
#define MAX_SIZE 1000
#define NULL 0
#define TRUE 1
#define FALSE 0
struct XXX
{
unsigned
short a;
unsigned short
b;
};
int demo(struct XXX *p, unsigned long
size)
{
struct XXX *temp;
temp=(struct
XXX*)malloc(sizeof(struct
XXX)*MAX_SIZE);
if
(
NULL == temp)
{
return
FALSE;
}
memcpy(temp, p, sizeof(struct
XXX)*size);
/*
其他操作
*/
free (temp);
return TRUE;
}
Demo
4
、如下程序用于把“
blue
”字符串返回,请指出其中的错误。
char *GetBlue()
{
char*
pcColor;
char*
pcNewColor;
pcColor =
pcNewColor =
(char*)malloc(strlen(pcColor));
strcpy(pcNewColor,
pcColor);
return pcNewColor;
}
晕,编译能通过,没找到错的地方
!
!
!
5
、请问如下程序段有什么错误
main()
{
unsigned
long i = 0, *p, *p1;
p =
(unsigned long *)malloc(10000);
p1 = p;
for(i = 0; i < 9999;
i++)
{
*p1 =
0x100;
p1++;
}
/*
其他操作
*/
free(p);
}
p1
越界访问
编程题
1
、
对称数判断问题
请编写一段程序,<
/p>
判断一个正整数是否为对称数
(对称数即左右对称的数字,
如
3
、
22
、
121
、