
正文
c语言输出排序乱了,c语言输出排名
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言,程序写好以后,别人老说我程序排序很乱
刚开始,尽量把一段一段的代码写成子程序的模式。比如一个FOR语句里面的代码,一个IF语句里面的代码(特别是里面的代码过多,难懂的时候)。变量名尽量取得有意义,简单明了。不要用A,B,C这样的。
小心点,C是分语句执行的,到了“;”就是一条语句,除非你用“{}”,这样可以将几个语句合并为一条语句。可以简单这么理解。
你写的这个为什么非得定义一个最小值呢?实际上,我上面这一段a[i]中就是时刻都是最小值,没有必要.。你增加了中间变量之后,徒徒增加了你自己的脑袋负担,搞得逻辑复杂,更容易让自己出错,你说是不是。
相关问答
Q1: C语言,用冒泡排序实现10个数字由小到大输出,为什么我弄出来是乱码_百度...
你只是在对比了一个数与它相邻的数,这样结果不是排序。改成两重循环,外循环从i=1~9,内循环从i~9,逐个比较两个循环变量的数即可。
冒泡排序的外层循环是for(i=0; in-1; i++),内层循环是for(j=0; jn-1-i; j++),每次比较的两个元素是a[j]和a[j+1]。
由于在排序过程中总是小数往前放,大数往后放,相当于气泡往上升,所以称作冒泡排序。用二重循环实现,外循环变量设为i,内循环变量设为j。外循环重复9次,内循环依次重复9,8,...,1次。
数组边界溢出;if(a[j]a[j+1]){ }这里j可以等于9,(j+1)就是10。
新建一个工程和.c文件。定义变量类型。用一个for语句遍历整个数组。引入一个子函数,该子函数的作用是调整数组元素的顺序,使之由小到大排列。最后通过for函数一次输出调整后的数组元素。
Q2: C语言从文件读取10个数选择排序后输出,为什么我的输出结果不对呢...
原因就是你使用if语句时不对,你这个代码中if语句只作用到t=a[i]就结束了,后面a[i]=a[j];a[j]=t;不属于if语句的作用范围,在每一次循环都执行了。在缺省括号时if语句默认执行到其后第一个分号时结束。
你的照片太模糊了,看不清代码,不过看你的输出结果,应该判断为输出的值为null,即参数是空值,检查下你的scanf函数是否赋值成功,後边的算法赋值逻辑是否正确。
k=j;temp=*(p+i);*(p+i)=*(p+k);*(p+k)=temp;} 其含义是:当发现一个比*(p+i)大的值时,才进行交换。你原来的做法,当发现一个大值时,进行了交换,其后如果是小值,将继续进行交换,故出现了错误。
关于c语言输出排序乱了和c语言输出排名的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。








