| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1021 人关注过本帖
标题:打印特殊矩阵
只看楼主 加入收藏
yu1543054075
Rank: 1
等 级:新手上路
帖 子:102
专家分:8
注 册:2015-4-30
结帖率:90.24%
收藏
已结贴  问题点数:10 回复次数:15 
打印特殊矩阵
打印特殊矩阵,具体要求如下:打印9*9阶的方阵,要求最外圈的均是1,次外圈的均是2,照此规律方阵,要求从键盘输入任意一个数,输出题中要求的
特殊方阵
如果是5,则特殊方阵的形式为:1 1 1 1 1 1 1 1 1
                             1 2 2 2 2 2 2 2 1
                             1 2 3 3 3 3 3 2 1
                             1 2 3 4 4 4 3 2 1
                             1 2 3 4 5 4 3 2 1
                             1 2 3 4 4 4 3 2 1
                             1 2 3 3 3 3 3 2 1
                             1 2 2 2 2 2 2 2 1
                             1 1 1 1 1 1 1 1 1
                                                      
#include<stdio.h>
int main(void)
{
    int n,**a,i,j;
    printf("please input a integer number(n>0):");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=i;j<=2*n-i;j++)
        {
            *(*(a+i)+j)=i;//a[i][j]=i;
            *(*(a+2*n-i)+j)=i;//a[2*n-i][j]=i;
            *(*(a+j)+i)=i;//a[j][i]=i;
            *(*(a+2*n-j)+i)=i;//a[2*n-j][i]=i;
        }
        for(i=1;i<=2*n-1;i++)
        {
            for(j=1;j<=2*n-1;j++)
                printf("%d ",*(*(a+i)+j));
            putchar('\n');
        }
}
:\Users\Administrator\Desktop\8.c(11) : warning C4700: local variable 'a' used without having been initialized
输出结果不对,不知道哪里出错,请各位不吝赐教

#include<stdio.h>
int main(void)
{
    int n,a[2*n-1][2*n-1],i,j;
    printf("please input a integer number(n>0):");
    scanf("%d",&n);
    for(i=1;i<=n;i++)
        for(j=i;j<=2*n-i;j++)
        {
            a[i][j]=i;
            a[2*n-i][j]=i;
            a[j][i]=i;
                a[2*n-j][i]=i;
        }
        for(i=1;i<=2*n-1;i++)
        {
            for(j=1;j<=2*n-1;j++)
                printf("%d ",a[i][j]);
            putchar('\n');
        }
}
则会出现a数组大小未知的错误,那么到底该如何写才能使a数组的大小已知且输入任意的数n呢
搜索更多相关主题的帖子: 键盘 
2015-05-05 19:15
小小少侠
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2015-3-6
收藏
得分:0 
那就动态开辟数组嘛,malloc函数
2015-05-05 20:07
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
时间匆忙  我先说下思路:
    其实你先定义一个数组,然后就是把数组的每个给上个数就行了,这里给数不同的人有不同的做法,我是这样想的,先把每行每列做成
1 1 1 1 1
2 2 2 2 2
3 3 3 3 3
2 2 2 2 2
1 1 1 1 1
然后再去改其中不符合的值,此刻也就是只需要去考虑改竖着看的不符合的值。有点规律的。然后我下面的代码只做了n行的,剩下的你自己做下,只需要倒序一下再写2个for
程序代码:
#include"stdio.h"
int main()
{
    int a[100][100];
    int i,j,k=0,n;
    
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
        for(j=0;j<2*n-1;j++)
        {
            a[i][j]=i+1;
        }
    }

    for(i=0;i<n;i++)
    {
        k=i;    
        for(j=i;j<n;j++)
        {
            a[j][k]=k+1;    
            a[j][2*n-2-k]=k+1;
            
        }
    }

    for(i=0;i<n;i++)
    {
        for(j=0;j<2*n-1;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }        
    
    
} 

他们和我说,喜欢一个女生要大胆追!
2015-05-05 21:09
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
明天我会把它补完的  楼主的题真有意思  我脑子不好  花了1个小时才想到了这么点东西

他们和我说,喜欢一个女生要大胆追!
2015-05-05 21:14
我叫K
Rank: 2
等 级:论坛游民
帖 子:74
专家分:19
注 册:2015-4-28
收藏
得分:0 
我没按楼主的来做  只是自己看了这题目  想到的一点想法

他们和我说,喜欢一个女生要大胆追!
2015-05-05 21:14
小小少侠
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2015-3-6
收藏
得分:0 
楼主的题目是有问题的,如果我们输入6,这个矩阵就不是9*9阶的了,而是11阶。输入n,得到的是2n-1阶方阵,然后找到规律,就很好写了
2015-05-05 21:38
小小少侠
Rank: 2
等 级:论坛游民
帖 子:19
专家分:12
注 册:2015-3-6
收藏
得分:5 
# include <stdio.h>
# include <stdlib.h>
int main()
{
    int n;
    int **a;
    int **b;
    int **c;
    int **d;
    int n7, n8;//n7-第一维长度,n8-第二维长度
    int i, j;
    printf("请输入n的值:\n");
    scanf ("%d",&n);
    /*-----------------*/
    //数组a[2n-1][2n-1]开辟空间
    n7 = 2*n;
    n8 = 2*n;
    a = (int **)malloc(sizeof(int *)*n7);
    for(i=0; i<n7; ++i) a[i]=(int *)malloc(sizeof(int)*n8);
    //数组b[2n-1][2n-1]开辟空间
    b  = (int **)malloc(sizeof(int *)*n7);
    for(i=0; i<n7; ++i) b[i]=(int *)malloc(sizeof(int)*n8);
    //数组c[2n-1][2n-1]开辟空间
    c  = (int **)malloc(sizeof(int *)*n7);
    for(i=0; i<n7; ++i) c[i]=(int *)malloc(sizeof(int)*n8);
    //数组d[2n-1][2n-1]开辟空间
    d  = (int **)malloc(sizeof(int *)*n7);
    for(i=0; i<n7; ++i) d[i]=(int *)malloc(sizeof(int)*n8);
    /*-----------------*/
    //对a[][]初始化
    for (i=1;i<2*n;i++)
        for (j=1;j<2*n;j++)
            a[i][j] = 0;
    /*-----------------*/
    //对a[][]操作
    for (i=1;i<=n;i++)
    {
        for (j=i;j<=2*n-i;j++)
            a[i][j] = i;
    }
    //对b[][]操作
    for (i=1;i<2*n;i++)
    {
        for (j=1;j<2*n;j++)
            b[j][i] = a[i][j];
    }
    /*-----------------*/
    //对c[][]操作
    for (i=1;i<2*n;i++)
        for (j=1;j<2*n;j++)
        {
            c[i][j] = a[i][j] + b[i][j];
            if (i == j)
                c[i][j] = a[i][j];
        }
    /*-----------------*/
    //对d操作
    for (i=1;i<2*n;i++)
        for (j=1;j<2*n;j++)
            d[2*n-j][2*n-i] = c[i][j];
    /*-----------------*/
    //再对a操作
    for (i=1;i<2*n;i++)
    {
        for (j=1;j<2*n;j++)
        {
            a[i][j] = c[i][j]+d[i][j];
            if (i+j == 2*n)
                a[i][j] = c[i][j];
        }
    }
    /*-----------------*/
    //输出a
    printf("这个特殊矩阵是:\n");
    for (i=1;i<2*n;i++)
    {
        for (j=1;j<2*n;j++)
            printf("%d ",a[i][j]);
        printf("\n");
    }
    system("pause");
    return 0;

}
图片附件: 游客没有浏览图片的权限,请 登录注册
2015-05-05 22:48
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
回复 3楼 我叫K
兄台这个想法不错,思路清晰


莫问前尘有愧,但求今生无悔
2015-05-06 08:39
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9032
专家分:54066
注 册:2011-1-18
收藏
得分:5 
程序代码:
#include<stdio.h>

#ifndef min
#define min(a,b) ( ((a)<(b)) ? (a) : (b) )
#endif

int main( void )
{
    unsigned n;
    scanf( "%u", &n );

    for( unsigned r=0; r!=2*n-1; ++r )
    {
        for( unsigned c=0; c!=2*n-1; ++c )
        {
            unsigned v = min( min(r+1,2*n-r-1), min(c+1,2*n-c-1) );
            printf( "%u%c", v, (c!=2*n-2?' ':'\n') );
        }
    }

    return 0;
}
2015-05-06 08:55
pycansi
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:418
专家分:1060
注 册:2012-7-26
收藏
得分:0 
回复 9楼 rjsp
记得以前看过你这个巧妙的代码,还没等我找来就自己出现了,哈哈


莫问前尘有愧,但求今生无悔
2015-05-06 09:52
快速回复:打印特殊矩阵
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.049169 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved