欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    C语言课程设计-进制转换.doc

    • 资源ID:33438609       资源大小:489KB        全文页数:26页
    • 资源格式: DOC        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    C语言课程设计-进制转换.doc

    -作者xxxx-日期xxxxC语言课程设计-进制转换【精品文档】沈阳航空航天大学课 程 设 计 报 告课程设计名称:C语言课程设计课程设计题目: 二、八、十、进制转换程序院(系):计算机学院专 业:计算机科学与技术(物联网方向)班 级:34010105学 号:姓 名: 指导教师: 完成日期:2014年3月7日【精品文档】目 录第1章 需求设计11.1 课程设计任务11.2 设计环境与开发语言1第2章 程序设计22.1 概要设计2总体模块图2函数22.2 详细设计2第3章 程序调试分析43.1 出现的错误43.2 运行的结果4第4章 用户手册54.1 程序功能54.2 存在的缺陷5参考文献6附 录(程序清单)7第1章 需求设计1.1 课程设计任务设计一个简单的程序,可以实现以下各进制之间的转换。 1.因为要进行进制间的6次转换所以要采用switch语句有选择的进行进制转换程序。2.二进制到八进制;直接将二进制转化为八进制需要三位一截取不足三位补零,较为麻烦所以采用先将二进制转化为十进制再转化为八进制的方法解决问题。二进制转化为十进制将输入的二进制数存入字符数组中,存入多少位数,求出相应位数2的幂次再乘以1或0将每一位对应得到的十进制数累加,即可得到相应的十进制数。将十进制数转化为八进制数,将0到7存到一个字符数组中判断输入的数是否大于7若大于7,则将该数除8,再次进行判断,直到输入的数小于等于7,输出该数对8取余数对应的一维数组中的字符,即可得到八进制数。3.二进制到十进制;二进制转化为十进制将输入的二进制数存入字符数组中,存入多少位数,求出相应位数2的幂次再乘以1或0将每一位对应得到的十进制数累加,即为十进制数。4.二进制到十六进制;与二进制转化为八进制类似,先将二进制转化为十进制。再将十进制数转化为十六进制数,将0到9,A到F存到一个字符数组中判断输入的数是否大于15若大于15,则将该数除16,再次进行判断,直到输入的数小于等于15,输出该数对16取余数对应的一维数组中的字符,即可得到十六进制数。5.八进制到十进制;八进制转化为十进制将输入的八进制数存入字符数组中,存入多少位数,求出相应位数8的幂次再乘以该位数上的数,再将每一位对应得到的十进制数累加,即为十进制数。6.十六进制到十进制;十六进制转化为十进制将输入的十六进制数存入字符数组中,存入多少位数,求出相应位数16的幂次再乘以该位数上的数,再将每一位对应得到的十进制数累加,即为十进制数。因为输入十六进制数会有A到F大小写之分,所以要分情况用到if语句的嵌套。要注意A到F字符减掉A后要加10,再乘以16的对应次幂。7.十进制到二进制;采用递归语句和if嵌套语句,当输入的数大于1时除以2再次进行判断,直到输入的数小于等于1,输出该数对2取余的值,因为运用递归,所以会不断输出1或0,即可得到二进制数。要求:(1)使用C语言完成编码和调试,通过检查;(2)使程序在VC+6.0下运行;1.2 设计语言与开发环境设计环境:(1)WINDOWS 7系统(2)VisualC+开发环境开发语言:C语言第2章 程序设计2.1 概要设计2.1.1总体模块图 进制转换二进制到十六进制十进制到二进制八进制到十进制二进制到八进制十六进制到十进制二进制到十进制2.1.2 函数主函数(main)的功能是调用menu函数,实现各函数的运行。二进制到八进制函数(TwotoE)的功能是将二进制转换到八进制。二进制到十进制函数(hs)的功能是将二进制转化到十进制。二进制到十六进制函数(TwotoS)的功能是将二进制转化到十六进制。十进制到二进制函数(showbit)的功能是将十进制转化为二进制。八进制转化成十进制函数(EtoT)的功能是将八进制转化成十进制。十六进制转化成十进制函数(StoTen)的功能是将十六进制转化成十进制。2.2 详细设计主函数:控制整个程序的运行,控制菜单操作,通过主函数分别调用各个模块,实现各项功能,如下图2.1所示。开始输入1-6或其他数字选择操作g调用函数EtoT调用函数StoTen调用函数showbit调用函数hs调用函数TwotoE调用函数TwotoS结束 g=1 g=2 g=3 g=4 g=5 g=6 g=其他数显示退出 图2.1主函数流程图注释:(1)先定义整型变量g;(2)用switch case语句选择操作,调用函数;(3)g等于1,则调用EtoT函数;(4)g等于2,则调用StoTen函数;(5) g等于3,则调用showbit函数;(6) g等于4,则调用hs函数;(7) g等于5,则调用TwotoE函数;(8) g等于6,则调用TwotoS函数。(9)g等于其他数字,显示退出程序。EtoT函数:将八进制转化为十进制,如下图2.2所示。 开始定义输入的字符个数为l,s等于l 输入的字符串保存在ch中n为8的(s-l)次幂,每个字符转换为十进制的大小保存在num中num=num+(ch-0)*n判断l是否大于等于0判断字符是否介于0和7之间输入八进制存到字符串中 否 是 是 否 I减一 输出十进制数num 结束 图2.2 EtoT函数流程图StoTen函数:将十六进制转化到十进制,如下图2.3所示。 开始 定义输入的字符个数为l,s等于l输入十六进制数存在字符串中 i减一判断字符是否介 于0和7之间输入的字符串保存在ch中n=pow(16,s-l)判断l是否大于等于0num=num+(ch-0)*n判断字符是否介于a和f之间判断字符是否介于A和F之间num=num+(ch-0+10)*nnum=num+(ch-0+10)*n 否 是 否 是 否 是 否 是 输出num 结束 图2.3StoTen函数流程图Showbit函数:将十进制转化为二进制,如下图2.4所示。开始n是否大于1 Showbit(n/2)输出n对2取余数输入的数为n 结束 否 是 图2.4showbit函数流程图hs函数:将二进制转化为十进制。如下图2.5所示。 开始i为输入的字符数,p=1,s为输入的字符数组,二进制每一位转化的十进制存在x中x=x+(si-1-0)*pi减一输出xi是否大于0结束输入二进制字符串 否 是图hs函数流程图TwotoE函数:将二进制转化为八进制,如下图2.6所示。开始S=l,l为字符串个数l减一定义字符数组ach=aln=pow(2,s-l)num=num+(ch-'0')*nl是否大于等于0l是大于等于0输入二进制数 否 是n是否大于7n/8输出an%8结束 否 是图2.6TwotoE函数流程图TwotoS函数:将二进制转化为十六进制,如下图2.7所示。开始输入二进制数l是否大于等于0S=l,l为字符串个数ch=aln=pow(2,s-l)num=num+(ch-'0')*nl减一定义字符数组an是否大于15输出an%16n/16结束 否 是 否 是图2.7TwotoS函数流程图 第3章 程序调试分析3.1出现的错误 1菜单中调用的函数在编译后显示出“unidentify”的错误;在主函数前面定义了调用的函数,就解决了问题。2. 在进行进制转换时每次转换完都要重新运行,通过增加一个死循环,可以一直进行进制转换,当输入不在定义中的数时显示退出程序。3.char ch; int l,s,num=0,n; l=strlen(a)-1; s=l; for(;l>=0;l-) ch=al;n=pow(8,s-l);当输入二进制数位数很多时n定义为整型数输出,将n定义为double 时就会将得数完整输出。3.2运行的结果程序运行后显示出菜单,输入1-6选择操作,先选择1,将八进制转化为十进制。然后输入八进制数,按enter得到十进制数。在主菜单中选择2,将十六进制转化为十进制。然后输入十六进制数,按enter键得到十进制数。在主菜单中选择3,将十进制转化为二进制。然后输入十进制数,按enter键得到二进制数。在主菜单中选择4,将二进制转化为十进制。然后输入二进制数,按enter键得到十进数在主菜单中选择5,将二进制转化为八进制。输入二进制数,按enter键显示八进制数。在主菜单中选择6,将二进制转化为十六进制。输入二进制数,输入enter键显示相对应的十六进制数。第4章 课程设计总结程序的功能实现的功能4.2存在的缺陷无法进行二、八、十、十六进制间有关小数,负数的转换。二进制转换能输入的数的位数有限,不能进行很多位的二进制转换。参考文献1 张长海.C语言程序设计M.北京:高等教育出版社,20062 吴启武.C语言课程设计案例精编.北京:清华大学出版社,2011.3 郭翠英.C语言课程设计案例精编.北京:中国水利水电出版社,2004.4 姜灵芝, 余键.C语言课程设计案例精编.北京:清华大学出版社,2008.5 黄明, 梁旭, 万洪莉.C语言课程设计.北京:电子工业出版社,2006附 录(程序清单)#include <stdio.h>#include <string.h>#include<stdlib.h>#include<math.h>#define MAX 8#define N 100void EtoT(char a);void StoTen(char a);void showbit(int n);void hs(char sMAX);void TwotoS(char a);void To_sixteen(int n);void TwotoE(char a);void To_eight(int n);void EtoT(char a)char ch;int l,s,num=0;double n;l=strlen(a)-1;s=l;for(;l>=0;l-)ch=al;n=pow(8,s-l);if(ch>='0'&&ch<='7')num+=(ch-'0')*n;printf("%dn",num);void StoTen(char a)char ch;int l,s,num=0;double n;l=strlen(a)-1;s=l;for(;l>=0;l-)ch=al;n=pow(16,s-l);if(ch>='0'&&ch<='9')num+=(ch-'0')*n;else if(ch>='a'&&ch<='f')num+=(ch-'a'+10)*n;else if(ch>='A'&&ch<='F')num+=(ch-'A'+10)*n;printf("%dn",num);void showbit(int n)if(n>1)showbit(n/2);printf(" ");printf("%d",n%2);void hs(char sMAX) char x=0;int l,p=1; for(i=strlen(s);i>0;i-)x=x+(si-1-'0')*p;p*=2; printf("得到的十进制数是:%dn",x);void TwotoE(char a)char ch;int l,s,num=0;double n;l=strlen(a)-1;s=l;for(;l>=0;l-)ch=al;n=pow(2,s-l);num+=(ch-'0')*n;To_eight(num);printf("n");void To_eight(int n)char a='0','1','2','3','4','5','6','7' if(n>7) To_eight(n/8); printf("%c",an%8);void TwotoS(char a)char ch;int l,s,num=0;double n;l=strlen(a)-1;s=l;for(;l>=0;l-)ch=al;n=pow(2,s-l);num+=(ch-'0')*n;To_sixteen(num);printf("n");void To_sixteen(int n)char a='0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' if(n>15) To_sixteen(n/16); printf("%c",an%16);void main()int c,g; char aN,bN,eN,fN,dN;for (;)printf("将八进制转换为十进制输入1n将十六进制转化为十进制输入2n将十进制转化为二进制输入3n将二进制转化为十进制输入4n将二进制转化为八进制输入5n将二进制转化为十六进制输入6n退出系统输入其他数n");scanf("%d",&g);if (g>0&&g<7)switch(g)case 1:printf("请输入一个八进制数:");scanf("%s",a);EtoT(a);break;case 2:printf("请输入一个十六进制数:");scanf("%s",b);StoTen(b);/十六进制转换为十进制break;case 3:printf("请输入一个十进制数:");scanf("%d",&c);showbit(c);printf("n");break;case 4:printf("请输入一个二进制数:");scanf("%s",d);hs(d);break;case 5:printf("请输入一个二进制数:");scanf("%s",e);TwotoE(d);break;case 6:printf("请输入一个二进制数:");scanf("%s",f);TwotoS(f);/二进制转换为十六进制else printf("n");printf("*退出*n");printf("n");break;printf("nn");课程设计总结:此次课程设计中,我了解到了许多以前不太会的知识,也在对程序的不断的调试中认识到调试时的细心是很重要的,这些都让我受益匪浅。譬如,结构体的scanf语句中的“%d%s%d”之间应该有空格,即改为“%d %s %d”,否则结构体中的信息容易被覆盖,无法全部读入; 在这次课程设计中,我还学会了switch case语句以及函数的调用,这些都是我在以前的学习中不熟练的,让我在这次课程设计中学习新知识的同时也感受到很多快乐,对C语言及以后要学习的一些专业课程也产生了浓厚的兴趣,同时我也意识到有很多知识是我不了解的,我还需要更努力的学习,来丰富学习生活,充实自我。我会在以后的学习中尝试更多挑战,培养自己的能力。这次课程设计激发了我的兴趣,虽然只是设计进制转换,但我也感受到了程序做完之后的兴奋与自豪,我会更加努力,让未来也充满着这种感觉。指导教师评语:指导教师(签字): 年 月 日课程设计成绩

    注意事项

    本文(C语言课程设计-进制转换.doc)为本站会员(豆****)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开