首页上一页 1 下一页尾页 4 条记录 1/1页
C选择排序程序
发表在C语言图书答疑
2015-12-02
是否精华
是
否
版块置顶:
是
否
#include <stdio.h>
int main()
{
int i,j;
int a[10];
int iTemp;
int iPos;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d", &a[i]);
}
/*从小到大排序*/
for(i=0;i<9;i++) /*设置外层循环为下标0~8的元素*/
{
iTemp = a[i]; /*设置当前元素为最小值*/
iPos = i; /*记录元素位置*/
for(j=i+1;j<10;j++) /*内层循环i+1到9*/
{
if(a[j]<iTemp) /*如果当前元素比最小值还小*/
{
iTemp = a[j]; /*重新设置最小值*/
iPos = j; /*记录元素位置*/
}
}
/*交换两个元素值*/
a[iPos] = a[i];
a[i] = iTemp;
}
/*输出数组*/
for(i=0;i<10;i++)
{
printf("%d\t",a[i]); /*输出制表位*/
if(i == 4) /*如果是第5个元素*/
printf("\n"); /*输出换行*/
}
return 0; /*程序结束*/
}
想问下大家个问题,这程序里面第二个for里面的外层循环赋值iPos = i;然而里面嵌套的内层for循环赋值iPos = j;那么最终应该是iPos = j,那接下来a[iPos] = a[i]中的ipos值应该就是j了,而之前赋值的iPos = i好像没起作用啊。但我去掉iPos = i语句时运行结果就不对了,想问下这是为什么呢?谢谢
int main()
{
int i,j;
int a[10];
int iTemp;
int iPos;
printf("为数组元素赋值:\n");
/*从键盘为数组元素赋值*/
for(i=0;i<10;i++)
{
printf("a[%d]=",i);
scanf("%d", &a[i]);
}
/*从小到大排序*/
for(i=0;i<9;i++) /*设置外层循环为下标0~8的元素*/
{
iTemp = a[i]; /*设置当前元素为最小值*/
iPos = i; /*记录元素位置*/
for(j=i+1;j<10;j++) /*内层循环i+1到9*/
{
if(a[j]<iTemp) /*如果当前元素比最小值还小*/
{
iTemp = a[j]; /*重新设置最小值*/
iPos = j; /*记录元素位置*/
}
}
/*交换两个元素值*/
a[iPos] = a[i];
a[i] = iTemp;
}
/*输出数组*/
for(i=0;i<10;i++)
{
printf("%d\t",a[i]); /*输出制表位*/
if(i == 4) /*如果是第5个元素*/
printf("\n"); /*输出换行*/
}
return 0; /*程序结束*/
}
想问下大家个问题,这程序里面第二个for里面的外层循环赋值iPos = i;然而里面嵌套的内层for循环赋值iPos = j;那么最终应该是iPos = j,那接下来a[iPos] = a[i]中的ipos值应该就是j了,而之前赋值的iPos = i好像没起作用啊。但我去掉iPos = i语句时运行结果就不对了,想问下这是为什么呢?谢谢