还剩5页未读,继续阅读
文本内容:
面试题和基础知识道题C C++10含答案题目:指针基础知识1题述描述指针数组和数组指针(指向数组的指针)的区别并举例考察点指针的基础知识答案考虑如下C指针数组,为一个指()char*q[]={xxx,xxx,xxx;q
[0]char*p[]=数组指针,为一个变量a;p
[0]时间题目内存分配lmin2:题述描述程序内存分配方式以及它们的区别(分钟)考察点编程c5基础参考答案)从静态存储区域分配内存在程序编译的时候就已经分配好,这块内1存在程序的整个运行期间都存在例如全局变量,变量static)在栈上创建在执行函数时,函数内局部变量的存储单元都可以在栈2上创建,函数执行结束时这些存储单元自动被释放栈内存分配运算内置于处理器的指令集)从堆上分配,亦称动态内存分配程序在运行的时候用或3malloc new申请任意多少的内存,程序员自己负责在何时用或释放内存free delete动态内存的生存期由程序员决定题目:读程序找错3输入读取的之间,它返每个值出现的次数,这个程序包含了几size问题【找错类】下面的程序用于读取整数,整数的范围在和从标准1个错误,请指出)QOmin#include stdlib.hInt*frequencyint sizeInt*array;Int i;获得足够的内存来容纳计数array=int*mallocsize*2;##调整指针,让它后退一个整形位置,这样就可以使用范围的下1-sizeArray-=1;#把各个元素清零Fori=0;isize;i++Array[i]=O;#计数每个值出现的次数,然后返回结果=二的返回值代表成功读入的个数Whilescanf”%d”,i1#scanfArray[i]+=1;Freearray;Return array;错误点:用字面值常量作为整型值的长度,这个值在整型值长度为个字节122的机器上能正常工作,但在字节整数机器上,实际分配的内存将只是4所需内存的一半,所以应该用sizeof从函数返回值未被检查,如果内存不足,将返回2malloc NULL把指针退到数组左边界的左边来调整下标的范围或许行得通,但它3违背了标准关于指针不能越过数组左边界的规定指针经过调整后,第一个元素的下标变成了,接着循环将错误41for地从开始在许多系统中,这个错误将破坏所使用的用于追踪0malloc堆的信息,常常导致程序崩溃数组增值前并未检查输入值是否位于合适的范围内;5如果数组应该被返回,它就不能被掉6free题目:读程序确认返回值求函数返回值,输入4x=9999;int funcintx intcountx=0;whilexcountx++;return countx;【问题】请写出该函数的返回值以及分析过程分钟参考答案解108这道题的时候,如果拿出一个二进制数来分析就会容易的多了,二实际上就是把的二进制形式的最后一个T变成0x xx-l x〃的二进制形式有多少个循环就执行多少次x1余把这两个数分别转化一下就很快了9999/256=3915,39=32+4+2+1=0010011115=Of=00001111所以,共有个,答案就是了考察点编程基础知识818c题目:实现函数请编写以下功能的函数5strndup char*strndupchar复制字符*src intn;f串返回新的指针地址最多复制个字直包括字符串结束的src n‘\01该题目的审直要点是是否检查参数的有效性I src,n;是否能正确使用内存申请函数和指针;I对于”最多复制个字节”的要求考虑是否周到I n题目:合并两个有序链接6合并两个有序升序链接typedef struct_link_tint val;struct linkt*next;}link_t;link_t*mergelink_t*lnl link_t*In2;z题目7(本题答案不全):实现子序列最大和给定一个数组,给出其中连续子序列的最大和int()unsigned intfoo int*arr,size_t len;例子数组[]中具有最大累加和的子数组为[],1211,-4,13,-5,211,-4,13其和为20;例子[]中具有最大累加和的子数组为[2:1,-3,4,-2,-1,64,-2,-1,例其和为题目(本题答案不全)字符串排序780有一个由字母(大小写)组成的字符串,要求对其排序,要求效率尽可能高且辅助空间尽可能少实现返回写入void sortchar*s;so题目(本题答案不全)字符串反转9写代码反转一个字符串,要求交换的次数和辅助空间尽量少实现()返回写入void reversechar*s;s0题目本题答案不全楼梯走法10走楼梯可以一次上级,也可以一次上两级,请问上级台阶有几种1n走法不超过要求效率尽可能高n10K,实现unsigned intcountunsigned intn;。