首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++去除前导零

C++去除前导零
EN

Stack Overflow用户
提问于 2014-10-12 22:17:56
回答 1查看 1.7K关注 0票数 0

我试图让array3ARRAYSIZE打印出来,没有前导零。我该怎么做?输入为6 123456 7 1234567

代码语言:javascript
复制
#include <iostream>
#include <cmath>
using namespace std;

const int ARRAYSIZE = 20;
void InitNumber(char array[ARRAYSIZE]);
int AddArrays(char array1[ARRAYSIZE], char array2[ARRAYSIZE],char arrayfinal[ARRAYSIZE]);
void OutputNumber(char array[ARRAYSIZE]);

int main()
{
    int i=0;
    char array1[ARRAYSIZE], array2[ARRAYSIZE];
    char array3[ARRAYSIZE];
    bool number = false;

    cout << "Please enter your first number" << endl;
    InitNumber(array1);

    cout << endl << "Please enter your second number" << endl;
    InitNumber(array2);

    AddArrays(array1,array2,array3);

    OutputNumber(array3);
    int sum;

这就是问题所在。好像打印了00000000000008308642而不是8308642。哪个循环更适合“边做边做”还是“for循环”。

代码语言:javascript
复制
    do {
        if(array3[ARRAYSIZE-i] != '0')      // heeeeeeeeeeeeeeeeelp
            number = false;
        else
            number = true;
        sum = i++;
    } while(number == true);


    for(sum; sum <= ARRAYSIZE; sum++){          // Outputs all the terms
        cout << array3[ARRAYSIZE-sum];
    }


    return 0;
}

void InitNumber(char array[]){
    int numberofdigits, numbercount;
    int i;

    cout << "How many digits are in your number? ";
    cin >> numberofdigits;
    numbercount = numberofdigits;


    cout << "Please enter the digits in the number with the LEAST significant first: ";
    for(i = 0; i < numberofdigits; i++){    // Inputs the terms
        cin >> array[i];}


    for(numbercount; numbercount < ARRAYSIZE; numbercount++){
        array[numbercount] = '0';   // Inputs zeros into all other terms
    }

}

int AddArrays(char array1[],char array2[],char arrayfinal[]){
    int array1int, array2int, totalint, error =0, i = 0;
    char totalchar;
    for(ARRAYSIZE; ARRAYSIZE-i >= 0; i++){
        array1int = array1[i] - '0';
        array2int = array2[i] - '0';
        totalint = array1int + array2int + error;
        error = 0;
        if(totalint > 9){
            error = totalint/10;
            arrayfinal[i] = totalint%10;
        }

        else{
            arrayfinal[i] = totalint;
        }
    }
    cout << endl;
    return totalint;
}

void OutputNumber(char array3[]){
    bool number;
    int i=0;
    for(ARRAYSIZE; ARRAYSIZE - i > 0; i++){
        array3[i] = array3[i] + '0';
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-10-12 22:44:04

在循环(i == 0)的第一次迭代中,您通过访问array3[ARRAYSIZE-i] (即array3[ARRAYSIZE] )走出数组边界。您应该从i = 1开始,并将&& i <= ARRAYSIZE添加到循环条件中,以获得正确的行为(如果所有数字为零)。

演示

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26330584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档