• YTU 2418: C语言习题 矩阵元素变换


    2418: C语言习题 矩阵元素变换

    时间限制: 1 Sec  内存限制: 128 MB
    提交: 293  解决: 155

    题目描述

    将一个n×n(2<n<10,n为奇数)的矩阵中最大的元素放在中心,4个角分别放4个最小的元素(按从左到右、从上到下顺序依次从小到大存放),写一
    函数实现。用main函数调用。

    输入

    输入n和矩阵中的每个元素

    输出

    变换后的矩阵

    样例输入

    5
    25 13 9 5 1
    16 17 18 19 6
    15 24 4 20 7
    14 23 22 21 8
    2 12 11 10 3

    样例输出

    1 13 9 5 2 
    16 17 18 19 6 
    15 24 25 20 7 
    14 23 22 21 8 
    3 12 11 10 4 

    提示

    主函数已给定如下,提交时不需要包含下述主函数



    /* C代码 */

    int main()

    {

        void change(int *,int );

        int **a,*p,i,j;

        int n;

        scanf("%d",&n);

        p=(int*)malloc(n*n*sizeof(int));

        a=(int**)malloc(n*sizeof(int *));

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

            a[i]=p+n*i;

        for (i=0; i<n; i++)                     //输入矩阵

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

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

        change(p,n);                              //调用函数,实现交换

        for (i=0; i<n; i++)                    //输出已交换的矩阵

        {

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

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

            printf(" ");

        }

        free(p);

        free(a);

        return 0;

    }



    /* C++代码 */



    int main()

    {

        void change(int *,int );

        int **a,*p,i,j;

        int n;

        cin>>n;

        p=new int[n*n];

        a=new int*[n];

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

            a[i]=p+n*i;

        for (i=0; i<n; i++)                     //输入矩阵

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

                cin>>a[i][j];

        change(p,n);                           //调用函数,实现交换

        for (i=0; i<n; i++)                    //输出已交换的矩阵

        {

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

                cout<<a[i][j]<<" ";

            cout<<endl;

        }

        delete []p;

        delete []a;

        return 0;

    }



    迷失在幽谷中的鸟儿,独自飞翔在这偌大的天地间,却不知自己该飞往何方……

    #include <iostream>
    using namespace std;
    void change(int *k,int p)
    {
        int t,*min,*max,i,j;
        min=max=k;
        for(i=0; i<p; i++)
            for(j=0; j<p; j++)
            {
                if(*(k+p*i+j)<*min)
                    min=k+p*i+j;
                else if(*(k+p*i+j)>*max)
                    max=k+p*i+j;
            }
        t=*max;
        *max=*(k+(p*p)/2);
        *(k+(p*p)/2)=t;
        t=*min;
        *min=*k;
        *k=t;
        min=&*(k+1);
        for(i=0; i<p; i++)
            for(j=0; j<p; j++)
                if((k+p*i+j)!=k)
                    if(*(k+p*i+j)<*min)
                        min=k+p*i+j;
        t=*min;
        *min=*(k+p-1);
        *(k+p-1)=t;
        min=&*(k+1);
        for(i=0; i<p; i++)
            for(j=0; j<p; j++)
                if((k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=k)
                    if(*(k+p*i+j)<*min)
                        min=k+p*i+j;
        t=*min;
        *min=*(k+p*(p-1));
        *(k+p*(p-1))=t;
        min=&*(k+1);
        for(i=0; i<p; i++)
            for(j=0; j<p; j++)
                if((k+p*i+j)!=k&&(k+p*i+j)!=(k+p-1)&&(k+p*i+j)!=(k+p*(p-1)))
                    if(*(k+p*i+j)<*min)
                        min=k+p*i+j;
        t=*min;
        *min=*(k+p*p-1);
        *(k+p*p-1)=t;
    }
    int main()
    {
        void change(int *,int );
        int **a,*p,i,j;
        int n;
        cin>>n;
        p=new int[n*n];
        a=new int*[n];
        for(i=0; i<n; i++)
            a[i]=p+n*i;
        for (i=0; i<n; i++)
            for (j=0; j<n; j++)
                cin>>a[i][j];
        change(p,n);
        for (i=0; i<n; i++)
        {
            for (j=0; j<n; j++)
                cout<<a[i][j]<<" ";
            cout<<endl;
        }
        delete []p;
        delete []a;
        return 0;
    }

  • 相关阅读:
    学习工作记录七
    NoSuchBeanDefinitionException:No qualifying bean of type
    学习工作记录六
    密码学考试要点
    Failed to execute goal org.springframework.boot
    学习工作记录五
    学习工作记录四
    关于打包ipa文件以及苹果证书的若干问题
    学习工作记录三
    PAT乙级(Basic Level)练习题-NowCoder数列总结
  • 原文地址:https://www.cnblogs.com/im0qianqian/p/5989454.html
Copyright © 2020-2023  润新知