优化一下
时间: 2023-07-04 11:26:04 浏览: 164
好的,以下是对代码的优化:
1. 函数名字的修改:将 `fun` 修改为 `max_value_and_index`,以更好地表达函数的作用。
2. 变量名字的修改:将 `s` 修改为 `arr`,更符合数组的命名习惯。
3. 变量类型的修改:将 `int` 修改为 `size_t`,以更好地表达数组长度的数据类型。
4. 变量名字的修改:将 `m` 修改为 `len`,更符合变量的命名习惯。
5. 变量名字的修改:将 `n` 修改为 `count`,更能表达变量的含义。
6. 变量名字的修改:将 `pos` 修改为 `indices`,更能表达变量的含义。
7. 修改返回值:将 `int` 修改为 `struct`,以返回多个值。
8. 修改函数实现:将两个循环合并为一个,以减少代码的重复。
9. 删除不必要的赋值:将 `j` 的初始值删除,因为其默认值为 0。
优化后的代码如下所示:
```
#include <stdio.h>
struct result {
int max_value;
size_t count;
size_t indices[10];
};
struct result max_value_and_index(int arr[], size_t len) {
struct result res = { arr[0], 0 };
for (size_t i = 0; i < len; i++) {
if (arr[i] > res.max_value) {
res.max_value = arr[i];
res.count = 1;
res.indices[0] = i;
} else if (arr[i] == res.max_value) {
res.indices[res.count++] = i;
}
}
return res;
}
int main() {
size_t len;
int arr[10];
printf("请输入数组元素个数:");
scanf("%zu", &len);
printf("请输入数组元素:");
for (size_t i = 0; i < len; i++) {
scanf("%d", &arr[i]);
}
struct result res = max_value_and_index(arr, len);
printf("最大值:%d\n", res.max_value);
printf("个数:%zu\n", res.count);
printf("所在下标是:");
for (size_t i = 0; i < res.count; i++) {
printf("%zu ", res.indices[i]);
}
printf("\n");
return 0;
}
```
这样修改后的代码更加清晰简洁,可读性和可维护性更好。
阅读全文