该在当前源文件中说明和定义。对于可在当前源文件以外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这个头文件 static全局变量与普通的全局变量有什么区别:static全局变量只初使化一次,防止在其他文件单元中被引用; static局部变量和普通局部变量有什么区别:static局部变量只被初始化一次,下一次依据上一次结果值; static函数与普通函数有什么区别:static函数在内存中只有一份,普通函数在每个被调用中维持一份拷贝
2、程序的局部变量存在于()中,全局变量存在于()中,动态申请数据存在于( )中。
答案:栈;静态区;堆 另外还有data段和bss段
data段就是全局初始化的,已经给数据分配好空间了
bss段就是全局未初始化的,不给数据分配空间,只记录空间大小,默认指向一页0区
3、设有以下说明和定义: typedef union { long i; int k[5]; char c; } DATE;
struct data { int cat; DATE cow; double dog;} too; DATE max;
则语句 printf(\的执行结果是:__52____
答案:DATE是一个union, 变量公用空间. 里面最大的变量类型是int[5], 占用20个字节. 所以它的大小是20 data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32. 所以结果是 20 + 32 = 52. 当然...在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20 4、队列和栈有什么区别?
答案:队列先进先出,栈后进先出÷
6、已知一个单向链表的头,请写出删除其某一个结点的算法,要求,先找到此结点,然后删除。
答案:slnodetype *Delete(slnodetype *Head,int key){}中if(Head->number==key)
{ Head=Pointer->next; free(Pointer); break; } Back = Pointer; Pointer=Pointer->next; if(Pointer->number==key) { Back->next=Pointer->next; free(Pointer); break; } void delete(Node* p) { if(Head = Node) while(p) } 学会写个单链表很重要 7、请找出下面代码中的所以错误说明:以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba” 1、#include\ 2、main()
3、
{ 4、 char*src=\ 5、 char* dest=NULL; 6、 int len=strlen(src);
7、 dest=(char*)malloc(len); 8、 char* d=dest; 9、 char* s=src[len]; 10、 while(len--!=0) 11、 d++=s--;
12、 printf(\ 13、 return 0; 14、 }
答案:
还要加上#include
char* src = \ int len = strlen(src);
char* dest = (char*)malloc((len+1)*sizeof(char)); //要为\\0分配一个空间 char* d = dest;
char* s = &src[len-1]; //指向最后一个字符 while( len-- != 0 ) *d++=*s--;
*d = 0; //尾部要加\\0 printf(\
free(dest);// 使用完,应当释放空间,以免造成内存汇泄露 哦,这个也要释放 return 0; }
华为笔试题(3) 2006-09-29 19:41
一、判断题(对的写T,错的写F并说明原因,每小题4分,共20分)
1、有数组定义int a[2][2]={{1},{2,3}};则a[0][1]的值为0。( 正确 ) 2、int (*ptr) (),则ptr是一维数组的名字。(错误 int (*ptr) ();定义一个指向函数的指针变量)
3、指针在任何情况下都可进行>, <,>=, <=,==运算。( 错误 ) 4、switch(c) 语句中c可以是int ,long,char ,float ,unsigned int 类型。( 错,不能用实形,swith中不能用float型的 ) 二、填空题(共30分)
1、在windows下,写出运行结果,每空2分,共10分。
char str[ ]= "Hello"; char *p=str; int n=10;
sizeof(str)=( 6 ) sizeof(p)=( 4 ) sizeof(n)=( 4 ) sizeof(str)=( 4 )
答案:6,4,4,4, 具体解释请参看我的空间里的“C/C++程序员应聘试题剖析” 2、
void getmemory(char **p, int num) {
*p=(char *) malloc(num); }
void test(void) {
char *str=NULL;
getmemory(&str,100); strcpy(str,"hello"); printf(str); }
运行test函数有什么结果?( )10分
答案:输出hello,但是发生内存泄漏。 和第一我没看出来的错误遥相呼应啊
三、编程题(第一小题20,第二小题30分) 1、 不使用库函数,编写函数int strcmp(char 不等返回-1; 答案:
一、int strcmp(char*source, char *dest) {
assert((source!=NULL)&&(dest!=NULL)); int i,j;
for(i=0; source[i]==dest[i]; i++) {
if(source[i]=='\\0' && dest[i]=='\\0') return 0;
else
return -1;
}
相等返回0,
*source, char *dest) }
答案:
二、 int strcmp(char *source, char *dest)
{
while ( (*source != '\\0') && (*source == *dest)) {
source++; dest++; }
return ( (*source) - (*dest) ) ? -1 : 0; }
2、 写一函数int fun(char *p)判断一字符串是否为回文,是返回1,不是返回0,出错返回-1 答案:一、
int fun(char *p) {
if(p==NULL) return -1; else {
int length = 0; int i = 0; int judge = 1;
length = strlen(p);
for(i=0; i { if(p[i]!=p[length-1-i]) judge = 0; break; } if(judge == 0) return 0; else return 1; } } 答案:二、 int fun(char *p) { int len = strlen(p) - 1; char *q = p + len; if (!p) return -1; while (p < q) { if ((*p++) != (*q--)) return 0; } return 1; } 华为笔试网络题(3) 2006-09-30 12:48 1.在OSI 7 层模型中,网络层的功能有( ) A.确保数据的传送正确无误 B.确定数据包如何转发与路由 C.在信道上传送比特流 D.纠错与流控 2.FDDI 使用的是___局域网技术。( ) A.以太网; B.快速以太网; C.令牌环; D.令牌总线。 3.下面那种LAN 是应用CSMA/CD协议的() A.令牌环 B.FDDI C.ETHERNET D.NOVELL 4.TCP 和UDP 协议的相似之处是 ( ) A.面向连接的协议 B.面向非连接的协议 C.传输层协议 D.以上均不对 5.应用程序PING 发出的是___报文.( ) A.TCP 请求报文。 B.TCP 应答报文。 C.ICMP 请求报文。 D.ICMP 应答报文。 发送ping的是什么报文? 6.以下说法错误的是(多) ( ) A.中继器是工作在物理层的设备 B.集线器和以太网交换机工作在数据连路层 C.路由器是工作在网络层的设备 D.桥能隔离网络层广播 7.当桥接收的分组的目的MAC地址在桥的映射表中没有对应的表项时,采取的策略是( ) A.丢掉该分组 B.将该分组分片 C.向其他端口广播该分组 D.以上答案均不对 8.LAN Switch 在网络层次模型中的地位( ) A.物理层 B.链路层 C.网络层 D.以上都不是 9.小于___的TCP/UDP端口号已保留与现有服务一一对应,此数字以上的端口号可自由分配。( ) A.199 B.100 C.1024 D.2048 10.当一台主机从一个网络移到另一个网络时,以下说法正确的是 ( ) A.必须改变它的IP 地址和MAC 地址 B.必须改变它的IP 地址,但不需改动MAC 地址 C.必须改变它的MAC 地址,但不需改动IP 地址 D.MAC 地址.IP 地址都不需改动 答案:1.B; 2.C; 3.C; 4.C; 5.C; 6.BD; 7.C; 8.B; 9.C; 10.B. 华为笔试题(4) 2006-09-30 13:00 1. 找错 void test1()