#include <stdio.h> void swap(int *a, int *b) { int temp = *a; *a = *b; *b = temp; } int main() { int arr[10]; int *p = arr; int i; printf("请输入10个整数:\n"); for (i = 0; i < 10; i++) { scanf("%d", p + i); } int *max = p, *min = p; for (i = 1; i < 10; i++) { if (*(p + i) > *max) { max = p + i; } if (*(p + i) < *min) { min = p + i; } } swap(p, min); swap(max, p + 9); printf("交换后的结果为:\n"); for (i = 0; i < 10; i++) { printf("%d ", *(p + i)); } printf("\n"); return 0; }改正
时间: 2024-01-12 10:04:44 浏览: 193
这段代码看起来没有明显的错误,但是可能存在一些不规范的写法,我们可以进行一些改进:
1. 函数名应该遵循驼峰命名法,即 `swap` 改为 `swapInt`。
2. 对于用户输入的整数个数,我们可以使用 `#define` 或者 `const` 常量来进行定义,这样可以提高代码的可维护性。
3. 在函数中,可以使用 `const` 关键字来修饰不会被修改的参数,这样可以提高代码的可读性和可维护性。
4. 可以在输入整数之前,输出提示信息告诉用户需要输入几个整数。
改进后的代码如下所示:
```
#include <stdio.h>
void swapInt(int *a, int *b) {
int temp = *a;
*a = *b;
*b = temp;
}
#define NUM_OF_INTS 10
int main() {
int arr[NUM_OF_INTS];
int *p = arr;
int i;
printf("请输入%d个整数:\n", NUM_OF_INTS);
for (i = 0; i < NUM_OF_INTS; i++) {
scanf("%d", p + i);
}
const int *max = p, *min = p;
for (i = 1; i < NUM_OF_INTS; i++) {
if (*(p + i) > *max) {
max = p + i;
}
if (*(p + i) < *min) {
min = p + i;
}
}
swapInt(p, (int *)min);
swapInt((int *)max, p + NUM_OF_INTS - 1);
printf("交换后的结果为:\n");
for (i = 0; i < NUM_OF_INTS; i++) {
printf("%d ", *(p + i));
}
printf("\n");
return 0;
}
```
注意:在交换指针 `min` 和 `max` 所指向的元素时,需要将指针强制转换为 `int *` 类型,否则会出现编译错误。
阅读全文