明人不说暗话,直接上百度网盘链接,输入提取码baxj即可下载。
该大整数运算系统用于对有符号的位数不超过500位的大整数进行加、减、乘、除四则运算和计算N(0<=N<=10000)的阶乘。
注意事项 :
1、操作期间,进行四则运算时若大整数为正数请直接省略‘+ ’号。
");
2、该大整数运算系统设定处理位数不超过500位的大整数四则运算和计算N(0<=N<=10000)的阶乘,可根据情况调整相关程序参数,进行位数更大的四则运算和N值更大的阶乘计算。
3、为了保证程序设计流程的简捷性,该系统没有很高的操作容错性能,所以欲执行某项功能,请务必根据提示输入正确的选项值进行操作。
课程设计中包含程序,程序运行所需文件,设计报告(电子版和打印版),应有尽有,欢迎小伙伴们在本博客的文件中下载使用。
下面的程序正常运行需要在百度网盘中下在相应输出文件,否则无法正常使用哦。
1 #include<stdio.h> 2 #include<string.h> 3 #include<stdlib.h> 4 #include<ctype.h> 5 #include <conio.h> 6 const int N1=40000; 7 const int N2=510; 8 9 void Display(); //显示主菜单 10 char* Input(char str[]); //输入 11 void Output(int result[],int j); //输出 12 int Add(char str1[],char str2[],int result[]); //相加 13 int Sub(char str1[],char str2[],int result[]); //相减 14 int Mul(char str1[],char str2[],int result[]); //相乘 15 int Div(char str1[],char str2[],int result[]); //相除 16 int Fac(int n,int result[]); //计算阶乘 17 int Substract(int *bjs,int *js,int Num_len1,int Num_len2); //计算差的位数 18 //以上函数返回值为int类型的均是结果的首位非零数字在数组中的下标,小于0表示无结果不输出 19 int IsBig_num(char str1[],char str2[]); //比较 20 21 int main() 22 { 23 int select,op,n,rs=-1,result[N1]; 24 //rs表示该数的首位非零数字在数组中的下标,小于0表示无结果不输出 25 char str1[N2],str2[N2],*Fir_num,*Sec_num; 26 while(1) 27 { 28 Display(); 29 printf(" 请输入欲执行功能的选项值(0-4): "); 30 scanf("%d",&select); 31 switch(select) 32 { 33 case 1: 34 printf(" 1 加法运算 "); 35 printf(" 2 减法运算 "); 36 printf(" 3 乘法乘法 "); 37 printf(" 4 除法运算 "); 38 printf(" 请输入对应运算的选项值(1-4): "); 39 scanf("%d",&op); 40 memset(result,0,sizeof(result)); 41 switch(op) 42 { 43 case 1: 44 printf(" 请输入一个不超过500位的大整数作为 一个加数 "); 45 Fir_num=Input(str1); 46 printf(" 请输入另一个不超过500位的大整数作为 另一个加数 "); 47 Sec_num=Input(str2); 48 printf(" 两数之和为 "); 49 rs=Add(Fir_num,Sec_num,result); 50 break; 51 case 2: 52 printf(" 请输入一个不超过500位的大整数作为 被减数 "); 53 Fir_num=Input(str1); 54 printf(" 请输入另一个不超过500位的大整数作为 减数 "); 55 Sec_num=Input(str2); 56 printf(" 两数之差为 "); 57 rs=Sub(Fir_num,Sec_num,result); 58 break; 59 case 3: 60 printf(" 请输入一个不超过500位的大整数作为 一个因数 "); 61 Fir_num=Input(str1); 62 printf(" 请输入另一个不超过500位的大整数作为 另一个因数 "); 63 Sec_num=Input(str2); 64 printf(" 两数之积为 "); 65 rs=Mul(Fir_num,Sec_num,result); 66 break; 67 case 4: 68 printf(" 请输入一个不超过500位的大整数作为 被除数 "); 69 Fir_num=Input(str1); 70 printf(" 请输入另一个不超过500位的大整数作为 除数 "); 71 Sec_num=Input(str2); 72 printf(" 两数之商为 "); 73 rs=Div(Fir_num,Sec_num,result); 74 break; 75 default: 76 printf(" 无效输入 "); 77 } 78 break; 79 case 2: 80 printf(" 请输入N(0<=N<=10000) "); 81 scanf("%d",&n); 82 if(n>10000||n<0) 83 printf(" 错误输入(0<=N<=10000) "); 84 else 85 { 86 memset(result,0,sizeof(result)); 87 rs=Fac(n,result); 88 printf(" %d!为 ",n); 89 } 90 break; 91 case 3: 92 FILE *fp; 93 if(NULL==(fp=fopen("系统简介.txt","r"))) 94 printf("文件打开失败! "); 95 char ch1; 96 while(EOF != (ch1=fgetc(fp))) 97 { 98 printf("%c",ch1); 99 } 100 fclose(fp); 101 break; 102 case 4: 103 FILE *fq; 104 if(NULL==(fq=fopen("开发人员.txt","r"))) 105 printf("文件打开失败! "); 106 char ch2; 107 while(EOF != (ch2=fgetc(fq))) 108 { 109 printf("%c",ch2); 110 } 111 fclose(fq); 112 break; 113 case 0: 114 return 0; 115 default: 116 printf(" 无效输入 "); 117 } 118 if(rs >= 0) 119 { 120 Output(result,rs); 121 rs=-1; 122 } 123 printf(" __________________________________________ "); 124 printf(" 按任意键继续 . . . "); 125 getch(); 126 system("cls"); 127 } 128 } 129 //主菜单 130 void Display(void) 131 { 132 printf(" * * * * * * * * * * * * * * * * * * * * * "); 133 printf(" 大整数运算系统 "); 134 printf("* * * * * * * * * * * * * * * * * * * * * "); 135 printf(" 1 四则运算 "); 136 printf(" 2 计算N! "); 137 printf(" 3 系统简介 "); 138 printf(" 4 开发人员 "); 139 printf(" 0 退出 "); 140 printf("* * * * * * * * * * * * * * * * * * * * * "); 141 } 142 //输入函数 143 char* Input(char str[]) 144 { 145 scanf("%s",str); 146 char *p=str; 147 while(*p=='0') 148 p++; 149 if(*p=='