请问一下这程序为什么再编译的时候出错了?

来源:百度知道 编辑:UC知道 时间:2024/06/17 21:56:01
/*-----------------------------------------
编程求出 1 + 1/2 + 1/3 + …… + 1/100的值。
----------------------------------------*/
#include<stdio.h>
#define N 100
float function(int a);
void main()
{
float sum;
sum=function(N);//调用函数
printf("sum=%f",sum);
getch();
}
float sum(int a)//子函数完成功能
{
float t=1,s=0;
int i;
for(i=1;i<=a;i++)
{
t=1/i;
s=s+t;
}
return (s);
}

要getch();干什么呢?看看这个吧!
#include<stdio.h>
#define N 100
float function(int a);
void main()
{
float sum;
sum=function(N);
printf("sum=%f\n",sum);
}
float function(int a)
{
float t,s=0;
int i;
for(i=1;i<=a;i++)
{
t=(float)1/i;
s+=t;
}
return (s);
}

i是int型,因此1/i就成了整型除法,结果是0。要用“快乐方舟”所用的(float)1/i或者1.0/i

#include<stdio.h>
#define N 100
float function(int a);
void main()
{
float sum;
sum=function(N);
printf("sum=%f",sum);
getch();
}
float function(int a)
{
float t,s=0;
int i;
for(i=1;i<=a;i++)
{
t=(float)1/i;
s=s+t;
}
return (s);
}

可将语句#define N 100 改为输入任意数(包括N=100),这样更灵活了!程序如下:
#include <iostream.h>
float sum(int n)
{
int i,t;
float s=0;
for(i=1;i<=n;i++)