《程序员》2008年第1期"算法擂台" - Cantor表解答

本文介绍了一个名为CantorTable的程序,用于计算并打印Cantor表中的特定项值。程序通过输入正整数来获取Cantor表的索引,并输出对应的分数形式。此外,程序还能够处理一系列输入值,输出它们在Cantor表中的对应分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/* 
  Name: Cantor Table
   Author: blackboy @ S.N.P
   Date: 08-01-08 23:08
   Description: Coded by Dev-C++ 4.9.9.2
 */ 


#include  < stdio.h > 
#include  < stdlib.h > 

#define  MAX 20 

//  计算并打印Cantor表中第n项的值 
int  PrintCantor( int  n)
 {
      int  i, sum;
     
      if (n < 1   ||  n > 100000 )
      {
         printf( " invalid input! " );
          return   1 ;
     } 
    
     sum  =   0 ;
      for (i = 1 ; sum < n; i ++ )
         sum  +=  i;
         
      if (i % 2 == 0 )
         printf( " %d/%d " ,  - n + 1 + sum, n + i - 1 - sum);
      else 
        printf( " %d/%d " , n + i - 1 - sum,  - n + 1 + sum);
      return   0 ;
 } 

int  main( int  argc,  char   * argv[])
 {
      int  n[MAX];
      int  i, count;
     
     printf( " # input some positive integers, end with number 0: " );
     i  =   0 ;
     count  =   0 ;
      do 
     {
         scanf( " %d " ,  & n[i]);
         i ++ ;
         count ++ ;
     } 
     while (n[i - 1 ] != 0 );
     
     printf( " # related values in cantor table: " );
      for (i = 0 ; i < (count - 1 ); i ++ )
         PrintCantor(n[i]);
   
     system( " PAUSE " );    
      return   0 ;
 } 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值