问一个c语言程序的执行过程
请选出以下程序的输出结果
#include <stdio.h>
fun(s, n1, n2)
int *s, n1, n2;
{ int i, j, t;
i=n1; j=n2;
while(i <j)
{ t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;
i++; j--;
}
}
main()
{ int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;//这里a是多少呢?
fun(p,0,3); fun(p,4,9); fun(p,0,9);//这里的fun(p,0,3)是多少?
for(i=0; i <10; i++) printf(“%d”, *(a+i));
printf(“\n”);
}
主要是fun没搞清楚
[解决办法]
对数组s[]的n1到n2之间的数进行排序
[解决办法]
int *p=a;//这里a是多少呢? 代表指针p指向数组a的首地址
fun (int *s,int n1,int n2;) 作用是对于传进来的数组,将数组n1位与n2位之间的值配对互换。
[解决办法]
#include <stdio.h>
void fun(int *s,int n1,int n2)
{
int i, j, t;
i=n1; j=n2;
while(i <j)
{
t= *(s+i); *(s+i)= *(s+j); *(s+j)=t;
i++; j--;
}
}
void main()
{
int a[10]={1,2,3,4,5,6,7,8,9,0},i, *p=a;//这里a是多少呢?
fun(p,0,3);
for(i=0; i <10; i++)
printf( "%d ", *(a+i));
printf( "\n ");
fun(p,4,9);
for(i=0; i <10; i++)
printf( "%d ", *(a+i));
printf( "\n ");
fun(p,0,9);//这里的fun(p,0,3)是多少?
for(i=0; i <10; i++)
printf( "%d ", *(a+i));
printf( "\n ");
}
这样应该看到fun函数的功能了把!!
[解决办法]
将数组n1位与n2位之间的值配对互换,不是进行排序!