Time of Update: 2018-12-04
輸入:第一個字串: "This is fishsky 's Chinese site: http://www.fishsky.com.cn/cn"子串: "fishsky"輸出: "nc/nc.moc.fishsky.www//:ptth :etis esenihC s'fishsky si
Time of Update: 2018-12-04
(一)二叉樹方法:#include <stdio.h>#include <string.h>#include <malloc.h>#define maxword 100typedef struct tnode{ char ch; int count; struct tnode *lchild,*rchild;}BTree; void CreaTree(BTree* &p,char c){ if(p==NULL) { p =
Time of Update: 2018-12-04
1、無狀態與有狀態的伺服器 伺服器維護的、跟進行中的用戶端互動活動有關的資訊稱為狀態資訊。不儲存狀態資訊的伺服器稱為無狀態服務器,反之稱為具狀態服務器。 對高效率的要求,促使設計者再伺服器內儲存狀態資訊。在伺服器中儲存少量資訊可以減少客戶和伺服器之間交換報文的大小,並使得伺服器快速相應請求。從本質上講,狀態資訊能讓伺服器記住用戶端以前的請求,並在新的請求到來時計算出漸進的相應。相比之下,採用無狀態服務器在於協議的可靠性:如果報文丟失、重複、傳送失序或者用戶端的電腦崩潰並重啟,
Time of Update: 2018-12-04
(一)遞迴解/*這個函數的功能是,對字串進行判斷,從第一個字元開始,判斷其是否為空白,不為空白,則遞迴調用,對下一個判斷,直到為空白,則返回,從最裡層列印輸出,即最後一個字元列印輸出*/ void inverse(char *p) { if( *p == '/0' ) return; inverse( p+1 ); printf( "%c", *p ); } int main(int argc, char *argv[]) {
Time of Update: 2018-12-04
(一)遞迴法#include <stdio.h>#include <stdlib.h>int n,r;int count = 0;void printR(int a[]){ count++; for(int j = r-1;j>=0;j--) printf(" %d",a[j]); printf("/n");}void comb(int a[],int m,int k){ for(int i=m;i>=k;i--) { a[k-1] = i;
Time of Update: 2018-12-04
前天發表的《MFC六大關鍵技術之剖析(三)》後,就遇到不少朋友的提問。而這些問題都讓我很驚訝——不知問的是什嗎?後來我算是明白了,因為有一個朋友問:“為了動態建立對象,要幹那麼多的事情嗎?究竟怎樣才算動態建立對象?”我知道了他還沒有弄懂在MFC中動態建立的含義。在MFC的動態建立,比我們平時用new動態分配記憶體有著更深一層的意義。MFC的動態建立是在程式運行之後,在程式並未預測到將會獲得什麼樣的類名,比如程式開啟一個檔案,或接受一個來自鍵盤的字串,MFC程式能跟據你的輸入,產生一個對象。能夠完
Time of Update: 2018-12-04
字元裝置還是塊裝置的定義屬於作業系統的裝置訪問層,與實際物理裝置的特性無必然聯絡。裝置訪問層下面是驅動程式,所以只要驅動程式提供的方式,都可以。也就是說驅動程式支援stream方式,那麼就可以用這種方式訪問,驅動程式如果還支援block方式,那麼你想用哪種方式訪問都可以,典型的比如硬碟式的裸裝置,兩種都支援磁帶裝置實在是難以類比成塊裝置,就是實現了,也沒有什麼實用價值了。所以見不到用塊裝置方式訪問的磁帶裝置
Time of Update: 2018-12-04
1. C語言動態分配二維數組(1)已知第二維Code-1char (*a)[N];//指向數組的指標a = (char (*)[N])malloc(sizeof(char *) * m);printf("%d/n", sizeof(a));//4,指標printf("%d/n", sizeof(a[0]));//N,一維數組free(a);(2)已知第一維Code-2char* a[M];//指標的數組int i;for(i=0; i<M; i++)a[i] = (char
Time of Update: 2018-12-04
#include <stdio.h>#define maxsize 100#define NULLKEY -1#define DELKEY -2typedef int KeyType;typedef char* InfoType;typedef struct{ KeyType key; InfoType data; int count;} HashTable[maxsize];void InsertHT(HashTable ha,int &n,KeyType k,int
Time of Update: 2018-12-04
#include <iostream>using namespace std;const int N = 1000; //自訂大數的長度,可以根據需要調整void LongMulti(char* str1,char* str2){ int result[N] = {0}; int i,j; int str1_lenght = strlen(str1); int str2_lenght =
Time of Update: 2018-12-04
從本質上來說他們之間沒有什麼區別,因為他們在硬碟上都有一種的存放方式--二進位,但是如果要對他們有些區分的話,那可以這樣理解。我們現在的每個字元由一個或多個位元組組成,每個位元組都是用的-128—127之間的部分數值來表示的,也就是說,-128——127之間還有一些資料沒有對應任何字元的任何位元組。如果一個檔案中的每個位元組的內容都是可以表示成字元的資料,我們就可以稱這個檔案為文字檔,可見,文字檔只是二進位檔案中的一種特例,為了與文字檔相區別,人們又把除了文字檔以外的檔案稱為二進位檔案,由於很
Time of Update: 2018-12-04
Timer事件,即定時器事件,是在遊戲編程中,經常使用的一個事件。藉助它可以產生定時執行動作的效果。這篇文章,就和大家一起探討一下如何使用SetTimer()函數。 1、SetTimer定義在那裡? SetTimer表示的是定義個定時器。根據定義指定的視窗,在指定的視窗(CWnd)中實現OnTimer事件,這樣,就可以相應事件了。SetTimer有兩個函數。一個是全域的函數::SetTimer()UINT SetTimer( HWND
Time of Update: 2018-12-04
#include <iostream>using namespace std;int num=0; //全域對迭代的次數進行計數int Q[100]; //每次迭代的結果所在數組typedef struct{ int b; int s; int g;} CType;int quwei(int number,CType state[]){ number = number%1000; state[num].b = number/100; //百位 state[num].s
Time of Update: 2018-12-04
追根究底,MFC六大關鍵技術之剖析(第二部分)小李先生二、運行時類型識別(RTTI)運行時類型識別(RTTI)即是程式執行過程中知道某個對象屬於某個類,我們平時用C++編程接觸的RTTI一般是編譯器的RTTI,即是在新版本的VC++編譯器裡面選用“使能RTTI”,然後載入typeinfo.h檔案,就可以使用一個叫typeid()的運運算元,它的地位與在C++編程中的sizeof()運運算元類似的地方(包含一個標頭檔,然後就有一個熟悉好用的函數)。typdid()關鍵的地方是可以接受兩個類型的參數
Time of Update: 2018-12-04
一、排列(permutation)(1)遞迴方法 (非有序)設R={r1,r2,...,rn}是要進行排列的n個元素,Ri = R-{ri}. 集合 X 中元素的全排列記為Perm(X)。(ri)Perm(X)表示在全排列Perm(X)的每一個排列上加首碼ri得到的排列。R的全排列可歸納定義如下:當 n = 1 時, Perm(R) = (r),其中r 是集合R中唯一的元素;當 n >1 時, Perm(R)有
Time of Update: 2018-12-04
在這個世界上,有數百萬的人熱衷於軟體開發,他們有很多名字,如:軟體工程師(Software Engineer),程式員(Programmer),編碼人(Coder),開發人員(Developer)。經過一段時間後,這些人也許能夠成為一個優秀的編碼人員,他們會非常熟悉如何用電腦語言來完成自己的工作。但是,如果你要成為一個優秀的程式員,你還可以需要有幾件事你需要注意,如果你能讓下面十個條目成為你的習慣,那麼你才能真正算得上是優秀程式員。1.
Time of Update: 2018-12-04
#include <iostream>#include <iomanip>#include <fstream>using namespace std;int main(int argc, char **argv){ char buffer[256]; if(argc!=2) { cout << "Usage: readfile <filename> " <<endl;
Time of Update: 2018-12-04
1 error LNK2005: "public: int 解決:http://www.cnblogs.com/zealsoft/archive/2006/04/24/383567.aspx 編程中經常能遇到LNK2005錯誤——重複定義錯誤,其實LNK2005錯誤並不是一個很難解決的錯誤。弄清楚它形成的原因,就可以輕鬆解決它了。 造成LNK2005錯誤主要有以下幾種情況: 1.重複定義全域變數。可能存在兩種情況:
Time of Update: 2018-12-04
追根究底,剖析MFC六大關鍵技術題外話:我並不認為MFC減輕了程式員們的負擔,MFC出現的目的雖然似乎是為了讓程式員不用懂得太多就可以進行視窗編程,但本人在MFC裡徘徊了很久很久(因為那時沒有書本詳細介紹MFC的原理),毫無收穫。可能朋友們會說,怎麼一定要瞭解MFC的具體呢,“黑箱”作業不行嗎?這不是微軟的初衷嗎?不行!!!如果這樣,我寧願永遠不選擇MFC!在學電腦之前,本人學習的東西大都與藝術不無關係,小學時參加過全國書畫比賽獲銀獎。兒時的愛好就是在一張紙上隨心所欲地畫畫!MFC“黑箱”就象一
Time of Update: 2018-12-04
0. 概念解析 非同步方式——指的是發送方不等接收方響應,便接著發下個資料包的通訊方式; 同步方式——指發送方發出資料後,等收到接收方發回的響應,才發下一個資料包的通訊方式。 阻塞通訊端——是指執行此通訊端的網路調用時,直到成功才返回,否則一直阻塞在此網路調用上,比如調用recv()函數讀取網路緩衝區中的資料,如果沒有資料到達,將一直掛在recv()這個函數調用上,直到讀到一些資料,此函數調用才返回;