我写了一个没有给出正确结果的程序.
main()
{
int i=1,n,s=1;
printf("enter the value of n");
scanf("%d",&n);
while(i<=n)
{
s=s*i;
i++;
if (i==n+1)
{
break;
}
}
printf("factorial of n=",s);
}
Run Code Online (Sandbox Code Playgroud)
它给出的结果如下图所示.

你的问题在于这一行:
printf("factorial of n=",s);
Run Code Online (Sandbox Code Playgroud)
这是输出factorial of n=,但它不是简单地连接的值s,并且没有占位符s,所以实际上你有太多的参数.
您需要int输出占位符:
printf("factorial of n=%d",s);
Run Code Online (Sandbox Code Playgroud)
如果没有它,程序将退出并显示错误(状态15,当0为正常时).
另外,(正如Vlad在他的回答中指出的那样)该if (i==n+1) { ... }块是多余的,因为你的while循环已经退出了i > n.