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 當連續相同字母超過兩個時,第三個出現的字母按第一次出現算。...