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

/*
  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 ;
}

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值