代码修改:题目:函数的功能是对参数p传送的首地址,n为元素个数的双精度 型数组按降序排序。#include<stdio.h> #include<stdlib.h> void fun(double *,int); void SaveRes(void); void fun(double *p,int n) { int i,j; double t; for(i=0;i<n-1;i++) { for(j=1;j<n;j++) { if((*(p+i))<(*(p+j))) { t=*(p+i); *(p+i)=*(p+j); *(p+j)=t; } } } } int main(void) { double a[10]={0.45,-0.97,0.56,0.13,0.66,-0.83,0.78,-0.19,0.46,-0.23}; int i; fun(a,10); printf("After sort\n"); for(i=0;i<10;i++) { printf("%6.2lf\n",a[i]); } SaveRes(); return 0; } void SaveRes(void) { FILE *fpIn,*fpOut; double a[12]; int i; fpIn = fopen("in0202.dat","r"); if(fpIn==NULL) { printf("File open error!"); exit(1); } fpOut = fopen("out0202.dat","w"); if(fpOut==NULL) { printf("File open error!"); exit(1); } for(i=0;i<12;i++) { fscanf(fpIn,"%lf",&a[i]); } fun(a,12); for(i=0;i<12;i++) { fprintf(fpOut,"%6.2lf",a[i]); } fclose(fpIn); fclose(fpOut); }
时间: 2023-12-04 20:02:11 浏览: 43
这段代码本身没有问题,但是函数SaveRes中输出到文件的数据没有换行符,因此所有的数据都写在了同一行上,不易于阅读。修改方法如下:
将 fprintf(fpOut,"%6.2lf",a[i]); 修改为 fprintf(fpOut,"%6.2lf\n",a[i]);,即增加一个换行符,每行输出一个数据,方便查看。
修改后的代码如下:
```c
#include<stdio.h>
#include<stdlib.h>
void fun(double *,int);
void SaveRes(void);
void fun(double *p,int n)
{
int i,j;
double t;
for(i=0;i<n-1;i++)
{
for(j=1;j<n;j++)
{
if((*(p+i))<(*(p+j)))
{
t=*(p+i);
*(p+i)=*(p+j);
*(p+j)=t;
}
}
}
}
int main(void)
{
double a[10]={0.45,-0.97,0.56,0.13,0.66,-0.83,0.78,-0.19,0.46,-0.23};
int i;
fun(a,10);
printf("After sort\n");
for(i=0;i<10;i++)
{
printf("%6.2lf\n",a[i]);
}
SaveRes();
return 0;
}
void SaveRes(void)
{
FILE *fpIn,*fpOut;
double a[12];
int i;
fpIn = fopen("in0202.dat","r");
if(fpIn==NULL)
{
printf("File open error!");
exit(1);
}
fpOut = fopen("out0202.dat","w");
if(fpOut==NULL)
{
printf("File open error!");
exit(1);
}
for(i=0;i<12;i++)
{
fscanf(fpIn,"%lf",&a[i]);
}
fun(a,12);
for(i=0;i<12;i++)
{
fprintf(fpOut,"%6.2lf\n",a[i]);
}
fclose(fpIn);
fclose(fpOut);
}
```