
程序员笔试题
Oligay
苏嵌
展开
-
笔试题 统计字符串单词数
如何统计一行字符串中有多少单词。测出某个字符为空格则表示一个单词。如果一个字符前一个字符为空格则表示新单词开始#include#define BUFFERSIZE 1024int main(){ char string [1024]; int i, count = 0, word = 0; char c; gets (string); for (i=0; (c=str原创 2017-08-07 20:24:37 · 382 阅读 · 0 评论 -
笔试题网络编程的API及作用
1.写出网络编程的API及作用1)socket 用于建立一个socket2) bind 用于对socket进行定位或地址绑定3)listen 等待连接4)accept 接受socket 连接5)connect 用于建立socket 连接6)send 传送数据7)recv 接受数据2.四层网络模型(TCP/IP)与七层网络模型(IOS) 1)四层:网络接原创 2017-08-07 10:07:57 · 678 阅读 · 0 评论 -
关键字volatile有什么含义
一个定义为volatile的变量可能会有意想不到的改变,这样编译器就不会去假设这个变量的值了,精确的说,就是优化器在用到这个变量时必须每次都小心的重新读取这个值,而不是使用保存在寄存器里的备份。下面是volatile变量的例子:1)并行设备的寄存器;2)一个中断服务子程序中会访问到非自动变量;3)多线程应用中原创 2017-08-07 10:07:04 · 539 阅读 · 0 评论 -
重载与重写(覆盖)的区别
1.重载是指子类改写父类的方法。重载是编写一个与已有函数同名但参数表不同的方法,具体特征如下:1)方法名必须相同2)参数列表必须不相同,与参数列表顺数无关3)返回值类型可不相同2.重写是指同一函数的不同版本之间参数不同。重写是派生类重写的虚函数,具体特征如下:1)只有虚方法和抽象方法才能被重写2)相同的函数名3)相同的参数列表4)相同的返回类型原创 2017-08-07 10:06:26 · 477 阅读 · 0 评论 -
面试题求一个整数中二进制1的个数
题目:输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。分析:这是一道很基本的考查位运算的面试题。包括微软在内的很多公司都曾采用过这道题。一个很基本的想法是,我们先判断整数的最右边一位是不是1。接着把整数右移一位,原来处于右边第二位的数字现在被移到第一位了,再判断是不是1。这样每次移动一位,直到这个整数变成0为止。现在的原创 2017-08-06 22:20:48 · 321 阅读 · 0 评论 -
笔试题判断字符串是否是回文
#include #include int islevel(constchar *ptr){ int i; int found = 1;//1表示是回文,0表示不是if (ptr == NULL) //有效性检测 { return -1; } //获取字符串长度int len = strlen(ptr); for (i = 0; i 2;原创 2017-08-05 23:54:27 · 350 阅读 · 0 评论 -
编程实现选择排序
#include原创 2017-08-06 00:00:37 · 574 阅读 · 0 评论 -
编程实现冒泡排序
冒泡是最简单也很好理解的一种排序方式,大学C语言教科书就用这种方法,期末考试必考题之一。每次排序将最大的值往后排,他和选择排序相似,选择是把小的数往前压。/* 冒泡 */#include#includeint main() { int i,j,temp; int a[] = {9,8,7,6,5,4,3,2,1,0}; int len = sizeof(a)/s原创 2017-08-06 00:40:50 · 5256 阅读 · 0 评论 -
编程实现插入排序
/* 插入排序*/#includevoid insertsort(int par_array[],int array_size){ int i,j; int temp; for (i=1; i<array_size; i++) { temp = par_array[i]; for (j=i-1; j>=0; j--) { if (temp < par_array[j原创 2017-08-06 00:36:52 · 1004 阅读 · 0 评论 -
编程实现归并排序
归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路归并。归并过程为:比较a[i]和b[j]的大小,若a[i]≤b[j],则将第一个有序表中的元素a[i]复制到r[k]原创 2017-08-06 00:28:16 · 734 阅读 · 0 评论 -
编程实现快速排序
#includevoid quicksort(int a[],int left,int right){int i,j;if(left {i = left; //left、right用于限定要排序数列的范围,temp即为中心元素j = right;int temp = a[left];原创 2017-08-06 00:25:27 · 989 阅读 · 0 评论 -
编程实现统计一行字符串中大小写字母,数字的个数
直接上代码#includeint main(){ int big = 0; int small = 0; int space = 0; int number = 0; int others = 0; printf("please input a str:\n"); char a[50]; fgets(a,50,stdin); //stdin 意思是键盘输入 //get原创 2017-08-06 00:04:32 · 5263 阅读 · 0 评论 -
程序员笔试题之字符串(1)
1.完成字符串的逆序#include #include int main(){ char str,ch[]="I am from AnHui"; int i,j,len; len=strlen(ch); for(i=0,j=len-1;i<j;++i,--j) { str=ch[i]; ch[i]=ch[j]; ch[j]=str; } put原创 2017-08-03 23:49:37 · 283 阅读 · 0 评论 -
宏定义使用技巧
1.防止一个头文件被重复包含#ifndef COMDEF_H#define COMDEF_H//头文件内容#endif2.得到一个字的高位和地位字节#define WORD_LO(***) ((byte) ((word) (***) & 255))#define WORD_HI(***) ((byte) ((word) (***) >> 8))3.求最大原创 2017-08-04 00:13:49 · 391 阅读 · 0 评论 -
new/delete与malloc/free的区别
在c++中,申请内存与释放动态内存,用二者都可以,并且存储方式相同,new与malloc申请内存都在堆中,操作系统无法自动回收,需要对应的delete与free来释放内存。c语言中需要头文件,new/delete是c++运算符。对于类的对象而言,malloc/free 无法满足动态对象的要求。具体而言有以下几个区别:1)new能够自动计算需要分配的内存,而malloc2)3原创 2017-08-09 14:11:56 · 527 阅读 · 0 评论 -
一些运算的位操作
1最有效的2乘以8的方法2一般直接进行乘法操作符可以进行2与8的相乘,但这种方法并非最优,通过位移方法比较高效。CPU支持位运算且效率最高,所以操作2乘以8的最有效方法为2引申快速求一个整数的7倍或9倍。 (x(xx左移3为相当于x乘以8.再加减x就完成了7或9倍。2用位操作求两个数的平均值一般而言求平均值就是两个原创 2017-07-22 20:49:49 · 241 阅读 · 0 评论 -
字符串逆序
今天做了一道关于字符串逆序的题目,题目为输入I am a student,而输出为student a am I。这道题的思路很清楚,就是先把整个句子逆序,然后将一个一个单词逆序,这样便得到了最终结果。而在将单词逆序的时候,可以设置两个指针,一个指针依次遍历,当遍历到空格的时候,将此时的指针代表的值赋\0,然后将另一个指针传到逆序函数中,函数结束后,再赋空格。[cpp] vi原创 2017-07-23 00:33:05 · 260 阅读 · 0 评论 -
笔试题 合并两个有序链表
已知两个链表head1和head2各自有序,请把他们合并成一个链表依然有序1 3 5 7,2 4 6 8,合并 1 2 3 4 5 6 7 8代码实现如下//思路:比较两个链表中data的值按小到大重新分到新的链表中Node * Merge(Node *head1 , Node *head2) { if ( head1 == NULL) //如果原创 2017-08-07 13:02:52 · 417 阅读 · 0 评论