C语言的题目解答~~

来源:百度知道 编辑:UC知道 时间:2024/06/02 08:08:51
#include<stdio.h>
main()
{ int i,x1,x2;
int a[5]={1,2,3,4,5};
void f1(int x,int y), f2 (int *x, int *y);
x1=x2=0;
for(i=1;i<5; i++){
if (a[i]<a[x1])
x2=i;
}
f2(&a[x1], &a[0]);
for (i=0;i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f1 (a[x2], a[1]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f2(&a[x2], &a[4]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
f1 (a[x1],a[3]);
for (i=0; i<5;i++) printf (“%2d”,a[i]);
printf (“\n”);
}
void f1 (int *x, int *y)
{ int t;
t=x; x=y; y=t;
}
void f2(int *x, int *y)
{ int t;
t=*x; *x=*y; *y=t;
}

每一行的输出结果是多少?? 为什么能不能讲解下~~~

你好,你的程序稍微有点错误,我帮你修改了下:
#include<stdio.h>

main()
{ int i,x1,x2;
int a[5]={1,2,3,4,5};
x1=x2=0;
void f1(int x,int y),f2 (int *x, int *y);//先申明函数
for(i=1;i<5; i++){
if (a[i]<a[x1])
x2=i;
}
f2(&a[x1], &a[0]);
for (i=0;i<5;i++) printf ("%2d",a[i]);
printf ("\n");
f1 (a[x2], a[1]);
for (i=0; i<5;i++) printf ("%2d",a[i]);
printf ("\n");
f2(&a[x2], &a[4]);
for (i=0; i<5;i++) printf ("%2d",a[i]);
printf ("\n");
f1 (a[x1],a[3]);
for (i=0; i<5;i++) printf ("%2d",a[i]);
printf ("\n");

return 0;
}
void f1 (int x, int y)//数值交换函数
{ int t;
t=x; x=y; y=t;
}
void f2(int *x, int *y)//地址交换函数
{ int t;
t=*x; *x=*y; *y=t;
}

其中输出结果是:
1 2 3 4 5
1 2 3 4 5
5