| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 971 人关注过本帖
标题:关于数组的疑问、
只看楼主 加入收藏
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:19 
关于数组的疑问、
在定义数组的时候我知道应该是a[常量][常量]
但是我想通过输入n 来控制数组的大小 就是行数列数
那n就是变量 请问应该怎么做?
我想过 先建立一个 a[0][0],然后将得出的数组赋值给他
但是 开始的数组无法建立、、、
我说的有点乱。。不知大家理解我的问题没有
int n;
scanf("%c",&n);
int a[][n],i,j;
我知道这个不对 但是不知道怎么改


[ 本帖最后由 宅云云丶 于 2011-10-29 21:02 编辑 ]
搜索更多相关主题的帖子: 疑问 
2011-10-29 20:44
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:2 
程序代码:
#include<stdio.h>
#include<malloc.h>
int main()
{
    int **a, n, m, i, j;
    n = 5;
    m = 10;
    a = (int **)malloc(n * sizeof(int *));
    for(i = 0; i < n; i++)
        a[i] = (int *)malloc(m * sizeof(int));
    //以下代码测试数组的使用情况
    for(i = 0; i < n; i++)
        for(j = 0; j < m; j++)
            a[i][j] = i * m + j;
    for(i = 0; i < n; i++,putchar('\n'))
        for(j = 0; j < m; j++)
            printf("%4d", a[i][j]);
    return 0;
}

重剑无锋,大巧不工
2011-10-29 20:54
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:1 
回复 楼主 宅云云丶
数组做不到

总有那身价贱的人给作业贴回复完整的代码
2011-10-29 20:58
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 2楼 beyondyf
不是、、
我是想通过自己scanf n的值
不是这样直接出来
2011-10-29 20:59
宅云云丶
Rank: 2
等 级:论坛游民
帖 子:71
专家分:11
注 册:2011-10-25
收藏
得分:0 
回复 3楼 embed_xuel
这是我们的一个作业。
就是用星星拼出三角形。
我想用数组,
要求就是通过输入n 控制三角形大小、
2011-10-29 21:00
beyondyf
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:103
帖 子:3282
专家分:12654
注 册:2008-1-21
收藏
得分:1 
唉,你把那两个赋值语句改成scanf不就好了么?干脆把作业给我,我帮你做好了。

重剑无锋,大巧不工
2011-10-29 21:03
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:2 



使用变长数组就ok

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-10-29 21:17
忆泪
Rank: 2
等 级:论坛游民
帖 子:42
专家分:49
注 册:2011-10-22
收藏
得分:1 
我想可以用宏定义,
#define M 10  
数组可以定义为a[M]
之后只需改变宏定义中M的值就可以改变数组的大小。
2011-10-30 10:44
TonyDeng
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:贵宾
威 望:304
帖 子:25859
专家分:48889
注 册:2011-6-22
收藏
得分:2 
数组是不可动态变长度的,它是在编译时分配的空间,运行时无法重分配。要用动态分配内存的方式从堆中临时建立数组,不能用定义array[n]之类的语法。

授人以渔,不授人以鱼。
2011-10-30 14:29
vesapro
Rank: 2
等 级:论坛游民
帖 子:11
专家分:27
注 册:2011-8-29
收藏
得分:2 
#include <stdio.h>
#include <malloc.h>

#define WIDTH    20

main()
{
    int (*a)[WIDTH] = NULL;
    int n = 0;
    int i = 0, j = 0, k = 0;
   
    scanf("%d", &n);
    a = (int(*)[WIDTH])calloc(n, WIDTH * sizeof(int));
   
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < WIDTH; j++)
        {
            a[i][j] = i * 10 + j;
        }
    }
   
    for(i = 0; i < n; i++)
    {
        for(j = 0; j < WIDTH; j++)
        {
            printf("%2d ", a[i][j]);
        }
        printf("\n");
    }
   
}

[ 本帖最后由 vesapro 于 2011-10-30 18:39 编辑 ]
2011-10-30 17:53
快速回复:关于数组的疑问、
数据加载中...
 
   



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

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