在線筆試的一道題

剛從7點做到8點,一個鐘的在線筆試,投遞三七互娛的PHP開發工程師崗位,雖然希望渺茫還是試試吧。題目有2大類,30道選擇2道簡答題(編程題),選擇題涵蓋PHP,數據庫,數據結構(二叉樹及遍歷)操作系統,計算機網絡,c語言等,簡答題是判斷ip地址合法性和判斷一個數是否爲三七數(只有3和7兩個因子)。。。我做過的幾道編程題都沒考,尷尬。。感覺寫的一般般,三七數沒寫過,就自己想法是直接將該整數不斷除以3和7(在可以除的情況下,直到最後除不盡,看剩下值是否爲1,爲1則返回true,否則返回false。時間有點急沒寫好,下面是我用c++寫的一個判斷函數。)。。

判斷一個整數是否出來3和7還有其他因子,無得話即爲'三七數',有的話則不是。1默認是。
3,7,9,21是“三七數”,6不是(6=2*3)

bool judeg37(int num){
	if (num <= 0) return false;
	while (num){
		if (num % 3 == 0)
			num /= 3;
		if (num % 7 == 0)
			num /= 7;
		if (num % 3 && num % 7)
			break;
	}
	if (num == 1){
		return true;
	}
	else{//不等於1說明還有其他因子
		return false;
	}
}

下面分享一道印象深刻的奇葩題:

題目代碼:

int func(int x, int y){
return x + y;
}
int main()
{
cout << func((3,5,4),(4,5)) << endl;
system("pause");
return 0;
}

vs2013運行結果是:9.

我還是不造原因何在!望知道的說明下,謝謝!

不過經過測試發現:

func((3,5,7),(4,1)) = 8 =7+1

所以可能是跟最後兩個數有關吧。。。

下面是另一段代碼段:

for (int i = -1, j = 0; j = 0; i++, j++)
{
	j++;
	printf("%d\n", j);
}

以上輸出啥???

結果是啥也沒輸出。因爲進入循環的條件是 j = 0 並不是 j == 0,由於 j = 0 返回false,所以不進入循環;當 j = n(n!=0)即可返回true並進入循環將該值加一。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章