ImageVerifierCode 换一换
格式:DOC , 页数:21 ,大小:484.19KB ,
资源ID:4916991      下载积分:10 金币
验证码下载
登录下载
邮箱/手机:
图形码:
验证码: 获取验证码
温馨提示:
支付成功后,系统会自动生成账号(用户名为邮箱或者手机号,密码是验证码),方便下次登录下载和查询订单;
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

开通VIP
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.zixin.com.cn/docdown/4916991.html】到电脑端继续下载(重复下载【60天内】不扣币)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

开通VIP折扣优惠下载文档

            查看会员权益                  [ 下载后找不到文档?]

填表反馈(24小时):  下载求助     关注领币    退款申请

开具发票请登录PC端进行申请。


权利声明

1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4009-655-100;投诉/维权电话:18658249818。

注意事项

本文(c语言程序设计报告超大数据的运算.doc)为本站上传会员【天****】主动上传,咨信网仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知咨信网(发送邮件至1219186828@qq.com、拔打电话4009-655-100或【 微信客服】、【 QQ客服】),核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载【60天内】不扣币。 服务填表

c语言程序设计报告超大数据的运算.doc

1、 C语言程序设计报告——超大数据运算 tax C语言课程设计报告 题目: #1 超大数据的运算 学 院: 班 级: 学 生: tax 学 号: 提交日期: 目录 一、 需求分析.....

2、3 1.题目要求........................................................3 2.限制条件及具体目标..............................................3 二、 总体设计.....................................................3 1.完成过程....................................................

3、3 2.问题与解决方法..................................................3 3.程序设计思想....................................................4 三、 详细设计.....................................................5 1.函数列表........................................................5 2.函数关系调用图...........................

4、5 四、 程序运行结果测试与分析....................................5 五、 结论与心得...................................................9 附源代码............................................................9 一、 需求分析 1.题目要求 对超大型数据(考虑负数和小数)进行存储、运算和输出打印。运算具体要求如下: 1) 进行四

5、则运算; 2) 整数型超大数据的阶乘; 3) 超大型数据某范围内孪生质数的判断输出; 4) 超大型数据文件的存储和读取。 2.限制条件及具体目标 1) 将数据要求为超大型且考虑负数与小数,即各种数据类型都要考虑,并处理超出各种数据类型所能表示范围的数据; 2) 运算要求包括四则运算、阶乘、孪生质数的判断; 3) 程序要求支持文件的存储和读取。 二、总体设计 1.完成过程 本程序的目标是完成超大数据(以下简称大数)的运算,考虑负数和小数意味着数据类型要带符号并且包括浮点数据,所谓超大,即超出数据类型所能保存的范围,会发生溢出的情况,其次是大数的正常显示也无

6、法通过一般数据类型实现,主要思想是利用字符串对大数进行保存,然后分析各种要求的四则运算,阶乘运算,孪生质数判断的过程,接下来模拟运算过程编写算法即可。在各个算法的编写过程中插入文件的创建打开与写入,从而实现文件的存储和读取。至此本程序的功能基本编写完成。 2.问题与解决方法 运算过程分析与模拟算法的编写本身比较复杂。因为考虑负数的要求,就必须有判断符号的过程,体现在加减法的运算中,就要求程序要能根据符号的正负来选择运算方式,从而得出正确的结果,体现在乘除法的运算中,则判断是否异号进而决定计算结果的符号,并且在余数的计算中还有更复杂的进位分析,再加上考虑小数的要求,问题的复杂度就又提

7、高一层,在乘除运算中,可以通过将浮点大数转换为整数,记录两数小数位数,计算得到的基础上再加上相应小数点即可。在加减法中小数点位置不会改变,将小数点对齐后再进行运算即可。阶乘运算在分析清算法后较容易实现,即实现循环的乘法。孪生质数则通过接受要求范围后循环进行素数判断(利用根号)至循环结束即可。 3. 程序设计思想 三、详细设计 1.函数列表 void jianfa(int a[],int b[],int f) void jiafa(int a[],int b[],int f) void chengfa( int a[], int b[]) void chufa(char *

8、beichu, char *chu, char *shang, char *yu) void si_ze() void jie_cheng() void luansheng_zhishu() int main() 2. 函数的调用关系图 四、 程序运行结果测试与分析 经大量具代表性的数据测试,本程序已能实现预期功能,符合课程题目要求,能实现超大数据的四则运算、阶乘运算以及范围内孪生质数的判断输出,并将数据存储到指定文件中,程序演示效果如下: 表格 1 四则运算演示 表格 2 阶乘计算演示 表格 3 孪生

9、质数演示 表格 4 数据文件存储演示 五、结论与心得 我主要负责阶乘运算的实现,并和小组成员一起实现其他运算功能 1、刚开始考虑进位问题过于简单,导致测试数据时多次出错; 2、分析运算方式并将其编写为算法的过程中花费了很大的功夫理解和编写,发现自己的编程思维还有待提升; 3、开始写程序时源程序没有严格按单元模块结构编写,可读性较差。 4、由于初次进行大规模的程序设计,层次结构划分不太合理,应在以后的设计中强化此思维,逐渐与高效简练的程序设计接轨。 附源代码如下 #include #in

10、clude #include #include #include #define MAX 101 #define N 1000 #define M 250000 /*函数功能:利用字符串实现超长数加减法运算 */ void jianfa(int a[],int b[],int f); int lena,lenb,da=1,db=1; /* 把lena,lenb设为全局变量,lena纪录第一个超长型数组的位数,lenb纪录第二个超长型数组的位数*/

11、 char b1[MAX], b2[MAX]; /*纪录需要计算的两个超长型数据 */ void input(int a1[],int a2[]) /*函数input为输入函数,用来纪录两个待计算的超型数据,以数组首地址为参数.以实现返回两个超长型数据*/ { FILE *fp1; if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } int i,fa=1,fb=1; printf("请输入第一个数:\n");

12、 scanf ( "%s", b1); fputs(b1,fp1); fputs(" , ",fp1); printf("请输入第二个数:\n"); /*输入两个超长型数据*/ scanf("%s",b2); fputs(b2,fp1); lena = strlen( b1 ); /*lena纪录b1的位数*/ lenb = strlen( b2 ); /*lenb纪录b2的位数*/

13、if(b1[0]=='-') { lena--; da=-1;fa=0;} /*判断数组的符号*/ if(b2[0]=='-') { lenb--; db=-1;fb=0;} for (i=0; i

14、int f) /*超长型数据加法运算 */ { FILE *fp1; int i,c[MAX+1]={0},s; if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } if(da*db>0||f) { if(lena>lenb) s=lena; else s=lenb; /*用s纪录结果的

15、最大位数*/ for(i=0;i

16、c[s]) s++; /*判断最后结果的位数*/ fputs("\n两者之和:\n",fp1); if(da<0&&f||da<0) {printf("-");fputc('-',fp1);} for(i=s-1;i>=0;i--) {printf("%d",c[i]); fprintf(fp1,"%d",c[i]);} /*输出结果*/ } else jianfa(a,b,1)

17、 } void jianfa(int a[],int b[],int f) /*超长数减法运算*/ { FILE *fp1; int i,u=0,c[MAX+1]={0},s; if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } fputs("\n两者之差:\n",fp1); if(da*db>0||f) { if(lena>lenb) s=lena;

18、 else /*用s纪录结果的最大位数*/ { s=lenb; for(i=s;a[i]<=b[i]&&i>=0;i--) if(a[i]

19、 { if(a[i]

20、 { b[i+1]--; b[i]+=10; } c[i]=b[i]-a[i]; } while(!c[s-1]&&s>1) s--; /*判断最后结果的位数*/ if(f&&(da>0&&u||da<0&&!u)||da>0&&(db>0&&u||u&&!f)) {printf("-");fputc('-',fp1);} if(da<0&&db<0&&!u) {printf

21、"-");fputc('-',fp1);} /*如果u为真是输出负号*/ for(i=s-1;i>=0;i--) {printf("%d",c[i]);fprintf(fp1,"%d",c[i]);} } else jiafa(a,b,1); } /*超长型数据乘除法运算 */ void chengfa( int a[], int b[]) /*超长数乘法运算*/ { FILE *fp1; int i, j, c[2*MAX] = {0},s;

22、 s = lena + lenb - 1; /*用s纪录结果的最大位数*/ if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } fputs("\n两者之积:\n",fp1); for(i = 0; i < lena; i++) /*超长数乘法运算过程*/ for(j = 0;j < lenb; j++) { c[i+j]

23、 = a[i] * b[j] + c[i+j]; c[i+j+1] = c[i+j] / 10 + c[i+j+1]; c[i+j] = c[i+j] % 10; } while(!c[s]) s--; /*判断最后结果的位数*/ if(da*db<0) {printf("-");fputc('-',fp1);} for(i = s; i >= 0; i--) {printf("%d",c[i]);fprintf(fp1,"%d",c[i]);} /*输出

24、结果*/ } //比较两个用字符串存储的超长数的大小,若a>b,返回1;a==b,返回0;a lenB ? 1 : -1; else return strcmp(a,b); } //超长正数的减法,且被减数大于减

25、数 void cha(char *beijian, char *jian, char *chas) { int cB[MAX] = {0};//用来存储被减数的整型数组 int cJ[MAX] = {0};//用来存储减数的整型数组 int cC[MAX] = {0};//用来存储两数之差的整型数组 int lenM = strlen(beijian), lenS = strlen(jian);//被减数和减数字符串的长度 int i; //逆序复制减数和被减数到整型数组(因为减法运算是从低位开始),保证cB大于cJ for (i=0; i

26、 cB[i] = beijian[lenM-1-i] - '0'; for (i=0; i= cJ[i])//被减数大于减数,直接相减 cC[i] = cB[i] - cJ[i]; else //否则要向前借位 { cC[i] = cB[i] + 10 - cJ[i]; --cB[i+1]; } } while (cC[i-1] ==

27、0) i--; int j = 0; int k; for (k=i-1; k>=0; k--,j++)//逆序存储两数之差到字符串chas chas[j] = cC[k] + '0'; chas[j] = '\0'; } void chufa(char *beichu, char *chu, char *shang, char *yu) //超长型数据的整除,求余运算 { int lenv=strlen(beichu),lens=strlen(chu); if(beichu[0]=='-') { da=-1;

28、 //判断数组的符号 for(int i=0;i

29、 return ; } if (strcmp(chu, "0") == 0 || Compare(beichu, chu) < 0)//被除数小于除数 { strcpy(shang, "0"); strcpy(yu, beichu); return ; } char buf[2] = "0";//临时数组依次存储被除数的每一位数 int i, s, k; strcpy(yu, ""); //先使余数的值为空 for (i=0,k=0; beichu[i]!='\0'; i++) { s = 0; buf[0] = beichu

30、[i]; strcat(yu, buf);//接上被除数的一位数,改变当前余数 while (Compare(yu, chu) >= 0)//连减试商 { s++; cha(yu, chu, yu); } shang[k++] = s + '0';//记录每一位得到的商值 if (strcmp(yu, "0") == 0) strcpy(yu, ""); //使余数的值为空,去掉多余的0 } shang[k] = '\0'; //去掉多余的0 int j; for (i=0; s

31、hang[i]=='0'; i++) ; for (j=i; j<=k; j++) shang[j-i] = shang[j]; } void put_chufa() { FILE *fp1; if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } char c[MAX] = {0}, d[MAX] = {0}; chufa( b1, b2,c,d); puts("两者之商:"); fp

32、uts("\n两者之商:\n",fp1); if(da*db<0&&strcmp(c,"0")) {printf("-");fputc('-',fp1);} puts(c); fputs(c,fp1); puts("余数:"); fputs("\n余数:\n",fp1); puts(d); fputs(d,fp1); fputc('\n',fp1); } void si_ze() { int a[MAX]={0},b[MAX]={0}; input(a,b); printf

33、"\n两者之和:\n",b1,b2);jiafa(a,b,0); printf("\n两者之差:\n",b1,b2);jianfa(a,b,0); printf("\n两者之积:\n",b1,b2);chengfa(a,b); printf("\n"); getchar(); put_chufa(); } /*超大数阶乘运算 */ void jie_cheng() { FILE *fp1; char c='\n'; int n; int i,j; int a[M]; /

34、/存数运算结果 int p,h; //p存储当前结果的位数,h为进位 a[1]=1; printf("输入所要求的整数:"); scanf("%d",&n); if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } fputs("\n阶乘:\n",fp1); p=1; for(i=2;i<=n;i++) //循环与2,3,4.....n相乘

35、 { for(j=1,h=0;j<=p;j++) //让a[]的每位与i相乘 { a[j] = a[j] * i + h ; h = a[j] / 10 ; a[j] = a[j] % 10 ; } while(h>0) //如果h不为0 { a[j] = h %

36、10 ; h = h / 10 ; j++; } p = j - 1 ; //将当前的位数赋给p } printf("%d!=",n); fprintf(fp1,"%d",n); fputs("!=",fp1); for(i=p;i>=2;i--) { printf("%d",a[i]); fprintf(fp1,"

37、d",a[i]); } printf("%d\n",a[i]); fprintf(fp1,"%d",a[i]); fputc(c,fp1); fclose(fp1); } /*超大数据范围内孪生质数的输出 */ int prime(long int n) { long int r,i; r=(int)sqrt(n); for(i=2;i<=r;i++) { if(n%i==0) //此处n%i==0,说明不是素数,立刻跳出循环 re

38、turn 0; } return 1; } void luansheng_zhishu() { FILE *fp1; long int m,n,i,t=0; if((fp1=fopen("xxx.txt","a+"))==NULL) { printf("\n cannot creat!"); exit(0); } printf("请输入范围m,n\n"); scanf("%d%d",&m,&n); fprintf(fp1,"%d",m); fputc('~',fp1); fprint

39、f(fp1,"%d",n); fputc('\n',fp1); fputs("范围内孪生质数有:\n",fp1); for(i=m;i<=n-2;i++) //此处限制i<=n-2,不然prime(i+2)超过范围;另外i每次自加1, //不能加2 { if (prime(i)&&prime(i+2)) { t+=1; printf("(%d,%d)\n",i,i+2); fputc('(',fp1); fprintf(fp1,"%d"

40、i); fputc(',',fp1); fprintf(fp1,"%d",i+2); fputc(')',fp1); fputc('\n',fp1); } } printf("%d\n",t); fprintf(fp1,"%d",t); fputc('\n',fp1); if(t==0) {printf("无孪生素数!"); //这个输出格式应该在循环外判定 fputs("无孪生素数!",fp1);} //getch(); } /*主函数*/

41、 int main() { int n; printf("选择想要进行的运算:1、四则运算,2、阶乘,3、孪生质数:"); scanf("%d",&n); switch(n) { case 1:si_ze(); break; case 2:jie_cheng(); break; case 3:luansheng_zhishu(); break; default:exit(0); } return 0; } 目 录 第一章 总 论 1 第二章 项目提出的背景和必要性 4 第一节 项目建设背景 4 第二节 项目

42、建设的必要性 4 第三节 项目建设的先进性 8 第三章 市场分析与建设规模 10 第一节 市场分析 10 第二节 建设规模 11 第四章 工艺技术方案及设备选型 12 第一节 工艺技术方案 12 第二节 主要设备方案 14 第五章 原料、辅助材料及燃料的供应 17 第一节 主要原材料、辅助材料及公用工程供应来源 17 第二节 主要公用工程用量及供应 18 第六章 厂址选择和建设条件 19 第一节 厂址选择 19 第二节 建设条件 19 第七章 总图运输、土建及公用工程 22 第一节 总平面布置及运输 22 第二节 土建方案 23 第

43、三节 公用工程 24 第八章 节 能 29 第一节 用能标准及设计规范 29 第二节 项目能源消耗种类及消耗情况 30 第三节 项目节能措施及效果分析 31 第九章 环境保护 33 第十章 劳动安全卫生及消防 36 第一节 劳动安全卫生 36 第二节 消 防 38 第十一章 机构组织与人力资源配置 41 第十二章 工程进度安排 43 第十三章 投资估算和资金筹措 45 第十四章 财务评价 47 第十五章 风险分析 50 第一节 项目主要风险因素识别及应对措施 50 第二节 项目风险因素和风险程度分析表 51 第十六章 结论与建议 54 第 21 页 共 21 页

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服