如何将整数结果变成字符串打印出来?

harkue 2007-03-31 10:26:39
#include <iostream.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
void exponent()//求幂
{
long b,d;
int i,i1,i2,j,k,n,n1,n2,a[256]={0};
char s1[256],s2[256],*temp;
char *result;
cin>>s1;
cin>>s2;
n1=strlen(s1);
n2=strlen(s2);
d=0;
temp=new char[10];
for(i1=0,k=n1-1;i1<n1;i1++,k--)
{
for(i2=0,j=n2-1;i2<n2;i2++,j--)//s1的一位与s2的各个位相乘
{
i=i1+i2;
b=a[i]+(s1[k]-48)*(s2[j]-48)+d;//记录该位与s2某位相乘的结果
a[i]=b%10;
d=b/10;//记录进位
}
while(d>0)//若进位不为0,向s1的前一位相加
{
i=i+1;
a[i]=a[i]+d%10;
d=d/10;
}
n=i;//记录计算和存储的位置
}
result=new char[n+3];
for(i=n;i>=0;i--)
cout<<a[i];
cout<<endl;
for(i=n;i>=0;i--)
{
sprintf(result,"%d\n",a[i]);
strcat(result,temp);
}
cout<<result;
delete temp;
delete result;
}
int main()
{
exponent();
return 0;
}

大数相乘问题,
我想将结果放到字符串result中,然后打印,或可以返回!
我像上面那样做总是出错!
有乱码!
请大家帮帮忙!
...全文
456 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
飞哥 2007-04-07
  • 打赏
  • 举报
回复
有 _itoa
也可以用 sprintf
还可以将数字每个加上 '0'
lin_programmer 2007-04-01
  • 打赏
  • 举报
回复
#include <iostream.h>
#include <string.h>
void exponent()//求幂
{
char s1[256],s2[256];
cin>>s1;
cin>>s2;
int len1 = strlen(s1);
int len2 = strlen(s2);
int len = len1 + len2;
int i, i1, i2, n1[256] = {0}, n2[256] = {0}, a[256] = {0};
for(i1 = 0; i1 < len1; i1++)
n1[len1 - i1 - 1] = (int)(s1[i1] - '0');
for(i2 = 0; i2 < len2; i2++)
n2[len2 - i2 - 1] = (int)(s2[i2] - '0');
for(i1 = 0; i1 < len1; i1++)
{
for(i2 = 0; i2 < len2; i2++)
a[i1 + i2] += n1[i1] * n2[i2];
}
for(i = 0; i < len - 1; i++)
{
a[i+1] += a[i]/10;
a[i] %= 10;
}
while(len >= 0 && !a[len])
len--;
len++;
for(i = len - 1;i >= 0; i--)
cout<<a[i];
cout<<endl;
char* result=new char[len+1];
for(i = len - 1;i >= 0; i--)
result[len - i - 1] = (char)(a[i] + '0');
result[len] = '\0';
cout<<result;
delete result;
}
lin_programmer 2007-04-01
  • 打赏
  • 举报
回复
计算进位的位置不正确,while(d>0)应该在双重for循环的里面
更常用的是先不管进位,做完双重循环后再处理,时间更省

你把输入当成从低位到高位来处理的
jixingzhong 2007-04-01
  • 打赏
  • 举报
回复
for(i=n;i>=0;i--)
{
sprintf(result,"%d\n",a[i]);
strcat(result,temp);
}
==》
for(i=n;i>=0;i--)
{
result[n-i]=a[i]+'0'; //数组复制
}
result[n]='\0'; //结束标记, OK

puts(result);
jixingzhong 2007-04-01
  • 打赏
  • 举报
回复
你本来就是用的 数组模拟,
所以,
使用数组复制就可以了 ~

不需要转化了 ~
jixingzhong 2007-04-01
  • 打赏
  • 举报
回复
函数名称: itoa
函数原型: char *itoa(int value,char *string,int radix)
函数功能: 将整形数value转换为其等价的字符串
函数返回: 指向string的指针
参数说明: value-要转化的数值,radix-转换的进制,如10表示按十进制转换
所属文件: <stdlib.h>

#include <stdlib.h>
#include <stdio.h>
int main()
{
int number=123456L;
char string[25];
ltoa(number,string,10);
printf("integer=%ld string=%s",number,string);
return 0;
}
Cnwanglin 2007-03-31
  • 打赏
  • 举报
回复
如何将整数结果变成字符串打印出来?

char temp[255];
memset(temp, 0, 255);

sprintf(temp,"%d", 你的整形变量);

printf("%s",temp);
harkue 2007-03-31
  • 打赏
  • 举报
回复
不好意思!
不是求幂!

33,321

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧