C语言(不是C++)程序改错题 求各位大神帮忙做做~感激不尽 感激不尽啊!

C语言(不是C++)程序改错题 求各位大神帮忙做做~感激不尽 感激不尽啊!
题目:
下列给定程序中,函数fun的功能是:用选择法对数组中的n个元素按从小到大的顺序进行排序。请改正程序中的错误,使程序能得出正确的结果。注意,不要改多main函数,不得增行或删行,也不得更改程序的结构。
程序如下:
#include <stdio.h>
#define N 20
void fun(int a[],int n)
{
int i,j,t,p;
for (j=0;j<n-1;j++)
{
p=j ——加上“;”
for (i=j;i,n;i++) ——j改为j+1
if (a[i]<a[p])
p=j; ——j改为i
t=a[p];a[p]=a[j];a[j]=t;
}
}
main()
{
int a[N]={9,6,8,3,-1},i,m=5;
printf("排序前的数据:");
for (i=0;i<m;i++)
printf("%d",a[i]);printf("\n");
fun(a,m);
printf("排序后的数据:");
for (i=0;i<m;i++)
printf("%d",a[i]);printf("\n");
}

第1个回答  2012-06-27
有个地方没家花括号,就是if那里。

#include <stdio.h>#define N 20void fun(int a[],int n){ int i,j,t,p;for (j=0;j<n-1;j++){p=j; //——加上“;”for (i=j;i,n;i++) //——j改为j+1 if (a[i]<a[p]){p=j;// ——j改为i t=a[p];a[p]=a[j];a[j]=t;}}}main(){int a[N]={9,6,8,3,-1},i,m=5;printf("排序前的数据:");for (i=0;i<m;i++) printf("%d",a[i]);printf("\n");fun(a,m);printf("排序后的数据:");for (i=0;i<m;i++) printf("%d",a[i]);printf("\n");}
第2个回答  2012-06-27
main() 改为 void main()
for (i=j;i,n;i++) 改为 for (i=j+1;i<n;i++)
其他你修改的地方都是对的
但是这程序没用的东西挺多的
第3个回答  2012-06-27
//改过的是fun函数,正确的如下:
void fun(int a[],int n)
{
int i,j,t,p;
for (j=0;j<n-1;j++)
{
p=j; //加分号。
for (i=j;i<n;i++) //i,n改为i<n
if (a[i]<a[p])
p=i; //j改为i
t=a[p];a[p]=a[j];a[j]=t;
}本回答被提问者和网友采纳
第4个回答  2012-06-27
你的选择排序少了1个if条件啊
要不在什么时候都交换了
void fun(int a[],int n)
{ int i,j,t,p; for (j=0;j<n-1;j++) { p=j; for (i=j+1;i<=n-1;i++) { if (a[i]<a[p]){ p=i; } } if(p!=j){ t=a[p]; a[p]=a[j]; a[j]=t; } }}
相似回答