应用1: 利用数组求Fibonacci数列的前20项
数列规律: 1,1,2,3,5,8,13,21,…Fn=Fn-1+Fn-2(n≥3);
#include <stdio.h>
int main()
{
int i, f[20] = { 1,1 };
for (i = 2; i < 20; ++i)
{
f[i] = f[i - 1] + f[i - 2];
}
for (i = 0; i < 20; ++i)
{
if (i % 5 == 0)
printf("\n");
printf("%d\t", f[i]);
}
}
运行结果:
1 1 2 3 5
8 13 21 34 55
89 144 233 377 610
987 1597 2584 4181 6765
应用2: 谁最大——有若干数字存入 数组中,请找出最大值
#include <stdio.h>
#define SIZE 10 //定义符号常量,为了日后程序维护方便;
int main()
{
int d[SIZE], i, max, index;
printf("请输入%d个数: ", SIZE);
for (i = 0; i < SIZE; ++i)
{
scanf_s("%d", &d[i]);
}
max = d[0];
for (i = 1; i < SIZE; ++i) //max初始值为d[0],i=0不用比较,i取1;
{
if (d[i] > max) //用max变量记录当前最大值,与数组中的元素逐个比较;
{
max = d[i];
index = i;
}
}
printf("这个最大数为: %d\n", max);
printf("最大数下标为: %d\n", index);
}
应用3 利用数组输出十进制数对应的N进制数
方法: 除N取余
例如(38)10=(100110)2
第一步:
38 % 2 = 19…0
19 % 2 = 09…1
09 % 2 = 04…1
04 % 2 = 02…0
02 % 2 = 01…0
01 % 2 = 00…1
直到商为0停止.
第二步:
将余数由下往上读取 1 0 0 1 1 0
例如(38)10=(???)8
38 % 8 = 4…6
04 % 8 = 0…4 //商为0终止
结果: 4 6 //将余数由下往上读取 4 6
#include <stdio.h>
int main()
{
int x; //输入的十进制数
int N; //需转换几进制数
int i; //代表数组的下标
int a[100]; //用于存放余数
printf("十进制数: ");
scanf_s("%d", &x);
printf("转几进制: ");
scanf_s("%d", &N);
i = 0;
while (x)
{
a[i] = x % N; //保存余数
x = x / N; //保存商数
++i; //下标自增
}
printf("输出结果: ");
for (i = i - 1; i >= 0; --i) //逆序输出
{
printf("%d", a[i]);
}
printf("\n");
return 0;
}
运行结果:
十进制数: 38
转几进制: 2
输出结果: 100110
十进制数: 38
转几进制: 8
输出结果: 46