首页 C面试题库二

C面试题库二

举报
开通vip

C面试题库二 96. struct name1{ char str; short x; int num; } struct name2{ char str; 0 1 2 3 int num; 4 5 6 7 short x; 8 9 10 11 } sizeof(struct name1)=? sizeof(struct name2)=? 8、12 97. 读文件file1...

C面试题库二
96. struct name1{ char str; short x; int num; } struct name2{ char str; 0 1 2 3 int num; 4 5 6 7 short x; 8 9 10 11 } sizeof(struct name1)=? sizeof(struct name2)=? 8、12 97. 读文件file1.txt的内容(例如): 12 34 56 输出到file2.txt: 56 34 12 (逆序) 2)输出和为一个给定整数的所有组合 例如n=5 5=1+4;5=2+3(相加的数不能重复) 则输出 1,4;2,3。 注意可增长数组的应用. #include #include int main(void) { int MAX = 10; int *a = (int *)malloc(MAX * sizeof(int)); int *b; Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. FILE *fp1; FILE *fp2; fp1 = fopen("a.txt","r"); if(fp1 == NULL) {printf("error1"); exit(-1); } fp2 = fopen("b.txt","w"); if(fp2 == NULL) {printf("error2"); exit(-1); } int i = 0; int j = 0; while(fscanf(fp1,"%d",&a[i]) != EOF) { i++; j++; if(i >= MAX) { MAX = 2 * MAX; b = (int*)realloc(a,MAX * sizeof(int)); if(b == NULL) { printf("error3"); exit(-1); } a = b; } } for(;--j >= 0;) fprintf(fp2,"%d\n",a[j]); fclose(fp1); fclose(fp2); return 0; } 98. 一个递规反向输出字符串的例子,经典例程. Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. void inverse(char *p) { if( *p = = '\0' ) return; inverse( p+1 ); printf( "%c", *p ); } int main(int argc, char *argv[]) { inverse("abc\0"); return 0; } 1. p -> a 2. p -> b 3. p -> c 4. 99. 用递归算法判断数组a[N]是否为一个递增数组。 递归的方法, 记录 混凝土 养护记录下载土方回填监理旁站记录免费下载集备记录下载集备记录下载集备记录下载 当前最大的,并且判断当前的是否比这个还大,大则继续, 否则返回false结束: bool fun( int a[], int n ) { if( n= =1 ) return true; if( n= =2 ) return a[n-1] >= a[n-2]; return ( a[n-1] >= a[n-2] ) && fun( a,n-1); } a[5] = {0, 1, 2, 3, 4} 1. fun(a, 5); 4. fun(a, 4) 3. fun(a, 3) 4, fun(a, 2) 100. 什么是可重入性? 可重入(reentrant)函数可以由多于一个任务并发使用,而不必担心数据 错误。相反,不可重入(non-reentrant)函数不能由超过一个任务所共享,除 非能确保函数的互斥(或者使用信号量,或者在代码的关键部分禁用中断)。可 重入函数可以在任意时刻被中断,稍后再继续运行,不会丢失数据。可重入函 数要么使用本地变量,要么在使用全局变量时保护自己的数据。 可重入函数: 不为连续的调用持有静态数据。 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 不返回指向静态数据的指针;所有数据都由函数的调用者提供。 使用本地数据,或者通过制作全局数据的本地拷贝来保护全局数据。 如果必须访问全局变量,记住利用互斥信号量来保护全局变量。 绝不调用任何不可重入函数。 101. 给出下列程序的结果: char str1[] = "abc"; str1[0] = ‘A’; char str2[] = "abc"; const char str3[] = "abc"; str3[0] = ‘A’; const char str4[] = "abc"; const char *str5 = "abc"; str5[0] = ‘A’; const char *str6 = "abc"; char *str7 = "abc"; str7[0] = ‘A’; char *str8 = "abc"; cout < < ( str1 == str2 ) < < endl; cout < < ( str3 == str4 ) < < endl; cout < < ( str5 == str6 ) < < endl; cout < < ( str7 == str8 ) < < endl; 结果是:0 0 1 1 str1,str2,str3,str4 是数组变量,它们有各自的内存空间; 而 str5,str6,str7,str8 是指针,它们指向相同的常量区域。 102. 以下代码中的两个 sizeof 用法有问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 吗? void UpperCase( char str1[] ) // 将 str 中的小写字母转换成大写字母 { int str[5]; for( size_t i=0; i 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 示的是什么啊? 答案:int (*s[10])(int) 函数指针数组,每个指针指向一个int func(int param) 的函数。 106. 有以下表达式: int a=248; int b=4; int const c=21; const int *d=&a; int *const e=&b; int const * const f =&a; 请问下列表达式哪些会被编译器禁止?为什么? *c=32;d=&b;*d=43;e=34;e=&a; *e = 100; f=(int *)0x321f; 答案: *c 这是个什么东东,禁止; *d 说了是 const, 禁止; e = &a 说了是 const , 禁止; const *f const =&a; 禁止 107.c 和 c++中的 struct 有什么不同? 答案:c 和 c++中 struct 的主要区别是 c 中的 struct 不可以含有成员函数, 而 c++中的 struct 可以。c++中 struct 和 class 的主要区别在于默认的存取权 限不同,struct 默认为 public,而 class 默认为 private 108.类的静态成员和非静态成员有何区别? 答案:类的静态成员每个类只有一个,非静态成员每个对象一个 CLASS A { Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Int a; Static int b; } A a; A aa; Static int b = 50; a.a = 10; a.b = 20 aa.a = 30; aa.b = 40 a.a = ? a.b = ? 109.纯虚函数如何定义?使用时应注意什么? 答案:virtual void f()=0; 是接口,子类必须要实现 A -> B、C 110. int main() { int x=3; printf("%d",x); return 1; } 问函数既然不会被其它函数调用,为什么要返回 1? 答案:mian 中,c 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 认为 0 表示成功,非 0 表示错误。具体的值是某中具 体出错信息 111. 已知一个数组 table,用一个宏定义,求出数据的元素个数’ 答案: #define NTBL (sizeof(table)/sizeof(table[0])) 112. -1,2,7,28,,126 请问 28 和 126 中间那个数是什么?为什么? 答案:答案应该是 4^3-1=63 规律是 n^3-1(当 n 为偶数 0,2,4) n^3+1(当 n 为奇数 1,3,5) 113.直接链接两个信令点的一组链路称作什么? 答案:PPP 点到点连接 114. 确定模块的功能和模块的接口是在软件设计的那个队段完成的? Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 答案:概要设计阶段 115. enum string { x1, x2, x3=10, x4, x5, }x; 问 x 的取值是? X = x1; Printf(“%d”,x); X = (enum string)0; 答案:取值在 0。1。10。11。12 中的一个 116. unsigned char *p1; unsigned long *p2; p1=(unsigned char *)0x801000; p2=(unsigned long *)0x810000; 请问 p1+5= ; p2+5= ; 答案:801005;810014。不要忘记了这个是 16 进制的数字,p2 要加 20 变为 16 进制就是 14 : 117. Ethternet 链接到 Internet 用到以下那个 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 ? B A.HDLC;B.ARP;C.UDP;D.TCP;E.ID 118.属于网络层协议的是: B.C A.TCP;B.IP;C.ICMP;D.X.25 119. Windows 消息调度机制是: C A.指令队列;B.指令堆栈;C.消息队列;D.消息堆栈; 120.请问下面程序有什么错误? int a[60][250][1000],i,j,k; for(k=0;k <=1000;k++) for(j=0;j <250;j++) for(i=0;i <60;i++) a[i][j][k]=0; 答案:把循环语句内外换一下 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 121. 以下是求一个数的平方的程序,请找出错误: #define SQUARE(a) ((a)*(a)) int a=5; int b; b=SQUARE(a++); 答案:这个没有问题,s(a++),就是((a++)×(a++))唯一要注 意的就是计算后 a=7 了 122. 分析下列程序有什么问题 typedef unsigned char BYTE int examply_fun(BYTE gt_len; BYTE *gt_code) { BYTE *gt_buf; gt_buf=(BYTE *)malloc(Max_GT_Length); ...... if(gt_len>Max_GT_Length) { Free(gt_buf); return GT_Length_ERROR; } ....... } 答案:要释放内存问答题: 123. static 全局变量与普通的全局变量有什么区别?static 局部变量和普通 局部变量有什么区别?static 函数与普通函数有什么区别? 答案:全局变量(外部变量)的说明之前再冠以 static 就构成了静态的全局 变量。全局变量本身就是静态存储方式,静态全局变量当然也是静态存储方式。 这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域 是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个 源文件中都是有效的。而静态全局变量则限制了其作用域, 即只在定义该变量 的源文件内有效, 在同一源程序的其它源文件中不能使用它。由于静态全局变 量的作用域局限于一个源文件内,只能为该源文件内的函数公用,因此可以避 免在其它源文件中引起错误。从以上分析可以看出, 把局部变量改变为静态变 量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量 后是改变了它的作用域,限制了它的使用范围。 static 函数与普通函数作用域 不同。仅在本文件。只在当前源文件中使用的函数应该说明为内部函数 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. (static),内部函数应该在当前源文件中说明和定义。对于可在当前源文件以 外使用的函数,应该在一个头文件中说明,要使用这些函数的源文件要包含这 个头文件 static 全局变量与普通的全局变量有什么区别:static 全局变量只 初使化一次,防止在其他文件单元中被引用; static 局部变量和普通局部变量 有什么区别:static 局部变量只被初始化一次,下一次依据上一次结果值; static 函数与普通函数有什么区别:static 函数在内存中只有一份,普通函数 在每个被调用中维持一份拷贝 124. 判断题 1、有数组定义 int a[2][2]={{1},{2,3}};则 a[0][1]的值为 0。(正确) x x 1 0 x x 2 3 2、int (*ptr) (),则 ptr 是一维数组的名字。(错误 int (*ptr) ();定义一 个指向函数的指针变量) 3、指针在任何情况下都可进行>, <,>=, <=,==运算。( 错误 ) Int *a; char *c; a++ c++ 4、switch(c) 语句中 c 可以是 int ,long,char ,float ,unsigned int 类型。 ( 错,不能用实形 ) 125. 填空题 1、写出运行结果 char str[ ]= "Hello"; char *p=str; int n=10; sizeof(str)=( 6 ) sizeof(p)=( 4 ) sizeof(n)=( 4 ) void func(char str[100]) { ··· ··· sizeof(str)=( 4 ); } 答案:6,4,4,4, 126.不使用库函数,编写函数 int strcmp(char *source, char *dest) 相等 返回 0,不等返回-1; 答案:一、 int strcmp(char *source, char *dest) { int i,j; for(i=0; source[i]==dest[i]; i++) Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. { if(source[i]=='\0' && dest[i]=='\0') return 0; } else return -1; } 1 2 3 4 5 6 \0 1 2 3 4 5 6 7 \0 答案:二、 int strcmp(char *source, char *dest) { If ( ) {} while ( (*source != '\0') && (*source == *dest)) { source++; dest++; } return ( (*source) - (*dest) ) ? -1 : 0; } 127. 写一函数 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 =MAX_SRM) return (NULL_SRM); else return SRM_no; } Int I, a; i= 10 , a = 20, a += i; 答: 1,SRM_no 没有赋初值 2,由于 static 的声明,使该函数成为不可重入(即不可预测结果)函数, 因为 SRM_no 变量放在程序的全局存储区中,每次调用的时候还可以保持原来的 赋值。这里应该去掉 static 声明。 Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. 130. 写出程序运行结果 int sum(int a) { int c=0; static int b; b = 3; c+=1; b+=2; return(a+b+c); 8 } void main() { int I; int a=2; for(I=0;I <5;I++) { printf("%d,", sum(a)); } } 答:8,10,12,14,16 该题比较简单。只要注意 b 声明为 static 静态全局变量, 其值在下次调用时是可以保持住原来的赋值的就可以。 131. int func(int a) { int b; switch(a) { case 1: b=30; break; case 2: b=20; break; case 3: b=16; break; default: b=0; } return b; } 则 func(1)=? 答:func(1)=0,因为没有 break 语句,switch 中会一直计算到 b=0。这是提醒 我们不要忘了 break 132. int a[3]; Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. p->a[0]=0; 0x100 a[1]=1; q->a[2]=2; 0x108 int *p, *q; p=a; q=&a[2]; 则 a[q-p]=? 答:a[q-p]=a[2]=2;这题是要告诉我们指针的运算特点 133. 定义 char **a[3][4], 则变量占有的内存空间为:_____ 答:此处定义的是指向指针的指针数组,对于 32 位系统,指针占内存空间 4 字节,因此总空间为 3×4×4=48。 134.设有int a=3;则执行语句a+=a*=a+a;后 变量a的值是? a = a-a*a; a = a + a; a = a*(a+a); 答案:-12 135. Struct RegX { long bzy:1; long wrt:1; long rd:1; long cnt:4; long rsd:25; }; Sizeof(RegX)=? Struct c { Char c:3 Char b:2 Char d:5 } 答案:4 136. Char a[]=“hello\0”; Char al[7]=“hello”; Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. Char *ps=“hello”; Strlen(a)= ? Strlen(a1)= ? Strlen(ps)= ? Sizeof(a)= ? Sizeof(a1)= ? Sizeof(ps)= ? 5 5 5 ,7 7 4 137.对于下面的函数,要求打印出”hello”,子程序完全正确的是_(1)(3)_, 一定能打印出”hello”的是_(1)(3)(4)_,有错误的是__(2)(4) char *GetHellostr(void); int main(void) { char *ps; ps= GetHellostr( ); if(ps != NULL) { printf(ps); } return 0; } (1) char *GetHellostr(void) { char *ps=“hello”; return ps; } (2) char *GetHellostr(void) { char a[]=“hello”; return (char *)a; } (3) char *GetHellostr(void) { static char a[]=“hello”; return (char *)a; } (4) char *GetHellostr(void) { Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. char *ps; ps = malloc(10); if(NULL ==ps) return NULL; strcpy(ps,”hello”); return ps; } 138.下面程序分别只改到一处,就OK了,要求打印出”welcome to saif” (1) void main(void) { char str1[]=“welcome ”; char str2[]=“to ”; char str3[]=“saif ”; char str[50]; memcpy(str,str1,sizeof(str1)); memcpy(str+sizeof(str1),str2,sizeof(str2)); memcpy(str+strlen(str1)+strlen(str2), str3,sizeof(str3)); printf(str); } 答案:sizeof->strlen (2) void main(void) { char str1[]=“welcome ”; char str2[]=“to ”; char str3[]=“saif ”; char str[50]; memcpy(str,str1, strlen(str1)); memcpy(str+strlen(str1),str2, strlen(str2)); memcpy(str+strlen(str1)+strlen(str2), str3, strlen(str3)); printf(str); } 答案:strlen->sizeof 139. Struct tag Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. { short c; long b; char d; long a; } 改变结构体的排列顺序,Sizeof(tag)可能的值? 答案:11、12、16 140.找出程序中的所有错误 //分配len的长度的内存,内存地址由ptr输出 void test_malloc(char **prt, int len) { char *tmp=NULL; tmp=(char*)malloc(len); *prt=tmp; } void main(void) { char *str=“welcome to saif”; char *buf; char c=0xff; test_malloc(&buf, sizeof(str));//strlen(str)+1 if(buf ==NULL)//(NULL == buf) { return; } strcpy(buf , str); if( c==(char)0xff) { printf(“OK,str=%s”,buf); } else { printf(“OH my God!”); } free(buf); } 141. union a { Generated by Foxit PDF Creator © Foxit Software http://www.foxitsoftware.com For evaluation only. int a_int1; double a_double; int a_int2; }; typedef struct { a a1; char y; } b; 问题sizeof(b) = ? 答案:12 142. 用递归法将整数转化为符串 void convert( int n ) { int i; Char c; if ((i=n/10)!=0) convert(i); c=n%10 +’0’; cout<<” “<
本文档为【C面试题库二】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_305966
暂无简介~
格式:pdf
大小:108KB
软件:PDF阅读器
页数:18
分类:互联网
上传时间:2012-01-13
浏览量:7