麻烦帮我看看这个C语言程序吧!解释一下。(有些地方详细点)谢谢

#include<stdio.h>voidsort(int*x,intn)/这句{inti,j,k,t;for(i=0;i<n-1;i++){k=i;for(j=i+1;... #include<stdio.h>
void sort(int *x,int n) / 这句
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i; for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j; /这句
if(k!=i) /这句
{ t=x[i];
x[i]=x[k];
x[k]=t;
} } }
void main()
{FILE *fp; /这句
int *p,i,a[10];
fp=fopen("p9_1.out","w"); /这句
p=a;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10); /这句
for(;p<a+10;p++)
{ printf("%d ",*p); /这句
fprintf(fp,"%d ",*p); }
system("pause");
fclose(fp); }
展开
 我来答
苍紫幽蓝
2013-01-24 · TA获得超过441个赞
知道小有建树答主
回答量:207
采纳率:80%
帮助的人:177万
展开全部
总体实现功能是输入一个数组,并对数组进行从大到小排序,然后在屏幕输出排序之后的元素,同时将数组元素写入文件中。
#include<stdio.h>
void sort(int *x,int n) //数组排序函数
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i; for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j; //如果数组后一个元素大于下标为k的元素,将数组下标赋值给k,k始终保持最大的数组元素下标
if(k!=i) //如果数组下标改变了,那么进行数组元素交换
{ t=x[i];
x[i]=x[k];
x[k]=t;
} } }
void main()
{FILE *fp; //声明一个文件指针变量
int *p,i,a[10];
fp=fopen("p9_1.out","w"); //以写方式打开p9_1.out文件,文件指针为fp
p=a;
printf("Input 10 numbers:");
for(i=0;i<10;i++)
scanf("%d",p++);
p=a;
sort(p,10); //对数值进行排序
for(;p<a+10;p++)
{ printf("%d ",*p); //输出数组元素
fprintf(fp,"%d ",*p); }
system("pause");
fclose(fp); }
蟑儿螂
2013-01-24
知道答主
回答量:28
采纳率:0%
帮助的人:16.9万
展开全部
这应该是快速排序,去百度"快速排序"看它的算法吧,不了解递归原理和算法是很难解释清楚的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式