一、数组中的元素 不同排序输出 :
1. 逆序 存放并输出 :
# 分析:首先将输入的n个整数对应存放到a数组中,只要将a[0]与a[n - 1]交换,a[1]与a[n - 2]交换,… ,a[i] 与a[n - 1 - i]交换,即可逆序存放这n个整数。
示例:
#include<stdio.h>
int main()
{
int n, i, a[10], t;
scanf("%d",&n); // 输入 n 的值
for (i = 0; i < n; i ++)
{
scanf("%d",&a[i]); // 输入 n 个数到 a数组
}
for (i = 0; i < n / 2;i ++) // 交换对应元素
{
t = a[i];
a[i] = a[n - 1 - i];
a[n - 1 - i] = t;
}
for (i = 0;i < n; i ++)
{
printf("%-3d",a[i]); // 输出交换顺序后的数组中的元素
}
printf("\n");
return 0;
}
>>> 运行结果 :
10
9 8 7 6 5 4 3 2 1 0
0 1 2 3 4 5 6 7 8 9
--------------------------------
Process exited after 12.61 seconds with return value 0
请按任意键继续. . .
2. 递推法 输出数组中元素: ( 裴波拉契数列 )
# 分析: 由递推公式的前两项可以求出第三项,继而由第二和第三项可以求出第四种从已知项出发一项一项求出未知项的方法叫递推法 。
示例: 输出 裴波拉契数列 的前20项 。 公式如下 :
f(n) = { 1 ; n = 1;
1 ; n = 2;
f(n - 1) + f(n - 2); n >= 3; }
本题目递推法结合数组来进行求解。使用数组解决斐波拉契数列的程序很清晰,可以将数列20项全部计算出来,按序存放在已定义的数组中,然后再输出。
#include<stdio.h>
int main()
{
int f[21], i; // 定义斐波拉契数列的数组
f[1] = 1; // 存放第1个数
f[2] = 1; // 存放第2个数
for (i = 3; i < 21; i ++) // 计算第3个以后的斐波拉契数列
{
f[i] = f[i - 1] + f[i -2];
}
for (i = 1; i < 21; i ++) // 输出斐波拉契数列
{
printf("%-8d",f[i]);
if (i % 4 ==0) // 每行输出4个数据
{
printf("\n");
}
}
return 0;
}
>>> 运行结果 :
1 1 2 3
5 8 13 21
34 55 89 144
233 377 610 987
1597 2584 4181 6765
--------------------------------
Process exited after 0.6288 seconds with return value 0
请按任意键继续. . .
3. 交换法 排序 :
# 分析: 从键盘输入10个数,要求按升序排序,输出排序结果。
(1)利用循环语句由键盘输入10个数依次放入 a 数组。
(2)排序方法如下:
①第1轮用 a [0]依次与 a [1], a [2],…, a [9]进行比较,若次序不对就交换,否则不交换。 本轮结束后, a [0]中就是10个数中的最小数。
②第2轮用 a [1]依次与 a [2],…, a [9]进行比较,处理方法与①相同。本轮结束后, a [1]中为10个数中的次小数。
③重复上述过程,至第9轮,比较 a [8]与 a [9],把小者存入 a [8],此时 a [9]存放的就是最大数。到此为止,10个数已按升序排好。
(3)完成上述操作需采用二重循环结构,外循环变量 i 从0循环到8,共循环9次;内循环变量 j 从 i +1循环到9。
#include<stdio.h>
int main()
{
int i, j, t, a[10];
for (j = 0; j < 10; j ++)
{
scanf("%d",&a[j]); // 从键盘输入10个数
}
printf("\n");
for (i = 0;i < 9; i ++) // 外循环 循环9次
{
for (j = i + 1; j < 10; j ++) // 内循环
{
if (a[i] > a[j]) // 如果前面的数比后面的大
{
t = a[i]; // 交换位置
a[i] = a[j];
a[j] = t;
}
}
}
printf("\n");
for (j = 0; j < 10; j ++)
{
printf("%-4d",a[j]); // 输出排序后的数
}
return 0;
}
<<< 运行结果 :
10 71 32 53 44 95 66 77 28 89
10 28 32 44 53 66 71 77 89 95
--------------------------------
Process exited after 2.683 seconds with return value 0
请按任意键继续. . .
标签:10,return,一维,示例,++,个数,数组,printf,程序设计
From: https://blog.csdn.net/Respberry_520/article/details/143472489