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

📄 mop_1.cpp

📁 csdn的C语言大赛自己的答案。各位大侠如果有空
💻 CPP
字号:
#include <stdio.h>
#include <stdlib.h>
#include <alloc.h>
#define MAX 5000
#define N 11
#define UINT unsigned int



int     InitArray( void );
int     Get( int , int , int );                /*输入a1,k,n,得到an*/ 
UINT    Get_Bit( int );                      /*返回值是A的位数*/
UINT    Get_Sum( int );                       /*求ai*k的各位总值*/
int     Get_allBit( void );                   /*求a(i+1)各位和*/ 
int     pow10( int );                        /*求10的i次方 */

int     A_big[MAX];                         /*定义全局数组,可以存放MAX位*/

int pow10(int i)                            /*求10的i次方 */
{
    int sum = 1;
    if( i == 0 )
         return 1;                       /*10的0次方为1*/
    else {
    do{
         sum = sum * 10;
         i --;
         }while( i > 0 );      /*计算10的i次方*/ 
           }//else
    return sum;                             /*返回10的i次方*/ 
    }//pow10


int Get_allBit( void )                        /*求a(i+1)各位和*/
{
    int sum = 0;
    int i = 0;
    do{
        sum += A_big[i++];                   /*求各位的和*/ 
        }while(A_big[i] != N);
    return sum;
    }//get_allBit
    
     
int InitArray( void )                          /*定义数组,初始值为N*/
{
  int i;
  for( i=0 ; i < MAX ; i ++ )
  {
       A_big[i] = N; 
       }
    return 1;
}/*init_array*/


int Get( int a1 , int k , int n )                 /*输入a1,k,n,得到an*/
{
 UINT sum , i , Couter;
 UINT cout_1 = Get_Bit(a1);
 do{
      A_big[--cout_1] = a1 % 10;
      }while( cout_1 > 0 );   /*把a1移动到数组中*/ 
 Couter = 0;                                    /*计算算过的ai*/

 do
 {
   Couter ++;
   sum = Get_Sum(k);
   do{
      i = 0;
      A_big[0] = A_big[0] + 1;    /*逐步加 */
      
              /*开始——把扫描点回归到第一个数组元素空间*/
             while(A_big[i] == 10){    
                        A_big[i] = 0;/*原位清零*/ 
                        if(A_big[i+1] == 11)
                                      A_big[i+1] = 0;
                           A_big[i+1] = A_big[i+1] + 1;/*高位进一*/ 
                        i ++;                    
                    }/*while*/
             /*结束——把扫描点回归到第一个数组元素空间*/ 
             
      if( Get_allBit() == sum ) break;            /*监测进位的情况,并执行进位*/
      }while(1);/*do_while.+1操作*/
}while( Couter < n );/*do_while*/
   return 1;

}//get

UINT Get_Bit( int A )                          /*返回值是A的位数*/
{
   int i = 0;
   do{                                       /*计算A的位数,记为i*/
                A = A / 10;
                i ++;                
                }while(A != 0);  /*while*/
    return i;
    } //get_bin

UINT Get_Sum( int k )                          /*求ai*k的各位总值*/
{
     int i , ai , sum , sum1;
     sum = 0 ;                                 /*sum*/
     ai = 0;                                   /*ai*/
     i = 0;                                    /*变量*/
     do{                                     /*求ai的值 */ 
         ai += A_big[i] * pow10(i);
         i ++ ;
        }while( A_big[i] != N );
     sum1 = k * ai ;                              /*求ai*k的值 并初始化sum1*/
     
     do{                            //求ai*k各位的和
	  sum += sum1 % 10;
	  sum1 = sum1 / 10;
	       }while( sum1 > 0  );

     return sum;
     }


 
int main(void)
{
      FILE *fp; 
      int a1 , k;
      int n;
      int i;

      if((fp = fopen("in.txt" , "r")) == NULL)
             return -1;          /*不能打开输入文件*/ 
      fscanf( fp , "%d" , &a1);       /*读取a1*/
      fscanf( fp , "%d" , &k);        /*读取k*/
      fscanf( fp , "%ld" , &n);        /*读取n*/
      fclose( fp );
      InitArray();
      Get(a1,k,n);                      /*求得an*/ 

      if((fp = fopen("out.txt" , "w")) == NULL)
                 printf("erro");                      /*输出到文件*/
      i=0;
      while( A_big[i] != N )
                        i++;                           /*数组中记录了i位*/
      i--;
      do{
          fprintf( fp , "输出结果为:%d" , A_big[i--] );
          }while( i >= 0 );     /*输出结果*/ 
      fclose( fp );
      return 1;                                        /*程序顺序完成*/ 
      }

⌨️ 快捷键说明

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