| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 477 人关注过本帖
标题:各位高手,看一下啦,哪里出错了????
只看楼主 加入收藏
小亮仔
Rank: 1
来 自:甘肃
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-23
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:3 
各位高手,看一下啦,哪里出错了????
输入一个矩阵(比如说4阶的),再从矩阵中选一个数(假如这个数是2行3列的),从原矩阵中取出一个新矩阵(比如说3行3列),把这个数当做新矩阵的第一个数;如果访问过界,则过界的数都为0。
假如一个4阶矩阵:
2 6 3 8
1 5 6 4
2 3 8 7
1 3 2 6
选的是3行3列的8,要取出一个3行4列的矩阵,那么,结果应该是
8 7 0 0
2 6 0 0
0 0 0 0
可是,偶写的这个运行到一半就出问题呀……

#include<stdio.h>
int main()
{
    int r,c,a,h,n;
    int s[][],i,j;
    int *b[4][4];
    int *p;
    printf("输入一个");
    scanf("%d",&n);
    printf("阶矩阵:\n");
   
    for(i=1;i<=n;i++)
        for(j=1;j<=n;j++)
            scanf("%d",&s[i][j]);
    printf("\n输入所选数字的行、列:");
    scanf("%d %d",&r,&c);
    printf("\n输入长、宽:");
    scanf("%d %d",&a,&h);
    printf("\n");
    p=&s[r][c];
    for(i=1;i<=h;i++)
    {
        for(j=1;j<=a;j++)
        {
            if(c+a>n+1)
                if(c+j>n+1)
                    s[c+i][r+h-n-1]=0;
            
           
            b[i][j]=&(*p);

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

        }
        printf("\n");
        p=p+n-a;
    }
   
    return 0;
}


        


搜索更多相关主题的帖子: 各位 出错 
2009-10-27 18:59
陈小草
Rank: 2
等 级:论坛游民
帖 子:3
专家分:10
注 册:2009-10-27
收藏
得分:10 
看不下去
你这是C还是C++呢?
应该是C吧!!
但C语言中main函数无返回值
再看你开头的声明:
    int s[][]            你不能两维都空着吧?回去翻翻书。
    int *b[4][4];            我猜想你是想定义一个指向4行4列二维数组的的指针。但正确的写法应当是: int (*b)[4]=s    /*已经在前面定义一个二维数组s[4][4]*/
下面的我就没法看下去了。

2009-10-27 20:48
阿冲
Rank: 2
等 级:论坛游民
帖 子:29
专家分:40
注 册:2009-10-5
收藏
得分:10 
楼上说的很对int s[][],你再怎么想省略,至少第二维你应该加个数啊,就算你不知道维数,那你可以创建一个动态空间啊。
而且最严重的问题!!!这个程序居然没有详细的注释!!!!
2009-10-27 21:00
小亮仔
Rank: 1
来 自:甘肃
等 级:新手上路
帖 子:8
专家分:0
注 册:2009-10-23
收藏
得分:0 
回复 2楼 陈小草

谢谢

战斗
2009-10-29 15:23
快速回复:各位高手,看一下啦,哪里出错了????
数据加载中...
 
   



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

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