⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 finish.cpp

📁 如何解决Fibonacci数列问题的源代码
💻 CPP
字号:
#include<stdio.h>
#include<string.h>
#include<ctype.h>
void plus(char *a, char *b, char *c);
void minus(char *a, char *b, char *c);


int main()
{
   int i,n;
    char a[2000]="1";
    char b[2000]="1";
    char c[2000];
    char d[2000];
    char yq[2000][2000];
    memset(c, 0, sizeof(c));
    memset(yq, 0, sizeof(yq));
    scanf("%d",&n);
    for( i=0; i<n; i++)
        {
        scanf("%s",yq[i] );
        }
   for( i=0; i<n; i++)
       {
         memset(d, 0, sizeof(d));
         if(i==0) plus( a,b,c );
         if( ( strlen(b)>strlen(yq[i]) ) || ( strlen(b)==strlen(yq[i]) && strcmp(b,yq[i])>0 ) )
         {
               strcpy(a,c);
               while(( strlen(b)>strlen(yq[i]) ) || ( strlen(b)==strlen(yq[i]) && strcmp(b,yq[i])>0 ) )
               {
                    minus( a,b,c );
                    strcpy(a,b);
                    strcpy(b,c);
               }
               strcpy(c,a);
               minus( a,b,d );
               strcpy(a,d);

          }
        while( strlen(c)<strlen( yq[i] ) )
                 {
                      strcpy(a,b);
                      strcpy(b,c);
                     plus( a,b,c );

                 }
        while( (strcmp(c,yq[i])<0 || strcmp(c,yq[i])==0) &&strlen(c)==strlen(yq[i]) )
                 {
                      strcpy(a,b);
                      strcpy(b,c);
                      plus( a,b,c );

                 }
     printf("%s\n",b);
       }
}

void plus(char *a, char *b, char *c)
 {
     int i,j,longa,longb,xjjg,js=0;
      longa=strlen(a);
      longb=strlen(b);
      strcpy( c,b );
     for( i=longa-1,j=longb-1; i>=0&&j>=0; i--,j--)
      {
            xjjg=(c[j]-48)+(a[i]-48)+ js;
            js=xjjg/10;
            c[j]=xjjg%10+48;
      }
     while( j>=0 && js!=0 )
     {
         xjjg=( c[j]-48 )+js;
         js=xjjg/10;
         c[j]=xjjg%10+48;
         j=j-1;
     }
     if( js!=0 )
     {
            for(i=longb; i>=0;i--)
            {
                c[i+1]=c[i];
            }
            c[0]='1';
     }
 }
 void minus(char *a, char *b, char *c)
{
     int i,j,longa,longb,xjjg,js=0,jhc;
     longa=strlen(a);
     longb=strlen(b);
     strcpy( c,a );
     for( i=longb-1,j=longa-1; i>=0&&j>=0; i--,j--)
     {
         xjjg=(c[j]-48)-(b[i]-48)-js;
         js=0;
         if(xjjg<0)
         {
             xjjg=xjjg+10;
             js=1;
         }
         c[j]=xjjg+48;
     }
     while( js!=0 && j>=0)
     {
         xjjg=(c[j]-48)-js;
         js=0;
         if(xjjg<0)
         {
             xjjg=xjjg+10;
             js=1;
         }
         c[j]=xjjg+48;
         j=j-1;
     }
     i=0;j=0; jhc=0;
     while ( c[i]=='0')
            i=i+1;
     while( c[i]!='\0')
     {
            c[j]=c[i];
            j=j+1;
            i=i+1;
            jhc=jhc+1;
     }
     c[j]='\0';
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -