首页 > 解决方案 > 我的函数没有返回它应该返回的内容

问题描述

我创建的函数有问题。它不返回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;
}

标签: cfunction

解决方案


您正在使用num本地 tohappynum而不是您传递的参数。命名参数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结果。


推荐阅读