# include & ltiostream.h & gt
# include & ltiomanip.h & gt
const?n = 100;
const?M = 50
作廢?main(){
未簽名?int?d[M]={?0?};?//?大小應該足夠大,以容納階乘結果(結果中每個元素包含4位)。
int?c,?e,?n,?t;
int?我;
I = e = M-1;//(低位數據)從數組末尾開始。
d[I]= 1;
for(n = 2;?n & lt= N;?n++){
c = 0;
e =(e & gt;=1?e-1?:?e);?//e:中間結果達到最多的位置。
while(I & gt;e){?//n倍中間結果的每壹位。
t = d[I]* n+c;
d[I]= t % 10000;
c = t/10000;
I-;
}
I = M-1;?//
}
for(I = 0;?d[I]= = 0;?i++);?//穿過前導0
if(d[I]& gt;=1000)
c = 4;
不然呢?if(d[I]& gt;=100)
c = 3;
不然呢?if(d[I]& gt;=10)
c = 2;
其他
c = 1;
c = c+(M-I-1)* 4;
cout?& lt& lt"100!的位數是:“?& lt& ltc?& lt& ltendl?
& lt& lt具體結果是?& lt& ltendl
cout?& lt& ltd[I];?//最多1-4位數
e = I;
for(i++;?我& ltm;?i++)
cout?& lt& lt"?"?& lt& ltsetfill('0 ')?& lt& ltsetw(4)?& lt& ltd[I];
cout?& lt& ltendl
}
(2)問題5:
# include & ltstdio.h & gt
const?int?m = 2;
const?int?n = 3;
作廢?Add(int?a[][N],int?b[][N],int?結果[][N])
{
for(int?I = 0;我& ltm;i++)
for(int?j = 0;j & ltn;j++)
結果[I][j]= a[I][j]+b[I][j];
}
作廢?OutPutArray(int?a[][N])
{
for(int?I = 0;我& ltm;i++)
{
for(int?j = 0;j & ltn;j++)
printf("%-2d ",a[I][j]);
printf(" \ n ");
}
printf(" \ n ");
}
作廢?OutPutArray1(int?a[][M])
{
for(int?I = 0;我& ltn;i++)
{
for(int?j = 0;j & ltm;j++)
printf("%-2d ",a[I][j]);
printf(" \ n ");
}
printf(" \ n ");
}
作廢?T(int?a[][N],int?結果[][M])
{
for(int?I = 0;我& ltm;i++)
for(int?j = 0;j & ltn;j++)
結果[j][I]= a[I][j];
}
作廢?main(){
int?A[M][N]={{1,2,3},{3,4,5 } };
int?B[M][N]={{1,1,1},{1,1,1 } };
int?結果[M][N];
Add(A,B,結果);//兩個矩陣相加
output array(A);
printf("+\ n ");
輸出數組(B);
printf(" = \ n ");
OutPutArray(結果);
int?結果1[N][M];
T(A,結果1);//找到矩陣的轉置
output array(A);
Printf("轉置為:\ n ");
OutPutArray1(結果1);
}(3)問題5的附圖:
t