| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1231 人关注过本帖
标题:大数加的问题--单步跟踪
只看楼主 加入收藏
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
 问题点数:0 回复次数:6 
大数加的问题--单步跟踪
这是我的程序:
#include <iostream>
#include <string>
using namespace std;
const int MAX=20;
char str3[MAX]={0};
char* Sum(char *str1,char *str2)//函数有问题,以后再改,
{
 int leng1=strlen(str1);
 int leng2=strlen(str2);
 int leng3=((leng1>leng2)?leng1:leng2)+1;
 int i=leng1 - 1,
  j=leng2 - 1,
  k=leng3 - 1;
 for(i,j,k;k>0;i--,j--,k--)
 {
  str3[k]+=str1[i]+str2[j];
  str3[k]=str3[k]%10;
  str3[k-1]=str3[k]/10;
 }
 return str3;
}
int main()
{
 char str1[MAX],
  str2[MAX];
 cout<<"Input str1:"<<endl;
 gets(str1);//输入了数后,单步就不行了,按F10没反应了
 cout<<"The str1 you input is:"<<str1<<endl;
// cout<<strlen(str1)<<endl;
/* for(int i=0;i<strlen(str1);i++)
  cout<<str1[i];
 cout<<endl;*/
 cout<<"Input str2:"<<endl;
 gets(str2);
 cout<<"The str2 you input is:"<<str2<<endl;
// cout<<"The sum is:"<<Sum(str1,str2);
 for(int i=0;i<strlen(str3);i++)//没输出,就算函数没作用,应该输出0啊
  cout<<str3[i];
 cout<<endl;
 return 0;
}

大家帮忙看看啊
搜索更多相关主题的帖子: 大数 int char MAX 跟踪 
2007-11-29 15:33
duccdd
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-10-25
收藏
得分:0 
for(int i=0;i<strlen(str3);i++)//没输出,就算函数没作用,应该输出0啊
  cout<<str3[i];
cout<<endl;
0就是空字符
2007-11-29 15:48
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
回复 2# 的帖子
这样啊
谢谢啊
单步跟踪如果要求输入怎么做呢

上善若水,水善利万物而不争,处众人之所恶
2007-11-30 15:20
duccdd
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-10-25
收藏
得分:0 
会弹出运行窗口
2007-11-30 17:25
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
回复 4# 的帖子
输入后再按F10就没反应了

上善若水,水善利万物而不争,处众人之所恶
2007-11-30 20:17
duccdd
Rank: 1
等 级:新手上路
帖 子:48
专家分:0
注 册:2007-10-25
收藏
得分:0 
你输入完回车后,点一下原来的窗口,再按F10试试
2007-11-30 23:27
diaoxue
Rank: 1
等 级:新手上路
帖 子:142
专家分:0
注 册:2007-6-1
收藏
得分:0 
我问了我们老师,问题解决了
和合并差不多
下面使修改后的程序,不敢独享,贴出来了
prog:
#include <iostream>
#include <string>
using namespace std;
const int MAX=20;
char str3[MAX]={0};
char* Sum(char *str1,char *str2)//函数有问题,以后再改,
{
 int leng1=strlen(str1);
 int leng2=strlen(str2);
 int leng3=((leng1>leng2)?leng1:leng2)+1;//取最大的,最高位可能进位,所以加一
 int i=leng1 - 1,
  j=leng2 - 1,
  k=leng3 - 1;
/******************
 for(i,j,k;k>0;i--,j--,k--)
 {
  str3[k]+=str1[i]+str2[j];
  str3[k]=str3[k]%10;//
  str3[k-1]=str3[k]/10;//进位
 }
 ******************/
 //------------------------------------------
 int n=i>j ? j : i;
 for(;n>=0;n--,i--,j--,k--)//逐位相加
 {
 str3[k]+=(str1[i]-48)+(str2[j]-48);//数字字符0的ASCII码是48
 str3[k-1]=str3[k]/10;//进位
 str3[k]=str3[k]%10 +48;//恢复为字符
 }
 for(;i>=0;i--,k--)//处理str1中的剩余部分(如果有的话)
 {
 str3[k]+=(str1[i]-48);//数字字符0的ASCII码是48
 str3[k-1]=str3[k]/10;//进位
 str3[k]=str3[k]%10 +48;//恢复为字符
 }
 for(;j>=0;j--,k--)//处理str2中的剩余部分(如果有的话)
 {
 str3[k]+=(str2[j]-48);//数字字符0的ASCII码是48
 str3[k-1]=str3[k]/10;//进位
 str3[k]=str3[k]%10 +48;//恢复为字符
 }
 //处理和的最高位
 if(str3[0]==0)//最高位为0, 时填入空格
  str3[0]=' ';
 else
  str3[0]+=48; //最高位为非0时, 恢复为字符
 //------------------------------------------
 return str3;
}
int main()
{
 char str1[MAX],
  str2[MAX];
 cout<<"Input str1:"<<endl;
 gets(str1);//输入了数后,单步就不行了,按F10没反应了
 cout<<"The str1 you input is:"<<str1<<endl;
// cout<<strlen(str1)<<endl;
/* for(int i=0;i<strlen(str1);i++)
  cout<<str1[i];
 cout<<endl;*/
 cout<<"Input str2:"<<endl;
 gets(str2);
 cout<<"The str2 you input is:"<<str2<<endl;
// cout<<"The sum is:"<<Sum(str1,str2);
 Sum(str1,str2);
/*
 for(int i=0;i<strlen(str3);i++)//没输出,就算函数没作用,应该输出0啊
  cout<<str3[i];                //因为你的测试数据可能使str3最前面的字符为'\0'了啊。
 cout<<endl;                    //把输出语句改为cout<<int(str3[i]);一试便知。
*/
 cout <<str3 <<endl;
 return 0;
}

上善若水,水善利万物而不争,处众人之所恶
2007-12-08 13:35
快速回复:大数加的问题--单步跟踪
数据加载中...
 
   



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

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