請問有人會用 c++ 寫 1!+2!+...+n!=
輸入n即可得總和,記得是用FOR迴圈,還有,可以把數字都印出來嗎,像是 輸入5 得 1!+2!+3!+4!+5!= 而不是1!+2!+...+5!=
2007-10-24 11:38:24 · 3 個解答 · 發問者 鋆維 2 in 電腦與網際網路 ➔ 程式設計
#include
int main(){
int i,n,v=1,sum=0;
scanf("%d",&n);
for (i=1;i<=n;i++){
v*=i;
sum+=v;
}
//print
for (i=1;i<=n-1;i++) printf("%d!+",i);
printf("%d!=%d\n",n,sum);
}
2007-10-24 12:51:50 · answer #1 · answered by 長島冰茶 3 · 0⤊ 0⤋
//Power by Visual Studio 2005
#include
#include
#include
//定義最大值
#define MAX 0xff
//被乘數 *a,乘數 b,答案 *c,答案位數 Bit_length
void multiply(int *a, int b, int *c, int Bit_length) {
int i,tmp,carry=0;
for(i=Bit_length-1;i>=0;i--){
tmp=a[i]*b+carry,c[i]=tmp%10,carry=tmp/10;
}
}
int main(int argc, char* argv[]){
//==========START==========//
FILE *f;
char *fn="output.txt";
int N,i,j,setw,*number,*result;
double BIT;
printf("Ex: 9!= 362880\nMAX= %d\nInput Number: ",MAX),scanf("%d",&N);
if((N>=0)&&(N<=MAX)){
//計算位數
for(i=0,BIT=0;i
}
BIT++;
number=(int*)malloc((int)BIT*sizeof(int)),result=(int*)malloc((int)BIT*sizeof(int));
//初始化被乘數
for(i=0;i<(int)BIT;i++){
number[i]=(i==((int)BIT-1)?1:0);
}
//進行運算
for(i=0;i
for(j=0;j<(int)BIT;j++){
number[j]=result[j];
}
}
//顯示數值
printf("%d!= ",N);
for(j=0,setw=((int)BIT%4)-1;j<(int)BIT;j++){
printf("%d",number[j]);
if((int)BIT>4){
printf("%s",((j==setw)||(j>setw&&(j-setw)%4==0&&(j+1)!=(int)BIT)?",":""));
}
}
//輸出文字檔
f=fopen(fn,"w");
if(f!=NULL){
fprintf(f,"%d!= ",N);
for(j=0;j<(int)BIT;j++){
fprintf(f,"%d",number[j]);
if((int)BIT>4){
fprintf(f,"%s",((j==setw)||(j>setw&&(j-setw)%4==0&&(j+1)!=(int)BIT)?",":""));
}
}
fclose(f);
}
//釋放記憶體
free(number),free(result);
}else{
printf("Incorrect number!\n");
}
//==========END==========//
printf("\n"),system("PAUSE");
return 0;
}
2007-10-24 19:32:33 補充:
小綿羊的肥答是僅供參考用的。
由於目前多數使用者的電腦是 32 位元,無法計算太大的整數值,所以有程式設計師用陣列與一般小學程度的演算方式來解決大型數值的程式演算。
即使是 64 位元的電腦,還是有計算上的限制。
2007-10-24 15:28:28 · answer #2 · answered by Big_John-tw 7 · 0⤊ 0⤋
通常c++的課本都有關於階層的例題。
去圖書館找一下就有了。
2007-10-24 11:45:02 · answer #3 · answered by 啊咧咧 3 · 0⤊ 0⤋