ep5_9.cpp
上传用户:wxcui2006
上传日期:2022-07-12
资源大小:1274k
文件大小:1k
- /*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=' ';
- 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=' ';
- 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;
- }
- /*递归算法难度大,对学生可不要求*/