一道微軟的Mini Test筆試題 二

2021-04-14 19:59:03 字數 1431 閱讀 6808

一道微軟的mini-test筆試題(二)

題目要求基本如下:

請編寫乙個控制台程式,要求使用者可以輸入任意組條件,定義兩個字母之間的大小關係。程式可以通過已輸入的條件,推斷出給定的兩個字母之間的大小關係。例如:

使用者輸入:a>b

使用者輸入:b>c

使用者輸入:a?c

程式顯示:a>c

使用者輸入:c

其實這個題目考的是如何選擇乙個好的資料結構,來實現這個演算法。

我的思路就是使用最簡單的二維陣列來表達,具體如下:

總共只有 26 個英文本母,所以不訪定義乙個26x26的二維字元陣列來儲存相互之間的關係;

因為關係是相互的,所以只需要矩陣的上半部分或者下半部分(不過26x26也不算很大,就算了吧~~);

例如:    如果使用者輸入了a>b,先查詢a和b之間的大小關係,如果與『>』衝突,則提示出錯;

不存在衝突則設定[a][b]='>'和[b][a]='<';並且做如下設定:將所以小於b的字元都小於a、所有大於a的字元都大於b;

如果使用者查詢兩個字元之間的關係,則直接從二維表中查詢二者的關係並輸出

這樣一來,問題就迎刃而解了

具體**如下:

#include

#include

#include

#define unknown  'u'

#define larger   '>'

#define less    '<'

#define max_col    26

//初始化二維陣列

void init();

//列印二維陣列

void print();

//查詢兩個字元的大小關係

bool query(char v1,char v2);

//輸入兩個字元的大小關係

bool input(char v1,char op,char v2);

//獲取兩個字元的大小關係

char getrel(char v1,char v2);

//設定兩個字元的大小關係

void setrel(char v1,char v2,char op);

char matrix[max_col][max_col];

//主函式

int main()

v1=buf[0];

op=buf[1];

v2=buf[2];

if(!isalpha(v1) || !isalpha(v2))

if(op=='?')

else if(op == '>' || op == '<')

input(v1,op,v2);

}else}}

void init()

if(less == getrel(i,v2))}}

//若v1

=========解法二==========

一道微軟實習生筆試題

2010年11月21日 今兒個第一次參加海筆,以前找實習啥的都是被關在乙個小屋子裡孤獨寫 一下放到大場合還真不太適應。閒話少說,直奔主題。微軟今天的考試題很基礎,但是涉及的面也很廣,對於我這個學電子的人來說,著實有不小的壓力,但是對學計算機的人來說,估計就很easy了。先說程式設計題,就一道。在乙個...

一道筆試題

看到一道筆試題,跟自己想的有點出入,就跑了下,看了看原因。我稍微改了下 include int main int argc,char argv 輸出結果 c 5 d 245 press any key to continue vc6.0 debug下的彙編 5 unsigned char a 0xa...

一道筆試題

上次去筆試的時候,有一道題,怎麼也沒做出來,當時也是很緊張,有些思路,但卻沒有做出來。有四個人要過乙個獨木橋,因為天比較黑,而且橋只能允許兩個人同時通過,並且他們只有乙個手電筒。四個人單獨同時橋的時間是1,2,5,8分鐘。問最短的時間是多少?當時我的答案 1和8,1回來,1 5,1回來,1 2 8 ...