查看: 1016|回复: 20
|
PROGRAM C:SPECIAL SQUENCE,如何写出这个OUTOUT?
[复制链接]
|
|
大家好,我是刚学部PROGRAM C的.
最近ASSIGNMENT,要我写出这个问题
Given a special squence of number as follows.
1,2,3,5,8,13,21,34....
the first two numbers must be 1 and 2. The following subsequent numbers are the sum of their two producessors.Write a program in C that needs a value n in the ranfe 1 to 30 and dispalys the first n numbers of this special squence.
请各位大大指教.
注:也是STPM的ASSIGNMENT. |
|
|
|
|
|
|
|
发表于 19-8-2006 10:50 AM
|
显示全部楼层
int i= 0;
int m = 10;
int arr(m);
for(i=0; i<m; i++) {
if (i==0) {
arr(i)=1;
} else if (i==1) {
arr(i)=2;
} else {
arr(i) = arr(i-1) + arr(i-2);
}
print(arr(i) + ",");
}
[ 本帖最后由 jasonmun 于 19-8-2006 10:52 AM 编辑 ] |
|
|
|
|
|
|
|
发表于 19-8-2006 11:03 AM
|
显示全部楼层
只要是logic..学什么电脑语言都一样..
不同的只是语法与用法..
所以,主要是学习加强你的Logic..
语法与用法,知道就好.. |
|
|
|
|
|
|
|
楼主 |
发表于 19-8-2006 04:41 PM
|
显示全部楼层
原帖由 jasonmun 于 19-8-2006 10:50 AM 发表
int i= 0;
int m = 10;
int arr(m);
for(i=0; i<m; i++) {
if (i==0) {
arr(i)=1;
} else if (i==1) {
arr(i)=2;
} else {
arr(i) = arr(i-1) ...
请问能用WHILE 做吗?
还有是前面要SCANF NUMBER的
CTH:
INPUT NUMBER :3
就从3开始然后,5,8,13,21.....
INPUT NUMBER : 8
就8,13,21,.....
就这里我不懂,谢谢你的指教... |
|
|
|
|
|
|
|
发表于 19-8-2006 07:17 PM
|
显示全部楼层
这是你应该做的功课..
这2个问题并不是问题..如果你对C基本的用法懂的话..
点到即止.. |
|
|
|
|
|
|
|
楼主 |
发表于 19-8-2006 10:13 PM
|
显示全部楼层
|
|
|
|
|
|
|
发表于 19-8-2006 11:06 PM
|
显示全部楼层
如果是你英文有问题..上课听不懂导师所教的..
建议你去找C的中文版来看..
有些书局是有卖台湾科技书本的..Internet 上也有ebook..
或别人写的简易课程教学也行..
一章一章的看..去明白它..
即使没有导师,一样可以自学..
只怕你没有[心]去学..那讲什么也没用.. |
|
|
|
|
|
|
|
楼主 |
发表于 20-8-2006 12:25 PM
|
显示全部楼层
原帖由 jasonmun 于 19-8-2006 11:06 PM 发表
如果是你英文有问题..上课听不懂导师所教的..
建议你去找C的中文版来看..
有些书局是有卖台湾科技书本的..Internet 上也有ebook..
或别人写的简易课程教学也行..
一章一章的看..去明白它..
即使没有导师 ...
哦,老师是用华文解释的...
不过你写的,导师一些还没教,可能着是我弄不明白你写什么的原因...
好吧谢谢你的指教, |
|
|
|
|
|
|
|
发表于 21-8-2006 02:10 AM
|
显示全部楼层
for(i=1;i<=n;i++)
cout << 1/sqrt(5){[(1+sqrt(5))/2]n-[(1-sqrt(5))/2]n} << std::endl; |
|
|
|
|
|
|
|
发表于 21-8-2006 10:09 AM
|
显示全部楼层
|
|
|
|
|
|
|
楼主 |
发表于 21-8-2006 12:36 PM
|
显示全部楼层
原帖由 jasonmun 于 19-8-2006 10:50 AM 发表
int i= 0;
int m = 10;
int arr(m);
for(i=0; i<m; i++) {
if (i==0) {
arr(i)=1;
} else if (i==1) {
arr(i)=2;
} else {
arr(i) = arr(i-1) ...
为什么当我arr(i)=arr(i-1)+arr(i-2);
会出现lvalue required in main function? |
|
|
|
|
|
|
|
发表于 21-8-2006 10:30 PM
|
显示全部楼层
之前的弄错了variable. n 是 input by user
for(i=1;i<=n;i++)
cout << 1/sqrt(5){[(1+sqrt(5))/2]i-[(1-sqrt(5))/2]i} << std::endl; |
|
|
|
|
|
|
|
楼主 |
发表于 22-8-2006 12:35 AM
|
显示全部楼层
原帖由 jangancari 于 21-8-2006 10:30 PM 发表
之前的弄错了variable. n 是 input by user
for(i=1;i<=n;i++)
cout << 1/sqrt(5){i-i} << std::endl;
对不起,CARI兄,导师规定只能用她所教的罢了,cout<<1/sqrt..什么,他还没教,我也不懂,不过还是谢谢你的指教. |
|
|
|
|
|
|
|
发表于 22-8-2006 12:52 AM
|
显示全部楼层
原帖由 缂 于 22-8-2006 12:35 AM 发表
对不起,CARI兄,导师规定只能用她所教的罢了,cout<<1/sqrt..什么,他还没教,我也不懂,不过还是谢谢你的指教.:handshake:
cout 是 C++ 的指令, 相等于 C 的 printf, 只要把 jangancari 的 code 稍微改一改就行了... 老师没教就不去学了吗?
C 的指令我忘到一干二净... 以下是 C# 的方法... 同样的, 把它改成 C 就可以了. Programming 不是用死记的方法, 还要灵活运用... 这才是 programming 的精髓.
int Fibo (int current, int prev, int last, int limit)
{
if (current > limit){
return 0;
}
else {
current++;
Console.Write (last + ", "); // 相等于 C 的 printf
return last + (Fibo (current, last, (prev + last), limit));
}
}
要执行的时候只要呼叫以下的一行就行:
Fibo (1, 1, 1, 30); |
|
|
|
|
|
|
|
发表于 22-8-2006 10:14 AM
|
显示全部楼层
我给出的code 不是完整的, 我一向来不帮人做功课,因为对他无益。 编程需要实战才能进步。
cout 可以用 printf
sqrt 是 square root 的 function , 我也忘了C 的math lib 里的function 名是什么了。
就如AquaMax 说的, 这个是斐波那基数列。
你老师要考你们的应该是用jasonmun 的方式, 我的是取巧的方式。 |
|
|
|
|
|
|
|
发表于 22-8-2006 11:34 AM
|
显示全部楼层
C++ Answer
#include <iostream>
using namespace std;
int fibo(int,int,int,int,int);
//fibo 1,1,2,3,5,8,13.....
int main()
{
cout<<"Fibonnaci"<<endl;
cout<<fibo(1,1,1,10,0);
system("Pause");
return 0;
}
int fibo(int first, int second, int answer, int limit,int count)
{
count = count + 1;
if(count >= limit)
{
return 0;
}
first = second;
second = answer;
if ((first == 1) && (second == 1))
cout<<first<<","<<second<<",";
else
cout<<answer<<",";
return fibo(first, second, first+second , limit,count);
} |
|
|
|
|
|
|
|
发表于 22-8-2006 01:51 PM
|
显示全部楼层
原帖由 jangancari 于 21-8-2006 10:30 PM 发表
之前的弄错了variable. n 是 input by user
for(i=1;i<=n;i++)
cout << 1/sqrt(5){[(1+sqrt(5))/2]i-[(1-sqrt(5))/2]i} << std::endl;
家里老大,我看不明你的formula.我简化简化后居然只剩 i |
|
|
|
|
|
|
|
发表于 23-8-2006 02:35 PM
|
显示全部楼层
原帖由 tensaix2j 于 22-8-2006 01:51 PM 发表
家里老大,我看不明你的formula.我简化简化后居然只剩 i
不好意思, 漏了幂的符号
1/sqrt(5){[(1+sqrt(5))/2]^i-[(1-sqrt(5))/2]^i}
注 : ^ 在C语言应该是用 power(n,m)来计算 , 这里我只用数学符号。
Fibonacci Series 跟黄金比率 G 有着很大关系, 中学时期有一段时间在研究这个数列, 发现当数列个数-> 无限大 时, Fn/Fn-1 ~ 1.6180339 就是黄金比率。
过后才发现, 早在数百年前, 数学家已经知道了, 而且有了公式。 |
|
|
|
|
|
|
|
发表于 3-9-2006 02:47 PM
|
显示全部楼层
对不起,到底怎么做啊
我只能做对1和2的罢了
其他数目就做不到了,但他们还是能像加起来,只是不是老师要的答案,我早早就规定了y=1,所以只能做对1和2的罢了
到底可不可以教教我啊
我做到很生气 |
|
|
|
|
|
|
|
发表于 4-9-2006 11:12 AM
|
显示全部楼层
int fibo(int n)
{
return n<3? n: fibo(n-1)+fibo(n-2);
} |
|
|
|
|
|
|
| |
本周最热论坛帖子
|