| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 4489 人关注过本帖
标题:求助:将整数转化成字符串。
只看楼主 加入收藏
treever
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-10-23
收藏
 问题点数:0 回复次数:16 
求助:将整数转化成字符串。
编一个函数,将一个不大于9999的整数转换成字符串??我想了很久不知道怎么做。请高手帮忙啊。用C++编
搜索更多相关主题的帖子: 整数 字符 函数 
2005-10-23 21:05
凌云
Rank: 1
等 级:新手上路
威 望:1
帖 子:78
专家分:0
注 册:2005-9-17
收藏
得分:0 

#include<iostream.h>

void main() { char a[5]; cin>>a; cout<<a<<endl; } 不大于9999 5就够了


2005-10-24 09:39
treever
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2005-10-23
收藏
得分:0 
要用函数来编啊,谁会啊。是不是要用到递归函数啊。
2005-10-24 13:21
wwuuwu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-19
收藏
得分:0 

我写了一个复杂度为O(n*n*n*n)的算法,看了可别骂我,我也是没办法!

#include "stdafx.h"
#include<iostream>
#include "string"

using namespace std;

string Convert(int a)
{
string res;
if(a>=0&&a<=9)
{
switch(a)
{
case 0:
res="0";
break;
case 1:
res="1";
break;
case 2:
res="2";
break;
case 3:
res="3";
break;
case 4:
res="4";
break;
case 5:
res="5";
break;
case 6:
res="6";
break;
case 7:
res="7";
break;
case 8:
res="8";
break;
case 9:
res="9";
break;
}
}
return res;
}


void main()
{
int a=1500;
string s1;
string s2;
string s3;
string s4;
string s;
for(int i=1;i<=9;i++)
for(int j=0;j<=9;j++)
for(int n=0;n<=9;n++)
for(int m=0;m<=9;m++)
if((i*1000+j*100+n*10+m)==a)
{
s1=Convert(i);
s2=Convert(j);
s3=Convert(n);
s4=Convert(m);
s=s1+s2+s3+s4;
break;
}
cout<<s<<endl;
}



为了降低复杂度,其实我吧四个for循环改成如下,但又出错,如果那位高手查出了问题请邮件联系我(wuwwuu@hotmail.com):
//int i,j,n,m;
//for(i=1;i<=9;i++)
//{
// if(i==a%1000)
// break;
//}
//for(j=0;j<=9;j++)
//{
// if((i*10+j)==a%100)
// break;
//}
// for(n=0;n<=9;n++)
// {
// if((i*100+j*10+n)==a%10)
// break;
// }
// for(m=0;m<=9;m++)
// {
// if((i*1000+j*100+n*10+m)==a)
// break;
// }

2005-11-19 23:15
nFox
Rank: 1
等 级:新手上路
威 望:1
帖 子:28
专家分:0
注 册:2005-11-16
收藏
得分:0 
这样应该可以....

#include<iostream>
using namespace std;
char* convert(int value)
{
char* string=new char[5];
string[4]='\0';
for(int i=3;i>=0;--i)
{
if(value==0)
{
string[i]=0x20;
}
else
{
string[i]=value%10+0x30;
value/=10;
}
}
return string;
}
int main()
{
int value;
cin>>value;
cout<<convert(value)<<endl;
return 0;
}

天行健,君子以自强不息;地势坤,君子以厚德载物
2005-11-20 00:08
nFox
Rank: 1
等 级:新手上路
威 望:1
帖 子:28
专家分:0
注 册:2005-11-16
收藏
得分:0 

有一点错误

主函数改为

int main()

{

int value;

cin>>value;

char* string=convert(value);

cout<<string<<endl;

delete string;

return 0;

}


天行健,君子以自强不息;地势坤,君子以厚德载物
2005-11-20 00:16
wwuuwu
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2005-11-19
收藏
得分:0 

五楼的朋友解释一下吧,看了以后我可是一团雾水.
if(value==0)
{
string[i]=0x20;
}
else
{
string[i]=value%10+0x30;
value/=10;
}

2005-11-20 11:04
nFox
Rank: 1
等 级:新手上路
威 望:1
帖 子:28
专家分:0
注 册:2005-11-16
收藏
得分:0 
对于一个数字n,它的ASCII码是 n+0x30.空格的ASCII码为 0x20
string[i]=value%10+0x30;//数字对10求模,得到最后一位,再求得其ASCII码存放在字符串相应位置
value/=10; //数字除10,为后一步求前一位的ASCII码准备...如此循环

if(value==0) //若数字小于4位,循环到后来时变为0,则将空格存放在字符串相应位置
{
string[i]=0x20;
}


.......不知有没说清楚...




天行健,君子以自强不息;地势坤,君子以厚德载物
2005-11-20 12:46
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
收藏
得分:0 
用itos,帮助里有说怎么用,比较繁但用起来还是比较方便的,BCB可以用,在G++上不行
上面的方法好象都挺烦琐的,我想想,想到好的发出来

2005-11-20 21:27
ElfDN
Rank: 4
等 级:贵宾
威 望:11
帖 子:291
专家分:0
注 册:2005-11-13
收藏
得分:0 
#include<iostream>
using namespace std;
int main(){
//假设N是计算所得
int a,b,n,temp,len;
cin>>a>>b;
n=a+b;
cout<<n<<endl;
//转换成倒的
string s1,s2;
while(n){
temp=n%10;
s1+= '0'+temp;
n/=10;
}
//再倒一次
len=s1.length();
for(int i=0; i<len; i++)
s2+=s1[len-i-1];
cout<<s2<<endl;
}
行了,应该不算太烦吧

2005-11-20 21:41
快速回复:求助:将整数转化成字符串。
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.027007 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved