《高级语言程序设计》
课程设计报告
计算机与信息工程系
20##年6月20日
目录
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 系统流程图
开始
2.3 主要模块的流程图
3 具体代码实现
#include<stdlib.h>
#include<math.h>
#include<string.h>
#include<stdio.h>
void hex(long int x)
{ int a[8],i=7;
while(x!=0)
{a[i]=x%16;x/=16;i--;}
printf("转换为十六进制:");
while(++i<8)
{ switch(a[i])
{ case 10:printf("A");break;
case 11:printf("B");break;
case 12:printf("C");break;
case 13:printf("D");break;
case 14:printf("E");break;
case 15:printf("F");break;
default:printf("%d",a[i]);break;
} }
printf("\n\n");}
void octal( int x)
{ int a[16]={0},i=15;
while(x!=0){a[i]=x%8;x/=8;i--;}
printf("转换为八进制:");
while(++i<16){printf("%d",a[i]);}
printf("\n\n");}
void binary( int x)
{ char a[50];int i=0,j;
while(x!=0)
{a[i]=x%2;
x=x/2;
i++;}
printf("转换为二进制:");
for(j=i-1;j>=0;j--)
{ printf("%d",a[j]);}
}
int f1( char a[])
{ int n,j,i,sum=0,t=0,p=1,c;
n=strlen(a);
for(i=n-1;i>=0;i--)
{ p=1;
t=(a[i]-48);if(i==n-1)p=1;
else
for(j=0;j<n-i-1;j++)
{p=p*2; sum+=t*p;} }c=sum;
printf("对应的10进制数:%d\n",c);
return c;}
int f2( char b[])
{int i,j,sum=0,c;
for(i=strlen(b)-1,j=0;i>=0;i--,j++)
{sum=sum+(int)(b[i]-'0')*(int)pow(8,j);}
c=sum;
printf("对应的10进制数:%d\n",c);
return c;}
void main()
{ int c=0,R,r,d;
char a[50],b[16];
printf("请输入将被转换的数的进制:");
scanf("%d",&R);
if(R==2)
{printf("输入一个2进制数:");
scanf("%s",a);c=f1(a); }
if(R==8)
{ printf("输入一个8进制数:b[16] ");
scanf("%s",b); c=f2(b);}
if(R==10)
{ printf("输入十进制数:d");
scanf("%d",&d);c=d;}
printf("请输入要转换的进制型:");
scanf("%d",&r);
switch(r)
{ case 2 : binary(c);break;
case 8 : octal(c);break;
case 10: printf("%d",c);break;
case 16: hex(c);break;}
}
5 课程设计总结
5.1 程序运行结果
4.2 课程设计体会
此次C语言课程设计我组设计的是一个利用子函数,循环语句(for循环, while循环)编写的程序,由于对对循环语句的使用不多,刚开始的时候完全不知道怎么弄,只能一点一点地请教老师或者同学。在这过程中,我也慢慢掌握一些关于循环语句的以前不懂、不明白的的知识。在同学们的帮助下,此次课程设计完成得比较顺利。经过这次程序设计,我收获颇多,不仅理论知识掌握的更牢,实际动手能力也有所提高,更激发了我对C语言的兴趣。同时,我也懂得了完成一些事情是要有敢于承认自己的不足的,一个人的思维和精力毕竟有限,因此,把大家学的东西结合起来,发挥每个人的长处共同来完成任务,要比一个人轻松很多。在此,我要感谢我们的指导老师老师和那些帮助我的同学们,在大家的帮助下,我才能顺利完成此次课程设计。
参考文献
[1] 黄同成,周红波.程序设计基础教程(C语言).湖南人民出版社,2011.
[2] 黄同成,黄磊.程序设计实践教程(C语言).湖南人民出版社,2011.
[3] 谭浩强.C程序设计(第三版)[M].北京:清华大学出版社,2005.