c语言随机输入10个数放入数组,最大数与第一个元素交换,最小数与最后一个元素交换,例如10,78,-89,90,100,-900,98,78,69,230变为230,78,-89,90,100,10,98,78,69,-900的代码展示和算法设计,解题思路,难点解析,项目小结
时间: 2024-05-05 18:22:13 浏览: 106
下面是C语言的代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define N 10
int main() {
int a[N], i, max, min, temp;
srand(time(NULL));
printf("随机生成的10个数为:\n");
for (i = 0; i < N; i++) {
a[i] = rand() % 1000 - 500;
printf("%d ", a[i]);
}
printf("\n");
max = 0;
for (i = 1; i < N; i++) {
if (a[i] > a[max]) {
max = i;
}
}
if (max != 0) {
temp = a[0];
a[0] = a[max];
a[max] = temp;
}
min = N - 1;
for (i = 0; i < N - 1; i++) {
if (a[i] < a[min]) {
min = i;
}
}
if (min != N - 1) {
temp = a[N - 1];
a[N - 1] = a[min];
a[min] = temp;
}
printf("调整后的数组为:\n");
for (i = 0; i < N; i++) {
printf("%d ", a[i]);
}
printf("\n");
return 0;
}
```
算法设计:
1. 定义一个长度为10的数组a[N],用于存储10个随机数。
2. 用srand()函数生成随机数种子,然后用rand()函数生成10个在-500到499之间的随机数,并存入数组a[N]中。
3. 遍历数组a[N],找到数组中的最大值max,记录其下标。
4. 如果max不等于0,则交换a[0]和a[max]的值。
5. 遍历数组a[N],找到数组中的最小值min,记录其下标。
6. 如果min不等于N-1,则交换a[N-1]和a[min]的值。
7. 输出调整后的数组a[N]。
解题思路:
本题的难点在于如何找到数组中的最大值和最小值,并交换这两个数与数组的第一个元素和最后一个元素。我们可以用两个变量max和min记录最大值和最小值的下标,然后再进行交换。
项目小结:
本题主要考察了对数组的使用和遍历,以及如何在数组中找到最大值和最小值,并进行交换的能力。同时,本题还要求生成随机数,需要使用到C语言的随机数函数库。通过本题的练习,可以加深对数组的理解和应用,同时也能掌握C语言的随机数函数库的使用。
阅读全文