数値の桁の和を求める必要があります。例えば、番号1123の桁の和は1 + 1 + 2 + 3 =数値の桁の合計を求める(c)
7私の考え:
1)ユーザーが入力および整数
2)Iは、の数を計算します数字の桁(4桁以上の場合)
3)forループを使用するより、私はユーザーの数を1,2の桁に分割します。数字の桁数(最後の数字は含まない)数字を合計します。ここで
は私のコードです:
int main (void)
{
int result,sum,n;
int div = 10,counter = 0,number;
printf("Enter the integer:");
scanf("%i",&number);
while(result >0){
result = number/div;
div *= 10;
++counter;
}
printf("The number consists of %i digits\n",counter);
sum = 0;
for(n=1;n<counter;++n){
sum += number/pow(10,n);
}
printf("%i",sum);
return 0;
}
(whileループ)最初の部分は個別に正しい動作します。しかし、2番目の部分(forループ)と一緒に私は間違った結果を返します(whileループの0桁と合計もゼロです)。なぜそれが起こるのか説明できますか? ソリューションを修正するにはどうすればよいですか?
P.S私の問題のより効率的な解決策が存在することは知っていますが、自分のアルゴリズムを使用したいと思います。
int型に直接入力しません。文字列として入力します。これは長さの計算を簡単にし、文字列をchar aarrayとして扱い、個々の数字をループしてintに変換し、 –
を加算します。 '10'の累乗で除算すると、数字は得られません。あなたはそれと一緒にモジュラス '10'を使う必要があります。 –
'div * = 10;'がオーバーフローすると問題になります。 – chux