題目描述:高精度整數加法(計算機中整數的表示長度有限)
要求實現函式:
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 ...