当前位置: 代码迷 >> C语言 >> 一个小问题:数组中个数是n,未确定该怎么办?
  详细解决方案

一个小问题:数组中个数是n,未确定该怎么办?

热度:176   发布时间:2005-02-11 22:17:00.0
一个小问题:数组中个数是n,未确定该怎么办?
大家先看下面这两个题目
题目1:在键盘上输入n个整数,再让其按升序输出
题目2:打印高度为n的杨辉三角

这个要用到数组,可是数组的大小开始就要确定啊,就是不能设为a[n]又不能设置为a[],
该怎么办呢?
请指点。
搜索更多相关的解决方案: 杨辉三角  

----------------解决方案--------------------------------------------------------
1.定个足够大的数组
2.采用链表
3.利用数的规律,比如杨辉三角就可以用公式

4.不知道,如果其他人还有其他的方法请赐教一二
----------------解决方案--------------------------------------------------------
1.我觉得既然题目是n,自然有它的想法,不然它就说个数字了。
2.链表不会。。。
3.如何?公式是什么?请指教

我觉得我们是先获取数字n,再定义数组,为什么就不可以呢?
----------------解决方案--------------------------------------------------------
数祖要事先定义好的,n的值不能够是变量,只能是恒量。

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

公是我也不懂,上网查查吧
----------------解决方案--------------------------------------------------------
任何问题都有一个解决的范围,其实不要钻牛角尖。假设n的值不超过10,能解决这个问题后。如果说指定n的范围要到100,也是一样的。
你可以定义一个足够大的数组,而仅使用一部分。这问题绝对不是要考你如何解决任意大的n的问题。
----------------解决方案--------------------------------------------------------

“我觉得我们是先获取数字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编辑过]


----------------解决方案--------------------------------------------------------
其实上面那个函数和链表也差不多,不过是动态分配连续的空间。数组其实也是指针。q[0]也就是*q,q[1]就是*(q+1)
----------------解决方案--------------------------------------------------------
呵呵
int *creat(int n){return (int*)malloc(2*n);}
和链表差远了,他根本就不具备链表应该有的性质。

不过,“数组其实也是指针。q[0]也就是*q,q[1]就是*(q+1) ”这句倒是没错
----------------解决方案--------------------------------------------------------
我的意思是,和链表相同之处,就是动态分配空间,并不是说它具有链表的结构~链表分配空间可以是不连续的
那个函数其实也算是简化了的顺序表,就是少了一个动态增加功能。顺序表要求分配的空间是连续的
----------------解决方案--------------------------------------------------------
那个可以说并不是数组,它只不过是利用了下标运算符
----------------解决方案--------------------------------------------------------
  相关解决方案