练习40
来源:互联网 发布:游戏编程语言 编辑:程序博客网 时间:2024/04/28 08:57
- #include <stdio.h>
- #define N 1000
- void InitRs(int rs[])
- {
- int i;
- for(i=0; i<N; i++)
- rs[i] = 0;
- }
- void CalcFact(int rs[],int n)
- {
- int i,k;
- int val,cf=0;
- rs[0] = 1;
- for(i=1; i<=n; i++)
- {
- for(k=0; k<N; k++)
- {
- val = rs[k] * i + cf;
- cf = val / 10;
- val = val % 10;
- rs[k] = val;
- }
- }
- }
- void CalcAdd(int rs[],int rs1[],int rs2[])
- {
- int i;
- int val,cf=0;
- for(i=0; i<N; i++)
- {
- val = rs1[i] + rs2[i] + cf;
- cf = val / 10;
- val = val % 10;
- rs[i] = val;
- }
- }
- void CalcSub(int rs[],int rs1[],int rs2[])
- {
- int i;
- int val,cf=0;
- for(i=0; i<N; i++)
- {
- val = rs1[i] - rs2[i] + cf;
- if(val<0)
- {
- cf = -1;
- val = 10 + val;
- }
- else
- {
- cf = val / 10;
- val = val % 10;
- }
- rs[i] = val;
- }
- }
- void PrintRs(int rs[])
- {
- int i=N-1;
- while(i>=0 && rs[i]==0)
- i--;
- if(i<0)
- printf("0/n");
- else
- {
- while(i>=0)
- {
- printf("%d",rs[i]);
- i--;
- }
- }
- printf("/n");
- }
- void main()
- {
- int rs[N];
- int rs1[N];
- int rs2[N];
- int m,n;
- printf("请输入N和M的值:");
- scanf("%d%d", &n ,&m);
- InitRs(rs1);
- InitRs(rs2);
- printf("N! = ");
- CalcFact(rs1,n);
- PrintRs(rs1);
- printf("M! = ");
- CalcFact(rs2,m);
- PrintRs(rs2);
- printf("N! - M! = ");
- InitRs(rs);
- if(n >= m)
- {
- CalcSub(rs,rs1,rs2);
- PrintRs(rs);
- }
- else
- {
- CalcSub(rs,rs2,rs1);
- printf("-");
- PrintRs(rs);
- }
- printf("N! + M! = ");
- InitRs(rs);
- CalcAdd(rs,rs1,rs2);
- PrintRs(rs);
- }