C程序员语言面试题学习教案

上传人:可**** 文档编号:101818398 上传时间:2022-06-05 格式:PPTX 页数:110 大小:700.21KB
返回 下载 相关 举报
C程序员语言面试题学习教案_第1页
第1页 / 共110页
C程序员语言面试题学习教案_第2页
第2页 / 共110页
C程序员语言面试题学习教案_第3页
第3页 / 共110页
点击查看更多>>
资源描述
会计学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页/共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页/共110页第十四页,编辑于星期六:四点 一分。第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页/共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页第三十七页,编辑于星期六:四点 一分。第37页/共110页第三十八页,编辑于星期六:四点 一分。第38页/共110页第三十九页,编辑于星期六:四点 一分。那么在编译期间不会报错,而在连接期间报错。第39页/共110页第四十页,编辑于星期六:四点 一分。第40页/共110页第四十一页,编辑于星期六:四点 一分。第41页/共110页第四十二页,编辑于星期六:四点 一分。是new操作符。程序在编译期对变量和函数分配内存都在栈上进行,且程序运行过程中函数调用时参数的传递也在栈上进行。第42页/共110页第四十三页,编辑于星期六:四点 一分。第43页/共110页第四十四页,编辑于星期六:四点 一分。第44页/共110页第四十五页,编辑于星期六:四点 一分。带参宏带参函数处理时间处理时间编译时编译时运行时运行时参数类型参数类型无无需定义需定义程序长度程序长度变长变长不变不变占用存储空间占用存储空间否否是是运行时间运行时间不占运行时间不占运行时间调用和返回时占调用和返回时占第45页/共110页第四十六页,编辑于星期六:四点 一分。第46页/共110页第四十七页,编辑于星期六:四点 一分。具体的值是某种具体出错信息。第47页/共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为一个实际的结构,这也许不是你想要的。第二个例子正确地定义了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、也有可能是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页第七十八页,编辑于星期六:四点 一分。第78页/共110页第七十九页,编辑于星期六:四点 一分。第79页/共110页第八十页,编辑于星期六:四点 一分。换原则,我发现有些开发者懂得极少这些东西。不管如何,这无符号整型问题的答案是输出是“6”。原因是当表达式中存在有符号类型和无符号类型时所有的数都自动转换为无符号类型。因此-20变成了一个非常大的正整数,所以该表达式计算出的结果大于6。这一点对于应当频繁用到无符号数据类型的嵌入式系统来说是丰常重要的。如果你答错了这个问题,你也就到了得不到这份工作的边缘。第80页/共110页第八十一页,编辑于星期六:四点 一分。第81页/共110页第八十二页,编辑于星期六:四点 一分。器尝试着编译下第82页/共110页第八十三页,编辑于星期六:四点 一分。第83页/共110页第八十四页,编辑于星期六:四点 一分。复制到 strDest,为什么还要char * 类型的返回值?第84页/共110页第八十五页,编辑于星期六:四点 一分。int binary_search(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; 第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; /取整 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; +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 = (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) /本趟排序未发生交换,提前终止算法 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) return 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页第九十七页,编辑于星期六:四点 一分。#include 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;(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+; return 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)char *p; int n; n=0; while(*p!=0) n+; p+; return n;第104页/共110页第一百零五页,编辑于星期六:四点 一分。output(long b,long i) printf(n%ld/%ld=809*%ld+%ld,b,i,i,b%i);main() long int a,b,i; a=809; for(i=10;i=1000&b=10000&8*i=100) output(b,i); getch();第105页/共110页第一百零六页,编辑于星期六:四点 一分。main() int a,i,aa4,t; scanf(%d,&a); aa0=a%10; aa1=a%100/10; aa2=a%1000/100; aa3=a/1000; for(i=0;i=3;i+) aai+=5; aai%=10; for(i=0;i=0;i-) printf(%d,aai); getch();第106页/共110页第一百零七页,编辑于星期六:四点 一分。main() char str120,str220,*p1,*p2; int sum=0; printf(please input two stringsn); scanf(%s%s,str1,str2); p1=str1;p2=str2; while(*p1!=0) if(*p1=*p2) while(*p1=*p2&*p2!=0) p1+; p2+; else p1+; if(*p2=0) sum+; p2=str2; printf(%d,sum); getch(); 第107页/共110页第一百零八页,编辑于星期六:四点 一分。第108页/共110页第一百零九页,编辑于星期六:四点 一分。第109页/共110页第一百一十页,编辑于星期六:四点 一分。
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!