iOS面試常見題 – iPhone手機開發技術文章 iPhone軟體開發教學課程

1.耶穌有13個門徒,其中有一個就是出賣耶穌的叛徒,請用排除法找出這位叛徒:13個人圍坐一圈,從第一個人開始循環報數,數到三排除,最後剩下的人就是叛徒

int people[13] = {1,2,3,4,5,6,7,8,9,10,11,12,13};

int count = 0;//用來記錄報數

int number = 13;//記錄活著的人數

int i = 0;//記錄第幾個人正在報數

while (number > 1) {

if (people[i] != 0) {

count++; //如果a[i ]沒有被剔除掉,報數有效

} if (count == 3) {

people[i] = 0;//剔除掉,

count = 0;//報數清零

number–;//存活人數減一

}

i++;//記錄報數的下一個人

if (i == 13) {

i = 0;// 當超出范圍時,立即將報數人數置為第一人

}

} for (int i = 0; i < 13; i++) {

if (people[i] > 0) {

printf(“叛徒是第%d人 “, people[i]);

}

}


2.有1000000個數,每個數的取值范圍都是0~999999,找出其中重復的數
#define COUNT 1000000

int main(void)
{
inta[COUNT] = {0};
for (int i = 0; i < COUNT; i++) {
int number = arc4random()%COUNT;//把隨機數作為下標,值作為出現次數
a[number – 1] ++;
}
//輸出重復的數字以及重復次數
for(int i = 0 ;i < COUNT;i++){
if (a[i] > 1) {
printf(“%d repeats %d times\n”,i+1,a[i]);
}
}
return0;
}

發佈留言