完整word版c语言中进制转换数据结构实训报告.docx
- 文档编号:25384384
- 上传时间:2023-06-07
- 格式:DOCX
- 页数:14
- 大小:118.50KB
完整word版c语言中进制转换数据结构实训报告.docx
《完整word版c语言中进制转换数据结构实训报告.docx》由会员分享,可在线阅读,更多相关《完整word版c语言中进制转换数据结构实训报告.docx(14页珍藏版)》请在冰豆网上搜索。
完整word版c语言中进制转换数据结构实训报告
《进制之间转换》
数据结构程序设计报告
专业:
计算机网络技术
班级:
姓名:
学号:
二○一二年四月三十日
1.需求分析…………………………………………………1
2.概要设计…………………………………………………2
3.采用的算法(流程图)……………………………………2
4.详细设计………………………………………………2
5.调试分析…………………………………………………3
6.用户使用说明………………………………………………3
7.测试结果……………………………………………………3
8.附录……………………………………………………13
1、需求分析
(1)输入的形式和输入值的范围:
◆不大于4位的十六进制数
◆不大于16位的二进制数
◆十进制数
(2)输出的形式:
同上
(3)程序的功能:
十六进制转化为十进制
十六进制转化为二进制
十六进制转化为八进制
十进制转化为二进制
十进制转化为八进制
二进制转化为十进制
二进制转化为十六进制
(4)测试数据
十六进制转化为十进制、十六进制转化为二进制:
十六进制转化为八进制、十进制转化为二进制、十进制转化为八进制、二进制转化为十进制:
二进制转化为十六进制、输入输入出错:
2、概要设计:
一,进制之间的转换用到头文件包match.h、stdio.h、stdlib.h。
问题要求根据输入的不同字符,执行不同的功能。
转换过程中需要各个函数之间进行调用
二,输入合适的数据得出转换的数据,其重要考虑到输入数据的范围。
3.采用的算法(流程图)4.详细设计:
5.调试分析:
(1)首先是乱码问题。
由于使用中文所以出现了乱码,把中文改成英文就好了。
(2)如果选择0直接退出根本看不到goodbye所以加getch()可以停留在执行屏幕
(3)在这次设计中,首先,我发现了很多问题,由于自己基本的语句掌握的不是十分熟练,所以在一开始不知道怎样把松散的函数调用紧凑地联系起来,经过仔细的看书以及向同学请教,终于将基本框架搭好,在调整细节时就相对轻松一些了,所以经过这次课程设计,我总结出了自己在学习数据结构中的不足,并且为其他类似语言打下了良好的基础,十分感谢老师以及同学的帮助,在此过程中还锻炼了我们与别人沟通的能力,使我们受益匪浅。
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——>退出
8、附录(源代码):
#include
#include
#include
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 {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 j=j+x[i]*pow(16,m-1-i-1); returnj; } typedefintdatatype; #definemaxsize64 typedefstruct { 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; else return0; } 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);} elsereturn; 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 { if(x[i]=='0'||x[i]=='1') x[i]=x[i]-48; else {printf("Pleaseinputthecorrectform! \n"); return0; } } for(i=0;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);} elsereturn; printf("Intosixteendecimalresults\n"); while(! Empty(s)) {y=pop(s); if(y<10) printf("%d",y); else printf("%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();gotoSCANI; SET4: Tentwo();gotoSCANI; SET5: Teneight();gotoSCANI; SET6: k=Twoten(); if(k! =0) { printf("Theresultisconvertedtodecimal\n"); printf("%d\n",k);} gotoSCANI; SET7: Twoh();gotoSCANI; EXT: printf("goodbye! \n"); getch(); }
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 完整 word 语言 中进制 转换 数据结构 报告