佳礼资讯网

 找回密码
 注册

ADVERTISEMENT

查看: 1016|回复: 20

PROGRAM C:SPECIAL SQUENCE,如何写出这个OUTOUT?

[复制链接]
发表于 19-8-2006 12:12 AM | 显示全部楼层 |阅读模式
大家好,我是刚学部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.
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
原帖由 jasonmun 于 19-8-2006 07:17 PM 发表
这是你应该做的功课..
这2个问题并不是问题..如果你对C基本的用法懂的话..

点到即止..

我呢,还是新手,而你写的有些也看不明白,导师也只写下问题就什么也没说了...
说靠自己.....切实这是我的问题...
谢谢你的指教.
又空请你喝
回复

使用道具 举报

Follow Us
发表于 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..
或别人写的简易课程教学也行..

一章一章的看..去明白它..
即使没有导师 ...

哦,老师是用华文解释的...
不过你写的,导师一些还没教,可能着是我弄不明白你写什么的原因...

好吧谢谢你的指教,
回复

使用道具 举报


ADVERTISEMENT

发表于 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 | 显示全部楼层
应该问数学老师......
是FIBONACCI ALGORITHM
http://www.mcs.surrey.ac.uk/Personal/R.Knott/Fibonacci/fib.html
回复

使用道具 举报

 楼主| 发表于 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);
}
回复

使用道具 举报


ADVERTISEMENT

发表于 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);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

 

ADVERTISEMENT



ADVERTISEMENT



ADVERTISEMENT

ADVERTISEMENT


版权所有 © 1996-2023 Cari Internet Sdn Bhd (483575-W)|IPSERVERONE 提供云主机|广告刊登|关于我们|私隐权|免控|投诉|联络|脸书|佳礼资讯网

GMT+8, 14-11-2024 03:22 AM , Processed in 0.146761 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表