我已经在此代码上工作了3天了,我不知道如何在输出之前删除零。
它是一个计算数字阶乘的程序。即使我使用if语句,如您所见,其中有注释,它也会删除数字之后和之间的零。我什至试图将size
用作a
的初始值,但它只是采用全局值,而不是从while循环中获取,我什至试图将其值存储在另一个变量中,然后它也不起作用。
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
// Complete the extraLongFactorials function below.
void extraLongFactorials(int n) {
int arr[500] = {0};
int size = 1, i = 0, carry = 0, temp = 0;
arr[0] = 1;
for (int j = 1; j <= n; j++) {
for (int k = 0; k < 500; k++) {
temp = arr[k] * j + carry;
arr[k] = temp % 10;
carry = temp / 10;
}
while (carry) {
size++;
arr[size] = carry % 10;
carry %= 10;
}
}
for (int a = 499; a >= 0; a--) { // if(arr[a]!=0)
cout << arr[a];
}
}
int main() {
int n;
cin >> n;
cin.ignore(numeric_limits<streamsize>::max(), '\n');
extraLongFactorials(n);
return 0;
}
最佳答案
通过找出第一个非零值的索引来跳过前导零:
i = 499;
// Skip leading zeros.
while (i > 0 && arr[i] == 0) {
--i;
}
while (i >= 0) {
cout << arr[i--];
}
另外,请不要
#include <bits/stdc++.h>
。这是您不应包含的专用于编译器的标头。关于c++ - 如何删除数字前的零?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56273419/