1. 有一個隨機數發生器,以概率P產生0,概率(1-P)產生1,請問能否利用這個隨機數發 生器,構造出新的發生器,以1/2的概率產生0和1。請寫明結論及推理過程。
2. 一個棧的.入棧序列是A,B,C,D,E,則棧的不可能的輸出序列是( ) A. EDCBA; B. DECBA; B D,ABCDE
3. 4個足球隊打小組單循環,計分方式:勝3分平1分負0分,如果計分相同,則淨勝球 多的隊伍排名靠前,如果淨勝球還一樣,則進球多的球隊排名靠前。小組前兩名出線。問可能出線的最低分數是多少。請說明推理過程。 備註:單循環賽是指所有參加比賽的隊兩兩之間都比賽一次,最後按各隊在全部比賽中的積分,得失分率排列名次。
4. 從1到1000000的所有自然數,數字“1”一共出現了多少次?例:自然數101中,數 字“1”出現了2次,自然數1011中,數字“1”出現了3次,請寫明計算過程及結果
5. 以下代碼是把一個字元串倒序,如“abcd”倒序後變爲“dcba”。請找出下面代碼中的 所有錯誤,直接在代碼的右側空白處修改。
#include"string.h"
main()
{
char*src="hello,world";
char*dest=NULL;
int len = strlen(src);
dest = (char*)malloc(len);
char* d = dest;
char* s = src[len];
while(len--!=0)
d++ = s --;
printf("%s",dest);
return 0;
}
6. 以下代碼功能:找出一個有序(字典序)字元串數組arr種值等於字元串v的元素的符號, 如果有多個元素滿足這個條件,則返回其中序號最大的。請找出下面代碼中所有錯誤,直接在代碼右側空白處修改
Int bisearch(char**arr, int b, int e, char*v){
Int minIndex = b, maxIndex = e, midIndex;
while(minIndex
midIndex=(minIndex+maxIndex)/2;
if(strcmp(arr[midIndx],v<=0)){
minIndex = midIndex;
}else{
maxIndex=minIndex;
}
}
if(!strcmp(arr[maxIndex],v)){
return maxIndex;
}else{
return -1;
}
}
7. 字元串ABCD,可以由字元串BCDA或者CDAB透過循環移位而得到。請編程實現以下 檢測:字元串S1是否可以由字元串S2透過循環移位而得到。 語言不限(推薦C/C++,不推薦寫僞碼)