指针第一次练习

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

 

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

#include<stdio.h>
int 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);
}

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

#include<stdio.h>
int 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);
}<span style="font-size:14px;">
</span>

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

#include<stdio.h>
void 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);
}


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

#include<stdio.h>
void 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.改写冒泡排序程序,通过函数调用实现冒泡排序,利用指针实现排序功能。
#include<stdio.h>
void bubble_sort(int* a,int n)//n为数组a的元素个数
{
    int i,j,temp;
    for(j=0;j<n-1;j++)
        for(i=0;i<n-1-j;i++)
        {
            if(a[i]>a[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整型矩阵的转置。
#include<stdio.h>

int 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整型矩阵的转置。
#include<stdio.h>

int 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<i;j++)
            if(*(p+i*3+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整型矩阵的转置。
#include<stdio.h>
void 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、付费专栏及课程。

余额充值