重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
给你写了注释,看看能否看懂,不懂可追问
创新互联建站云计算的互联网服务提供商,拥有超过13年的服务器租用、服务器托管机柜、云服务器、虚拟空间、网站系统开发经验,已先后获得国家工业和信息化部颁发的互联网数据中心业务许可证。专业提供云主机、虚拟空间、主机域名、VPS主机、云服务器、香港云服务器、免备案服务器等。
#include stdio.h
void fun(double *sn, int n);
int main(void)
{
int n;
double Sum;
printf("Please input n: ");
scanf("%d", n);
/* 本部分代码功能建议:调用相应的函数计算S */
/* User Code Begin(Limit: lines=1, lineLen=50, 考生可在本行后添加代码、最多1行、行长=50字符) */
fun(Sum,n); //Sum是double类型的,Sum就是将Sum的地址传递进去,使得操作的时候是改变该地址的值
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
printf("\nS=1/1!+1/2!+...+1/%d!=%.16f", n, Sum);
return 0;
}
void fun(double *sn, int n) //这里圈地进去的sn就是Sum,也就是实参Sum的地址,因此改变*sn就是改变实参Sum的值
{
int i;
double Sum=0, jc=1;
for (i=1; i=n; i++)
{
jc *= i;
Sum += 1 / jc;
}
/* User Code Begin(Limit: lines=1, lineLen=30, 考生可在本行后添加代码、最多1行、行长=30字符) */
*sn = Sum; //*sn就是实参的值,将局部变量Sum的值赋值给实参Sum,因此外面的Sum的值就改变了
/* User Code End(考生添加代码结束。注意:空行和单独为一行的{与}均不计行数、行长不计行首tab缩进) */
}
main函数写的有问题,应该类似如下:
FILE *a,*b;
char wjm[200];
puts("请输入源文件名:"); gets(wjm ); a= fopen( wjm, "r+");
puts("请输入目标文件名:"); gets(wjm ); b= fopen( wjm, "w+");
if( a b ) jyt ( a, b );
fcloseall();
错误信息是什么,n范围是2-13,f()函数里却从3开始的,而且没有封顶,int型变量打印用%d
另外int *sn,调用的时候传入地址即可
比如:
int sn = 4;
n = 1;
void(int sn,n)调用为void(sn,n);
void ( int *sn ,n )调用为void(sn,n);