📄 ep5_9.cpp
字号:
/*5.9 使用递归和非递归的两种方法编写函数
char *itoa (int n,char *string);
将整数n转换为十进制表示的字符串。(在非递归方法中,可使用reverse()函数。)
*/
#include<iostream>
using namespace std;
char* reverse (char* s){
char temp,* temp1=s,* temp2=s;
while(*temp2) temp2++;
temp2--;//指针移回串尾
while(temp2-temp1>0){//注意此处,从串两头的指针同时向中间移动,重合或交错时停止
temp=*temp1;
*temp1=*temp2;
*temp2=temp;
temp1++;
temp2--;
}
return s;
}
char *itoa (int n,char *string){
char *temp=string;
if(n<0){
*temp++='-';
n=-n;
}
do{//注意个位放在前了
*temp++=n%10+48;
}while(n=n/10);//显式的循环
*temp='\0';
if(*string=='-') temp=string+1;//有负号仅反转数字部分
else temp=string;
reverse(temp);//个位放到后面
return string;
}
char *itoa1 (int n,char *string){
if(n<0){
*string++='-';
n=-n;
}
if(n/10) string=itoa1(n/10,string);//隐式循环
*string++=n%10+48;//第一次是数字最高位放串的最前面的字符(不含符号),注意指针移动在后
*string='\0';
return string;//注意返回的指针已后移一字符
}
char *itoa0 (int n,char *string){
itoa1(n,string);
return string;
}
int main(){
int num;
char st[20];
cin>>num;
cout<<"输出数字串:"<<itoa(num,st)<<endl;
cin>>num;
cout<<"输出数字串:"<<itoa0(num,st)<<endl;
return 0;
}
/*递归算法难度大,对学生可不要求*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -