一、程式設計題目
(1)輸入某班級學生的姓名、分數,並對分數進行降冪排列並輸出;
#include using namespace std;
struct node
;void show(node *head)
}int linklen(node *head)
return len;
}void sort(node *head)}}
}int main()
else
scanf("%s %d", name, &score);
}show(head);
sort(head);
show(head);
return 0;
}
(2)隨即產生一字串,每次產生的字串內容、長度都不同;
#include using namespace std;
int main()
printf("%x", num_dec%m);
}int todec(int num, int m)//把乙個m進製的數(這個數是用10進製表示的)轉化成十進位制的數
return dec;
}void showall(int num_dec, int m)
if(m != 8)
if(m != 10)
if(m != 16)
}int main()
(4)輸入數字,以-1為標識結束,結果儲存在a.txt中
#include using namespace std;
int main()
; while(fgets(buffer, 100, stdin))
return 0;
}
(5)給乙個字串,找出其中連續重複出現且最長的子串,例如「ababc「要求返回「ab」。請用c/c++語言寫一函式完成該演算法。
#include using namespace std;
int common(char *str1, char *str2)
return common;
}void comstr(char *str, char *result)}}
}strncpy(result, com, maxlen);
}int main()
; comstr(str, result);
cout<
(6)設x[1..n]和y[1..n]為兩個陣列每個都包含n個已排好序的數。請使用偽**給出乙個求陣列x和y中所有2n個元素的中位數的o(lgn)時間的演算法。
o(lgn)時間肯定是2分了。分析:
陣列x有n個元素,陣列y有n個元素,且都是從小到大排好的。那麼找中位數是找第(2n+1)/2個元素是哪個。
一共有2n的元素,取各自陣列中間的乙個第(n-1)/2個元素,設為xmid和ymid(下標為0到n-1),那麼在
1)n為奇數的時候,對於陣列x和陣列y有(n-1)/2個元素在第xmid和ymid之前,現在假設
a.xmid>ymid 這個時候如果兩個陣列有序的排好後,會有至少(n-1)/2*2+1(這個1為ymid) = n個元素在xmid之前也就是說,這個待尋找的中位數也在xmid之前,也就是說這個中位數不可能在x陣列xmid元素之後,所以可以排除一半x陣列中的元素。而且最多會有(n-1)/2*2 = n-1個元素在ymid之前,所以這個中位數肯定不會比ymid小,所以不會出現在y陣列ymid之前,排除一半y中的元素(同理xmid2)n為偶數的時候,也取xmid =x[(n-1)/2]
a.xmid>ymid,這個時候各自有(n-2)/2個元素在xmid和ymid元素之前,那麼如果這兩個陣列排序,會有至少(n-2)/2*2+1=n-1個元素在xmid之前,如果為偶數那麼中位數為第(2n+1)/2=n個元素,這個時候xmid至少為第n個元素,所以這個中位數也不可能出現在xmid這個元素之後。至多會有n-2個元素在ymid之前,所以中位數肯定在ymid之後。同樣排除了一半的x和y中的元素。
**如下:但是寫的有問題,在n為奇數的時候正確,在偶數的時候就不對了。二分對於邊界的判斷有點煩啊,時間問題,以後修改
#include using namespace std;
int middle(int *a1, int s1, int e1, int *a2, int s2, int e2)
int main()
; int a2 = ;
cout<二、其他部分
(1)winsock建立連線的主要實現步驟?
伺服器端:socker()建立套接字,繫結(bind)並監聽(listen),用accept()等待客戶端連線。
客戶端:socker()建立套接字,連線(connect)伺服器,連線上後使用send()和recv(),在套接字上寫讀資料,直至資料交換完畢,closesocket()關閉套接字。
伺服器端:accept()發現有客戶端連線,建立乙個新的套接字,自身重新開始等待連線。該新產生的套接字使用send()和recv()寫讀資料,直至資料交換完畢,closesocket()關閉套接字。
(2)動態連線庫的兩種方式?
呼叫乙個dll中的函式有兩種方法:
1.載入時動態鏈結(load-time dynamic linking),模組非常明確呼叫某個匯出函式,使得他們就像本地函式一樣。這需要鏈結時鏈結那些函式所在dll的導入庫,導入庫向系統提供了載入dll時所需的資訊及dll函式定位。
2.執行時動態鏈結(run-time dynamic linking),執行時可以先載入dll,dll載入後,模組在獲取dll函式的位址,然後就可以通過返回的函式指標呼叫dll函式了。如此即可避免導入庫檔案了。
(3)曹操南下攻打劉備,劉備派關羽守錦州,關羽派張飛去守城門。劉備又派諸葛亮去向孫權求援。孫權派兵攻打曹操! 請畫出uml圖(這個一開始沒看懂,以為要畫類圖什麼的,看了網上乙個人給的圖才知道,這個最適合話互動圖的順序圖了)參考如下:
朗訊筆試題目 C語言部分 zz
標 題 朗訊筆試題目 c語言部分 跳出main 函式後還能不能執行其他 不使用第三個變數,將兩個變數a,b得值互換 不准用函式 如何判斷乙個檔案是由c編譯環境還是c 編譯環境編譯完成的?不用任何條件語句求兩個整形數的最大值?不准用函式 struct student 所佔空間多大?下面是一些解法,又可...
筆試題目總結1
今天是我的第一篇部落格,有點小激動,以前羨慕大神和大牛級人物,現在我也要堅定信念朝這個行業努力啦 最近有學校的雙選會,參加了乙個公司的筆試,筆試題目很基礎,但是我還有一些做錯了,慚愧 1 考了字串和字元陣列的區別,題目大概如下 char pstr hello cout 在vc 6.0下執行結果如圖1...
微軟筆試題目(一)
1.微軟筆試題 快速求取乙個整數的7倍 乘法相對比較慢,所以快速的方法就是將這個乘法轉換成加減法和移位操作。可以將此整數先左移三位 8 然後再減去原值 x 3 x。int tmain int argc,tchar argv 快速求取乙個整數的7倍 int x 3 x x 3 x x 3 2 cout...