全面试题C和C++基础知识10道题含答案.docx

上传人:lao****ou 文档编号:585830 上传时间:2024-02-19 格式:DOCX 页数:7 大小:20.30KB
下载 相关 举报
全面试题C和C++基础知识10道题含答案.docx_第1页
第1页 / 共7页
全面试题C和C++基础知识10道题含答案.docx_第2页
第2页 / 共7页
全面试题C和C++基础知识10道题含答案.docx_第3页
第3页 / 共7页
全面试题C和C++基础知识10道题含答案.docx_第4页
第4页 / 共7页
全面试题C和C++基础知识10道题含答案.docx_第5页
第5页 / 共7页
亲,该文档总共7页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《全面试题C和C++基础知识10道题含答案.docx》由会员分享,可在线阅读,更多相关《全面试题C和C++基础知识10道题含答案.docx(7页珍藏版)》请在第一文库网上搜索。

1、面试题C和C+基础知识10道题含答案题目1:指针基础知识题述:描述指针数组和数组指针(指向数组的指针)的区别并举例考察点:C指针的基础知识答案:考虑如下char*q=xxx,mxxxw,xxx;指针数组,q0为一个指针char(*p)=a;数组指针,p0为一个变量时间:Imin题目2:内存分配题述:描述C程序内存分配方式以及它们的区别(5分钟)考察点:编程基础参考答案:1)从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。2 )在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自

2、动被释放。栈内存分配运算内置于处理器的指令集。3 )从堆上分配,亦称动态内存分配。程序在运行的时候用ma11oc或new申请任意多少的内存,程序员自己负责在何时用free或de1ete释放内存。动态内存的生存期由程序员决定。题目3:读程序找错问题:【找错类】下面的程序用于读取整数,整数的范围在1和从标准输入读取的size之间,它返回每个值出现的次数,这个程序包含了几个错误,请指出。(Iomin)#inc1udeInt*frequency(intsize)(Int*array;Inti;array=(int*)ma11oc(size*2);#获得足够的内存来容纳计数# 调整指针,让它后退一个整形

3、位置,这样就可以使用范围1-size的下标Array-=I;# 把各个元素清零For(i=0;isize;i+)Arrayi=0;# 计数每个值出现的次数,然后返回结果Whi1e(scanf(n%dzi)=1)#SCanf的返回值代表成功读入的个数Arrayi+=1;Free(array);Returnarray;)错误点:(1)用字面值常量2作为整型值的长度,这个值在整型值长度为2个字节的机器上能正常工作,但在4字节整数机器上,实际分配的内存将只是所需内存的一半,所以应该用Sizeof(2)从ma11oc函数返回值未被检查,如果内存不足,将返回NU11(3)把指针退到数组左边界的左边来调整下

4、标的范围或许行得通,但它违背了标准关于指针不能越过数组左边界的规定。(4)指针经过调整后,第一个元素的下标变成了1,接着for循环将错误地从0开始。在许多系统中,这个错误将破坏ma11oc所使用的用于追踪堆的信息,常常导致程序崩溃(5)数组增值前并未检查输入值是否位于合适的范围内;(6)如果数组应该被返回,它就不能被free掉题目4:读程序确认返回值求函数返回值,输入x=9999;intfunc(intx)(intcountx=0;whi1e(x)countx+;x=x&(x-1);)returncountx;)【问题】请写出该函数的返回值以及分析过程。(10分钟)参考答案:8解这道题的时候,

5、如果拿出一个二进制数来分析就会容易的多了,X=x&(X-I)实际上就是把X的二进制形式的最后一个r变成,X的二进制形式有多少个循环就执行多少次。9999/256=39余15,把这两个数分别转化一下就很快了39=32+4+2+1=0010011115=Of=00001111所以9999=0010011100001111,共有8个1,答案就是8了考察点:c编程基础知识题目5:实现Strndup函数请编写以下功能的函数:char*strndup(char*srcfintn);复制字符串src返回新的指针地址最多复制n个字节(包括字符串结束的0工该题目的审查要点是:I是否检查参数的有效性:src,n;

6、I是否能正确使用内存申请函数和指针;I对于”最多复制n个字节”的要求考虑是否周到题目6:合并两个有序链接合并两个有序(升序)链接。typedefstruct_1ink_t(intva1;structJink_t*next;)inkj;1ink_t*merge(1ink_t*In1Iinkj:*In2);题目7(本题答案不全):实现子序列最大和给定一个int数组,给出其中连续子序列的最大和unsignedintfoo(int*arrzsize_t1en);例子1:数组卜2,11,-4,13,-5,2中具有最大累加和的子数组为11,-4,13,其和为20;例子2:1,-3z4,-2,例6中具有最大累加和的子数组为4,-2,-16,其和为7o题目8(本题答案不全):字符串排序有一个由字母(大小写)组成的字符串,要求对其排序,要求效率尽可能高且辅助空间尽可能少。实现voidsort(char*s);返回写入so题目9(本题答案不全):字符串反转写代码反转一个字符串,要求交换的次数和辅助空间尽量少。实现Voidreverse(char*s);返回写入so题目10(本题答案不全):楼梯走法走楼梯可以一次上1级,也可以一次上两级,请问上n级台阶有几种走法。n不超过IOK,要求效率尽可能高。实现unsignedintcount(usignedint);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 应用文档 > 工作总结

copyright@ 2008-2022 001doc.com网站版权所有   

经营许可证编号:宁ICP备2022001085号

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



客服