1

私はCで単純なプログラムの1つを実行しています.5桁の数字の合計.単純な関数を使用してそれを実行しましたが、再帰も使用する必要があります.再帰を使用してこの問題に関する多くの解決策をネットで読みました.私のものを実装していましたが、それはエラーを出しており、アルゴでどのメッシュを実行しているのかわかりません。

#include<stdio.h>
int sum5(int x);  //function for sum of  digits of 5 digit number

int main()
{
   int x;
   int result;
   printf("Enter a 5 digit number : ");
   scanf("%d",&x);
   printf("Number entered by you is %d",x);
   result = sum5(x);
   printf("Sum of digits of 5 digit number is = %d",&result);
   return 0;
}

int sum5(int x)
{
   int r;
   int sum=0;
   if(x!=0){
      r=x%10;
      sum=sum+r;
      x=x-r;      //doing this so that 0 come in the last and on diving it by 10, one digit will be removed.
      sum5(x/10);
   }
   return sum;
}

しかし、実行後、間違った結果が得られます。出力に匿名の値がダンプされています。

4

2 に答える 2

8

値ではなくアドレスを出力しているため、これは正しくありません。result

printf("Sum of digits of 5 digit number is = %d",&result);

への変更:

printf("Sum of digits of 5 digit number is = %d", result);

常に の結果をチェックしてscanf()、有効な値が読み取られたことを確認します。

/* Returns number of assignments made. */
if (scanf("%d", &x) == 1 && x > 9999 && x < 100000)
{
}

さらに、 Osiris sum5()によって指摘された の実装のエラー。

于 2013-05-09T12:10:18.563 に答える