| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1011 人关注过本帖
标题:编译连接通过但是运行中出错
只看楼主 加入收藏
xf19950402
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-11-24
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:2 
编译连接通过但是运行中出错
编译连接没问题,但是运行出错“unhandled exceptoin”,用的是VC6.0
程序代码:
void main()
{    
    printf("*****************************************************************\n");
    printf("|这是我的数组程序设计【数组应用2】                              |\n");
    printf("|设计要求:                                                     |\n");
    printf("|①读入数组下标,求出数组A靠边元素之和;                        |\n");
    printf("|②求从A[0][0]开始的互不相邻的各元素之和;                      |\n");
    printf("|③当m=n时,分别求两条对角线上的元素之和,否则打印出m!=n的信息。|\n");
    printf("*****************************************************************\n");
    printf("\n");

    int m=1;//默认下标
    int n=1;
    int **A;//动态数组

InPut_m_n:printf("请输入数组A[m][n]的下标m、n,并以逗号隔开(m、n取值在0~100的整数):\n");
    scanf("%d,%d",&m,&n);
    if(m<1||m>100||n<1||n>100)
    {
        printf("输入数据越界,请重新输入!\n");
        goto InPut_m_n;//输入数据越界重新输入
    }
    printf("\n");

    printf("随机生成%d×%d二维数组如下:\n",m,n);

    **A=array_create_rand(m,n);//构造数组

    for(int a=0;a<m;a++)//显示元素
    {
        printf("\n");
        for(int b=0;b<n;b++)
            printf("%3d",A[a][b]);
    }
    printf("\n\n");
}
int array_create_rand(int m,int n)//动态数组初始化
{
    int **A;
    A=(int**)malloc(m*sizeof(int*));//
    if(!A) exit(ERROR);
    for(int i0=0;i0<m;i0++)
    {
         A[i0]=(int*)malloc(n*sizeof(int));//
         if(!A[i0]) exit(ERROR);
    }

    srand((unsigned)time(NULL));//随机时间
    for(int j=0;j<m;j++)
        for(int i=0;i<n;i++)
            A[j][i]=rand()%100;//0~100之间随机数
    return **A;
}

求解什么问题?
下面有完整程序包:
array_2_动态数组.rar (198.58 KB)
2016-12-10 11:03
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9007
专家分:53942
注 册:2011-1-18
收藏
得分:14 
无关的代码要少贴,你不能因为要节约自己的时间,就浪费欲帮助你的人的时间
起先,你应该将分散在三个文件的代码中整合在一起,然后,删掉无关代码,即
程序代码:
void array_create_rand( int **A )
{
    A = 0;
}

int main( void )
{  
    int **A;
    array_create_rand( A );
}

经典的错误,array_create_rand中的A 和 main中A 不是同一个东西,相当于
int a = 1;
int b = a;
b = 2;
此时 a 不会变成 2
2016-12-12 08:58
xf19950402
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2016-11-24
收藏
得分:0 
回复 2楼 rjsp
谢谢!我用了返回值来覆盖主函数中的**A,错误在子函数的主函数类型,应该是**int 而不是 int。你所解释的意思我懂,因此我用的是返回值,不是参数调用。
我的问题已经解决了,还是谢谢你!
2016-12-13 21:23
快速回复:编译连接通过但是运行中出错
数据加载中...
 
   



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

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