| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 454 人关注过本帖
标题:程序运行出现问题,求助
只看楼主 加入收藏
心月天狐
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-12
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
程序运行出现问题,求助
扔下C语言10多年了,现在因为要研究一个问题,所以边学习边解决问题,结果在运行某个程序时碰到了难题。程序如下;
#include<stdio.h>

#define daymax 3
#define tod    10

void main(){

    int i,j,k;
    float **ma;
    ma=new float*[tod+1];
    for(i=1;i<=daymax;i++){
        ma[i]=new float[daymax+1];
    }
    for(j=1;j<=daymax;j++){
        for(k=1;k<=tod;k++){
            ma[j][k]=1.0*j*k;
            }
   printf("\n");   问题就在这一行,如果这行去掉,程序出错,但如果保留这一样,程序什么问题没有,百思不得其解。   
    }
   
printf("%f",ma[2][10]);

}

另:如果我要申请一个a*b的二维数组,其中a大约300,b大约10000,该如何申请?我想把一个二维数组中的数据分行列写入txt文件中,改怎么写?

请不吝赐教,谢谢。
搜索更多相关主题的帖子: 学习 include C语言 
2011-10-12 22:03
心月天狐
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-12
收藏
得分:0 
怎么没人愿意告知吗?
2011-10-13 12:36
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:10 
你的意思是去掉printf就会程序出错吗?我这边运行很正常

如果你要一个数组,直接计算数组的大小来申请内存就行了。
比如你要申请一个float map[300][10000].如下

int nCount = 300 * 10000; // 这里的300,10000就是你说的 a,b
float *map = new float[nCount];
memset(map, 0, sizeof(float) * nCount);// 如果不是对象而是基本数据类型,建议加上这一行

如果你要访问map[23][45]时候,就
float *p = map + 23 * 10000 + 45;// 也就是float *p = map + b * 23 + 45。
你访问p就相当于访问map[23][45]了

在比如你要分行遍历这个map 那么

for (int i = 0; i < 300; i++) {
    for (int j = 0; j < 10000; j++) {
        float *p = map + i * 10000 + j;   
        // 输出*p
    }
    // 运行到这的时候就是遍历完一行了。
}

如果数组大小没定只是有数组a b确定。那么
int nCount = a * b;
float *map = new float[nCount];
其他的操作就是吧300 和10000替换成a 和b就行了   


我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2011-10-13 12:41
心月天狐
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2011-10-12
收藏
得分:0 
谢谢楼上
我用的vc6.0绿色版,可能是这个原因导致出错
2011-10-13 21:41
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:10 
以下是引用心月天狐在2011-10-12 22:03:48的发言:

扔下C语言10多年了,现在因为要研究一个问题,所以边学习边解决问题,结果在运行某个程序时碰到了难题。程序如下;
#include<stdio.h>

#define daymax 3
#define tod    10

void main(){

    int i,j,k;
    float **ma;
    ma=new float*[tod+1];
    for(i=1;i<=daymax;i++){
        ma=new float[daymax+1];
    }
    for(j=1;j<=daymax;j++){
        for(k=1;k<=tod;k++){
            ma[j][k]=1.0*j*k;
            }
   printf("\n");   问题就在这一行,如果这行去掉,程序出错,但如果保留这一样,程序什么问题没有,百思不得其解。   
    }
   
printf("%f",ma[2][10]);

}

另:如果我要申请一个a*b的二维数组,其中a大约300,b大约10000,该如何申请?我想把一个二维数组中的数据分行列写入txt文件中,改怎么写?

请不吝赐教,谢谢。

你离开地球太久了,不懂地球语了!语法错误,你把C/C++搞混了

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-14 00:15
快速回复:程序运行出现问题,求助
数据加载中...
 
   



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

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