使用函数调用进行运行无结果是怎么回事

题目:设n是一给两位正整数,s1是n的各位数之和,s2a是2*n的各位数之和。若s1=s2,则n是9的倍数。输出所有满足这些条件的n、s1、s2.
请问为什么这个代码运行出来没有反应啊?

#include 
using namespace std;
int f1(int a)
{
    int s1=0;
    while(a)
    {
        s1=s1+a%10;
        a=a/10;
    }    
    return s1;
} 

int f2(int b)
{
    int s2=0;
    while(b)
    {
        s2=s2+2*b%10;
        b=2*b%10;
    }
    return s2;
}

int main()
{   int n;
    for(n=9;n>9&&n<100;n++)
{
    if((f1(n)==f2(n))&&(n%9==0))
    cout<return 0;
}

1、主函数main中的for循环初始值为9,而n> n<100,因此不会进入for循环,应改为n>8.
2、f1和f2的while是死循环,a和b的值为9-100,永远是true.应改为 !a 和 !b.一开始不要使用这种简写的语法,就写成a!=0 b!=0即可
3、建议把 if else配对使用,else也写出来打印一些东西,方便你理解程序的执行。

#include <iostream>

using namespace std;
int f1(int a)
{
    int s1 = 0;
    while (!a)
    {
        s1 = s1 + a % 10;
        a = a / 10;
    }
    return s1;
}

int f2(int b)
{
    int s2 = 0;
    while (!b)
    {
        s2 = s2 + 2 * b % 10;
        b = 2 * b % 10;
    }
    return s2;
}

int main()
{
    int n;
    for (n = 9; n > 8 && n < 100; n++)
    {
        if ((f1(n) == f2(n)) && (n % 9 == 0))
            cout << n << endl;
        else
            cout << "qwer"<<endl;
    }
    return 0;
}