C程序员语言面试题PPT学习教案_第1页
C程序员语言面试题PPT学习教案_第2页
C程序员语言面试题PPT学习教案_第3页
C程序员语言面试题PPT学习教案_第4页
C程序员语言面试题PPT学习教案_第5页
已阅读5页,还剩105页未读, 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、会计学1C程序员语言面试题程序员语言面试题但选题最终还是会以C语言题目为主体;2、以上公司的面试题目已成为国内中小型企业公司出题模板;3、由于本人的能力有限加上时间仓促,本课件肯定存在不足之处,恳请各位同学批评指正。第1页/共110页75)编程练习(76-100) 第2页/共110页第3页/共110页第4页/共110页第5页/共110页第6页/共110页(3)4第7页/共110页第8页/共110页第9页/共110页函数有一个整型参数并返回一个整型数;【标准答案】e)int * a10; f)int (*a)10 g)int (*a)(int); h) int (*a10)(int)第10页/共

2、110页. 的变量类型是int5, 占用20个字节. 所以它的大小是20data是一个struct, 每个变量分开占用空间. 依次为int4 + DATE20 + double8 = 32.所以结果是 20 + 32 = 52.当然.在某些16位编辑器下, int可能是2字节,那么结果是 int2 + DATE10 + double8 = 20第11页/共110页问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果,但因为越界进行内在读写而导致程序崩溃。第12页/共110页cosnt char* s=AAA;然后又因为是常量,所以对是s0的赋值操作是不合法的。第13页/共1

3、10页第14页/共110页第15页/共110页return 0;会出现什么问题?【标准答案】程序崩溃,getmemory中的malloc 不能返回动态内存, free()对str操作很危险。第16页/共110页第17页/共110页第18页/共110页第19页/共110页第20页/共110页第21页/共110页第22页/共110页第23页/共110页第24页/共110页第25页/共110页(void (*)()0 x100000然后再调用它:(void (*)()0 x100000)();第26页/共110页&(*ca | *cb) | (a0 & ba | *cb);第27页/共110页第28

4、页/共110页第29页/共110页第30页/共110页第31页/共110页里的备份。下面是volatile变量的几个例子:1). 并行设备的硬件寄存器(如:状态寄存器)2). 一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3). 多线程应用中被几个任务共享的变量第32页/共110页(typecast)为一指针是合法的。这一问题的实现方式随着个人风格不同而不同。典型的类似代码如下:int *ptr;ptr = (int *)0 x67a9;*ptr = 0 xaa55;第33页/共110页第34页/共110页第35页/共110页第36页/共110页第3

5、7页/共110页第38页/共110页那么在编译期间不会报错,而在连接期间报错。第39页/共110页第40页/共110页第41页/共110页是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。第42页/共110页第43页/共110页第44页/共110页带参宏带参函数处理时间处理时间编译时编译时运行时运行时参数类型参数类型无无需定义需定义程序长度程序长度变长变长不变不变占用存储空间占用存储空间否否是是运行时间运行时间不占运行时间不占运行时间调用和返回时占调用和返回时占第45页/共110页第46页/共110页具体的值是某种具体出错信息。第4

6、7页/共110页第48页/共110页如果要使变量在其他模块也有意义的话,需要使用extern关键字。第49页/共110页第50页/共110页第51页/共110页第52页/共110页第53页/共110页第54页/共110页第55页/共110页到栈B;(3)将栈B的栈顶元素pop出;第56页/共110页第57页/共110页第58页/共110页【参考答案】这是一个非常微妙的问题,任何人答对这个问题(正当的原因)是应当被恭喜的。答案是:typedef更好。思考下面的例子:dPS p1,p2;tPS p3,p4;第一个扩展为struct s * p1, p2;上面的代码定义p1为一个指向结构的指,p2为

7、一个实际的结构,这也许不是你想要的。第二个例子正确地定义了p3 和p4 两个指针。第59页/共110页为_foo,而 C+编译器则会产生像_foo_int_int 之类的名字。 C+提供了 C 连接交换指定符号 extern“C”来解决名字匹配问题。第60页/共110页第61页/共110页第62页/共110页第63页/共110页第64页/共110页printf(b,c,d:%d,%d,%d,b,c,d);return 0;【标准答案】10,12,120第65页/共110页第66页/共110页第67页/共110页第68页/共110页因此最终结果将会依赖于不同的编译器。执行程序的答案可能是25、也

8、有可能是36。第69页/共110页 这段代码执行有什么问题?【标准答案】死循环unsigned char /无符号字符型表示范围0255char /有符号字符型 表示范围-128127第70页/共110页第71页/共110页n【标准答案】8,10,12,14,16第72页/共110页【标准答案】16第73页/共110页 printf(Third output:%dn,x);输出?【 标准答案】12、13、13第74页/共110页第75页/共110页printf(b,c,d:%d,%d,%d,b,c,d);return 0;【标准答案】10,12,120第76页/共110页第77页/共110页第

9、78页/共110页第79页/共110页动转换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“6”。原因是当表达式中存在有符号类型和无符号类型时所有的数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。第80页/共110页第81页/共110页器尝试着编译下第82页/共110页第83页/共110页复制到 strDest,为什么还要char * 类型的返回值?第84页/共110页int binary_sea

10、rch(int* arr, int key, int n) int low = 0; int high = n - 1; int mid; while (low k) high = mid - 1; else if (arrmid k) low = mid + 1; else return mid; return -1;第85页/共110页unsigned int TestAsOne0(char log) int i; unsigned int num=0, val; for(i=0; i i; /移位 val &= 0 x01; /与1相与 if(val) num+; return num;

11、 第86页/共110页int Invert(char *str) int num=0; while(*str!=0) int digital=*str-48; num=num*10+digital; str=str+1; return num; 第87页/共110页void IntToCharChange(int num, char* pval) char strval100; int i, j; int val0 = 0; int val1 = 0; val0 = num; for(i=0; i100; i+) val1 = val0 % 10; /取余 val0 = val0 / 10;

12、/取整 strvali = val1 + 48; /数字字符 if(val0 10) i+; strvali = val0 + 48; break; for(j=0; j 0) ret = 1; else if (ret 99) return; sourcej = 0; for(i=0; ij; i+) childi = sourcej-i-1; /反序 childi = 0; 第90页/共110页int search(char *cpSource, int n, char ch) /起始地址,搜索长度,目标字符int i;for(i=0; in & *(cpSource+i) != ch;

13、+i);return i;第91页/共110页int ChildString(char*p) /自己写 char *q=p;int stringlen=0, i=0,j=1,len=0,maxlen=1; while(*q!=0) /不能用strlen,求得长度stringlen Stringlen+;q+; while( i Stringlen ) if(*(p+i)=*(p+j)&jmaxlen) /统计最大子串长度 maxlen=len+1; len=0; else len=0; i+;j+; return maxlen; 第92页/共110页t1 = t1-next;if (NULL

14、= (t2 = t2-next-next)return 0; /无环if (t1 = t2)return 1;return 0;第93页/共110页void BubbleSort(double arr, int n) int i,j; int exchange = 1; /交换标志 for(i=1;i=i;j-) /对当前无序区Ri.n自下向上扫描 if(arrj+1 arrj)/交换记录 arr0=arrj+1; /R0不是哨兵,仅做暂存单元 arrj+1=arrj; arrj=arr0; exchange=1; /发生了交换,故将交换标志置为真 if(!exchange) /本趟排序未发生

15、交换,提前终止算法 return; /endfor(外循环) 第94页/共110页/删除操作Status ListDelete_DuL(DuLinkList &L,int i,ElemType &e) if(!(p=GetElemP_DuL(L,i) return ERROR; e=p-data; p-prior-next=p-next; p-next-prior=p-pror; free(p); return OK;/插入操作Status ListInsert_DuL(DuLinkList &L,int i,ElemType &e) if(!(p=GetElemP_DuL(L,i) retu

16、rn ERROR; if(!(s=(DuLinkList)malloc(sizeof(DuLNode) return ERROR; s-data=e; s-prior=p; p- next - prior =s; p-next=s; s-next=p-next-next; return OK;第95页/共110页void reverse(test* head)test* pe = head;test* ps = head-next;while(ps) pe-next = ps-next;ps-next = head;head = ps;ps = pe-next;第96页/共110页#inclu

17、de main() int a23=1,2,3,4,5,6; int b32,i,j; printf(array a:n); for(i=0;i=1;i+) for(j=0;j=2;j+) printf(%5d,aij); bji=aij;printf(n); printf(array b:n); for(i=0;i=2;i+) for(j=0;j=1;j+) printf(%5d,bij); printf(n); 第97页/共110页#include main() char string81; int i,num=0,word=0; char c; gets(string); for(i=0

18、;(c=stringi)!=0;i+) if(c= ) word=0; else if(word=0) word=1; num+; printf(There are %d words in the linen,num);第98页/共110页void* memcpy(void* pvTo, const void* pvFrom, size_t size) assert(pvTo != NULL) & (pvFrom != NULL); byte* pbTo = pvTo; byte* pbFrom = pbFrom; while (size- 0) *pbTo+ = *pbFrom+; retu

19、rn pvTo; 第99页/共110页#include stdio.h#include conio.hmain() int i,j,k; printf(n); for(i=1;i5;i+) /*以下为三重循环*/ for(j=1;j5;j+) for (k=1;k4;c=(04);d=b&c;printf(%on%on,a,d);第101页/共110页main() int i,j; int a1010; printf(n); for(i=0;i10;i+) ai0=1; aii=1; for(i=2;i10;i+) for(j=1;ji;j+) aij=ai-1j-1+ai-1j; for(i=0;i10;i+) for(j=0;j=i;j+) printf(%5d,aij); printf(n); getch(); 第102页/共110页第103页/共110页main() int len; char *str20; printf(please input a string:n); scanf(%s,str); len=length(str); printf(the string has %d characters.,len); getch();length(p)ch

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论