| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 404 人关注过本帖
标题:我做得程序设计题一个希望大家帮我找找错误在那儿
只看楼主 加入收藏
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:4 
我做得程序设计题一个希望大家帮我找找错误在那儿
.程序设计题
请编写函数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);
    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);
}
搜索更多相关主题的帖子: 程序设计 键盘 include double 平方根 
2011-09-08 19:33
方一鸣
Rank: 2
等 级:论坛游民
帖 子:74
专家分:13
注 册:2011-8-31
收藏
得分:0 
我是无论如何也找不到
2011-09-08 19:33
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:5 
程序代码:
#include <math.h>
#include <stdio.h>
double fun(int m)
{
    int i=3,j,t;
    double s=0;
    while(i<=m)
    {
        for(j=2;j<i;j++)
        {
            if(i%j==0)
            {
                t=0;
                break;
            }
            else
                t=1;
        }
        if(t==1)
        {
            s+=sqrt((double)i);
        }
        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-09-08 20:12
laznrbfe
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:482
专家分:1599
注 册:2011-5-22
收藏
得分:0 
程序代码:
double fun(int m)
{

    int i,j,k;
    double s=0.0;
    for(i=3;i<=m;i++)
    {
    k=(int)sqrt(i);//此处应该是i而不是m;还要强制类型转换,把double转换成int型
    for(j=2;j<=k;j++)
    {
     if(i%j==0)
         break;
    }
    if(j>k)//此处if(j>=k+1)是错误的判断方法,你可以这样看,如果执行了for(j=2;j<=k;j++){},
            //那么j<=k恒成立,则j>=k+1永不成立,此处应该为if(j>k)
    {
        s=s+sqrt(i);
    }
    return s;
}
以上是你错误的原因。
2011-09-08 20:41
scott_dw
Rank: 2
等 级:论坛游民
帖 子:35
专家分:52
注 册:2011-8-30
收藏
得分:5 
以下是引用方一鸣在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);
}

答案就在注释旁。
2011-09-08 22:38
快速回复:我做得程序设计题一个希望大家帮我找找错误在那儿
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.506366 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved