while(i!=1) t*=i--; 这里,i是循环变量,在循环里是不能轻易改动循环变量的。应该改成int j=i;while (j!=1) t*=j--;或者干脆写成for (int j=i; j!=1; j--) t*=j;另外,你这个程序还有一点写得不好。你是利用1 + 1/2! + 1/3! + ... 算e-1吧。那个阶乘你用一个int t来存,当数稍大一点的时候就溢出了。不如直接用double m(初值为1)去依次除以1,2,3,...。