目录
题目
代码实现
代码解析
题目
要求输出1/1+1/2+1/3+....1/n的和
代码实现
#include "stdio.h"
int main(void){
float value,sum=0.0;
unsigned n=0;
scanf("%f",&value);
do
{
sum+=(float)1.0/++n;
}
while(n<value);
printf("%u\n",n);
return 0;
}
代码解析
unsigned int可以缩写unsigned,当只有unsigned的时候,默认为unsigned int类型。
unsigned是C语言的关键字,表示无符号数。unsigned可以与各种整数类型连用。
unsigned int表示无符号整数类型
原本int类型占4个字节,32位,其中1位表示正负号,这样用来表示数值的范围就变小了。
不需要正负号时候,用unsigned可以让32位都表示数值范围。
首先C语言当中没有分数这个概念,1/2会直接等于0,当如果是1.0/2会等于0.5。所以我们在表示分数的时候需要(float)1.0/++n。
题目的分母从1开始不断递增到n,分子始终是1不变。
输入一个n,然后借助循环体,将1.0/++n不断叠加到sum变量中,当n不小于value的时候(说明数式已经加到1/1+....+1/n),停止循环,进行输出。