以下代碼計算輸入整數的階乘。我在2個測試用例的代碼塊中運行它 - 9 & 2,並得到正確的輸出。對於相同的輸入,ideone的輸出階乘爲6,但輸出9的階乘正確。出了什麼問題?另外,當我使b爲一個大小爲200而不是動態的靜態數組時,ideone會給出正確的輸出。相同輸入的ideone和codeblock中的不同輸出(小因數)
#include <iostream>
#include <cstdio>
using namespace std;
int main(){
int t,i,j,k,temp,carry=0,len=0;
scanf("%d",&t);
int *b=new int;
int *a=new int[t];
for (i=0;i<t;i++){
scanf("%d",&a[i]);
}
for (i=0;i<t;i++){
len=0;
b[0]=1;
for (j=1;j<=a[i];j++){
carry=0;
for (k=0;k<=len;k++){
temp=b[k]*j+carry;
b[k]=temp%10;
carry=temp/10;
}
while (carry!=0){
b[++len]=carry%10;
carry/=10;
}
}
for (j=len;j>=0;j--){
printf("%d",b[j]);
}
printf("\n");
}
return 0;
}
'INT * B = INT新;' - 你爲什麼要使用一個指針嗎?爲什麼不只是聲明一個'int'? – PaulMcKenzie
另外,我不明白你輸入到你的程序中。你說你輸入'9'和'2',但是你的程序在循環中顯示'scanf'被調用。爲什麼不把數據硬編碼到程序中,以免讓人感到困惑? – PaulMcKenzie