| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2496 人关注过本帖
标题:一个小问题:数组中个数是n,未确定该怎么办?
只看楼主 加入收藏
siyang1982
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-2-11
收藏
 问题点数:0 回复次数:22 
一个小问题:数组中个数是n,未确定该怎么办?
大家先看下面这两个题目
题目1:在键盘上输入n个整数,再让其按升序输出
题目2:打印高度为n的杨辉三角

这个要用到数组,可是数组的大小开始就要确定啊,就是不能设为a[n]又不能设置为a[],
该怎么办呢?
请指点。
搜索更多相关主题的帖子: 杨辉三角 
2005-02-11 22:17
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
1.定个足够大的数组
2.采用链表
3.利用数的规律,比如杨辉三角就可以用公式

4.不知道,如果其他人还有其他的方法请赐教一二

淘宝杜琨
2005-02-11 22:29
siyang1982
Rank: 1
等 级:新手上路
帖 子:5
专家分:0
注 册:2005-2-11
收藏
得分:0 
1.我觉得既然题目是n,自然有它的想法,不然它就说个数字了。
2.链表不会。。。
3.如何?公式是什么?请指教

我觉得我们是先获取数字n,再定义数组,为什么就不可以呢?
2005-02-11 22:40
Antigloss
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2004-12-30
收藏
得分:0 
数祖要事先定义好的,n的值不能够是变量,只能是恒量。

用链表吧,看看数据结构的书就会了。

公是我也不懂,上网查查吧
2005-02-11 22:49
kaikai
Rank: 1
等 级:新手上路
帖 子:236
专家分:0
注 册:2005-1-7
收藏
得分:0 
任何问题都有一个解决的范围,其实不要钻牛角尖。假设n的值不超过10,能解决这个问题后。如果说指定n的范围要到100,也是一样的。
你可以定义一个足够大的数组,而仅使用一部分。这问题绝对不是要考你如何解决任意大的n的问题。

Have you visit acm.tongji. lately?
2005-02-11 23:43
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 

“我觉得我们是先获取数字n,再定义数组,为什么就不可以呢? ” 其实这个是可以的,用这个函数可以输入n,并且返回一个长度为n的int数组的首地址 int *creat(int n){return (int*)malloc(2*n);} 这个函数的应用举例:输入一个数n,并且产生一个长度为n的int数组,每个数组的内容按顺序分别为0-n,并且把他们打印到屏幕上 #include <stdio.h>

int *creat(int n){return (int*)malloc(2*n);}

void main() { int n,i; int *s; scanf("%d",&n); s=creat(n); for(i=0;i<n;i++)s[i]=i; for(i=0;i<n;i++)printf("%d ",s[i]); getch(); } 扬辉的公式也是很简单: 学了高中数学我们就知道有公式(a+b)n =C0n a0bn+…+ Ckn akbn-k…+ Cnn anb0 杨辉三角的每一个元素都可以由公式计算出来Ckn akbn-k 出自http://blog.csdn.net/i_like_cpp/archive/2004/11/29/197439.aspx

[此贴子已经被作者于2005-2-11 23:54:18编辑过]


淘宝杜琨
2005-02-11 23:53
Antigloss
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2004-12-30
收藏
得分:0 
其实上面那个函数和链表也差不多,不过是动态分配连续的空间。数组其实也是指针。q[0]也就是*q,q[1]就是*(q+1)
2005-02-12 00:04
神vLinux飘飘
Rank: 13Rank: 13Rank: 13Rank: 13
来 自:浙江杭州
等 级:贵宾
威 望:91
帖 子:6140
专家分:217
注 册:2004-7-17
收藏
得分:0 
呵呵
int *creat(int n){return (int*)malloc(2*n);}
和链表差远了,他根本就不具备链表应该有的性质。

不过,“数组其实也是指针。q[0]也就是*q,q[1]就是*(q+1) ”这句倒是没错

淘宝杜琨
2005-02-12 00:19
Antigloss
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2004-12-30
收藏
得分:0 
我的意思是,和链表相同之处,就是动态分配空间,并不是说它具有链表的结构~链表分配空间可以是不连续的
那个函数其实也算是简化了的顺序表,就是少了一个动态增加功能。顺序表要求分配的空间是连续的
2005-02-12 00:24
Antigloss
Rank: 1
等 级:新手上路
帖 子:109
专家分:0
注 册:2004-12-30
收藏
得分:0 
那个可以说并不是数组,它只不过是利用了下标运算符
2005-02-12 00:27
快速回复:一个小问题:数组中个数是n,未确定该怎么办?
数据加载中...
 
   



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

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