计算出1-100的平方根,将结果存于外存,其文件名为“result.c”(C语言)

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:23:32
因为是自学的文件保存,所以不知道写的对不对,请大家帮助一下。
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
void main()
{ double y;
int i;
FILE *fp;
for(i=1;i<=100;i++)
y=sqrt(i);
if((fp=fopen("result.c","w"))=NULL)
{ printf("cannot open file \n");
exit(0);
}
fprintf(fp,"%lf",y);
fclose(fp);
}
还想问一下,就拿上题为例是先执行y=sqrt(i);还是先用fopen()打开文件。有什么具体要求吗
如果求1!+2!+3!……10!和,并保存到“result.c”.是不是可以这样写?
#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int main(void)
{ long y;
int i,t=1,s=0;
FILE *fp;
if((fp=fopen("result.c","w"))==NULL)
{ printf("cannot open file \n");
exit(0);
}
for(i=1;i<=10;i++)
{
t*=i;
s+=t;
}
fprintf(fp,"%lf\t",s);
fclose(fp);
re

由于你写的程序不符合题意,所以按照相对于你的程序回答你的问题
按照你的程序执行,是先执行y=sqrt(i);再执行fopen(),至于所谓的具体要求,就是要符合提议而言,没有语句上面的要求

首先说说为什么不符合题意
你这样写,是先计算1-100的平方根,再把结果y写入文件,但是你的每一次y都没有保存,写入文件后的结果只有最后计算的一次y,也就是100的平方根,而以前的计算结果都抛弃了
如果是假设你少写了for循环体的大括号,那么顺序又不对,不能每一次for都进行打开文件的操作,所以只能说你没有理解题目和循环的意思

另外,你的程序中还有把赋值号和逻辑判断相等号象混淆的现象(=NULL)
修改后的程序如下

#include "stdio.h"
#include "math.h"
#include "stdlib.h"
int main(void)
{ double y;
int i;
FILE *fp;
if((fp=fopen("result.c","w"))==NULL)
{ printf("cannot open file \n");
exit(0);
}
for(i=1;i<=100;i++)
{
y=sqrt(i);
fprintf(fp,"%lf\t",y);
}
fclose(fp);
return 0;
}

补充问题中,程序流程对了,但是有个问题,就是计算阶乘和的时候,每计算完一个数的结成后,t都应该置为1
如,for(i=1;i<=10;i++,t=1)
还有整数的格式控制符是%d不是%lf了
另外fopen只要写在写入文件的语句之前哪都行,我的写在了最开始,是