一.求Fibonacci数列前40个数
![](https://img-blog.csdnimg.cn/20210326221724687.bmp)
求Fibonacci数列前40个数:1 1 2 3 5 8 13 21 34 ...
#include <stdio.h>
int main()
{
long f1, f2, fn;
int i;
f1 = f2 = 1;
printf("%-12ld\t%-12ld\t", f1, f2);
for (i = 3; i <= 40; ++i)//可改成i=2,i<=39输出完全对齐;
{
fn = f1 + f2;//等于前两个数之和;
f1 = f2; //第二个数变成下一个数的数一;
f2 = fn; //新得的数变成下一个数的数二;
if (i % 5 == 0) printf("\n"); //i是5的整数时,换行;
printf("%-12ld\t", fn);//%-12ld表示输出12位左对齐;
}
}
二.求1!+2!+3!+…+20!
#include <stdio.h>
int main()
{
int i,f=1,sum=0;
for (i = 1; i <= 20; ++i)
{
f *= i; //迭代计算阶乘
sum += f;
}
printf("%d\n", sum);
}
三.求级数公式(精确到小数点后5位)
![](https://img-blog.csdnimg.cn/20210326231228806.bmp)
#include <stdio.h>
#include <math.h>
int main()
{
double x, sum = 1, term = 1,i=1;
scanf_s("%lf", &x);
while (fabs(term)>=1e-5)//fabs()取绝对值;
{
term = term * (-1) * x * x / ((2 * i) * (2 * i - 1));
//找出递增规律,利用迭代计算
sum = sum + term;
++i;
}
printf("%f\n", sum);
}
四.实践项目
【项目1:另类求和】
求 Sn=a+aa+aaa+…+aa…a之值,其中 a是一个数字。
例如2+22+222+2222( 此时a=2,n=4),a和n均由键盘输入。
#include <stdio.h>
int main()
{
int a, n, i = 1, Sn = 0, Tn = 0;
printf("请输入 a 和 n 的值:\n");
scanf_s("%d %d", &a, &n);
while (i <= n)
{
Tn = Tn * 10 + a;
Sn = Sn+Tn;
++i;
}
printf("a+aa+aaa+...=%d\n", Sn);
return 0;
}
【项目2:反弹的皮球】
一球从的100米高度自由落下,每次落地后反跳回原来高度的一半,再落下,求它在第十次落地时,共经过多少米?第十次反弹多高?
#include <stdio.h>
int main()
{
float sn = 100.0, hn = sn/2;
int n;
for (n = 2; n <= 10; ++n)
{
sn = sn + hn * 2;
hn = hn / 2;
}
printf("第10次落地时经过: %g 米\n", sn);
printf("第10次落地时反弹: %g 米\n", hn);
}
【项目3:Bessel函数】
Bessel函数Jn(X)有以下的递推关系:
编写程序,利用递推关系,由任意的n和x≠0求Jn(X)。
#include <stdio.h>
#include <math.h>
int main()
{
double jn=0, j0, j1, x;
int n, i;
const double PI = 3.1415926;
scanf_s("%d %lf", &n, &x);
j0 = sin(x * PI / 180) / x;
j1 = sin(x * PI / 180) / (x * x) - cos(x * PI / 180) / x;
for (i = 2; i <= n; i++)
{
jn = (2 * (double)i - 1) * j1 - j0;//公式中为i+1项值,转换为第i项值;
j0 = j1;
j1 = jn;
}
printf("%f\n", jn);
}
【项目4:贪财的富翁】
一个大富翁遇到一个陌生人,陌生人找他谈一个换钱的计划,该计划如下:我每天给你十万元,而你第一天只需给我一分钱,第二天我仍给你十万元,你给我两分钱,第三天我仍给你十万元,你给我四分钱,…,你每天给我的钱是前一天的两倍,直到满一个月(30天),大富翁很高兴,欣然接受了这个契约。请编程序,输出每日的交易记录。
#include <stdio.h>
int main()
{
double a = 0.005, b = 100000, suma = 0, sumb = 0;
for (int i = 1; i <= 30; ++i)
{
a = a * 2;
suma = suma + a;
sumb = sumb + 100000;
printf("第%02d天 大富翁支出%10.2f元,累计支出%10.2f\n\n", i, a, suma);
printf("第%02d天 陌生人支出%10.2f元,累计支出%10.2f\n", i, b, sumb);
}
}
【项目5:在北京买房】
现在北京有一套房子,价格200万,假设房价每年上涨10%,一个软件工程师每年固定净赚40万。输出未来10年的房价和工程师存款金额
#include <stdio.h>
int main()
{
double 房价 = 200/1.1, 存款 = -40;
int i;
for (i = 1; i <= 10;++i )
{
房价 = 房价 * 1.1;
存款 = 存款 + 40;
printf("第%02d年 房价:%.2f万元 ,存款: %.2f万元\n", i, 房价, 存款);
}
}