我的函数未返回应有的状态

时间:2019-10-12 14:41:50

标签: c function

我创建的函数有问题。它不返回1。我尝试在main中而不是在函数中使用代码,并且它起作用了。

我不知道我是否缺少什么,所以请检查一下并告诉我:

int happynum(int n); // THIS IS THE FUNCTION

int main()
{
int num,digito,i,dig,temp,sum=0, lol;

do {
printf("Escribe un numero positivo:\n");
scanf("%d", &num);
} while (num <= 0);

    lol = happynum(num); // THIS IS WHAT THE FUNCTION RETURN
    printf("%d ", lol);

    while(num!=89 && num!=1)   //THIS IS THE SAME FUNCTION BUT IN THE MAIN
{
   sum=0;
   while(num>0)
  {
    dig=num%10;
    num=num/10;
    sum=sum+(dig*dig);
  }
  num=sum;
}

printf("%d", num);
/*
if(num== 1)
{
     printf("Happy Number\n");
}
 else
 printf("UnHappy Number\n"); */
    return 0;
}

这是功能:

int happynum(int n)  // THIS IS THE FUNCTION
{
int i,dig,num,sum=0;

while(num!=89 && num!=1)
{
   sum=0;
   while(num>0)
  {
    dig=num%10;
    num=num/10;
    sum=sum+(dig*dig);
  }
  num=sum;
}
  return num;
}

1 个答案:

答案 0 :(得分:1)

您使用的是num本地的happynum,而不是您传递的参数。将参数命名为num,然后使用它,就像这样:

int happynum(int num)  // THIS IS THE FUNCTION
{
int i,dig,sum=0;

while(num!=89 && num!=1)
{
   sum=0;
   while(num>0)
  {
    dig=num%10;
    num=num/10;
    sum=sum+(dig*dig);
  }
  num=sum;
}
  return num;
}

然后您可能应该在main的末尾取消注释该块,以便获得Un / Happy Number的结果。