return0;
}
5、调试和运行参考程序8和参考程序9,并观察输出结果,体会和理解内存动态分配的概念与new、delete运算符的基本使用方法。
参考程序8
#include
main()
{
int*p;//声明一个整型指针变量p
//在下画线处,用new关键字动态分配一个int型存储区,并将首地址赋给p
_____p=newint;_________
*p=10;
cout<<*p;//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间
____deletep;____________
return0;
}
参考程序9
#include
main()
{
int*p;
//在画线处填上语句,用new关键字动态分配一个int型存储区,并将首地址赋给p
_____p=newint;________________
if(!
p)
{
cout<<"allocationfailure\n";
return1;
}
//在下画线处填上语句,将p所指向的存储区赋值20
____*p=20;____________
cout<<*p;
//在下画线处填上语句,用于撤销指针p,释放p指向的存储空间
__deletep;______________
return0;
}
第一题
//用三种循环语句来分别实现输出10~50之间的3的倍数。
#include
voidmain()
{
for(inti=10;i<=50;i++)
{
if(i%3==0)
cout<
}
intx=10;
while(x<=50)
{
if(x%3==0)
cout<x++;
}
do{
inty=10;
if(y%3==0)
cout<y++;
}while(i<=50);
,}
第二题
//从键盘上读入两数,比较两个数的大小,并按从小到大的次序输出。
#include
doublef(double&m,double&n)
{
doubletemp;
temp=m;
m=n;
n=temp;
return0;
}
voidmain()
{
doublex,y;
cin>>x>>y;
if(x>y)
f(x,y);
cout<}
第三题//输出1到100的偶数,一行5个。
#include
voidmain()
{
for(inti=1;i<=100;i++)
{
if(i%2==0)
{
cout<
if(i%5==0)
cout<}
}
}
第四题//打印出所有的"水仙花数"。
所谓"水仙花数"是指一个三位数,其各位数字的立方和等于该数本身。
#include
voidmain()
{
for(inti=100;i<1000;i++)
{
intx,y,z;
x=i/100;
y=(i-x*100)/10;
z=i-x*100-y*10;
if(i==x*x*x+y*y*y+z*z*z)
cout<
}
}
第五题//5、打印一个三角形的1~9的乘法表。
#include
voidmain()
{
for(inti=1;i<10;i++)
{
for(intj=1;j<=i;j++)
{
cout<<"i*j="<
}
cout<}
}
第六题//写一个程序,100~200间的所有素数
#include
voidmain()
{
intm;
for(inti=100;i<=200;i++)
{
for(intj=2;j
{
if(i%j==0)
break;
}
if(i==j)
cout<
}
}
第七题//给出一个百分制的成绩,要求输出成绩等级'A','B','C','D','E'。
90分以上为A,80~89分为B,70~79分为C,60~69分为D,60分以下为E。
#include
voidmain()
{
inta;
cin>>a;
if(a>=90)
cout<<"A";
elseif(a>=80&&a<=89)
cout<<"B";
elseif(a>=70&&a<80)
cout<<"C";
elseif(a>=60&&a<70)
cout<<"D";
elseif(a<60)
cout<<"E";
}
第八题//求(即求1!
+2!
+3!
+4!
+……+10!
)。
#include
voidmain()
{
intn;
intsum=0;
for(inti=10;i>=1;i--)
{
n=i;
for(intj=i-1;j>=1;j--)
{
n=n*j;
}
sum=sum+n;
}
cout<}
#include
voidmain()
{
doublesum=0;
for(inti=1;i<=20;i++)
{
sum=sum+(double)(1.0/i);
}
cout<}
第十题//有一分数序列,,,,,……,求出这个数列的前20项之和。
是前两个数的相加
#include
voidmain()
{
doublem,sum=0;
doublea[20],b[20];
a[0]=2.0,a[1]=3.0;
b[0]=1.0,b[1]=2.0;
for(inti=2;i<20;i++)
{
a[i]=a[i-1]+a[i-2];
b[i]=b[i-1]+b[i-2];
}
for(i=0;i<20;i++)
{
m=a[i]/b[i];
sum=sum+m;
}
cout<}
第十一题//一个10个整数的数组(34,91,83,56,29,93,56,12,88,72),找出最小数和其下标,并在主函数中打印最小数和下标。
#include
voidmain()
{
inta[10]={34,91,83,56,29,93,56,12,88,72};
intmin,imin;
min=a[0];
for(inti=0;i<10;i++)
{
if(a[i]{min=a[i],imin=i;}
}
cout<<"最小数是:
"<cout<<"下标是:
"<}
第十二题、编程求矩阵的加法:
。
#include
voidmain()
{
inta[3][3]={{5,7,8},{2,-2,4},{1,1,1}};
intb[3][3]={{4,-2,3},{3,9,4},{8,-1,2}};
inti,j,c[3][3];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];
for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
{
cout<}
cout<}
}
//13、编写一个程序,用来分别求2个整数、3个整数、2个双精度数和3个双精度数的最大值。
要求使用重载函数来完成。
#include
intmax(intm,intn)
{
if(m>n)
returnm;
elsereturnn;
}
intmax(inta,intb,intc)
{
intmax=a;
if(b>max)
max=b;
if(c>max)
max=c;
returnmax;
}
doublemax(doublem,doublen)
{
if(m>n)
returnm;
elsereturnn;
}
doublemax(doublea,doubleb,doublec)
{
intmax=a;
if(b>max)
max=b;
if(c>max)
max=c;
returnmax;
}
voidmain()
{
inta,b,c,d,e;
doublex,y,z,k,l;
cout<<"输入五个整数:
"<cin>>a>>b>>c>>d>>e;
cout<<"输入五个小数:
"<cin>>x>>y>>z>>k>>l;
inti=max(a,b);
cout<<"两个数中的max是:
"<
intj=max(c,d,e);
cout<<"三个数中的max是:
"<doubles=max(x,y);
cout<<"两个数中的max是:
"<
doublef=max(z,k,l);
cout<<"三个数中的max是:
"<}
//14、编写一个程序,计算并输出Fibonacci数列的前n项的值,n是用户由键盘的输入值。
#include
voidmain()
{
intn;
cin>>n;
int*p;
p=newint;
p[0]=1,p[1]=1;
cout<
if(!
p)
{
cout<<"error"<}
for(inti=2;i{
p[i]=p[i-1]+p[i-2];
cout<
}
}