回 帖 发 新 帖 刷新版面

主题:求错误的原因

int wuyu(int n);
main()
{int n;
float sum;
  scanf("%d",&n);
  sum=wuyu(n);
  printf("%.2f",sum);
}
int wuyu(int n)
 {int i;
 float sum=0,j;
    for(i=1;i<=n;i++)
       {j=1.0/(2*i+1);
      sum=sum+j;
    }
     return sum;
 }
我是新手,这个程序是自己随便编的。程序能运行,但是输入6的时候出的结果为0.00,而输入7是则输出1.00。苦思冥想都出来,所以求各位大侠解解,指点迷津。感激不尽啊!!!!!

回复列表 (共4个回复)

沙发

你函数是整型,你返回的是整型数值又赋值给单精度,你把int wuyu(int n) 改成float wuyu(int n)试试
另外你把数值定义都赋初值,习惯很重要

板凳

错误:你的sum定义的是float,函数的返回值却是整形,

正确代码如下
#include <stdio.h>
float wuyu(int n);
void main()
{
    int n;
    float sum;
    scanf("%d",&n);
    
    sum=wuyu(n);
    printf("%.2f",sum);
}
float wuyu(int n)
 {
    int i;
    float sum=0,j;
    for(i=1;i<=n;i++)
       {
        j=1.0/(2*i+1);
        sum=sum+j;
        }
     return sum;
 }
你的代码没有提示很多的警告吗!编码的时候要严谨,注意细节。

3 楼

你的函数定义的是整形而sum定义的是float所以产生错误,

4 楼

你的sum定义的是float,函数的返回值却是整形,

我来回复

您尚未登录,请登录后再回复。点此登录或注册