满意答案
www7988150
2014.11.22
采纳率:47% 等级:9
已帮助:116人
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687//程序供参考#include <stdio.h>#include <string.h> //函数:reverse//功能:反转字符串//参数: // str : 要进行反转的字符串//返回值:无void revease( char * str){ char * head = str; //指向字符串的头部第一个字符 char * tail = str + strlen( str ) - 1; //指向字符串的尾部最后一个字符 char tmp; //交换头尾字符时的临时变量 while( head 十进制数转成任意进制,并将结果通过通过参数返回//参数: // num:要转换的数字// base:进制// out:输出缓冲区,以字符串的形式返回转换后的数字//返回值:true 成功,false 失败bool convert( unsigned long num, unsigned long base,char * out){ char ch[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; //定义数码 char * p = out; //指向输出缓冲区的头部 unsigned long remain; //转换时用的变量,保存 余数 //如果进制超范围,返回false if(base > 16 || 1 == base ) return false; //数字除以基数,取余;结果除基数再取余,直到结果整数部分为0止 //把得到的余数倒转 即得到 对应的相应进制的数字 do { remain = num % base; //取一次相除的余数 num = num / base; //取一次相除的结果 *p = ch[remain]; //将余数对应的表示字符写到缓冲区 p++; //缓冲区后移 }while( num > 0); //直到结果整数部分为0止 *p = '\0'; //给输出缓冲的最后加个结束字符 revease( out ); //把输出缓冲区倒转 return true;}; int main(){ int i; //循环变量 int N; //个数 unsigned long num; //要转换的数 unsigned long base; //要转换成的进制 char outbuff[65]; //输出缓冲区,64位系统,long 最多64位,加一位放结束字符 printf("请输入要转换的十进制数个数 : "); scanf("%ld",&N); for(i = 1; i<= N;i++) { printf("第%3d个数及进制 : ",i); scanf("%ld %ld",&num,&base); if( convert( num,base,outbuff)) { printf(" 要转换的数 : %ld\r\n",num); printf(" 转换成%02ld数 : %s\r\n",base,outbuff); } else printf("转换失败。\r\n"); } getchar(); getchar();}追问: ,谢谢你了,不过编译错误
追答: 程序是经验证的,只用标准库在vs2010编译通过,运行正常。如果代码粘贴后编译出问题检查粘贴后格式是否正确,可以把错误信息发上来。
追问: Compilation Error
00分享举报