面接の質問 7 C/C++ 数字で構成される 2 つの文字列の加算、最大 32 ビット整数のシステム関数 - プログラマーの面接の質問

面接の質問:

最大30文字の長さの0 ~ 9の数字からなる2 つの文字列が与えられた場合、それらに対応する整数の合計を計算してください。文字列を使用できます

最大サイズが32 ビットを超えないシステム関数に転送します。

この面接の質問を見たとき、初めてではなかったようだったので、手書きで書きました。他の方法についてもお気軽に下記にメッセージを残してください。QQ グループ チャットに参加することもできます: 83459374


それでは、さっそくコードを見てみましょう。


void計算追加()

{

文字列str1 = "2142135213214235231323241" ;

文字列str2 = "809327498327413628164321434214" ;

文字列結果 = "" ;


cout << "str1 の長さは次のとおりです" << str1.length () << endl ;

cout << "str2 の長さは次のとおりです" << str2.length () << endl ;

int商 = 0 ;

int剰余 = 0 ;

intカウント = 0 ;

int strNum1 = str1。長さ();

int strNum2 = str2。長さ();

int max = strNum1 > strNum2 ? strNum1: strNum2;

cout << "max の長さは次のとおりです。" << max << endl ;

while (max > 0 ) {

strNum1--;

strNum2--;

最大--;

int nStr1 = strNum1 >= 0 ? (( int )(str1.at ( strNum1)) - 48 ): 0 ;

int nStr2 = strNum2 >= 0 ? (( int )(str2.at ( strNum2)) - 48 ): 0 ;

カウント = nStr1 + nStr2 + 商;

if (カウント > 9 ){

商 = カウント / 10 ;

残り = カウント % 10 ;

}それ以外の場合は{

商 = 0 ;

残り = カウント;

}

結果 = ( char )(剰余+ 48 ) + 結果;

}

if (商 > 0 ){

    結果 = ( char )(商 + 48 ) + 結果;

}

cout << "結果の長さは次のとおりです" << result.length () << endl ;

cout << "----------和:" <<結果。c_str ()<< endl ;

}



出力は次のとおりです。

str1の長さは25です。

str2の長さは30です。

最大の長さは次のとおりです: 30

結果の長さは次のとおりです: 30

----------および: 809329640462626842399552757455



私は個人的にテストしました。目視検査は正しいはずです。問題はありません。さらなる交換は大歓迎です。



おすすめ

転載: blog.csdn.net/u013007305/article/details/75713854