c语言中“%d”和“%d\n”有什么区别?请看详情

我写的一个小递归函数:
#include <stdio.h>
int main ()
{
int jie(int n);
int n;
int sum;
scanf("%d\n",&n);
sum=jie(n);
printf("sum=%d",sum);
for (int i=0;i<10;i++)
getchar();
return 0;

}
int jie(int n)
{
int s;
if (n==1)
s=1;
else
s=jie(n-1)*n;
return s;

}
如果是上面的那样的话,输入一个整数后,不能一下子出现结果,
要继续输入一个数之后结果才会显现,但是如果去掉那个“%d\n”中的“\n”后,结果就能一下子出来,请问这是为什么呢???
我用的是DEV c++

对于上面你的追加提问,关于scanf函数,你再里面填的是上面,在输入的时候就要严格按照这个格式输入,比如你写的scanf("%d%d%d",&a,&b,&c);这句你最后按一个回车,代表输入结束 ,这时就会出结果,但是如果你这样写scanf("%d\n%d\n%d\n",&a,&b,&c);就得输入一个数按一下回车,当输入第三个数之后,你按了回车了,还要按一下回车,代表输入结束,才会出结果,不建议这样写,如果每个输入都占一行的话,那你可以将最后一个\n去掉,变成这样
scanf("%d\n%d\n%d",&a,&b,&c);这样就可以在输入第三个回车时出结果,希望你能懂
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-04-16
你说的是scanf函数里面的%d\n是吧?你的输入格式要严格地按照scanf函数里面格式来,你的scanf("%d\n",&n)要求的是输入一个整数和一个回车才算输入完成,所以还要再来一个回车表示输入结束,不一定是要继续再输入一个数追问

恩,是啊,
如果是下面的代码:
#include
int main ()
{
int a,b,c;
scanf("%d%d%d",&a,&b,&c);
printf ("%d\n%d\n%d\n",a,b,c);
for(;1;)
getchar();
return 0;

}
就是最后直接按回车键就会输出结果,但是如果是下面的:

scanf("%d\n%d\n%d\n",&a,&b,&c);
最后就一定要加一个数才会输出结果啊,只是按回车键没反应的啊,就是光标移到下一行而已。

相似回答