以下是引用方一鸣在2011-9-8 19:33:31的发言:
.程序设计题
请编写函数fun,其功能是:计算并输出3到m之间所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=63.665791。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
#include <math.h>
#include <stdio.h>
double fun(int m)
{
}
main()
{
int m;
double s;
FILE *out;
printf("\n\nInput m: ");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
fclose(out);
}
我的答案
#include <math.h>
#include <stdio.h>
double fun(int m)
{
int i,j,k;
double s=0.0;
for(i=3;i<=m;i++)
{
k=sqrt(m);//m换成i就行了。
for(j=2;j<=k;j++)
{
if(i%j==0)
break;
}
if(j>=k+1)
s=s+sqrt(i);
}
return s;
}
main()
{
int m;
double s;
FILE *out;
printf("\n\nInput m: ");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
fclose(out);
}
以下是引用方一鸣在2011-9-8 19:33:31的发言:
.程序设计题
请编写函数fun,其功能是:计算并输出3到m之间所有素数的平方根之和。
例如,若主函数从键盘给m输入50后,则输出为s=63.665791。
注意:部分源程序已给出。请勿改动主函数main和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。
#include <math.h>
#include <stdio.h>
double fun(int m)
{
}
main()
{
int m;
double s;
FILE *out;
printf("\n\nInput m: ");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
fclose(out);
}
我的答案
#include <math.h>
#include <stdio.h>
double fun(int m)
{
int i,j,k;
double s=0.0;
for(i=3;i<=m;i++)
{
k=sqrt(m);//m换成i就行了。
for(j=2;j<=k;j++)
{
if(i%j==0)
break;
}
if(j>=k+1)
s=s+sqrt(i);
}
return s;
}
main()
{
int m;
double s;
FILE *out;
printf("\n\nInput m: ");
scanf("%d",&m);
s=fun(m);
printf("\n\ns=%f\n\n",s);
out=fopen("outfile.dat","w");
for(m=0;m<10;m++)
fprintf(out,"%f\n",fun(m+80));
fclose(out);
}
答案就在注释旁。