2023年華為上機筆試二(高精度整數加法)

2021-06-09 23:27:37 字數 2224 閱讀 7050

題目描述:高精度整數加法(計算機中整數的表示長度有限)

要求實現函式:

void add (const char *num1, const char *num2, char *result)

【輸入】num1:字串形式運算元1,如果運算元為負,則num1[0]為符號位'-'

num2:字串形式運算元2,如果運算元為負,則num2[0]為符號位'-'

【輸出】result:儲存加法計算結果字串,如果結果為負,則result[0]為符號位。

注:i、 

當輸入為正數時,'+'不會出現在輸入字串中;當輸入為負數時,'-'會出現在輸入字串中,且一定在輸入字串最左邊位置;

ii、 

輸入字串所有位均代表有效數字,即不存在由'0'開始的輸入字串,比如"0012", "-0012"不會出現;

iii、 要求輸出字串所有位均為有效數字,結果為正或0時'+'不出現在輸出字串,結果為負時輸出字串最左邊位置為'-'。

示例輸入:num1 = "580"

num2 = "-50"

輸出:result = "530"

程式**如下:

#include

using namespace std;

//反轉字串,便於從低位開始運算

void reverse(char *num)}

//兩個正整數相加

void add_num(const char *num1, const char *num2, char *result)

num1_copy[maxlen]='\0';

for (i=len2; i

num2_copy[maxlen]='\0';

result[0]=0; //標誌是否有進製,沒有為0.

for (i=0; i

if (result[maxlen]!=0) //如果最後一位相加產生進製

else

reverse(result);

free(num1_copy);

free(num2_copy);}

//計算兩個正整數相減

void minus_num(const char *num1, const char *num2, char *result)

num2_copy[maxlen]='\0';

int borrow=0; //借位識別符號

for (i=0; i

else

else}}

else

else}}

result[maxlen] = '\0';

i = maxlen - 1;

while (result[i] == '0')

reverse(result);

free(num1_copy);

free(num2_copy);}

//判斷正數與負數的大小,並根據它們的大小關係確定相加結果的符號,以及呼叫減法函式。

void postive_add_negtive(const char *positive_num, const char *negtive_num, char *result, int *positive)

else if(len1==len2) //如果兩個數的長度相等

else if (strcmp(positive_num,negtive_num)==0) //正數等於負數的絕對值

else//正數小於負數的絕對值,這個時候要用負數的絕對值減去正數

}else//負數的長度大於正數的長度}

//兩個整數(包括正整數和負整數)相加

void add(const char *num1, const char *num2, char *result)

else if (num1[0]!='-'&&num2[0]=='-') //一正一負

else if (num1[0]=='-'&&num2[0]!='-') //一正一負

else if (num1[0]=='-'&&num2[0]=='-') //都是負數

if (!positive) //如果是負數,在結果前加上『-』號

sprintf(result, "-%s", positive_result);

else

sprintf(result, "%s", positive_result);

free(positive_result);}

//經main函式測試,結果正確

int main()

2023年華為上機題目

華為2014校園招聘的機試題目和2013年的完全一樣。一 題目描述 60分 通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串過濾程式,若字串中出現多個相同的字元,將非首次出現的字元過濾掉。比如字串 abacacde 過濾結果為 abcde 要求實現函式 void stringfilter...

2023年華為招聘 C語言筆試試題

一 判斷題 對的寫t,錯的寫f並說明原因,每小題4分,共20分 1 有陣列定義int a 2 2 則a 0 1 的值為0。2 int ptr 則ptr是一維陣列的名字。3 指標在任何情況下都可進行 運算。4 switch c 語句中c可以是int long,char float unsigned i...

2023年華為招聘 C語言筆試試題

2005 年華為招聘 c語言筆試試題 一 判斷題 對的寫 t,錯的寫 f並說明原因,每小題 4分,共 20分 1 有陣列定義 int a 2 2 則a 0 1 的值為0。2 int ptr 則ptr 是一維陣列的名字。3 指標在任何情況下都可進行 運算。4 switch c 語句中c 可以是int ...