| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 646 人关注过本帖
标题:求改正,谢谢了哈
只看楼主 加入收藏
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
结帖率:94.64%
收藏
已结贴  问题点数:20 回复次数:10 
求改正,谢谢了哈
程序代码:
#include <string>
#include <iostream>
#include <algorithm>
#include <vector>
using namespace std;

string add(string str1,string str2)
{
    vector<int >sum;
    int str1len,str2len,str3len,i,j=0;
    str1len=str1.length();
    str2len=str2.length();
    str3len=(str1len>str2len?str1len:str2len);
    if(str1len>str2len)
    {
        for(i=str2len;i<str1len;i++)
            str2.insert(0,"0");
    }
    else
    {
        for(i=str1len;i<str2len;i++)
            str1.insert(0,"0");
    }
    string str1temp,str2temp;int strtemp;
    for(i=str3len-1;i>=0;i++)
    {
        str1temp=str1[i];
        str2temp=str2[i];
        strtemp=atoi(str1temp.c_str ())+atoi(str2temp.c_str ());
        if(j=1)
        {
            strtemp+=1;
            j=0;
        }
        if(strtemp>9)
                    if(i!=0)
        {
            strtemp=strtemp%10;
            j=1;
        }
        sum.push_back(strtemp);
    }
    reverse(sum.begin(),sum.end());
    vector<int >::iterator it;
    for(it= sum.begin();it<sum.end();it++)
        cout<<*it;
    return 0;
}

void main()
{
    string str1,str2;
    while(cin>>str1>>str2)
    add(str1,str2);
}
请问,哪错了,编译没错误,输入两个数后就卡住没输出结果
2012-08-07 18:59
westfall999
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:40
专家分:101
注 册:2012-7-22
收藏
得分:0 
将for(i=str3len-1;i>=0;i++)改成:for(i=str3len-1;i>=0;i--)
if(j=1)改成:if(j==1)试试。
2012-08-07 19:58
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 2楼 westfall999
额,太粗心了,改了后输入一组数据就强制关闭了,这又什么情况?
2012-08-07 20:38
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
回复 3楼 a99875984
会不会是下标越界呀。你可以自己跟踪一下。
2012-08-07 21:31
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 4楼 pangding
请问下,怎么跟踪啊?
2012-08-08 05:37
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:0 
如果你用的是 vc,好像直接按 f5 就是调试。
到时候内存如果读写异常,你可以看看程序是在执行哪个函数时中止的。也许就能推出问题的所在。
如果不能,是不是双击一下某行能设断点呀。然后再 f5。等程序暂停了,用 f10, f11 之类的吧好像,可以一步步的执行程序。
一般常用的伎俩还有监视变量,设条件断点之类的。

我很久没用 vc 了,具体操作可能说的不是很正确。不过自己摸索一下应该很快能学会。
2012-08-08 09:58
pangding
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:北京
等 级:贵宾
威 望:94
帖 子:6784
专家分:16751
注 册:2008-12-20
收藏
得分:15 
虽然有点老生常谈了,c++ 不允许 void main()。

你的错误是:
add 应该 return 一个 string,但你其实 return 的是 0。
你试试 string s = 0,看看什么效果就知道了。


[ 本帖最后由 pangding 于 2012-8-8 11:21 编辑 ]
2012-08-08 10:44
jarryjsq
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:45
专家分:124
注 册:2011-7-11
收藏
得分:5 
lz学学怎么调试,我用的vs,在可能有问题的代码左边点一下,设置断点然后按F5,他会在每个断点处停一下,别显示操作的结果。学学,很有用的。
2012-08-08 14:38
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 7楼 pangding
谢谢版主了,好像就是返回值得问题,我把返回值改成return s;就解决了。谢了哈

[ 本帖最后由 a99875984 于 2012-8-8 18:10 编辑 ]
2012-08-08 17:57
a99875984
Rank: 2
等 级:论坛游民
帖 子:188
专家分:24
注 册:2012-2-11
收藏
得分:0 
回复 8楼 jarryjsq
我用的是VC 6啊,我记得老师操作时看在VC 6里能看一个也不知道什么东西,他也没说,当时没重视,就没问了。
2012-08-08 18:06
快速回复:求改正,谢谢了哈
数据加载中...
 
   



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

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