修改以下代码修改代码#include<stdio.h> #include<math.h> int jc(int n) { int i,j=1; for(i=1;i<n;i++) { j*=i; } return j; } int cm(int x,int n) { int c=1,i=1; for(i=0;i<n;i++) { c*=x; } return c; } int main() { int x,n=0; double e=0; printf("please input x:\n"); scanf("%d",&x); for(n=0;(cm(x,n)/jc(n))>=1e-6;n++) { e+=1.0*cm(x,n)/jc(n); } printf("%lf",e); }
时间: 2023-12-01 07:03:51 浏览: 71
SeqList.h #include <stdio.h> //包含标准输入输出流的头文件 #include <assert.h
修改后的代码如下:
```
#include<stdio.h>
#include<math.h>
int jc(int n) {
int i, j = 1;
for(i = 1; i <= n; i++) {
j *= i;
}
return j;
}
int cm(int x, int n) {
int c = 1, i;
for(i = 0; i < n; i++) {
c *= x;
}
return c;
}
int main() {
int x, n = 0;
double e = 0;
printf("please input x:\n");
scanf("%d", &x);
while((cm(x, n) * 1.0 / jc(n)) >= 1e-6) {
e += cm(x, n) * 1.0 / jc(n);
n++;
}
printf("%lf", e);
return 0;
}
```
主要修改了两处:
1. 在函数 `jc` 中,将循环条件改为 `i <= n`,避免计算出错。
2. 在 `main` 函数中,将循环改为 `while` 循环,避免因为循环条件错误导致的死循环。同时,将除数改为 `1.0`,避免因为整数运算导致的错误结果。
阅读全文