2020年9月2日 10:35:31
// 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
// 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
第一道代码:
// 古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子
// 小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
long f1, f2;
int i;
f1 = f2 = 1;
for (i = 1; i <= 20; i++) // 输出前 40 个数,每次输出 2 个; 执行 20 次循环
{
printf("%12ld %12ld", f1, f2); // 长整型, 12个字符,右对齐; 中间有空格
if (i % 2 == 0) // 一次输出 2 个, 两次输出 4 个。这条语句的目的是:一行输出 4 个
printf("\n");
f1 = f1 + f2;
f2 = f1 + f2;
}
system("pause");
return;
}
运行结果:

第二道代码:
#include <stdio.h>
int main(void)
{
int a[24] = { 1,1 }; //定义一个数组,数组含有 24 个元素,其中第一、二个元素分别是 1,1
int m;
for (m = 0; m < 24; m++)
{
if (m >= 2)
a[m] = a[m - 1] + a[m - 2];
printf("第 %d 个月有 %d 对兔子\n", m + 1, a[m]);
}
return;
}
运行结果:

-------------分界线-------------
补充:将上面两道代码合成一道代码,用指针子函数调用。
时间:2020年9月4日 07:55:30
#include <stdio.h>
#include <stdlib.h>
void Method2(int *, int len);
int main(void)
{
long f1, f2;
int i;
f1 = f2 = 1;
for (i = 1; i <= 20; i++)
{
printf("%12ld %12ld", f1, f2);
if (i % 2 == 0)
printf("\n");
f1 = f1 + f2;
f2 = f1 + f2;
}
system("pause");
printf("\n");
int a[24] = { 1,1 }; // 子涵数需要用到的数组写在 main函数里
Method2(a, 24);
system("pause");
return;
}
void Method2(int * p, int len)
{
int m;
for (m = 0; m < len; ++m) // m < len, 而不能直接写成 m < 24
{
if (m >= 2)
p[m] = p[m - 1] + p[m - 2]; // 这里写 p[m] 而不能写成 a[m]
printf("第 %d 个月有 %d 对兔子\n", m + 1, p[m]);
}
return;
}
运行结果:

版权声明:本文为weixin_45982321原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。