#include <stdio.h> double fun(int m) { double fac, t=0.0; int i=1, j; for(i=1;i<=m;i++) { fac=1.0; /************found************/ for(j=1; j<=m; j++) fac=fac*j; /************found************/ t+=1.0/fac; } return t; } int main(void) { int m; scanf("%d", &m); printf("%12.10lf \n",fun(m)); return 0; } 哪里错了
时间: 2023-07-07 13:46:29 浏览: 185
在程序中计算阶乘的循环中,循环变量应该是从1到i,而不是从1到m。因为每次计算的是i的阶乘,而不是m的阶乘。修改后的程序如下:
```c
#include <stdio.h>
double fun(int m) {
double fac, t=0.0;
int i, j;
for(i=1;i<=m;i++) {
fac=1.0;
for(j=1; j<=i; j++) {
fac=fac*j;
}
t+=1.0/fac;
}
return t;
}
int main(void) {
int m;
scanf("%d", &m);
printf("%12.10lf \n",fun(m));
return 0;
}
```
修改后的程序中,内部循环变量`j`从1到i,计算i的阶乘。同时,外部循环变量`i`也需要在循环之前初始化。
相关问题
#include <stdio.h> double fun(int m) { double fac, t=0.0; int i=1, j; for(i=1;i<=m;i++) { fac=1.0; /************found************/ for(j=0; j<=m; j++) fac=fac*j; /************found************/ t+=fac; } return t; } int main(void) { int m; scanf("%f", &m); printf("%12.10lf \n",fun(m)); return 0; }
好的,我来帮你修改代码。首先,提示行应该是找不到变量 j,因为 j 没有被定义。其次,程序中使用了错误的格式符,应该使用 %d 代替 %f 来读取整型数据。下面是修改后的代码:
```c
#include <stdio.h>
double fun(int m) {
double fac, t = 0.0;
int i, j;
for (i = 1; i <= m; i++) {
fac = 1.0;
for (j = 1; j <= i; j++) {
fac *= j;
}
t += 1.0 / fac;
}
return t;
}
int main(void) {
int m;
scanf("%d", &m);
printf("%12.10lf\n", fun(m));
return 0;
}
```
修改后的程序已经可以正确计算公式 T=1/1!+1/2!+ 1/3!+…+1/m! 的值了。
#include<stdio.h> void fun(int *a,int aver,int m); int main(void) { int m,i,sum=0; double aver=0.0; scanf("%d",&m); int a[10]= {0}; for(i=0; i<m; i++) { scanf("%d",&a[i]); sum+=a[i]; } aver=(double)sum/m; fun(a,aver,m); return 0; } void fun(int *a,int aver,int m) { int i; for(i=0; i<m; i++) { if(a[i]>=aver) { printf("%5d",a[i]); } } }检查C语言程序
该程序有一个小错误,函数fun的参数aver应该是一个double类型而不是int类型,因为aver是sum/m的结果,可能是一个带小数点的值。以下是修改后的代码:
```
#include<stdio.h>
void fun(int *a,double aver,int m);
int main(void)
{
int m,i,sum=0;
double aver=0.0;
scanf("%d",&m);
int a[10]= {0};
for(i=0; i<m; i++)
{
scanf("%d",&a[i]);
sum+=a[i];
}
aver=(double)sum/m;
fun(a,aver,m);
return 0;
}
void fun(int *a,double aver,int m)
{
int i;
for(i=0; i<m; i++)
{
if(a[i]>=aver)
{
printf("%5d",a[i]);
}
}
}
```
阅读全文