| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 514 人关注过本帖
标题:菜鸟新手求助,如何让最后输出an=x中的n与我输入的n值同步
只看楼主 加入收藏
wahn1992
Rank: 1
等 级:新手上路
帖 子:21
专家分:7
注 册:2013-3-11
结帖率:60%
收藏
已结贴  问题点数:10 回复次数:6 
菜鸟新手求助,如何让最后输出an=x中的n与我输入的n值同步
我编了个求解斐波拉契数列an的值的代码,就是输入n得到an=多少多少,我的问题是如何让最后输出an=x中的n与我输入的n值同步?还有我写的这个代码,计算较小的n=40以前的数还可以,但是如果n输大了就不准确了值会出现负号这是怎么回事如何解决了?
#include
int main()
{
int a,b,c,i,n;
scanf("%d",&n);
if(n<=2)
{
n<=1?printf("a1=1"):printf("a2=1");
}
else
{
a=1;
b=1;
i=1;
while(i<=n-2)
{
c=a+b;
a=b;
b=c;
++i;
}
printf("an=%d",c);
}
return 0;
}
搜索更多相关主题的帖子: 多少 include 如何 
2013-03-16 00:07
shmilyflf
Rank: 9Rank: 9Rank: 9
等 级:蜘蛛侠
威 望:5
帖 子:356
专家分:1008
注 册:2012-12-9
收藏
得分:5 
#include <stdio.h>
int main()
{
    int a,b,c,i,n;
    printf("请输入求到多少的an:");//最好能提示一下输入什么,以人为本,不是只有你看懂就可以了,这是要给别人用的!
    scanf("%d",&n);
    if(n<=2)
    {
        n<=1?printf("a1=1"):printf("a2=1");
    }
    else
    {
        a=1;
        b=1;
        i=1;
        while(i<=n-2)
        {
            c=a+b;
            a=b;
            b=c;
            ++i;
        }
        printf("a%d=%d\n",n,c);//这样就能实现你想要的效果
    }
    printf("int长度=%d\n",sizeof(int));//可以输出int长度
    return 0;
}

//你一个int型的还想多大?最大能保存2的32次方,其实也不是很大。

[ 本帖最后由 shmilyflf 于 2013-3-16 01:01 编辑 ]
2013-03-16 00:59
五条路
Rank: 1
来 自:浙江杭州
等 级:新手上路
帖 子:1
专家分:2
注 册:2013-3-16
收藏
得分:2 
将输出语句改为:a
printf("a%d=%d",n,c);
n输入太大不准确,是因为int在内存中占4个字节(vc),an太大会使数据溢出;改进方法是,将an定义为double型,输出控制符改为%.0f
2013-03-16 01:03
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:2 
我没仔细看....与你输入的n一致,你不就输出n就好了嘛
程序代码:
#include <stdio.h>

int fibonacci(int n) {
    if(n <= 1) return 1;
    return fibonacci(n - 1) + fibonacci(n - 2);
}

int main() {
    int n;
    scanf("%d", &n);
    printf("%d\n", fibonacci(n));
    printf("%d\n", n);
    return 0;
}


仰望星空...........不忘初心!
2013-03-16 01:09
Susake
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:女儿国的隔壁
等 级:贵宾
威 望:23
帖 子:2288
专家分:6481
注 册:2012-12-14
收藏
得分:1 
关于溢出这个问题:可以参考大数的加法....代码如下
程序代码:
#include <stdio.h>
#include <string.h>
#define N 1000 + 10

int main() {
    char s1[N], s2[N];
    int a[N] = {0}, b[N] = {0}, len1, len2, len, i;
    scanf("%s%s", s1, s2);
    len1 = strlen(s1); len2 = strlen(s2);
    for(i = 0; i < len1; i++) a[i] = s1[len1 - i - 1] - '0';
    for(i = 0; i < len2; i++) b[i] = s2[len2 - i - 1] - '0';
    len = len1 > len2 ? len1 : len2;
    for(i = 0; i < len; i++) {
        a[i] += b[i];
        if(a[i] >= 10) {
            a[i] %= 10;
            a[i + 1]++;
        }
    }
    if(a[len]) printf("%d", a[len]);
    for(i = len - 1; i >= 0; i--) printf("%d", a[i]);
    return 0;
}


仰望星空...........不忘初心!
2013-03-16 01:12
wang25435
Rank: 2
等 级:论坛游民
帖 子:21
专家分:16
注 册:2013-3-10
收藏
得分:0 
楼上好厉害的样子
2013-03-16 14:57
wahn1992
Rank: 1
等 级:新手上路
帖 子:21
专家分:7
注 册:2013-3-11
收藏
得分:0 
回复 2楼 shmilyflf
谢谢
2013-03-16 16:12
快速回复:菜鸟新手求助,如何让最后输出an=x中的n与我输入的n值同步
数据加载中...
 
   



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

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