#include <stdio.h>int main() { int nums[10] = {5, 7, 2, 9, 1, 4, 6, 8, 3, 0}; // 初始化数组 int max = nums[0]; // 假设最大值为数组第一个元素 int max_index = 0; // 最大值下标为0 // 遍历数组,寻找最大值和它的下标 for (int i = 1; i < 10; i++) { if (nums[i] > max) { max = nums[i]; max_index = i; } } printf("最大值为:%d,下标为:%d\n", max, max_index); // 将最大值和第0个元素对换位置 int temp = nums[0]; nums[0] = max; nums[max_index] = temp; // 输出交换后的数组 printf("交换后的数组为:\n"); for (int i = 0; i < 10; i++) { printf("%d ", nums[i]); } return 0;}
时间: 2024-03-05 16:48:52 浏览: 66
C语言-C语言编程基础之leetcode题解第1题两数之和.zip
下面是对该代码的一些优化建议:
1. 可以使用宏定义或常量来表示数组长度,以提高代码的可维护性。
2. 可以将寻找最大值和最大值下标的过程封装成一个函数,以提高代码的重用性。
3. 可以使用指针来代替数组下标的方式,以提高代码的效率。
4. 可以将交换两个元素的过程封装成一个函数,以提高代码的重用性。
优化后的代码如下所示:
```c
#include <stdio.h>
#define LENGTH 10
int find_max(int *nums, int len, int *max_index) {
int max = nums[0];
*max_index = 0;
for (int i = 1; i < len; i++) {
if (nums[i] > max) {
max = nums[i];
*max_index = i;
}
}
return max;
}
void swap(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int nums[LENGTH] = {5, 7, 2, 9, 1, 4, 6, 8, 3, 0};
int max_index;
int max = find_max(nums, LENGTH, &max_index);
printf("最大值为:%d,下标为:%d\n", max, max_index);
swap(&nums[0], &nums[max_index]);
printf("交换后的数组为:\n");
for (int i = 0; i < LENGTH; i++) {
printf("%d ", nums[i]);
}
return 0;
}
```
阅读全文