选择法排序(用选择法对10个整数从小到大排序。)请问下列代码那里有错?
#include<stdio.h>#include<string.h>intmain(){inta[1000];inttemp;inti;intk,n;k=0;n=0;s...
#include<stdio.h>
#include<string.h>
int main()
{
int a[1000];
int temp;
int i;
int k,n;
k=0;
n=0;
scanf("%d ",&a);
for(i=1;i<=n-1;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
printf("%d\n",a);
} 展开
#include<string.h>
int main()
{
int a[1000];
int temp;
int i;
int k,n;
k=0;
n=0;
scanf("%d ",&a);
for(i=1;i<=n-1;i++)
{
if(a[i]>a[i+1])
{
temp=a[i];
a[i]=a[i+1];
a[i+1]=temp;
}
}
printf("%d\n",a);
} 展开
1个回答
展开全部
int main()
{ int a[10]; //既然是输入10个整数,数组开10个即可
int temp;
int i,j;
int k,n;
k=0;
n=10; //需要设置n=10,否则循环结束条件i<n-1就永远不成立了
for ( i=0;i<n;i++ ) scanf("%d",&a[i]); //输入10个数需要逐一输入,格式"%d"不能有空格
//所谓选择法,即每次选择当前范围内最小的数然后放到前面,需要两重循环
for ( i=0;i<n-1;i++ ) //第1重循环指定用i可以访问数组前面n-1个数,顺序访问
{ //然后在当前数之后的所有数中选择最小的记录下来,最后与当前i位置的数进行交换
for ( j=i+1,temp=i;j<n;j++ ) //循环令j可顺序访问当前i之后的数组元素
//循环开始temp假定i处元素最小
if ( a[j]<a[temp] ) temp=j; //如果当前j位置元素比temp记录位置的小,temp记录小的位置
k=a[i]; a[i]=a[temp]; a[temp]=k; //交换当前i位置的数成temp记录的i之后最小位置的数
}
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n"); //打印数组也需要用循环逐一打印
}
{ int a[10]; //既然是输入10个整数,数组开10个即可
int temp;
int i,j;
int k,n;
k=0;
n=10; //需要设置n=10,否则循环结束条件i<n-1就永远不成立了
for ( i=0;i<n;i++ ) scanf("%d",&a[i]); //输入10个数需要逐一输入,格式"%d"不能有空格
//所谓选择法,即每次选择当前范围内最小的数然后放到前面,需要两重循环
for ( i=0;i<n-1;i++ ) //第1重循环指定用i可以访问数组前面n-1个数,顺序访问
{ //然后在当前数之后的所有数中选择最小的记录下来,最后与当前i位置的数进行交换
for ( j=i+1,temp=i;j<n;j++ ) //循环令j可顺序访问当前i之后的数组元素
//循环开始temp假定i处元素最小
if ( a[j]<a[temp] ) temp=j; //如果当前j位置元素比temp记录位置的小,temp记录小的位置
k=a[i]; a[i]=a[temp]; a[temp]=k; //交换当前i位置的数成temp记录的i之后最小位置的数
}
for ( i=0;i<n;i++ ) printf("%d ",a[i]); printf("\n"); //打印数组也需要用循环逐一打印
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询