華為2011上機筆試題3

2021-06-18 06:56:21 字數 4084 閱讀 3343

1. 手機號碼合法性判斷(20分)

問題描述:

我國大陸運營商的手機號碼標準格式為:國家碼+手機號碼,例如:8613912345678。特點如下:

1、  長度13位;

2、  以86的國家碼打頭;

3、  手機號碼的每一位都是數字。

1)  如果手機號碼合法,返回0;

2)  如果手機號碼長度不合法,返回1

3)  如果手機號碼中包含非數字的字元,返回2;

4)  如果手機號碼不是以86打頭的,返回3;

【注】除成功的情況外,以上其他合法性判斷的優先順序依次降低。也就是說,如果判斷出長度不合法,直接返回1即可,不需要再做其他合法性判斷。

要求實現函式:

int verifymsisdn(char* inmsisdn)

【輸入】 char* inmsisdn,表示輸入的手機號碼字串。

【輸出】  無

【返回】  判斷的結果,型別為int。

示例輸入:  inmsisdn = 「869123456789「

輸出:  無

返回:  1

輸入:  inmsisdn = 「88139123456789「

輸出:  無

返回:  3

輸入:  inmsisdn = 「86139123456789「

輸出:  無

返回:  0

2. 將乙個字串的母音字母複製到另乙個字串,並排序(30分)

問題描述:

有一字串,裡面可能包含英文本母(大寫、小寫)、數字、特殊字元,現在需要實現一函式,將此字串中的母音字母挑選出來,存入另乙個字串中,並對字串中的字母進行從小到大的排序(小寫的母音字母在前,大寫的母音字母在後,依次有序)。

說明:1、  母音字母是a,e,i,o,u,a,e,i,o,u。

2、  篩選出來的母音字母,不需要剔重(chong);

最終輸出的字串,小寫母音字母排在前面,大寫母音字母排在後面,依次有序。

要求實現函式:

void sortvowel (char* input, char* output);

【輸入】  char* input,表示輸入的字串

【輸出】  char* output,排好序之後的母音字串。

【返回】  無

示例輸入:char *input = 「abort!may be some errors in out system. 「

輸出:char *output =「aeeeooouaeio 「

3.我國公民的身份證號碼特點如下:

1、     長度為18位;

2、     第1~17位只能為數字;

3、     第18位可以是數字或者小寫英文本母x。

4、     身份證號碼的第7~14位表示持有人生日的年、月、日資訊。

例如:511002198808080111或51100219880808011x。

請實現身份證號碼合法性判斷的函式。除滿足以上要求外,需要對持有人生日的年、月、日資訊進行校驗。年份大於等於2023年,小於等於2023年。需要考慮閏年、大小月的情況。所謂閏年,能被4整除且不能被100整除 或 能被400整除的年份,閏年的2月份為29天,非閏年的2月份為28天。其他情況的合法性校驗,考生不用考慮。

函式返回值:

1)  如果身份證號合法,返回0;

2)  如果身份證號長度不合法,返回1;

3)  如果身份證號第1~17位含有非數字的字元,返回2;

4)  如果身份證號第18位既不是數字也不是英文小寫字母x,返回3;

5)  如果身份證號的年資訊非法,返回4;

6)  如果身份證號的月資訊非法,返回5;

7)  如果身份證號的日資訊非法,返回6(請注意閏年的情況);

【注】除成功的情況外,以上其他合法性判斷的優先順序依次降低。也就是說,如果判斷出長度不合法,直接返回1即可,不需要再做其他合法性判斷。

要求實現函式:

int verifyidcard(char* input)

【輸入】  char* input,表示輸入的身份證號碼字串

【輸出】  無

【返回】  判斷的結果,型別為int

示例1) 輸入:」511002111222」,函式返回值:1;

2) 輸入:」511002abc123456789」,函式返回值:2;

3) 輸入:」51100219880808123a」,函式返回值:3;

4) 輸入:」511002188808081234」,函式返回值:4;

5) 輸入:」511002198813081234」,函式返回值:5;

6) 輸入:」511002198808321234」,函式返回值:6;

7) 輸入:」511002198902291234」,函式返回值:6;

8) 輸入:」511002198808081234」,函式返回值:0;

#include using namespace std;

// 程式設計題第一題

// 實現手機號碼合法性判斷的函式

int verifymsisdn(char* inmsisdn)

// 檢測是否都是數字

for(int i = 0; i < len; ++i)

}// 檢測是否以86打頭

if(inmsisdn[0] != '8' || inmsisdn[1] != '6')

//是合法的號碼

return 0;

}void mysort(char *a, int len)

a[j + 1] = temp;

}}// 程式設計題第二題

// 找出母音字母並排序

void sortvowel(char* input, char* output)

else if(c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u')

}//排序,先小寫字母公升序排序,再是大寫字母公升序排序

mysort(output1, outputindex1);

mysort(output2, outputindex2);

//合併,先小寫再大寫

for(int i = 0; i < outputindex1; ++i)

for(int i = 0; i < outputindex2; ++i)

// 加上'\0'

output[outputindex1 + outputindex2] = '\0';

delete output1;

delete output2;

}// 程式設計題第三題

// 判斷身份證號碼的合理性

int verifyidcard(char* input)

// 前17位數字判斷

for(int i = 0; i < 17; ++i)

}// 第18位合法性判斷

if( (input[17] < '0' || input[17] > '9') && input[17] != 'x')

// 採集年

int year = 0, month = 0, day = 0;

for(int i = 6; i < 10; ++i)

// 年資訊判斷

if(year < 1900 || year > 2100)

// 採集月

for(int i = 10; i < 12; ++i)

// 月資訊判斷

if(month <= 0 || month >=13)

// 採集日

for(int i = 12; i < 14; ++i)

// 日資訊判斷

if(day <= 0 || day >= 32)

if(!(month == 1 || month == 3 || month == 5 || month == 7 || month == 8

|| month == 10 || month == 12))

}if(month == 2)

if( !((year % 4 == 0 && year % 100 != 0) || year % 400 == 0))}}

return 0;

}int main()

2011華為上機機試題

1.輸入乙個表示式,3 8 7 2,沒有括號 輸出結果 publicintgetmyret string str 處理乘除法 while mflag else mflag true mystr i 1 integer.tostring ret for intj i j looplen 2 j loo...

華為2016上機筆試題

開發乙個簡單錯誤記錄功能小模組,能夠記錄出錯的 所在的檔名稱和行號。處理 1.記錄最多8條錯誤記錄,對相同的錯誤記錄 即檔名稱和行號完全匹配 只記錄一條,錯誤計數增加 檔案所在的目錄不同,檔名和行號相同也要合併 2.超過16個字元的檔名稱,只記錄檔案的最後有效16個字元 如果檔名不同,而只是檔名的後...

華為2013上機筆試題

1 字串轉換 問題描述 將輸入的字串 字串僅包含小寫字母 a 到 z 按照如下規則,迴圈轉換後輸出 a b,b c,y z,z a 若輸入的字串連續出現兩個字母相同時,後乙個字母需要連續轉換2次。例如 aa 轉換為 bc,zz 轉換為 ab 當連續相同字母超過兩個時,第三個出現的字母按第一次出現算。...