关于才C语言的一个问题,可以帮我回答一下吗

#include<stdio.h>
void fun(int a[],int n)
{int t,i,j;
for(i=0;i<n;i+=2)
for(j=i+2;j<n;j+=2)
if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}
}
main()
{int c[10]={10,9,8,7,6,5,4,3,2,1},i;
fun(c,10);
for(i=0;i<10;i++) printf("%d,",c[i]);
printf("\n");
}
这个程序执行结果是多少,可以具体步骤给我解释下吗,谢谢!

这种模块话的程序,我个人建议先找到主程序,再看模块,个人建议哦,主要是我不喜欢模块在上,主程序在下...好奇怪的姿势..你懂的..  不过不得不告诉楼主,学习并习惯使用模块开发是十分重要。

#include<stdio.h>//函数头,最常用的

void fun(int a[],int n)//确定返回的名字为fun,其值 int a 和n 并由第15行赋值 

{

    int t,i,j;//创建int t i j

    for(i=0;i<n;i+=2)//使用for语句循环,i等于0,且小于10,跳到下一行,直到大于10之前 i自加2

        for(j=i+2;j<n;j+=2)//执行这条语句之前,必须付i小于10这条件,且J的初赋值是i自加2,直到大于10之前,J自加2

        if(a[i]>a[j])//使用if循环语句,条件是只要数组i大于数组j 就执行下面的语句

        {

            t=a[i]; //交换数值,t数值交换到数组i

            a[i]=a[j];//一次类推

            a[j]=t;//依次类推

    }

}

void main()//自己手欠,写了一个返回值,不影响程序

{

    int c[10]={10,9,8,7,6,5,4,3,2,1},i;//创建INT类型数组并赋值,创建INT类型i,不赋值

    fun(c,10);//引用函数fun,程序到此跳到第一行开始执行

    for(i=0;i<10;i++)//限定输出字符的范围

        printf("%d,",c[i]);//输出C

    printf("\n");//换行

    getch();//又是自己手欠,自己添加的一个,没什么大作用就是balbalabla

}

下面程序的运行结果

温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-02-09
结果为2,9,4,7,6,5,8,3,10,1
fun函数类似于冒泡排序,唯一不同的只是在于每次比较都是i+2,j+2,因此,只有第1,3,5,7,9的数会进行从小到大排序,所以得到此结果。
第2个回答  2015-02-09
运行一下 不就知道了 学编程 哪有看着代码分析结果的
相似回答