程序设计基础(C语言)教学案例(一)--大数,求1000!

  说明:这个程序演示了实现大数的无误差计算的一种方法。即以数组表示一个大数,然后自定义相关的计算规则。
  其中有2个看点:
  1、每个int型(16 bits)数组元素可以表示1位数字,也可以表示4位数字,因此,可扩展表示更大范围的数据;另外,若以某处为“小数点”,则表示大实数也是同理。
  2、这个实例充分显示了数据结构中数据存储方式与对应计算方法的关系,可以作为理解数据结构这个概念的一个例证。

  好了,废话少说,代码出场。
  BTW,因为是上课要讲的,基本没有写注释,大家莫见怪哈
========================================================================
 1  #include < stdio.h >
 2  void  calc( int [], int , int );
 3  void  ShowResult( int [], int );
 4  void  multiply( int [], int , int );
 5  void  clear( int [], int );
 6 
 7  #define SIZE  5000
 8  void  main()
 9  {
10       int  n,i;
11       int  num[SIZE] = { 0 };
12      clrscr();
13 
14      printf( " PLZ input a number: " );
15      scanf( " %d " , & n);
16      num[ 0 ] = 1 ;
17       for (i = 1 ;i <= n;i ++ )
18          calc(num,i,SIZE);
19      ShowResult(num,SIZE);
20 
21      getchar();getchar();
22  }
23  void  calc( int  num[], int  n, int  len)
24  {
25      multiply(num,n,len);
26      clear(num,len);
27  /*     ShowResult(num,len);
28      printf("\n");
29       */
30  }
31  void  multiply( int  num[], int  n, int  len)
32  {
33       int  i = 0 ;
34       for (i = 0 ;i < len;i ++ )
35          num[i] = num[i] * n;
36  }
37  void  clear( int  num[], int  len)
38  {
39       int  i = 0 ;
40       for (i = 0 ;i < len;i ++ )
41      {
42          num[i + 1 ] = num[i + 1 ] + num[i] / 10 ;
43          num[i] = num[i]  %   10 ;
44          }
45  }
46 
47  void  ShowResult( int  num[], int  len)
48  {
49       int  i = 0 ,n;
50       for (i = len - 1 ;i >= 0 ;i -- )
51           if (num[i] != 0 ) break ;
52      n = i;
53      printf( " The Length of the Result is:%d.\n " ,n);
54       for (i = n;i >= 0 ;i -- )
55          printf( " %d " ,num[i]);
56  }

转载于:https://www.cnblogs.com/cavtc/archive/2007/02/01/636636.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值