看板 Soft_Job 關於我們 聯絡資訊
※ 引述《hanck ( )》之銘言: : 今兒個去MTK面試寫考卷看到兩題題目想跟大家請教一下 : 1. : extern void func1(void); : extern void func2(void); : extern void func3(void); : extern void func4(void); : extern void func5(void); : void main(int n) : { : if n==1 execute func1; : if n==2 execute func2; : if n==3 execute func3; : if n==4 execute func4; : if n==5 execute func5; : } : 保證 n 一定是上面五個數字之一 : 不能用if 和 switch case , 請用你認為最快的方法實作main : 2. : extern void func1(void); : extern void func2(void); : extern void func3(void); : extern void func4(void); : extern void func5(void); : void main(int n) : { : if n==33 execute func1; : if n==67 execute func2; : if n==324 execute func3; : if n==231 execute func4; : if n==687 execute func5; : } : 保證 n 一定是上面五個數字之一 : 使用if, 請用你認為最快的方法實作main : 這兩題難度都是標記困難,所以我想第二題應該不會只是單純用if else : 而第一題無法下手......不知道有沒有高手指導一下 小弟才疏學淺 #include "stdafx.h" #include <stdio.h> #include <vector> #include <string> using namespace std; void fun1() { printf("1"); } void fun2() { printf("2"); } void fun3() { printf("3"); } void fun4() { printf("4"); } void fun5() { printf("5"); } // ch2 //if n == 33 execute func1; //if n == 67 execute func2; //if n == 324 execute func3; //if n == 231 execute func4; //if n == 687 execute func5; typedef void (*myCall)(void); int _tmain(int argc, char* argv[]) { auto p = atoi(argv[1])%7; std::vector<myCall> fann; fann.clear(); fann.resize(6); fann[5] = fun1; fann[4] = fun2; fann[2] = fun3; fann[0] = fun4; fann[1] = fun5; fann[p](); return 0; } -- 錢是汗水的報償 智慧的結晶 能力的證明 它更是一種尊嚴 更是一種肯定 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 119.14.23.110 ※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1447789766.A.584.html
fanntone: 記得visual studio要設成 Use Multi-Byte Character Set 11/18 03:51
testPtt: 用map阿 11/18 08:29
Obama19: 用stl只會更慢 11/18 08:50
maypcc: 第一題分析1~5的binary format用&binary operation 11/18 08:54
maypcc: 第二題,應該差不多只要偵測高位元,再加個Shift就ok 11/18 08:55
jenny2921: 為什麼原文不見了? 12/03 00:44