#include <stdio.h> #include<stdlib.h> void fun(double *,int); void SaveRes(void); void fun(double *p,int n) { int i,j; int min; double temp; for(i=0;i<n;i++) { min=i; for(j=i+1;j<n;j++) { if(*(p+j)<*(p+min)) { min=j; } temp=*(p+i); *(p+i)=*(p+min); *(p+min)=temp; } } } int main(void) { double a[10]={1.0,3.0,4.0,9.0,8.0,2.0,6.0,9.0,5.0,3.0}; int i; fun(a,10); printf("after sort:\n"); for(i=0;i<10;i++) { printf("%.2lf\n",a[i]); } return 0; }检查程序错误,并改正
时间: 2024-03-17 09:45:42 浏览: 63
程序存在以下错误:
1. 函数 `SaveRes` 没有定义,应该先删除该函数或者定义该函数。
2. 在函数 `fun` 中,交换两个数的操作应该在内层循环完成,而不是外层循环。应该将交换两个数的语句移到内层循环的 if 语句块中。
修改后的程序如下所示:
```c
#include <stdio.h>
#include <stdlib.h>
void fun(double *, int);
void fun(double *p, int n) {
int i, j;
int min;
double temp;
for (i = 0; i < n; i++) {
min = i;
for (j = i + 1; j < n; j++) {
if (*(p + j) < *(p + min)) {
min = j;
}
}
temp = *(p + i);
*(p + i) = *(p + min);
*(p + min) = temp;
}
}
int main(void) {
double a[10] = {1.0, 3.0, 4.0, 9.0, 8.0, 2.0, 6.0, 9.0, 5.0, 3.0};
int i;
fun(a, 10);
printf("after sort:\n");
for (i = 0; i < 10; i++) {
printf("%.2lf\n", a[i]);
}
return 0;
}
```
阅读全文