【发布时间】:2015-09-18 19:28:10
【问题描述】:
这里是一个完整的新手。为了我的学校作业,我被要求编写一个显示 -
s= 1 + 1/2 + 1/3 + 1/4 ..... + 1/n
这就是我所做的 -
#include<iostream.h>
#include<conio.h>
void main()
{
clrscr();
int a;
float s=0, n;
cin>>a;
for(n=1;n<=a;n++)
{
s+=1/n;
}
cout<<s;
getch();
}
它完美地展示了它应该展示的东西。但是,过去我只编写了使用 int 数据类型的程序。据我了解, int 数据类型不包含任何小数位,而 float 则包含。所以我对浮动还不太了解。那天晚上晚些时候,我在 YouTube 上观看了一段视频,其中他正在编写完全相同的程序,但方式略有不同。视频是一些外语,所以我看不懂。他所做的将'n'声明为整数。
int a, n;
float s=0;
而不是
int a
float s=0, n;
但这并没有显示预期的结果。所以他继续并展示了两种纠正方法。他对 for 循环体进行了更改 -
s+=1.0f/n;
和
s+=1/(float)n;
据我了解,他后来在程序中声明了一个浮点数据类型(我说的对吗?)。所以,我的问题是,两者都显示相同的结果,但两者之间有什么区别吗?当我们声明 'n' 为浮点数时,为什么他写的是 1.0f 而不是 n.f 或 f.n。我试过了,但它给出了错误。而在第二种方法中,为什么我们不能写 1(float)/n 而不是 1/(float)n?和第一种方法一样,我们添加了float后缀1。另外,1.f和1.0f有区别吗?
我试图用谷歌搜索我的问题,但找不到任何答案。此外,几个小时后我想到的另一个困惑是 - 为什么我们还要声明“n”浮动?根据程序,总和应该是一个实数。所以,我们不应该只声明's'一个浮点数吗?我想得越多,我的大脑就越混乱。请帮忙!
谢谢。
【问题讨论】:
-
为了我们和您的利益,请缩进您的代码:)
-
抱歉,我就是这样编码的。我在 HTML、CSS 和 JS 中的代码完全一样。但是,我会从下一次开始记住这一点。
-
@DevanshKumar:建议您尽早习惯缩进代码!
-
当然,我会养成这个习惯的。