我面臨一個問題,該程式幾乎可以正常作業,只是它在輸出結果中給出了 1。例如 num 輸入是 123 = 1 2 3=6,而是給出 7 作為輸出。
我可以通過在printf陳述句中添加 -1 來簡單地解決這個問題,但我想知道為什么會這樣。
#include<stdio.h>
int Sumdigits(int num);
int Sumdigits(int num){
if(num<1){
return 1;
}
else return (num%10 Sumdigits(num/10));
}
int main(){
int num;
printf("Enter Number: ");
scanf("%d",&num);
printf("%d",Sumdigits(num));
}
uj5u.com熱心網友回復:
問題是Sumdigits( 0 )將回傳1而不是0,這是沒有意義的。要解決此問題,請更改
if(num<1){
return 1;
}
到:
if(num<1){
return 0;
}
還值得注意的是,您的代碼不適用于負數。因此,您可能希望將函式更改Sumdigits為以下內容:
int Sumdigits( int num )
{
if( num == 0 )
return 0;
if ( num < 0 )
num = -num;
return num % 10 Sumdigits(num/10);
}
uj5u.com熱心網友回復:
您在此 if 陳述句中添加 1
if(num<1){
return 1;
該函式應該像這樣宣告和定義
unsigned int Sumdigits( unsigned int num )
{
return num == 0 ? 0 : num % 10 Sumdigits( num / 10 );
}
如果允許用戶處理負整數值,則可以按以下方式定義該函式
unsigned int Sumdigits( int num )
{
unsigned int digit = num < 0 ? -( num % 10 ) : num % 10;
return num == 0 ? 0 : digit Sumdigits( num / 10 );
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/398743.html
