大佬们,能帮我帮我解释一下这个程序吗
#include<stdio.h>int main()
{
int i, j, t;
int a;
printf("请输入十个数:");
for (i = 0; i < 10; i++)
scanf_s("%d", &a);
for (i = 0; i < 10; i++)
{
for (j = i + 1; j < 10; j++)
if (a < a)
{
t = a;
a = a;
a = t;
}
}
printf("从大到小排序后:\n");
for (i = 0; i < 10; i++)
printf("%d\t", a);
return 0;
} 通过循环,让你输入十个数进去。这十个数,存在数组里面。然后循环数组,将里面的数字两两比较,把大的放到前面。 2269099035 发表于 2020-11-11 09:06
通过循环,让你输入十个数进去。这十个数,存在数组里面。然后循环数组,将里面的数字两两比较,把大的放到 ...
那最后一个for是什么意思呀 18169947283 发表于 2020-11-11 09:07
那最后一个for是什么意思呀
输出啊,c语的for语句后面只跟一条语句时,可以免掉花括号的 这是冒泡排序,可以先了解一下冒泡排序的数学规律,然后再回来看这个代码就好理解了,下面的for循环代表着执行排序的趟数和每趟的次数 本帖最后由 wnhuiyou 于 2020-11-11 10:32 编辑
首先定义三个变量,再定义一个数组,一般数组下标是从0开始,所以你定义的这个 a 你就简单理解为 11个杯子(实际用到的只有10个),然后下面你循环10次来进行输入数字,你又可以简单理解为,把输入的数字分别放到十个杯子里,比如(分号左边是输入的数字,右边是杯子的编号):1:0,3:1 ,2:2 , 4:3 , 8:4 , 6:5 , 5:6 , 9:7, 22:8 , 55:9
接着进入循环套循环,先从里面开始,i=0 所以 j=0+1 进入内循环,判断a <a ,通过上面输入的数字存在的杯子中 得知 a = 1a=3 所以 1 小于 3,成立,进入排序,t变量,你就简单理解为一个不同颜色的杯子,用来中转的,已知t = a = 1 所以 t=1,把1放在t的杯子等待中转, 这时候a = 是空杯子所以 a = a = 3把3放到a这个杯子里这时 a 是空杯子,最后把 t里面的数字1,放到 a杯子里,第一阶段的排序结束,回到 j++这时 j 变成2, 然后有进入判断,如上面步骤以此类推,直到 j=10 时判断不成立,退出内循环,回到i++ i 变成 1 , 又接着进入内循环,如上步骤。
最后一个for 其实就是遍历的意思了,也就是说,上面的循环都结束后,此时,那十个杯子中里面的数字已经发生变化了,通过for来进行把下标为 a -- a 里面的数字都打印出来。 理解理解,谢谢啦
页:
[1]