#C语言学习笔记#排序数字问题(冒泡法)
程序员文章站
2022-07-15 08:45:35
...
//《C语言综合项目实战》项目五
//对数字进行排序问题,本项目使用的是冒泡法进行排序,需要使用for循环和if条件的嵌套.
//以及注意输入数字时数组是否会溢出。
#include<stdio.h>//标准的输入输出头文件<stdio.h>
#define N 255//预编译 N 255,防止在输入数字时数组溢出报错。
int main() {
int a[N] = { 0 }, b, c, d, f;//声明整型变量b,c,d,f,声明整型数组a并且下标为N且初始化。
//b用于存储数组下标-1。(用户想要输入几个数字)
//c用于for循环的自增长数和数组下标。
//d用于数组下标。
//f用于中间变量,进行交换数据。
printf("请输入要输入几个数字(<255):");
scanf_s("%d", &b);
printf("请输入数字:");
for (c = 0; c < b; c++)//for循环,用户输入数字。
{
scanf_s("%d", &a[c]);
};
for (c = 0; c < b; c++) //for循环的嵌套使用实现冒泡法的实现。
{ //第一个数与下一个数进行对比,若第一个数大于第二数。
for (d =c; d < b; d++) //则说明,目前最小值为第二个数,则将两个位置的数据交换。
{ //此时,再不考虑后面数据的情况下,最小值永远是第一位。
if (a[c] > a[d]) //现第二位数据已考虑完毕,开始第一个数据比较第三个数据。
{ //由此同理类推。
f = a[c]; //需注意的是,第一轮比较完后,第一位是最小值,则下一轮无需比较第一位。
a[c] = a[d]; //这就是第二个for循环d=c的原因,则开始不考虑第一个数据。
a[d] = f; //由第二个数据依次和后面比较,交换数据。
}
}
}
for (c = 0; c < b; c++) { //for循环,依次输出数组中排列好的数据。
printf("%d ", a[c]);
}
}
//总结:冒泡法应该注重原理,可通过笔纸进行模拟,或者中间输出一些数据,探究其过程。
上一篇: c语言学习--数组篇
下一篇: C语言学习总结