实验报告一Word文档格式.docx
《实验报告一Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验报告一Word文档格式.docx(10页珍藏版)》请在冰豆网上搜索。
2、设计一个函数:
exchange(floatx,floaty,floatz),当调用exchange(a,b,c)时,将a的内容赋值给b,b的内容赋值给c,c的内容赋值给a,要求采用引用的方式来实现。
3、设计一个程序,测试const的三种用法:
指向常量的指针,常指针,指向常量的常指针。
4、编写一个函数,实现两个字符串变量的交换,要求参数用引用。
5、设计一个程序,比较内联函数和普通函数在时间开销和目标文件大小等方面的区别。
四、实验过程设计
略。
五、实验结果分析
(一)、程序理解
1.#include<
iostream.h>
intmax_def(intx,inty)
{
return(x>
y?
x:
y);
}
intmax_def(intx,inty,intz)
inttemp=0;
return(temp=(x>
y))>
z?
temp:
z;
doublemax_def(doublex,doubley)
intmain()
intx1=0;
intx2=0;
doubled1=0.0;
doubled2=0.0;
x1=max_def(5,6);
x2=max_def(2,3,4);
d1=max_def(2.1,5.6);
d2=max_def(12.3,3.4,7.8);
cout<
<
"
x1="
<
x1<
endl;
x2="
x2<
d1="
d1<
d2="
d2<
}
问题一:
上述程序的输出结果是什么?
问题二:
哪些情况可以参与函数的重载?
答:
同名函数具有相同的功能,而只是参数的个数和参数的类型不同时可以参与函数的重载。
问题三:
①处调用的是哪个函数?
调用的是
inttemp=0;
return(temp=(x>
问题四:
②处的输出结果为什么是d2=12,而不是d2=12.3?
答:
因为该函数的类型为int型,所以返回整型值。
2.#include<
int*p1=newint;
-----------------------------------------------------①
int*p2=newint(0);
-----------------------------------------------------②
char*p3=newchar[64];
-----------------------------------------------------③
return1;
①、②、③处动态申请内存分别代表什么不一样的意思?
①处*p1指向一个未初始化的int型对象;
②处*p2指向一个表示为0的int型对象;
③处*p3指向64个char型对象。
该程序存在什么隐患?
改正该程序使隐患消除。
#include<
int*p1;
p1=newint;
int*p2;
p2=newint(0);
char*p3;
p3=newchar[64];
在分配操作结束后,返回的地址值为0,内存申请未成功。
{3.#include<
voidswap(inta,intb)
inttemp=a;
a=b;
b=temp;
voidswap(int*a,int*b)
inttemp=*a;
*a=*b;
*b=temp;
inti=5;
intj=10;
cout<
Beforeswap:
i="
i<
j="
j<
swap(i,j);
Afterthefirstswap:
swap(&
i,&
j);
Afterthesecondswap:
①处函数调用后并不能实现两个数的交换,而②处却可以,为什么?
①处交换的是i和j的地址值,②处交换的是i和j的值
②处调用的是哪个重载函数?
(二)、程序设计
1.#include<
#include<
math.h>
voidmain()
{
intjuli(int,int,int,int);
doublejuli(double,double,double,double);
inta,b,c,d,s;
"
pleaseinputintegera,b,c,d="
;
cin>
>
a>
b>
c>
d;
s=juli(a,b,c,d);
juli_abcd="
s<
doublee,f,g,h,r;
pleaseinputdoublee,f,g,h="
e>
f>
g>
h;
r=juli(e,f,g,h);
juli_efgh="
r<
intjuli(intx,inty,intz,intt)
{intm;
m=sqrt((y-x)*(y-x)+(t-z)*(t-z));
returnm;
doublejuli(doublex,doubley,doublez,doublet)
{doublem;
运行结果:
2.#include<
main()
floata,b,c;
voidexchange(float&
float&
);
pleaseinputa,b,c="
cin>
c;
exchange(a,b,c);
a="
a<
b="
b<
c="
c<
voidexchange(float&
x,float&
y,float&
z)
x=y;
y=z;
z=x;
3.#include<
intc=4,d=5,m=6;
intconst*p1=&
constint*p2=&
constint*constp3=&
m;
p1=&
//*p1=d;
//error
p2=&
//*p2=d;
//p3=&
//*p3=d;
*p1="
*p1<
\n"
*p2="
*p2<
*p3="
*p3<
4.#include<
#defineN10
voidswap(char&
char&
chars1[N],s2[N];
inti;
pleaseinputs1:
s1;
pleaseinputs2:
s2;
{
for(i=0;
10;
i++)
swap(s1[i],s2[i]);
afterswap:
\ns1="
s1<
:
\ns2="
s2<
}
s1,char&
s2)
chars3;
s3=s1;
s1=s2;
s2=s3;
5.#include<
iostream>
ctime>
usingnamespacestd;
inlinedoubleCalArea(doubler)
return3.14*r*r;
doublemianji(doubler)
intmain()
doubler=3.0;
doublearea1,area2;
time_tnow;
time(&
now);
printf("
%s\n"
asctime(localtime(&
now)));
22222*22222;
area1=CalArea(r);
area2=mianji(r);
area1<
area2