帮我检查一下代码:include<stdio.h> int main() { int a[10]={0}; int cnt; int max=a[0],min=a[0]; int pstx,pstm; int temp; printf("Input 10 numbers:"); for(cnt=0;cnt<10;cnt++) { scanf("%d",&a[cnt]); } for(cnt=0;cnt<10;cnt++) { if(a[cnt]>max) { max=a[cnt]; pstx=cnt; } else if(a[cnt]<min) { min=a[cnt]; pstm=cnt; } } printf("Max element position:%d,Max element:%d\n",pstx,max); printf("Min element position:%d,Min element:%d\n",pstm,min); temp=a[pstx]; a[pstx]=a[pstm]; a[pstm]=temp; for(cnt=0;cnt<10;cnt++) { printf("%4d",a[cnt]); } return 0; }
时间: 2024-01-13 15:04:22 浏览: 131
C语言中常用的几个头文件及库函数
5星 · 资源好评率100%
这段代码的主要功能是输入10个数字,找出数组中的最大值和最小值,然后交换最大值和最小值的位置,最后输出交换后的数组。
代码本身没有语法错误,但是有一些可以改进的地方:
1. 在初始化最大值和最小值时,应该使用数组中的第一个元素,而不是0。因为数组中的所有元素都可能是负数,使用0作为初始化值可能会导致错误的结果。
2. 在查找最小值的时候,应该使用else if语句,避免在最大值和最小值相等的情况下出现错误。
3. 在输出数组中的元素时,应该使用换行符(\n)将每个元素放在单独的一行,以便更清楚地显示数组中的元素。
修改后的代码如下:
```
#include <stdio.h>
int main() {
int a[10] = {0};
int cnt;
int max = a[0], min = a[0];
int pstx, pstm;
int temp;
printf("Input 10 numbers:");
for (cnt = 0; cnt < 10; cnt++) {
scanf("%d", &a[cnt]);
}
for (cnt = 0; cnt < 10; cnt++) {
if (a[cnt] > max) {
max = a[cnt];
pstx = cnt;
} else if (a[cnt] < min) {
min = a[cnt];
pstm = cnt;
}
}
printf("Max element position: %d, Max element: %d\n", pstx, max);
printf("Min element position: %d, Min element: %d\n", pstm, min);
temp = a[pstx];
a[pstx] = a[pstm];
a[pstm] = temp;
printf("After swapping:\n");
for (cnt = 0; cnt < 10; cnt++) {
printf("%d\n", a[cnt]);
}
return 0;
}
```
阅读全文