学号
2013
2013-2014学年 第二学期
《高级语言程序设计》
课程设计报告
题目:
进制转换
专业:
数字媒体技术
班级:
13级2班
姓名:
孙敏芳
指导教师:
吴海波
成绩:
计算机与信息工程系
2014年6月20日
目录
TOC \o "1-3" \h \u
1 需求分析 5
1.1 进制转换实验目的 5
1.2 实验设计任务 5
1.3 设计环境 5
1.4 开发语言 5
2 分析和设计 5
2.1模块设计 5
2.2 系统流程图 6
2.3 主要模块的流程图 7
3 具体代码实现 11
4 课程设计总结 14
4.1 程序运行结果 14
4.2 课程设计体会 18
参考文献 18
1 需求分析
1.1 进制转换实验目的
本课程设计的主要目的就是学会二进制与十进制、八进制、十六进制间的相互转化,实现它们在计算机中的重要作用,同时提高自己查找问题、分析问题、解决问题以及实践动手操作的能力。
1.2 实验设计任务
以用户想用的任意进制数输入,然后转换成用户想得到的任意另外一种进制的数。至少完成二,八,十六进制数的任意转换。
1.3 设计环境
(1)WINDOWS 2000/7/Vista系统
(2)TC或Visual C++集成开发环境
1.4 开发语言
C语言
2分析和设计
2.1模块设计
定义5个子函数hex(x) , octal(x),decimal(x),f1,f2来实现二,八,十六进制的转换。编写一个main函数,输入任意进制数(2,8,10),都先将其转换成十进制,再通过判断,调用函数,实现再转换。如下所示:
定义函数hex(x),将x(十进制)转换为十六进制数;
定义函数octal(x)将x转换为八进制数;
定义函数decimal(x)将x转换为二进制数;
定义函数f1将二进制转换为十进制;
定义函数f2将八进制转换为十进制。
2.2 系统流程图
intc=0,R,r,d;char a[50],b[16];
intc=0,R,r,d;char a[50],b[16];
c=dprintf("请输入将被转换的数的进制:");scanf("%d",&R);开始结束hex(c);101682switch(r)scanf("%d",&r);scanf("%d",&d)R==10R==8R==2
c=d
printf("请输入将被转换的数的进制:");
scanf("%d",&R);
开始
结束
hex(c);
10
16
8
2
switch(r)
scanf("%d",&r);
scanf("%d",&d)
R==10
R==8
R==2
printf("请输入要转换的进制型:");printf("输入一个8进制8进制数数Yprintf("输入一个2进制数:");NYNY
printf("请输入要转换的进制型:");
printf("输入一个8进制8进制数数
Y
printf("输入一个2进制数:");
N
Y
N
Y
N
开始
printf("%d")binary(c)
printf("%d")
binary(c);
octal(c);
系统流程图YNNYprintf("\n\n");inta[8],i=7;x!=0
系统流程图
Y
N
N
Y
printf("\n\n");
inta[8],i=7;
x!=0
a[i]=x%16;x/=16;i--;
++i<8
a[i]
输出A
输出B
输出C
输出D
输出E
输出F
输出a[i]
printf("转换为十六进制:");
141312111015
14
13
12
11
10
15
inta[16]={0},i=15;
inta[16]={0},i=15;
x!=0
printf("转换为八进制:");
a[i]=x%8;x/=8;i--;
++i<16
printf("\n\n");
printf("%d",a[i]);
N
Y
chara[50];inti=0,j;
chara[50];inti=0,j;
x!=0
a[i]=x%2; x=x/2; i++;
j--
printf("转换为二进制:");
j=i-1
j>=0
printf("%d",a[j]);
N
YYYNNNc=sum;i--j++p=p*2; sum+=t*p;j=0i=n-1intn,j,i,sum=0,t=0,p=1,c;
Y
Y
Y
N
N
N
c=sum;
i--
j++
p=p*2; sum+=t*p;
j
j=0
p=1;
i==n-1
t=(a[i]