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