華為機試題 整數減法

2021-09-07 21:58:33 字數 1579 閱讀 9892

#include using namespace std;

/*3 正數減法

問題描述:

兩個任意長度的正數相減,這兩個正數可以帶小數點,也可以是整數,請輸出結果。 輸入的字串中,不會出現除了數字與小數點以外的其它字元,不會出現多個小數點以及小數點在第乙個字元的位置等非法情況,所以考生的程式中無須考慮輸入的數值字串非法的情況。

詳細要求以及約束:

1.輸入均為正數,但輸出可能為負數;

2.輸入輸出均為字串形式;

3.如果輸出是正數則不需要帶符號,如果為負數,則輸出的結果字串需要帶負號

例如:2.2-1.1 直接輸出為「1.1」,1.1-2.2 則需要輸出為「-1.1」

4.輸出的結果字串需要過濾掉整數字前以及小數字後無效的0,小數字為全0的,直接輸出整數字

例如相減結果為11.345,此數值前後均不可以帶0,「011.345」或者「0011.34500」等等前後帶無效0的均視為錯誤 輸出。例如1.1-1.1結果為0.0,則直接輸出0。

要求實現函式:

void decrease(char *input1, char*input2, char *output)

【輸入】 char *iinput1 被減數

char*nput2 減數

【輸出】 char *output 減法結果

【返回】 無

示例輸入:char *input1="2.2"

char *input2="1.1"

輸出:char*output="1.1"

輸入:char *input1="1.1"

char *input2="2.2"

輸出:char *output="-1.1"

*/void decrease(char *input1, char*input2, char *output)

++n1;

} if(m1==-1)

m1=0;

else }

for(i=0;input2[i]!='.';i++)

++n2;

} if(m2==-1)

m2=0;

else }

cout<<"n1 "int n3=(n1>n2?n1:n2);

int len=n3+m3;

char *s1=new char[len];

char *s2=new char[len];

char *s3=new char[len+1];

for(i=0;in1)

s1[i]='0';

else

s1[i]=input1[n1+i-n3];

if(n3-i>n2)

s2[i]='0';

else

s2[i]=input2[n2+i-n3]; }

for(i=n3;is2[i])

break;

else if(s1[i]-1;i--)

else

cout<<"s3 "int a1=i;

if(start==0)

else

{ output[d++]='.';

for(i=n3;i

華為機試題

今天去華為機試,感覺是再謹慎都不為過啊!zc前一天晚上還跟我強調了判空,記憶體釋放。前兩題都是基本題,後面一題不會。1 輸入兩個數 反轉相加的和輸出。2 三天打漁兩天曬網 從1990 年1月1日開始 打漁輸出fishing 曬網輸出sleeping 我因為printf的是fishing sleepi...

華為機試題

通過鍵盤輸入一串小寫字母 a z 組成的字串。請編寫乙個字串壓縮程式,將字串中連續出席的重複字母進行壓縮,並輸出壓縮後的字串。壓縮規則 1.僅壓縮連續重複出現的字元。比如字串 abcbc 由於無連續重複字元,壓縮後的字串還是 abcbc 2.壓縮欄位的格式為 字元重複的次數 字元 例如 字串 yyy...

華為機試題

1.輸入乙個字串,將字串中的非字母字元刪除,保留字串中的小寫字母,將大寫字母變為小寫字母,然後輸出字串。比如 輸入 sdf sfjadf sdf 輸出 sdfsfjadfsdf 2.n進製數求和,輸入乙個整數n 2 n 35 兩個字串,字串中的字元一定是0 9或者a z 10 35 中的,輸出兩個字...