C语言数列求和(使用while循环)
这是一个C语言 while 循环的示例,已知有下面的数列:
现在任意给出一个整数 k(1≤k≤15),要求计算出一个最小的 n,使得 Sn>k。
输出:最小的n。
本题算法非常简单,只要按照已知公式
反复累加,直到 Sn 的值大于给定的整数 k,输出当前的 n 即可。
代码清单 1:使用 while 语句
运行结果为:
代码清单 2:使用 do-while 语句
运行结果:
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。

问题分析
输入:一个整数k(1≤k≤15)。输出:最小的n。
本题算法非常简单,只要按照已知公式

另外,考虑到 k 的最大值是 15,因而将 n 定义为 long int 型,反复累加的和 Sn 定义为 long double 型。
算法描述

代码清单 1:使用 while 语句
#include <stdio.h> #include <stdlib.h> int main( ) { int k; long int n = 0; long double Sn = 0; printf("输入一个整数"); printf("(1-15):\n"); scanf("%d",&k); while(Sn <= k) { n++; Sn += 1.0 / n; } printf("最小的n是"); printf("%ld\n",n); system("pause"); return 0; }
运行结果为:
输入一个整数(1-15):
8
最小的n是1674
代码清单 2:使用 do-while 语句
#include <stdio.h> #include <stdlib.h> int main( ) { int k; long int n = 0; long double Sn = 0; printf("输入一个整数"); printf("(1-15):\n"); scanf("%d",&k); do { n++; Sn += 1.0/n; }while(Sn <= k); printf("最小的n是"); printf("%ld\n",n); system("pause"); return 0; }
运行结果:
输入一个整数(1-15):
5
最小的n是83
声明:《C语言系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。