输入3×4数组,用指针方法实现将每行中的最小数与第0列元素对调。

main( )
{ int a[3][4],i,j,*p=a[0];
for(i=0;i<3;i++)
for(j=0;j<4;j++) scanf(“%d”,p++);
for(p=&a[0][0];p<a[0]+12; (15) )
swap(p);
(16) ;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++) printf(“%3d”,*p++);
printf(“\n”);}
}
swap(int (17) )
{ int min,i,*p2=p1,*p3;
(18) ;
for(i=0;i<4;i++)
{ if(*p2<*p3) p3=p2; (19) ;
}
min=*p1;*p1=*p3;*p3=min;
}
(15)
(16)
(17)
(18)
(19)

自己写了个
#include <conio.h>
#include <stdio.h>
int swap(int b[4])
{
int i,j,k,t;
j=b[0]; //保留第一个元素
for(i=1;i<4;i++)
{if(j>b[i]) k=i;} //保存最小元素的下标
if(k!=0)
{t=b[k];
b[k]=b[0]; //第一个元素和最小元素进行交换
b[0]=t;
}
return 0;
}

void main()
{ int a[3][4];
int i,j;
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",&a[i][j]);

for(i=0;i<3;i++)
swap(&a[i]); //传递每行首地址

for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%3d",a[i][j]);//打印3行4列
printf("\n");
}
要是填空题。。。就如下
void main( )
{ int a[3][4],i,j,*p=a[0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
scanf("%d",p++);
for(p=&a[0][0];p<a[0]+12; p+=4)
swap(p);
p=a[0] ;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
printf("%3d",*p++);
printf("\n");}
}
swap(int *p1)
{ int min,i,*p2=p1,*p3;
p3=p1 ;
for(i=0;i<4;i++)
{ if(*p2<*p3)
p3=p2;
p2++ ;
}
min=*p1;*p1=*p3;*p3=min;
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-07-12
swap(int *p1 )
main( )
{ int a[3][4],i,j,*p=a[0];
for(i=0;i<3;i++)
for(j=0;j<4;j++) scanf(“%d”,p++);
for(p=&a[0][0];p<a[0]+12; p+=4)
swap(p);
p=a[0] ;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++) printf(“%3d”,*p++);
printf(“\n”);}
}
swap(int *p1)
{ int min,i,*p2=p1,*p3;
p3=p1 ;
for(i=0;i<4;i++)
{ if(*p2<*p3) p3=p2; p2++ ;
}
min=*p1;*p1=*p3;*p3=min;
}
(15)填空题