itoa的实现

来源:互联网 发布:led走字屏改字软件 编辑:程序博客网 时间:2024/06/06 02:39

/********************************************************************************┌───────────────────────────┐│ itoa函数实现││ Visual Studio 2010 测试通过│└───────────────────────────┘ ********************************************************************************/#include <iostream> char* itoa(int num,char* str,int radix);int main() { int ia,iradix;char string[25];std::cout << "请输入一个整数" << std::endl;std::cin >> ia;std::cout << "请输入要转换的进制" << std::endl;std::cin >> iradix;itoa(ia, string, iradix);std::cout << "您输入的数字是\t" << ia << std::endl;std::cout << "转换后的字符是\t"<< string << std::endl;return 0;}/********************************************************************************实现itoa函数源码 ********************************************************************************/char* itoa(int num,char* str,int radix){  char index[]="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";//索引表unsigned unum;//中间变量int i=0,j,k;//确定unum的值if(radix==10&&num<0)//十进制负数{unum=(unsigned)-num;str[i++]='-';}else unum=(unsigned)num;//其他情况//逆序do{str[i++]=index[unum%(unsigned)radix];unum/=radix;}while(unum);str[i]='\0';//转换if(str[0]=='-') k=1;//十进制负数else k=0;//将原来的“/2”改为“/2.0”,保证当num在16~255之间,radix等于16时,也能得到正确结果char temp;for(j=k;j<=(i-k-1)/2.0;j++){temp=str[j];str[j]=str[i-j-1];str[i-j-1]=temp;}return str;}//函数结束

0 0
原创粉丝点击