c语言 指针6行7列矩阵的转置,指针第一次练习

1.实现功能:输入3个整数,按数值由小到大的顺序输出。

方法一:只编写主函数,利用指针指向三个变量,不修改原变量的值,通过修改指针的指向实现输出顺序的改变。

#includeint main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

int* ap=&a,*bp=&b,*cp=&c;

int *temp;

if(*ap>*bp)

{

temp=ap;

ap=bp;

bp=temp;

}

if(*ap>*cp)

{

temp=ap;

ap=cp;

cp=temp;

}

if(*bp>*cp)

{

temp=bp;

bp=cp;

cp=temp;

}

printf("%d,%d,%d",*ap,*bp,*cp);

}

方法二:只编写主函数,通过指针修改变量的值实现数据顺序的改变。

#includeint main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

int* ap=&a,*bp=&b,*cp=&c;

int temp;

if(*ap>*bp)

{

temp=*ap;

*ap=*bp;

*bp=temp;

}

if(*ap>*cp)

{

temp=*ap;

*ap=*cp;

*cp=temp;

}

if(*bp>*cp)

{

temp=*bp;

*bp=*cp;

*cp=temp;

}

printf("%d,%d,%d",*ap,*bp,*cp);

}

方法三:编写排序函数,函数需要传入三个参数,通过调用排序函数实现数据交换。

#includevoid BubbleSort(int *ap,int *bp,int *cp)

{

int temp;

if(*ap>*bp)

{

temp=*ap;

*ap=*bp;

*bp=temp;

}

if(*ap>*cp)

{

temp=*ap;

*ap=*cp;

*cp=temp;

}

if(*bp>*cp)

{

temp=*bp;

*bp=*cp;

*cp=temp;

}

}

int main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

BubbleSort(&a,&b,&c);

printf("%d %d %d",a,b,c);

}

方法四:编写排序函数,函数只实现两个数的排序,通过多次调用函数来实现三个数的排序。

#includevoid BubbleSort(int *ap,int *bp)

{

int temp;

temp=*ap;

*ap=*bp;

*bp=temp;

}

int main()

{

int a,b,c;

scanf("%d%d%d",&a,&b,&c);

if(a>b) BubbleSort(&a,&b);

if(a>c) BubbleSort(&a,&c);

if(b>c) BubbleSort(&b,&c);

printf("%d %d %d",a,b,c);

}

2.改写冒泡排序程序,通过函数调用实现冒泡排序,利用指针实现排序功能。

#includevoid bubble_sort(int* a,int n)//n为数组a的元素个数

{

int i,j,temp;

for(j=0;ja[i+1])//数组元素大小按升序排列

{

temp=a[i];

a[i]=a[i+1];

a[i+1]=temp;

}

}

}

int main()

{

int number[8]={95,45,15,78,84,51,24,12};

int i;

bubble_sort(number,8);

for(i=0;i<8;i++)

{

printf("%d ",number[i]);

}

printf("\n");

}

3.编写程序,利用数组名加角标的形式实现一个3*3整型矩阵的转置。

#includeint main()

{

inta[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int b[3][3];

int i,j;

printf("change before:\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf("\n");

}

for(i=0;i<3;i++)

for(j=0;j<3;j++)

b[j][i]=a[i][j];

printf("change after:\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%d ",b[i][j]);

printf("\n");

}

}

4.编写程序,利用指向整型变量的指针(列指针)实现3*3整型矩阵的转置。

#includeint main()

{

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

int *p=a[0];

int i,j,temp;

for(i=0;i<3;i++)

for(j=0;j*(p+j*3+i))

{

temp=*(p+i*3+j);

*(p+i*3+j)=*(p+j*3+i);

*(p+j*3+i)=temp;

}

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%d ",a[i][j]);

printf("\n");

}

}

5.编写程序,利用指向数组的指针(行指针)实现3*3整型矩阵的转置。

#includevoid transpose(int(*p)[3],int(*q)[3])

{

int i,j;

for(i=0;i<3;i++)

for(j=0;j<3;j++)

*(*(q+j)+i)=*(*(p+i)+j);

}

int main()

{

int b[3][3],j,i;

int a[3][3]={{1,2,3},{4,5,6},{7,8,9}};

transpose(a,b);

printf("Transpose of matrix:\n");

for(i=0;i<3;i++)

{

for(j=0;j<3;j++)

printf("%4d",b[i][j]);

printf("\n");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值