做了一个代码想模拟一下冒泡排序,但发现输出结果总是数组的地址,而把scanf取消后直接在代码里给数组赋值,就不会出现这种情况。
#include
#include
int main()
{
int arry[5],k = 0, m, n, i, j, success;
for (i = 0; i <= 4; i++) {
scanf_s("%d", &arry[i]);
}
while (1) {
success = 1;//衡量是否调换换成功
for (i = 0,m = 0, n = 0; i <= 3; i++){/*此for循环用于相邻两个
元素比较大小后交换位置*/
m = arry[i];
n = arry[i + 1];
if (m > n){
arry[i + 1] = m;
arry[i] = n;
}
}
for (i = 0; i <= 3; i++) {/*每次调换结束遍历数组检查元素是否按从小到大排列*/
k = arry[i + 1] - arry[i];
if (k < 0){ success=0; }
}
if (success==1){ break;}/*作为退出while循环的条件*/
}
for (i = 0; i <= 4; i++) {
printf("%d ",arry[i]);//遍历数组并输出
}
system("pause");
}
#include
#include
int main()
{
int arry[5]={1,9,5,88,2}, k = 0, m, n, i, j, success;
/*for (i = 0; i <= 4; i++) {
scanf_s("%d", &arry[i]);
}*/
while (1) {
success = 1;//衡量是否调换换成功
for (i = 0,m = 0, n = 0; i <= 3; i++){/*此for循环用于相邻两个
元素比较大小后交换位置*/
m = arry[i];
n = arry[i + 1];
if (m > n){
arry[i + 1] = m;
arry[i] = n;
}
}
for (i = 0; i <= 3; i++) {/每次调换结束遍历数组检查元素是否按从小到大排列/
k = arry[i + 1] - arry[i];
if (k < 0){ success=0; }
}
if (success==1){ break;}/作为退出while循环的条件/
}
for (i = 0; i <= 4; i++) {
printf("%d ",arry[i]);//遍历数组并输出
}
system("pause");
}
输入用1 9 5 88 2,不要加逗号