C++去掉前导零
C++ getting rid of leading zeros
本文关键字:C++ 更新时间:2023-10-16
我正在尝试让array3[ARAYSIZE]打印出来,不带前导零。我该怎么做?输入为61234567.1234567
#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。哪个循环更适合做while还是for循环。
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';
}
}
在循环(i == 0
)的第一次迭代中,通过访问array3[ARRAYSIZE-i]
(即array3[ARRAYSIZE]
)超出了数组边界。如果所有数字都是零,您应该从i = 1
开始,并将&& i <= ARRAYSIZE
添加到循环条件中,以获得正确的行为。
演示
相关文章:
- 没有找到相关文章