36.
定義 int **a[3][4], 則變量占有的內存空間為:_____
37.
編寫一個函數,要求輸入年月日時分秒,輸出該年月日時分秒的下一秒。如輸入2004年12月31日23時59分59秒,則輸出2005年1月1日0時0分0秒。
38.寫一個函數,判斷一個int型的整數是否是2的冪,即是否可以表示成2^X的形式(不可以用循環)
我只知道是用遞推,大概寫了一下,如下:
int IsTwoPow(int s)
{
? if(s==1)return FALSE;
? s=s>>1;
? if(s>1)IsTwoPow(s);
? return (s==1)?TRUE:FALSE;//大概是這個意思,但是這一句似乎不該這么返回!
}
39 A,B從一堆玻璃球(共100個)里向外拿球,規則如下:
? (1)A先拿,然后一人一次交替著拿;
(2)每次只能拿1個或2個或4個;
(3)誰拿最后一個球,誰就是最后的失敗者;
? 問A,B誰將是失敗者?寫出你的判斷步驟。
40.已知:無序數組,折半查找,各元素值唯一。
函數原型是:Binary_Seach(int array[], int iValue, int iCount)
array是數組,在里面用折半查找的方法找等于iValue的值,找到返回1否則0,iCount是元素個數
41.統計一個字符串中字符出現的次數
42.100位以上的超大整數的加法(主要考慮數據結構和加法的實現)。
43.對如下電文:"CASTCASTSATATATASA"給出Huffman編碼。
44.int (* (*f)(int, int))(int)表示什么含義?
45.x=x+1,x+=1,x++,為這三個語句的效率排序。并說明為什么。
46.中綴表達式 A-(B+C/D)*E的后綴形式是什么?
47.struct S1
{
char c;
int i;
};
sizeof(S1) = ?
class X{
public:
X();
virtual ~X();
void myMemberFunc();
static void myStaticFunc();
virtual void myVirtualFunc();
private:
int i;
char * pstr;
char a;
}
sizeof(X) = ?
48.找出兩個字符串中最大子字符串,如"abractyeyt","dgdsaeactyey"的最大子串為"actyet"
49.有一百個整數,其中有負數,找出連續三個數之和最大的部分.
50.寫一程序實現快速排序. 假設數據輸入為一文件
快速算法描述如下
Algorithm Partition
Input: sequence a0, ..., an-1 with n elements
Output: permutation of the sequence such that all elements a0, ..., aj are less than or equal to all
elements ai, ..., an-1 (i > j)
Method:
choose the element in the middle of the sequence as comparison element x
let i = 0 and j = n-1
while ij
??? search the first element ai which is greater than or equal to x
??? search the last element aj which is less than or equal to x
??? if ij
??? exchange ai and aj
??? let i = i+1 and j = j-1
After partitioning the sequence, Quicksort treats the two parts recursively by the same procedure.
The recursion ends whenever a part consists of one element only.
51.寫一算法檢測單向鏈表中是否存在環(whether there is a loop in a link list),
要求算法復雜度(Algorithm's complexity是O(n)) 并只使用常數空間(space is O(c)).
注意,你只知道一個指向單向鏈表頭的指針。鏈表的長度是不定的,而且環出現的地方也是不定的,環有可能在頭,有可能在中間。而且要求是檢測, 不能破壞環的結構.
52.設下列函數已經通過了調試
bool Sort_Array(ArrayType * Pinputarray, ArrayType * Poutarray);
該函數在內存中排序,能把字節數最大為100M字節的ArrayType類型的數組排序。其中ArrayType是一個
預定義的數組類型(細節無關緊要),Pinputarray,Poutarray分別為排序前的指針和排序后的指針。
請用c語言的偽碼風格設計一個算法,他調用上面給出的函數完成下列從輸入到輸出的任務:
輸入:排序前的大文件,名稱為char * pinoutfilename ,其內容為用分號分隔的ArrayType類型的數組元素,可裝滿4個100M字節的數組。
輸出:排序后的大文件char * poutoutfilename。
53.用最有效率的方法算出2乘以8等於幾?
54.
1.錯誤的轉義字符是 (c )
A.'\091' B.'\\'
C.'\0' D.'\''
2.若數組名作實參而指針變量作形參,函數調用實參傳給形參的是 (d )
A.數組的長度 B.數組第一個元素的值
C.數組所有元素的值 D.數組第一個元素的地址
3.變量的指針含意是指變量的 (b )
A.值 B.地址
C.存儲 D.名字
5.某文件中定義的靜態全局變量(或稱靜態外部變量)其作用域是 (d )
A.只限某個函數 B.本文件
C.跨文件 D.不限制作用域
55.
1. 解二次方程:a*x*x+b*x+c
int Quadratic( double a,double b,double c,double& x1,double& x2);
返回值:解的個數
2. 最大公約數
DWORD Divisor( DWORD dwFirst, DWORD dwSecond );
返回值:最大公約數
3. 根據蒙特卡洛算法計算圓周率
double PI( DOWRD dwCount/*測試次數*/ );
返回值:PI
4. 無符號整數乘法,乘數為32bit,結果為64bit
提示:32bit整數分解為16bit相乘
void Multiply( DWORD dwFirst, DWORD dwSecond, DWORD& dwHigh, DWORD& dwLower );
5. 鏈表排序(從小到大)
節點定義為:
struct Node{
? int nValue;
? struct Node* pNext;
};
最后一個節點的pNext = NULL.
Node* SortChain( Node* pHead );
返回值:鏈表頭