c语言中进制转换数据结构实训报告_第1页
c语言中进制转换数据结构实训报告_第2页
c语言中进制转换数据结构实训报告_第3页
c语言中进制转换数据结构实训报告_第4页
c语言中进制转换数据结构实训报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

PAGEPAGE21第0页共15页《进制之间转换》数据结构程序设计报告专业:计算机网络技术班级:姓名:学号:二○一二年四月三十日PAGE3 第0页共15页目录1.需求分析…………………12.概要设计…………………23.采用的算法(流程图)……24.详细设计………………25.调试分析…………………36.用户使用说明………………37.测试结果……………………38.附录……………………13第2页共15页第1页共15页1、需求分析(1)输入的形式和输入值的范围:不大于4位的十六进制数不大于16位的二进制数十进制数(2)输出的形式:同上(3)程序的功能:十六进制转化为十进制 十六进制转化为二进制 十六进制转化为八进制 十进制转化为二进制 十进制转化为八进制 二进制转化为十进制 二进制转化为十六进制(4)测试数据十六进制转化为十进制、十六进制转化为二进制:十六进制转化为八进制、十进制转化为二进制、十进制转化为八进制、二进制转化为十进制:二进制转化为十六进制、输入输入出错:2、概要设计:一,进制之间的转换用到头文件包match.h、stdio.h、stdlib.h。问题要求根据输入的不同字符,执行不同的功能。转换过程中需要各个函数之间进行调用二,输入合适的数据得出转换的数据,其重要考虑到输入数据的范围。显示迷宫3.采用的算法(流程图)开始选择转换方式十六转为十十六转为二十六转为八显示迷宫开始选择转换方式十六转为十十六转为二十六转为八十转为二十转为八二转为十二转为八默认退出输出对应的转换结果12345670程序结束Tentwo(Tentwo()Htwo()Height()Hten()Teneightsetnull(s)Empty(s)push(seqstack*s,intx,intN)pop(s)Twoten()5.调试分析:首先是乱码问题。由于使用中文所以出现了乱码,把中文改成英文就好了。如果选择0直接退出根本看不到goodbye所以加getch()可以停留在执行屏幕在这次设计中,首先,我发现了很多问题,由于自己基本的语句掌握的不是十分熟练,所以在一开始不知道怎样把松散的函数调用紧凑地联系起来,经过仔细的看书以及向同学请教,终于将基本框架搭好,在调整细节时就相对轻松一些了,所以经过这次课程设计,我总结出了自己在学习数据结构中的不足,并且为其他类似语言打下了良好的基础,十分感谢老师以及同学的帮助,在此过程中还锻炼了我们与别人沟通的能力,使我们受益匪浅。6、用户使用说明:(1)运行程序选择自己要转换的形式(2)输入对应数据(3)输入0退出7、测试结果:输入1———>输入1A1——>输出417输入2——>输入1A1——>输出110100001B输入3——>输入1A1——>输出641Q输入4——>输入12——>输出1100B输入5——>输入12——>输出14K输入6——>输入11011010——>输出218输入7——>输入101——>输出5H输入0——>退出第7页共15页 第5页共15页8、附录(源代码):#include<stdio.h>#include<stdlib.h>#include<math.h>intHten(){inti=0,j=0,m=0;charx[10];charf=0;printf("Pleaseenternomorethan4digithexadecimalnumbersixteen\n");while(f!='\n') { scanf("%c",&x[i]); f=x[i]; m++; i++; }for(i=0;i<m-1;i++) { if(x[i]>='A'&&x[i]<='F')x[i]=x[i]-55; else if(x[i]>='0'&&x[i]<='9') x[i]=x[i]-48; else {printf("Pleaseinputthecorrectform\n"); return0; } } for(i=0;i<m-1;i++) j=j+x[i]*pow(16,m-1-i-1);returnj;}typedefintdatatype;#definemaxsize64typedefstruct{ datatypedata[maxsize];inttop;}seqstack;setnull(seqstack*s) {s->top=-1;}intEmpty(seqstack*s){if(s->top>=0)return0;/*false*/else return1;/*ture*/}intFull(seqstack*s){if(s->top==maxsize-1)return1;elsereturn0;}seqstack*push(seqstack*s,intx,intN){intn;if(Full(s)) { printf("overfull\n");returnNULL; }else { while(x!=0) {n=x%N; x=x/N; s->top++; s->data[s->top]=n; } returns; }}intpop(seqstack*s){ intx;if(Empty(s)) {printf("empty\n");return0;}else { x=s->data[s->top];s->top--;returnx; }}Htwo(){ seqstack*s;intk;s=(seqstack*)malloc(sizeof(seqstack)); setnull(s); k=Hten(); if(k!=0){push(s,k,2);} else return; printf("Convertedtoabinaryoutcomefor\n");while(!Empty(s)) { printf("%d",pop(s)); } printf("B\n");}Height(){ intk; seqstack*s;s=(seqstack*)malloc(sizeof(seqstack)); setnull(s);k=Hten(); if(k!=0)push(s,k,8); elsereturn; printf("Convertedtooctalresults\n");while(!Empty(s)) {printf("%d",pop(s)); }printf("Q\n");}Tentwo(){seqstack*s;intk;s=(seqstack*)malloc(sizeof(seqstack)); setnull(s); printf("Pleaseenteradecimalnumber\n"); scanf("%d",&k); push(s,k,2); printf("Convertedtoabinaryoutcomefor\n");while(!Empty(s)) { printf("%d",pop(s)); } printf("B\n");}Teneight(){seqstack*s;intk;s=(seqstack*)malloc(sizeof(seqstack)); setnull(s); printf("Pleaseenteradecimalnumber\n"); scanf("%d",&k); push(s,k,8); printf("Convertedtooctalresults\n");while(!Empty(s)) { printf("%d",pop(s)); } printf("Q\n");}intTwoten(){inti=0,j=0,m=0;charx[10];charf=0;printf("Pleaseenternomorethan16bitsofthebinarynumber\n");while(f!='\n') { scanf("%c",&x[i]); f=x[i]; m++; i++; } for(i=0;i<m-1;i++) { if(x[i]=='0'||x[i]=='1') x[i]=x[i]-48; else {printf("Pleaseinputthecorrectform!\n"); return0; } } for(i=0;i<m-1;i++) j=j+x[i]*pow(2,m-1-i-1); returnj;}Twoh(){intk,y;seqstack*s;s=(seqstack*)malloc(sizeof(seqstack)); setnull(s); k=Twoten();if(k!=0){push(s,k,16);} else return; printf("Intosixteendecimalresults\n");while(!Empty(s)) {y=pop(s);if(y<10)printf("%d",y);elseprintf("%c",y+55); } printf("H\n");}main(){inta,k;INDEX: printf("**************************************\n"); printf("0:\texit\n"); printf("1:\tSixteenhexadecimalconversiontodecimal\n"); printf("2:\tSixteenhexadecimalintobinary\n"); printf("3:\tSixteenhexadecimalconvertedtooctal\n"); printf("4:\tDecimaltobinary\n"); printf("5:\tDecimaltooctal\n"); printf("6:\tBinarytodecimalconversion\n"); printf("7:\tBinaryconversionofsixteenhexadecimal\n"); printf("\t\tcopyright2008-2018\n"); printf("**************************************\n");SCANI: printf("Whatareyougoingtodo?Pleaseselectamenu\n"); scanf("%d",&a); getchar(); switch(a) { case0:gotoEXT; case1:gotoSET1; case2: gotoSET2; case3: gotoSET3; case4:gotoSET4; case5:gotoSET5; case6:gotoSET6; case7:gotoSET7;default:gotoINDEX; } SET1:k=Hten(); if(k!=0) { printf("Theresultisconvertedtodecimal\n"); printf("%d\n",k); } gotoSCANI; SET2:Htwo();gotoSCANI;SET3:Height();gotoSC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论