C的错题.错在那?dg

来源:百度知道 编辑:UC知道 时间:2024/06/19 20:15:49
求:
s=1+1/1!+1/2!+1/3!......+1/n!
例:输入15,得s=2.718282

下面这个程序得的是一些英文字母.那错了? C语言的.
#include "stdio.h"
void fun(double *s,int n){
int i,j,k;
for(k=1;k<=k;k++){
for(i=1,j=1;i<=k;i++) j*=i;
*s+=1.0/j;
}
}
main(){
int n=15;
double s=1.0;
clrscr();
fun(&s,n);
printf("\n n=%f\n",s);
}
要是把*号去掉,都不能通过了.
二楼的回答得到的是2.717499小数位还是不对...
还有那有问题?我用标答是2.718282

在你的第一的循环变量定义的时候错误for(k=1;k<=k;k++) 按照你的定义循环没有终止条件 也就是说这个循环是个死循环不能结束 k<=k这个条件应该要改

把*s+=1.0/j;里的*去掉,你现在这样子是把这个数字加到指针上去了

for(k=1;k<=n;k++){
for(i=1,j=1;i<=k;i++) j*=i;

把外循环for(k=1;k<=k;k++)改成for(k=1;k<=n;k++)就可以了。你要加n项,找你原来的样子k<=k每次都成立,你的循环无法终止,成了死循环