c语言循环函数调用?

Python012

c语言循环函数调用?,第1张

冒泡排序的循环写法有问题,应将:for (j=0j<=ij++)

改为:for (j=0j<2-ij++)

因为在第一次循环中,不断判断相邻两数,最终将最小数交换到最后,即a[2]的位置

在第二次循环中,再将a[2]之前数中的最小数交换到a[1]的位置,此时数组已降序排列

因此对于循环i(从0开始),每次都将a[0]~a[2-i]中的最小数交换到a[2-i]的位置

又判断相邻数用到了j+1,所以需要满足j+1<=2-i,即j<=1-i,也可写为j<2-i

因此j从0开始,到1-i 结束,改为for (j=0j<2-ij++)即可

修改后的代码和运行结果如下:

输出正确,如果帮到你,望采纳~

没有收到返回值的原因#include<stdio.h>intfun(intlim,intaa[10]){inti,j,k=0for(i=2i<=limi++){for(j=2j<ij++)if(i%j==0)breakif(j>=i)aa[k++]=i}returnk}main(){intaa[10]intlim=10,k=0k=fun(lim,aa)//就是这里,要把函数返回值赋值给k,才行,主函数的k和fun函数的k是完全两个东西printf("%d\n",k)}