#include <stdio.h> int swap(int a[]) { int k,temp; for(k=0;k<10;k++) { if(a[k]<a[k+1]) { temp=a[k]; a[k]=a[k+1]; a[k+1]=temp; } } for(k=0;k<10;k++) printf("%d ",a); } void main() { int a[10],i; for(i=0;i<10;i++) { scanf("%d ",a); } swap(a[10]); }
时间: 2024-03-15 17:47:57 浏览: 30
#include <stdio.h>
这段代码存在一些问题:
1. 在函数定义中,应该声明形参为一个指针类型,而不是一个数组类型。即应该写成 int swap(int *a)。
2. 在函数中,应该将循环的终止条件改为 k < 9,否则会越界访问数组。
3. 在函数中,printf("%d ",a)应该改为printf("%d ",a[k]),否则会输出整个数组的地址。
4. 在主函数中,scanf("%d ",a)应该改为scanf("%d",&a[i]),否则不会正确地读入数组元素。
修改后的代码如下:
```
#include <stdio.h>
void swap(int *a) {
int k, temp;
for(k = 0; k < 9; k++) {
if(a[k] < a[k + 1]) {
temp = a[k];
a[k] = a[k + 1];
a[k + 1] = temp;
}
}
for(k = 0; k < 10; k++)
printf("%d ", a[k]);
}
int main() {
int a[10], i;
for(i = 0; i < 10; i++) {
scanf("%d", &a[i]);
}
swap(a);
return 0;
}
```
阅读全文