C语言/C# For自定义函数c语言 将一张长为a,宽为b,面积S=1的长方形纸,每次按照当前最长边的中线对折

6张如图1的长为a宽为b(a>b)的小长方形纸片,按图2方式不重叠地放在矩形ABCD内未被覆盖的部分(两个矩形)用阴影表示.设左上角与右下角的阴影部分的面积的差为S,当BC的長度变化时按照同样的放置方式,S始终保持不变则a,b满足(  )

}

6C/C++编译器中虚表是如何完成的

7.谈谈COM的线程模型。然后讨论进程内/外组件的差别

8.谈谈IA32下的分页机制

小页(4K)两级分页模式,大页(4M)一级

9.给两个变量如何找出一个带环單链表中是什么地方出现环的?

一个递增一一个递增二,他们指向同一个接点时就是环出现的地方

10.在IA32中一共有多少种办法从用户态跳箌内核态

11.如果只想让程序有一个实例运行,不能运行两个像winamp一样,只能开一个窗口怎样实现?

用内存映射或全局原子(互斥变量)、查找窗口句柄..

FindWindow互斥,写标志到文件或注册表,共享内存. 

12.如何截取键盘的响应,让所有的‘a’变成‘b

 13ApartmentCOM中有什么用?为什么要引入

 14.存储过程是什么?有什么用有什么优点?

我的理解就是一堆sql的集合可以建立非常复杂的查询,编译运行所以运行┅次后,以后再运行速度比单独执行SQL快很多

 15Template有什么特点什么时候用?

网络编程中设计并发服务器使用多进程与 多线程,请问有什麼区别

1,进程:子进程是父进程的复制品子进程获得父进程数据空间、堆和栈的复制品。

2线程:相对与进程而言,线程是一个更加接近与执行体的概念它可以与同进程的其他线程共享数据,但拥有自己的栈空间拥有独立的执行序列。

两者都可以提高程序的并发度提高程序运行效率和响应时间。

线程和进程在使用上各有优缺点:线程执行开销小但不利于资源管理和保护;而进程正相反。同时線程适合于在SMP机器上运行,而进程则可以跨机器迁移

2.数组a[N],存放了1N-1个数其中某个数重复一次。写一个自定义函数c语言找出被重复嘚数字.时间复杂度必须为oN)自定义函数c语言原型:

3 一语句实现x是否为2的若干次幂的判断

1、总是使用不经常改动的大型代码体。

2、程序由多个模块组成所有模块都使用一组标准的包含文件和相同的编译选项。在这种情况下可以将所有包含文件预编译为一个预编译头。

char const * p//指向常量的指针指向的常量值不可以改

解答:str1,str2,str3,str4是数组变量,它们有各自的内存空间;

12. 以下代码中的两个sizeof用法有问题吗[C]

答:自定義函数c语言内的sizeof有问题。根据语法sizeof如用于数组,只能测出静态数组的大小无法检测动态分配的或外部数组大小。自定义函数c语言外的str昰一个静态定义的数组因此其大小为6,自定义函数c语言内的str实际只是一个指向字符串的指针没有任何额外的与数组相关的信息,因此sizeof莋用于上只将其当指针看一个指针为4个字节,因此返回4

一个32位的机器,该机器的指针是多少位

指针是多少位只要看地址总线的位数就行叻。80386以后的机子都是32的数据总线所以指针的位数就是4个字节了。

&a+1不是首地址+1系统会认为加一个a数组的偏移,是偏移了一个数组的大小(本例是5int

而指针加1要根据指针类型加上一定的值

不同类型的指针+1之后增加的大小不同

a,&a的地址是一样的,但意思不一样a是数组首地址,也就是a[0]的地址&a是对象(数组)首地址,a+1是数组下一元素的地址即a[1],&a+1是下一个对象的地址,即a[5].

1.请问以下代码有什么问题:

没有为str分配內存空间将会发生异常

问题出在将一个字符串复制进一个字符变量指针所指地址。虽然可以正确输出结果但因为越界进行内在读写而導致程序崩溃。

"AAA"是字符串常量s是指针,指向这个字符串常量所以声明s的时候就有问题。

然后又因为是常量所以对是s[0]的赋值操作是不匼法的。

1、写一个“标准”宏这个宏输入两个参数并返回较小的一个。

2、嵌入式系统中经常要用到无限循环你怎么用C编写死循环。

3、關键字static的作用是什么

4、关键字const有什么含意?

表示常量不可以修改的变量

5、关键字volatile有什么含意?并举出三个不同的例子

提示编译器对潒的值可能在编译器未监测到的情况下改变。

请问下列表达式哪些会被编译器禁止为什么?

*c 这是个什么东东禁止

2.交换两个变量的值,鈈使用第三个变量即a=3,b=5,交换之后a=5,b=3;

有两种解法, 一种用算术算法, 一种用^(异或)

程序崩溃,getmemory中的malloc不能返回动态内存 free()对str操作很危险

产生什么结果?为什么

长度不一样,会造成非法的OS

6.列举几种进程的同步机制并比较其优缺点。

管程会合,分布式系统

7.进程之间通信的途径

管道:以文件系统为基础

资源竞争及进程推进顺序非法

12.死锁的4个必要条件

互斥、请求保持、不可剥夺、环路

鸵鸟策略、预防策略、避免策略、檢测与解除死锁

15. 操作系统中进程调度策略有哪几种

FCFS(先来先服务),优先级时间片轮转,多级反馈

8.类的静态成员和非静态成员有何区别

類的静态成员每个类只有一个,非静态成员每个对象一个

9.纯虚自定义函数c语言如何定义使用时应注意什么?

是接口子类必须要实现

10.数組和链表的区别

数组:数据顺序存储,固定大小

连表:数据可以随机存储大小可动态改变

12.ISO的七层模型是什么?tcp/udp是属于哪一层tcp/udp有何优缺點?

TCP 服务提供了数据流传输、可靠性、有效流控制、全双工操作和多路复用技术等

TCP 不同, UDP 并不提供对 IP协议的可靠机制、流控制以及错誤恢复功能等由于 UDP 比较简单, UDP 头包含很少的字节比 TCP负载消耗少。

tcp: 提供稳定的传输服务有流量控制,缺点是包头大冗余性不好

udp: 不提供稳定的服务,包头小开销小

问自定义函数c语言既然不会被其它自定义函数c语言调用,为什么要返回1

mian中,c标准认为0表示成功非0表示錯误。具体的值是某中具体出错信息

1要对绝对地址0x100000赋值,我们可以用

那么要是想让程序跳转到绝对地址是0x100000去执行应该怎么做?

首先要將0x100000强制转换成自定义函数c语言指针,:

typedef可以看得更直观些:

2已知一个数组table,用一个宏定义求出数据的元素个数


面试题: 线程与进程的区别囷联系? 线程是否具有相同的堆栈? dll是否有独立的堆栈?

进程是死的,只是一些资源的集合真正的程序执行都是线程来完成的,程序启动的时候操作系统就帮你创建了一个主线程

每个线程有自己的堆栈。

DLL中有没有独立的堆栈这个问题不好回答,或者说这个问题本身是否有问題因为DLL中的代码是被某些线程所执行,只有线程拥有堆栈如果DLL中的代码是EXE中的线程所调用,那么这个时候是不是说这个DLL没有自己独立嘚堆栈如果DLL中的代码是由DLL自己创建的线程所执行,那么是不是说DLL有独立的堆栈

以上讲的是堆栈,如果对于堆来说每个DLL有自己的堆,所以如果是从DLL中动态分配的内存最好是从DLL中删除,如果你从DLL中分配内存然后在EXE中,或者另外一个DLL中删除很有可能导致程序崩溃

第二題,c0x10,输出的是int最高位为1,是负数所以它的值就是0x00的补码就是128,所以输出-128

这两道题都是在考察二进制向intuint转换时的最高位处理。

問输出结果是什么希望大家能说说原因,先谢谢了

free 只是释放的str指向的内存空间,它本身的值还是存在的.

所以free之后有一个好的习惯就是将str=NULL.

此时str指向空间的内存已被回收,如果输出语句之前还存在分配空间的操作的话,这段存储空间是可能被重新分配给其他变量的,

尽管这段程序确實是存在大大的问题(上面各位已经说得很清楚了),但是通常会打印出world

这是因为,进程中的内存管理一般不是由操作系统完成的洏是由库自定义函数c语言自己完成的。

当你malloc一块内存的时候管理库向操作系统申请一块空间(可能会比你申请的大一些),然后在这块涳间中记录一些管理信息(一般是在你申请的内存前面一点)并将可用内存的地址返回。但是释放内存的时候管理库通常都不会将内存还给操作系统,因此你是可以继续访问这块地址的只不过。。。。楼上都说过了,最好别这么干

sizeof()和初不初始化,没有关系;

2)下面的自定义函数c语言实现在一个数上加一个数有什么错误?请改正

当你第二次调用时得不到正确的结果,难道你写个自定义函数c語言就是为了调用一次问题就出在 static上?

所以最后一步:显示的是这4个字节的前5位,和之后的2位

因为int是有正负之分  所以:答案是-16和1

求自定义函数c语言返回值输入x=9999;

知道了这是统计9999的二进制数值中有多少个1的自定义函数c语言,且有

9×1024中含有1的个数为2

512中含有1的個数为1

256中含有1的个数为1

15中含有1的个数为4

故共有1的个数为8结果为8

用这种方法来求1的个数是很效率很高的

不必去一个一个地移位。循环次数最少

int a,b,c请写自定义函数c语言实现C=a+b ,不可以改变数据类型,如将c改为long int,关键是如何处理溢出问题

c为有符合数时, c = 100,最高1为表示c为负数,负數在计算机用补码表示所以c = -4;同理

有些信息在存储时,并不需要占用一个完整的字节而只需占几个或一个二进制位。例如在存放一个开關量时只有01两种状态, 用一位二进位即可为了节省存储空间,并使处理简便C语言又提供了一种数据结构,称为“位域”或“位段”所谓“位域”是把一个字节中的二进位划分为几个不同的区域,并说明每个区域的位数每个域有一个域名,允许在程序中按域名進行操作这样就可以把几个不同的对象用一个字节的二进制位域来表示。一、位域的定义和位域变量的说明位域定义与结构定义相仿其形式为:

其中位域列表的形式为:类型说明符 位域名:位域长度

位域变量的说明与结构变量说明的方式相同。可采用先定义后说明同時定义说明或者直接说明这三种方式。例如:

说明databs变量共占两个字节。其中位域a8位位域b2位,位域c6位对于位域的定义尚有以丅几点说明:

1. 一个位域必须存储在同一个字节中,不能跨两个字节如一个字节所剩空间不够存放另一位域时,应从下一单元起存放该位域也可以有意使某位域从下一单元开始。例如:

在这个位域定义中a占第一字节的4位,后4位填0表示不使用b从第二字节开始,占用4c占用4位。

2. 由于位域不允许跨两个字节因此位域的长度不能大于一个字节的长度,也就是说不能超过8位二进位

3. 位域可以无位域名,这时咜只用来作填充或调整位置无名的位域是不能使用的。例如:

从以上分析可以看出位域在本质上就是一种结构类型,不过其成员是按②进位分配的

二、位域的使用位域的使用和结构成员的使用相同,其一般形式为:位域变量名•位域名位域允许用各种格式输出

搞错了,昰指针类型不同,

&arr; //得到的是指向第一维为100的数组的指针

下面这个程序执行后会有什么错误或者效果:

解答:死循环加数组越界访问(C/C++不进行数組越界检查)

其二.i循环到255,循环内执行:

在第二个结构中,为保证num按四个字节对齐char后必须留出3字节的空间;同时为保证整个结构的自然對齐(这里是4字节对齐),在x后还要补齐2个字节这样就是12字节。

B.c两个c文件中使用了两个相同名字的static变量,编译的时候会不会有问题?这两個static变量会保存到哪里(栈还是堆或者其他的)?

static的全局变量表明这个变量仅在本模块中有意义,不会影响其他模块

他们都放在数据区,泹是编译器对他们的命名是不同的

如果要使变量在其他模块也有意义的话,需要使用extern关键字

理论上是这样的,首先是i在相对0的位置占8位一个字节,然后j就在相对一个字节的位置,由于一个位置的字节数是4位的倍数因此不用对齐,就放在那里了然后是a,要在3位的倍数关系的位置上因此要移一位,在15位的位置上放下目前总共是18位,折算过来是2字节2位的样子由于double8字节的,因此要在相对0要是8个芓节的位置上放下因此从18位开始到8个字节之间的位置被忽略,直接放在8字节的位置了因此,总共是16字节

第二个最后会对照是不是结構体内最大数据的倍数,不是的话会补成是最大数据的倍数

上面是基本问题,接下来是编程问题:

本人很弱这几个题也搞不定,特来求救:

1)读文件file1.txt的内容(例如):

2)输出和为一个给定整数的所有组合

5=1+45=2+3(相加的数不能重复)


第一题,注意可增长数组的应用.

兄弟,这样的題目若是做不出来实在是有些不应该,给你一个递规反向输出字符串的例子,可谓是反序的经典例程.

借签了楼上的“递规反向输出”

希望各位達人给出答案和原因谢谢拉

解答:假设在32CPU上,

你可以参考一下指针运算的细节

写一段程序找出数组中第k大小的数,输出数所在的位置例如{24347}中,第一大的数是7位置在4。第二大、第三大的数都是4位置在13随便输出哪一个均可。自定义函数c语言接口为:int

要求算法复杂度不能是O(n^2

可以先用快速排序进行排序其中用另外一个进行地址查找

代码如下,在VC++6.0运行通过给分吧^-^

3. 写出程序运行结果

// static会保存仩次结果,记住这一点剩下的自己写

// b定义后就没有赋值。

解释:指针一次移动一个int但计数为1

今天早上的面试题9道比较难,向牛人请教国内的一牛公司,坐落在北京北四环某大厦:

1、线形表ab为两个有序升序的线形表编写一程序,使两个有序线形表合并成一个有序升序线形表h

答案在 请化大学 严锐敏《数据结构第二版》第二章例题数据结构当中,这个叫做:两路归并排序

2、运用四色定理为N个局域舉行配色,颜色为1234四种另有数组adj[][N],如adj[i][j]=1则表示i区域与j区域相邻数组color[N],如color[i]=1,表示i区域的颜色为1号颜色

3、用递归算法判断数组a[N]是否为┅个递增数组。

递归的方法记录当前最大的,并且判断当前的是否比这个还大大则继续,否则返回false结束:

4、编写算法从10亿个浮点数當中,选出其中最大的10000

用外部排序,在《数据结构》书上有

《计算方法导论》在找到第n大的数的算法上加工

5、编写一unix程序防止僵尸進程的出现.


同学的4道面试题,应聘的职位是搜索引擎工程师后两道超级难,(希望大家多给一些算发)

1.给两个数组和他们的大小还有┅动态开辟的内存,求交集把交集放到动态内存dongtai,并且返回交集个数

2.单连表的建立把/'a/'--/'z/'26个字母插入到连表中,并且倒叙还要打印!

3.可怕的题目终于来了

象搜索的输入信息是一个字符串,统计300万输入信息中的最热门的前十条我们每次输入的一个字符串为不超过255byte,内存使用呮有1G,

请描述思想,写出算发(c语言)空间和时间复杂度,

4.国内的一些帖吧如baidu,有几十万个主题,假设每一个主题都有上亿的跟帖子怎麼样设计这个系统速度最好,请描述思想写出算发(c语言),空间和时间复杂度

1.简述一个Linux驱动程序的主要流程与功能。

2.请列举一个软件中时间换空间或者空间换时间的例子

6.请问一下程序将输出什么结果?

RetMenory执行完毕p资源被回收,指向未知地址返回地址,str的内容应是鈈可预测的,打印的应该是str的地址

在字符串中找出连续最长的数字串并把这个串的长度返回,并把这个最长数字串付给其中一个自定义函數c语言参数outputstr所指内存例如:"abcd1ss"的首地址传给intputstr后,自定义函数c语言将返回

不用库自定义函数c语言,C语言实现将一整型数字转化为字符串

前几忝面试有一题想不明白,请教大家!

t.b11,输出就是-1

3个都是有符号数int

求组合数: 求n个数(1....n)中k个数的组合....

1、用指针的方法,将字符串“ABCD1234efgh”前后对调显示

2、有一分数序列:1/2,1/4,1/6,1/8……用自定义函数c语言调用的方法,求此数列前20项的和

有一个数组a[1000]存放0--1000;要求每隔二个数删掉一个数到末尾时循环至开头继续进行,求最后一个被删掉的数的原始下标位置


index返回最后的下标序号

values返回最后的下标对应的值

start从第几个开始

解答:对试题2,如果面试者指出字符数组str1不能在数组内结束可以给3分;如果面试者指出strcpy(string, str1)调用使得从str1内存起复制到string内存起所复制的字节数具有鈈确定性可以给7分在此基础上指出库自定义函数c语言strcpy工作方式的给10分;

*s2)他的工作原理是,扫描s2指向的内存逐个字符付到s1所指向的内存,直到碰到/'//0/',因为str1结尾没有/'//0/'所以具有不确定性,不知道他后面还会付什么东东

做是做对了,没有抄搞比较乱

//省略判断空指针(自己保证)

苐三个code题是实现子串定位

做是做对了,没有抄搞比较乱

*(++ptr));从后往前执行,指针先++指向8,然后输出8紧接着再输出8

6、已知一个单向链表的頭,请写出删除其某一个结点的算法要求,先找到此结点然后删除。

有一个16位的整数每4位为一个数,写自定义函数c语言求他们的和

感觉应该不难,当时对题理解的不是很清楚所以写了一个自定义函数c语言,也不知道对不对

既然是16位的整数,01112进制的那么自定義函数c语言参数怎么定义呢,请大虾指教

答案:用十进制做参数,计算时按二进制考虑

/* n就是16位的数,自定义函数c语言返回它的四个部汾之和 */

1,2,....一直到n的无序数组,求排序算法,并且要求时间复杂度为O(n),空间复杂度O(1),使用交换,而且一次只能交换两个数.(华为)

1 写出程序把一个链表Φ的接点顺序倒排

2 写出程序删除链表中的所有接点

3两个字符串s,t;t字符串插入到s字符串中,s字符串有足够的空间存放t字符串

这个简单的面試题目,我选输出 no(对比的应该是指针地址吧),可在VCYESCNO

lz的呢是一个常量字符串。位于静态存储区它在程序生命期内恒定不变。如果编译器优化的话会有可能ab同时指向同一个hello的。则地址相同如果编译器没有优化,那么就是两个不同的地址则不同

写一个自定义函数c语訁,功能:完成内存之间的拷贝

公司考试这种题目主要考你编写的代码是否考虑到各种情况是否安全(不会溢出)

1、参数是指针,检查指针是否有效

2、检查复制的源目标和目的地是否为同一个若为同一个,则直接跳出

4、安全检查是否会溢出

memcpy拷贝一块内存,内存嘚大小你告诉它

华为面试题:怎么判断链表中是否有环

两个字符串,s,t;t字符串插入到s字符串中s字符串有足够的空间存放t字符串

1。编写┅个 C自定义函数c语言该自定义函数c语言在一个字符串中找到可能的最长的子字符串,且该字符串是由同一字符组成的

2。请编写一个 C自萣义函数c语言该自定义函数c语言在给定的内存区域搜索给定的字符,并返回该字符所在位置索引值


一个单向链表,不知道头节点,一个指针指向其中的一个节点问如何删除这个指针指向的节点?

将这个指针指向的next节点值copy到本节点将next指向next->next,并随后删除原next指向的节点。

这种方式和编译器中得自定义函数c语言调用关系相关即先后入栈顺序不过不同

编译器得处理不同。也是因为C标准中对这种方式说明为未定义所以

各个编译器厂商都有自己得理解,所以最后产生得结果完全不同

因为这样,所以遇见这种自定义函数c语言我们首先要考虑我们嘚编译器会如何处理

这样得自定义函数c语言,其次看自定义函数c语言得调用方式不同得调用方式,可能产生不同得

结果最后是看编译器优化。

2.写一自定义函数c语言实现删除字符串str1中含有的字符串str2.

第二个就是利用一个KMP匹配算法找到str2然后删除(用链表实现的话,便捷于数組)

/*雅虎笔试题(字符串操作)

给定字符串AB,输出AB中的最大公共子串

11.写一个自定义函数c语言比较两个字符串str1str2的大小,若相等返回0str1大於

3,1000!的未尾有几个0(用素数相乘的方法来做,如72=2*2*2*3*3;

求出1->1000,能被5整除的数的个数n1,能被25整除的数的个数n2,能被125整除的数的个数n3,

能被625整除的数的個数n4.

1. 有双向循环链表结点定义为:

有两个双向循环链表AB,知道其头指针为:pHeadA,pHeadB请写一自定义函数c语言将两链表中data值相同的结点删除

3. 编程實现:把十进制数(long)分别以二进制和十六进制形式输出,不能使用printf系列库自定义函数c语言

*x,y):第一个元素的坐标

* start:第一个元素的值

斐波拉契数列递归实现的方法如下:

请问如何不使用递归,来实现上述自定义函数c语言

现在大多数系统都是将低字位放在前面,而结构体Φ位域的申明一般是先声明高位

如果先申明的在低位则:

2、原题跟位域的存储空间分配有关,到底是从低字节分配还是从高字节分配從Dev C++VC7.1上看,都是从低字节开始分配并且连续分配,中间不空不像谭的书那样会留空位

3、原题跟编译器有关,编译器在未用堆栈空间的默认值分配上有所不同Dev C++未用空间分配为

注:PC一般采用little-endian,即高高低低但在网络传输上,一般采用big-endian即高低低高,华为是做网络的所以鈳能考虑big-endian模式,这样输出结果可能为4

}

我要回帖

更多关于 自定义函数c语言 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信