一开始我的程序如下,一直出现错误,基本上肯定逻辑上没有错误,用C-free编译运行时排序根本就没用,后来改成后面的才有用!
(一),有问题的程序
#include<stdio.h>
//#define LEN 10
void Sort(int arry[]);
int Select_min(int arry[]);
int main()
{
int a[10],num=0;
for(num=0;num<10;num++) /*输入10个数字*/
{
scanf("%d",&a[num]);
}
//printf("%d\n",sizeof(a)/sizeof(int));
//printf("%d\n",Select_min(a));
Sort(a,sizeof(a)/4);
for(num=0;num<10;num++)
{
printf("%d ",a[num]);
}
printf("\n");
return 0;
}
void Sort(int arry[])
{
int i=0,j=0,min=0;
int temp;
//arry_size=sizeof(arry)/4;
//for(i=j+1;sizeof(arry)/4;i++)
for(j=0;j<sizeof(arry)/4;j++)
{
min=j;
for(i=j+1;i<sizeof(arry)/4;i++)/*这个for循环就是找到每一趟中最小的值,找到之后下一躺就少一个*/
{
if(arry[min]>arry[i])
min=i;/*记录最小值*/
}
if(min!=j) /*把第一次最小的放在数组的最前面*/
{
temp=arry[min];
arry[min]=arry[j];
arry[j]=temp;
}
}
}
int Select_min(int arry[])/*求数组中最小值*/
{
int m,MIN=0;
MIN=arry[0];
for(m=1;m<sizeof(arry)/sizeof(int);m++)
{
if(MIN>arry[m])
MIN=arry[m];
}
return MIN;
}
(二)、修改后正确代码!
#include<stdio.h>
//#define LEN 10
void Sort(int arry[],int);
int Select_min(int arry[]);
int main()
{
int a[10],num=0;
for(num=0;num<10;num++) /*输入10个数字*/
{
scanf("%d",&a[num]);
}
//printf("%d\n",sizeof(a)/sizeof(int));
//printf("%d\n",Select_min(a));
Sort(a,sizeof(a)/4);
for(num=0;num<10;num++)
{
printf("%d ",a[num]);
}
printf("\n");
return 0;
}
void Sort(int arry[],int arry_size)
{
int i=0,j=0,min=0;
int temp;
//arry_size=sizeof(arry)/4;
//for(i=j+1;sizeof(arry)/4;i++)
for(j=0;j<arry_size;j++)
{
min=j;
for(i=j+1;i<arry_size;i++)/*这个for循环就是找到每一趟中最小的值,找到之后下一躺就少一个*/
{
if(arry[min]>arry[i])
min=i;/*记录最小值*/
}
if(min!=j) /*把第一次最小的放在数组的最前面*/
{
temp=arry[min];
arry[min]=arry[j];
arry[j]=temp;
}
}
}
int Select_min(int arry[])/*求数组中最小值*/
{
int m,MIN=0;
MIN=arry[0];
for(m=1;m<sizeof(arry)/sizeof(int);m++)
{
if(MIN>arry[m])
MIN=arry[m];
}
return MIN;
}