软件技术基础2实验任务5Word下载.docx
《软件技术基础2实验任务5Word下载.docx》由会员分享,可在线阅读,更多相关《软件技术基础2实验任务5Word下载.docx(9页珍藏版)》请在冰豆网上搜索。
理解函数模版及函数重载的执行机制。
2.编写教材第四章习题中4、5、7、8、9要求的程序,并完成上机调试的实验任务。
三、实验准备
1.复习第四章的内容,重点是4.2、4.4、4.8、4.9节的内容及相关例题;
2.编写教材第四章习题中4、5、7、8、9要求的程序。
四、实验任务
任务一:
第4题
1.内容:
编写两个函数分别求n!
和∑i的程序。
Main()调用这两个函数,分别输出是s1,s2.。
其中:
S1=m!
/(n!
(m-n)!
)s2=∑im-∑in(m,n为正整数且m>
n)
2.源程序:
#include<
iostream>
usingnamespacestd;
inta(intn);
intsum(intn);
voidmain()
{
intm,n,temp;
cout<
<
"
输入两个不同的正整数;
;
cin>
>
m>
n;
if(m<
{temp=m;
m=n;
n=temp;
}
ints1,s2;
s1=a(m)/(a(n)*a(m-n));
s2=sum(m)-sum(n);
s1="
s1<
endl;
s2="
s2<
inta(intn)
ints1
(1),i;
for(i=1;
i<
=n;
i++)
s1*=i;
returns1;
intsum(intn)
ints2(0),i;
s2+=i;
returns2;
3.
4.运行结果:
3.实验中遇到的主要问题及解决方法
任务三:
第7题
编写函数,分别求两个整数的最大公约数和最小公倍数,并在main()函数中任意输入两个整数,调用以上定义的函数并输出结果
#include<
voida(intn,intm);
voidb(intn,intm);
intn,m;
输入两个整数:
n>
m;
a(n,m);
b(n,m);
voida(intn,intm)
intb,d;
for(b=1;
b<
=n||b<
=m;
b++)
{
if(n%b==0&
&
m%b==0)
d=b;
}
最大公约数为:
d<
voidb(intn,intm)
for(b=m*n;
b>
=n||b>
b--)
if(b%n==0&
b%m==0)
最小公倍数为:
3.运行结果:
4.实验中遇到的主要问题及解决方法
任务四:
第7小题
设字符型数组str和s中分别存放长度相同,内容不同的字符串,编程实现将两个字符串中的内容交换,并输出交换前后的字符串。
char*str,*s;
输入str字符串长度:
cin>
输入s字符串长度:
str=newchar[n+1];
s=newchar[m+1];
if(str!
=NULL&
s!
=NULL)
cout<
输入一串字符:
str;
输入再一串字符:
s;
交换前str的字符:
str<
交换前s的字符:
s<
inti(0);
chartemp[80];
while(i<
=n)
{
temp[i]=str[i];
str[i]=s[i];
s[i]=temp[i];
i++;
}
交换后str的字符:
交换后s的字符:
elsecout<
动态内存分配失效,已停止运行"
3.运行结果:
任务五:
第8小题
定义一个求绝对值函数的模板,调用它分别求整数,单浮点数和双浮点数的绝对值。
template<
classT>
Tab(Ta,Tb=0)
{return(a>
b)?
a:
0-a;
inta;
输入一个整数:
a;
该数的绝对值:
ab(a)<
floatb;
输入一个单浮点数:
b;
ab(b)<
doublec;
输入一个双浮点数:
c;
ab(c)<
3.运行结果:
4.实验中遇到的主要问题及解决方法
任务六:
第9小题
1.内容:
用三个重载函数实现第八题
intab(inta){return(a>
0)?
floatab(floata){return(a>
doubleab(doublea){return(a>
5.自行列出其他任务
。
五、教师评分(百分制)