#include "stdio.h"
#define size 5
void main()
{
int i,j,data[size],temp;
int m_d;
printf("\nplease input %d int:\n",size);
for(i=0;i<size;i++)
scanf("%d",&data[i]);
for(j=i+1;j<size;j++)
{ m_d=j;
if(data[i]>data[m_d])
temp=data[m_d];
data[m_d]=data[i];
data[i]=temp;
}
for(i=0;i<size;i++)
printf("%10d",data[i]);
}
你的程序没多大错误 可能是你粗心少写了几条语句 改正后如下:
#include <stdio.h>
#define size 5
int main() //我习惯让主函数返回int型的
{
int i,j,data[size],temp;
int m_d;
printf("\nplease input %d int:\n",size);
for(i=0;i<size;i++)
scanf("%d",&data[i]);
for(i=0;i<size;i++)//少了这条语句
for(j=i+1;j<size;j++)
{
m_d=j;
if(data[i]>data[m_d])
{
temp=data[m_d];
data[m_d]=data[i];
data[i]=temp;
}
}
for(i=0;i<size;i++)
printf("%10d",data[i]);
getchar();getchar();
}
第九行的:scanf("%d",&data[i]);应该放到第十行:for(j=i+1;j<size;j++)语句里面
因为你这个程序执行完scanf("%d",&data[i]);后i的值会成为5,到执行下面for循环时i会从5算起而不是0
所以应该改为
.....
.....
for(i=0;i<size;i++)
for(j=i+1;j<size;j++)
{ scanf("%d",&data[i]);
m_d=j;
if(data[i]>data[m_d])
........
.......