return0;
}
3.实验结果
(六)实验题目六
编写求50!
的程序,要求数组的右端存放结果的低位,左端存放结果的高位,实际上是修改第4章例4-7源程序。
1.算法分析
略
2.程序源代码
#include
intmain()
{
constintMAXSIZE=100;
intarray[MAXSIZE];
intn=50,sum,sc,j,unuse=0;
for(inti=0;i<=MAXSIZE-1;i++)
array[i]=0;//将数组清0
array[MAXSIZE-1]=1;
for(i=2;i<=n;i++)
{
sc=0;
for(j=MAXSIZE-1;j>=0;j--)
{
sum=array[j]*i+sc;//当前计算结果加上上一次进位值
sc=sum/10;//存放进位数值
array[j]=sum%10;}//将余数存入数组}
}
for(i=0;i<=MAXSIZE;i++)
{
if(array[i]==0)
unuse=unuse+1;//计算数组头部未被使用的单元
elsebreak;
}
cout<=";
j=0;
for(i=unuse;i<=MAXSIZE-1;i++)
{
cout<j++;
if(j==30)
{
cout<j=0;
}
}
cout<return0;
}
3.实验结果
七)实验题目七:
两个有序数列(由小到大排列)存放在两个数组中,将两数列归并为一个有序数列,即归并后的结果数列放在第三个数组中。
例如:
inta[5]={1,4,10,13,16};//已知数列
intb[8]={3,6,9,12,15,18,21,24};//已知数列
intc[13]={1,3,4,6,10,12,13,15,16,18,21,24};//归并后的结果数列
1.要点分析
略
2.程序源代码
#include
usingnamespacestd;
intmain()
{
inti,j,n;
intc[13];
inta[5]={1,4,10,13,16};//已知数列
intb[8]={3,6,9,12,15,18,21,24};//已知数列
i=0;j=0;
while(i<=4||j<=7)
{
if(i<=4&&j<=7)
{
if(a[i]>b[j])
{
c[i+j]=b[j];
j++;
}
else
{
c[i+j]=a[i];
i++;
}
}
else
if(i>4)
{
c[i+j]=b[j];
j++;
}
else
{
c[i+j]=a[i];
i++;
}
}
cout<<"c[13]={";
for(i=0;i<=12;i++)
cout<cout<<"}"<return0;
}
3.实验结果
个人小结
本次试验遇到了不少困难,好在最后都一一解决掉了。
还有感觉自己的思路总是不能回到正轨上来……似乎总是把简单的问题写的很复杂以至于自己也看不懂。
。
。
。