特殊回文数,大神们帮忙看一看,为什么编译通过而不会运行

123321是一个非常特殊的数,它从左边读和从右边读是一样的。
  输入一个正整数n, 编程求所有这样的五位和六位十进制数,满足各位数字之和等于n 。
输入格式
  输入一行,包含一个正整数n。
输出格式
  按从小到大的顺序输出满足条件的整数,每个整数占一行。
样例输入
52
样例输出
899998
989989
998899
#include
int main()
{
int a,b,c,d,e,f,n,m;
scanf("%d\n",&n);
for(a=1;a<10;a++)
for(b=0;b<10;b++)
for(c=0;c<10;c++)
for(d=0;d<10;d++)
for(e=0;e<10;e++)
{
if((a+b+c+d+e)==n)
if((10000*a+1000*b+100*c+10*d+e)==(10000*e+1000*d+100*c+10*b+a))
{
m=10000*a+1000*b+100*c+10*d+e;
printf("%d\n",m);

}

}
for(f=0;f<10;f++)
{
    if((a+b+c+d+e+f)==n)
    if((100000*a+10000*b+1000*c+100*d+10*e+f)==(100000*f+10000*e+1000*d+100*c+10*b+a))
    {
    m=100000*a+10000*b+1000*c+100*d+10*e+f;
    printf("%d\n",m);   
    }
}
return 0;   

}

没懂什么叫没有运行。你输入字符了么?你的scanf()里有\n,意味着要吃掉回车

这里错了:scanf("%d\n",&n);
输入完N后还没有结束,它还在等待你继续输入.
去掉\n就好

补充:
\n在scanf格式串中不表示等待换行符,而是读取并放弃连续的空白字符。(事实上,scanf格式串中的任何空白字符都表示读取并放弃空白字符。而且,诸如%d这样的格式也会丢掉前边的空白,因此你通常根本不需要在scanf格式串中加入显式的空白。)
因此,“%d\n”中的\n会让scanf读取到非空白字符串为止,而它可能需要读到下一行才能找到这个非空白字符串。这种情况下,去掉\n仅仅使用“%d”即可(但你的程序可能需要跳过那个没有读入的换行符。)
参考:《你必须找到的495个C语言问题》

所以:
如果你用 scanf("%d\n", &n); 的话,在你输入完n后, 需要输入 ctrl + a 才可以 使其读入空白结束。

如果我记得不错的话,scanf函数里写的\n并不代表回车,而是\n字符串,也就是说你要在输入时候加上\n两个字符才行。当然我觉得你的意思是接收一个换行,那么应该把\n去掉,毕竟接收数字原本就会无视换行。

scanf里面就不要打换行符了 这样你就得输入两个enter才行!!!