摘要: 写一段程序,找出数组中第k大小的数,输出数所在的位置。例如{2,4,3,4,7}中,第一大的数是7,位置在4。第二大、第三大的数都是4,位置在1、3随便输出哪一个均可。函数接口为:int find_orderk(const int * narry, const int n, const int k) 要求算法复杂度不能是O(n^2) 参考答案:1#include <stdio.h>#include <stdlib.h>#include <time.h>/*************************************** 输入: n:数组元素的个数 阅读全文
posted @ 2012-06-28 20:36 byfei 阅读(1002) 评论(0) 推荐(0)
摘要: 1 #include <stdio.h> 2 #include <stdlib.h> 5 char*str1 = "ABDFLjlero我们都是saf";7 char* ToLower(char s[]) 8 { 9 static size_t i=sizeof(s); 10 11 for (i; i>=0; i--) { 12 if (s[i]>"A" && s[i]<"Z") { 13 s[i] += 26; 14 } 15 } 16 return s;}19 int A( 阅读全文
posted @ 2012-06-28 20:33 byfei 阅读(117) 评论(0) 推荐(0)
摘要: #include #include char* str1 = "ABDFLjlero我们都是saf";char* ToLower(char s[]) { static size_t i=sizeof(s); for (i; i>=0; i-... 阅读全文
posted @ 2012-06-28 20:33 byfei 阅读(54) 评论(0) 推荐(0)
摘要: #include <stdio.h>#include <string.h>#include <stdarg.h>#include <iostream>using namespace std;int strlen(char *a){if (0 == *a)return 0;elsereturn strlen(++a) + 1;}int main(void){char *p="1234567";cout<<strlen(p);return 0;}int strlen(char *a) { if(0 == *a) ret 阅读全文
posted @ 2012-06-28 20:32 byfei 阅读(183) 评论(0) 推荐(0)
摘要: 国际象棋有8×8格,每个格子可放一个棋子。皇后的规则是可以横、竖、斜移动。在一个棋盘放置8个皇后,并使它们互相无法威胁到彼此。答:以下是可执行C代码,采用非递归解法,你如果想了解皇后问题的算法的详细过程可看下面网址:http://www.cnjcw.cn/infoview/2005031720203563221270.html不过下面的代码是以列优先进行试探的,不是上面网址介绍的那样以行优先的,当然本质是一样的。#include<iostream.h>#defineQUEEN8//皇后数量intqueen[QUEEN];//下标代表所在列号,值代表所在行号,//如quee 阅读全文
posted @ 2012-06-28 20:31 byfei 阅读(305) 评论(0) 推荐(0)
摘要: #include <iostream>using namespace std;class A{public: A(){ doSth(); } virtual void doSth(){cout<<("I am A");}};class B:public A{public: virtual void doSth(){ cout<<("I am B");}};int main(){B b;return 0;}I am A#include <iostream>using namespace std;class A 阅读全文
posted @ 2012-06-28 20:29 byfei 阅读(179) 评论(0) 推荐(0)
摘要: 已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。(1)不调用C++/C 的字符串库函数,请编写函数 strcat答:VC源码:char * __cdecl strcat (char * dst, const char * src){char * cp = dst;while( *cp )cp++; /* find end of dst */while( *cp++ = *src++ ) ; /* Copy src to end of dst */return 阅读全文
posted @ 2012-06-28 20:26 byfei 阅读(580) 评论(0) 推荐(0)
摘要: 编写strcat函数 已知strcat函数的原型是char *strcat (char *strDest, const char *strSrc);其中strDest 是目的字符串,strSrc 是源字符串。(1)不调用C++/C 的字符串库函数,请编写函数 ... 阅读全文
posted @ 2012-06-28 20:26 byfei 阅读(52) 评论(0) 推荐(0)
摘要: 在某些类里声明纯虚析构函数很方便。纯虚函数将产生抽象类——不能实例化的类(即不能创建此类型的对象)。有些时候,你想使一个类成为抽象类,但刚好又没有任何纯虚函数。怎么办?因为抽象类是准备被用做基类的,基类必须要有一个虚析构函数,纯虚函数会产生抽象类,所以方法很简单:在想要成为抽象类的类里声明一个纯虚析构函数。 这里是一个例子: class awov { public: virtual ~awov() = 0; // 声明一个纯虚析构函数 }; 这个类有一个纯虚函数,所以它是抽象的,而且它有一个虚析构函数,所以不会产生析构函数问题。但这里还有一件事:必须提供纯虚析构函数的定义: ... 阅读全文
posted @ 2012-06-28 20:14 byfei 阅读(568) 评论(0) 推荐(0)
摘要: 构造函数不能是虚的。只能有虚的析构函数 阅读全文
posted @ 2012-06-28 20:08 byfei 阅读(468) 评论(0) 推荐(0)
摘要: 试题1voidtest1(){charstring[10];char*str1="0123456789";strcpy(string,str1);}试题2voidtest2(){charstring[10],str1[10];inti;for(i=0;i<10;i++){str1[i]='a';}strcpy(string,str1);}试题3voidtest3(char*str1){charstring[10];if(strlen(str1)<=10){strcpy(string,str1);}}试题4: void GetMemory( cha 阅读全文
posted @ 2012-06-28 19:46 byfei 阅读(221) 评论(0) 推荐(0)
摘要: 1. TCP连接 当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资... 阅读全文
posted @ 2012-06-28 14:12 byfei 阅读(77) 评论(0) 推荐(0)
摘要: 1. TCP连接当网络通信时采用TCP协议时,在真正的读写操作之前,server与client之间必须建立一个连接,当读写操作完成后,双方不再需要这个连接时它们可以释放这个连接,连接的建立是需要三次握手的,而释放则需要4次握手,所以说每个连接的建立都是需要资源消耗和时间消耗的经典的三次握手示意图:经典的四次握手关闭图:2. TCP短连接我们模拟一下TCP短连接的情况,client向server发起连接请求,server接到请求,然后双方建立连接。client向server发送消息,server回应client,然后一次读写就完成了,这时候双方任何一个都可以发起close操作,不过一般都是cli 阅读全文
posted @ 2012-06-28 14:11 byfei 阅读(142) 评论(0) 推荐(0)
摘要: volatile的作用: 作为指令关键字,确保本条指令不会因编译器的优化而省略,且要求每次直接读值. 简单地说就是防止编译器对代码进行优化.比如如下程序: XBYTE[2]=0x55; XBYTE[2]=0x56; XBYTE[2]=0x57; XBYTE[2]=0x58; 如果对外部硬件上述四条语句分别表示不同的操作,会产生四种不同的动作,那么编译器就不能像对待纯粹的程序那样对上述四条语句进行优化只认为XBYTE[2]=0x58;而忽略前三条语句(即只产生一条机器代码),此时编译器会逐一的进行编译并产生相应的机器代码(四条).volatile一般使用的地方 一般说来,volat... 阅读全文
posted @ 2012-06-28 11:41 byfei 阅读(193) 评论(0) 推荐(0)
摘要: 关于强制类型转换的问题,很多书都讨论过,写的最详细的是C++ 之父的《C++ 的设计和演化》。最好的解决方法就是不要使用C风格的强制类型转换,而是使用标准C++的类型转换符:static_cast, dynamic_cast。标准C++中有四个类型转换符:static_cast、dynamic_cast、reinterpret_cast、和const_cast。下面对它们一一进行介绍。static_cast用法:static_cast < type-id > ( expression )该运算符把expression转换为type-id类型,但没有运行时类型检查来保证转换的安全性。 阅读全文
posted @ 2012-06-28 11:32 byfei 阅读(400) 评论(0) 推荐(0)
摘要: #include <iostream>using namespace std;typedef struct _A{char c;int i;} A;typedef struct _B{A a;double d;} B;typedef struct _C{A a;char c;} C;int main(void){cout << sizeof(A) << endl;cout << sizeof(B) << endl;cout << sizeof(C) << endl;return 0;}816 12 阅读全文
posted @ 2012-06-28 11:22 byfei 阅读(117) 评论(0) 推荐(0)
摘要: #include <stdio.h>#include <string.h>#include <stdarg.h>#include <iostream>using namespace std;//函数原型声明,至少需要一个确定的参数,注意括号内的省略号int demo(char *msg, ...){va_list argp; // 定义保存函数参数的结构int argno = 0; // 纪录参数个数char *para; //存放取出的字符串参数va_start(argp, msg);while (1){para = va_arg( argp, 阅读全文
posted @ 2012-06-28 11:17 byfei 阅读(293) 评论(0) 推荐(0)
摘要: #include <iostream>using namespace std;struct A{A(){std::cout << "A";}};struct B: public A{B(){std::cout << "B";}};struct C{C(){std::cout << "C";}B b;A a;};int main(){C c;return 0;}ABAC 阅读全文
posted @ 2012-06-28 10:59 byfei 阅读(132) 评论(0) 推荐(0)