您好,欢迎访问三七文档
实验课题一:将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)。转换函数的原型为:voidConvert(intn,charstr[],unsignedP);n:输入,待转换的数str:输出,转换好的P进制字符串P:输入,要转换的进制,取值可从2到16。如果在这范围之外,可认为输入错,不做转换。将一个整数转换成P进制的数,我们可以采用如下的方法:例:十进制转换成八进制(P等于8):(66)10=(102)866/8=8余28/8=1余01/8=0余1当商为0时转换结束,转换结果为上述过程余数序列的逆序:102。先求得的余数在写出结果时最后写出,最后求出的余数最先写出,符合栈的LIFO性质,故可用栈来实现数制转换。#includestdio.h#includestdlib.h#definemaxsize100typedefstruct{chardata[maxsize];inttop;}sqstack,*Stack;Stackinitstack(){Stacks;s=(Stack)malloc(sizeof(sqstack));s-top=-1;returns;}intpush(Stacks,charch){if(s-top=maxsize)return0;else{s-data[++s-top]=ch;return1;}}intpop(Stacks,char*ch){if(s-top==-1)return0;else{*ch=s-data[s-top--];return1;}}voidConvert(intn,charstr[],unsignedp)//十进制数据n向p进制转换{Stacks;inti=0;s=initstack();while(n){if(n%p10)push(s,n%p+'0');elsepush(s,n%p+'A'-10);n=n/p;}while(s-top!=-1)pop(s,&str[i++]);str[i]='\0';}voidmain(){intn;charstr[maxsize];unsignedp;printf(请输入数据n\n);scanf(%d,&n);printf(请输入数据p\n);scanf(%d,&p);Convert(n,str,p);printf(%s\n,str);}
本文标题:数据结构C语言将一个十进制数转换成另外一个P进制数字符串(可以是二进制到十六进制)
链接地址:https://www.777doc.com/doc-8367655 .html