实验3 函数和编译预处理
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
{
int a;
cout<<"请输入大于0的正整数:";
cin>>a;
output1(a); cout<<endl;
output2(a); cout<<endl;
return 0;
}
思考:当键盘输入12345时,
1)分析output1函数的执行过程,该函数的功能是什么?
2)分析output2函数的执行过程,该函数的功能是什么?
if(++k&&5==0)
cout<<"\n";//B
}
return 0;
}
思考:1)将A行改为for(int i=2;i<=x/2;i++)或for(int i=2;i<=sqrt(x);i++),结果如何?
2)B行中为什么要用++k?能不能用k++?
(2)#include <iostream>
using namespace std;
提示:递归公式为:
xn=1
px(n)=
px(n-1)+(-1)n-1xnn>1
(-1)n-1xn=-(-x)n,可以自己写一个函数double power( double x, int n);
(3)设计一组函数分别计算三角形、矩形和圆面积。要求:
1)使用函数重载;
2)在主函数进行测试。
问题讨论
(1)使用递归方法的条件
(3)#include <iostream >
using namespace std;
void fun(void)
{ int a=1,b=2;
staticint c; //A
a++;
{ int a=1;
b++;
c++;
cout<<a<<","<<b<<","<<c<<"\n";
}
cout<<a<<","<<b<<","<<c<<"\n";
(2)如何实现函数重载?
2)在主函数中输入一个数,调用num函数,判断此整数是否为水仙花数,并输出结果。
(2)编写一个函数doublepx(doublex,int n);用递归的方法求下列级数前n项的和s。
在主函数中定义变量x与n,用键盘输入x与n的值,调用px()函数计算并返回级数前n项和s。最后输出s的值。
输入实验数据:x=1.2 n=10
void output1(int x)
{ if(!x) return;
cout<<(x%10)<<"\t";
output1(x/10);
}
void output2(int x)
{ iBaidu Nhomakorabea(!x) return;
output2(x/10);
cout<<(x%10)<<"\t";
}
int main(void)
{ int prime=1;
if(x==0||x==1)
prime=0;
for(int i=2;i<x;i++)//A
if(x%i==0)
prime=0;
return prime;
}
intmain()
{intk=0;
for(int i=5;i<20;i+=2)
if(fun(i))
{ cout<<""<<i;
}
intmain()
{int a=1,b=2,c=3;
fun();
fun();
fun();
return 0;
}
思考:将A行中static删除,运行结果是什么?
2.编程题
(1)编写一个函数,判断一个数是不是水仙花数。在主函数中输入一个整数,输出是否是水仙花数的信息。(所谓水仙花所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。要求:1)编写一个函数int num(int n),返回给定整数n是否为水仙花数。
实验
实验目的
1.掌握函数的定义和调用的方法。
2.学会使用递归方法进行程序设计。
3.掌握变量的作用域与存储类别。
4.学会使用函数重载解决实际问题。
5.学会使用宏
实验内容
1.阅读并运行程序,写出运行结果。
(1)#include <iostream>
using namespace std;
int fun(int x)
int a;
cout<<"请输入大于0的正整数:";
cin>>a;
output1(a); cout<<endl;
output2(a); cout<<endl;
return 0;
}
思考:当键盘输入12345时,
1)分析output1函数的执行过程,该函数的功能是什么?
2)分析output2函数的执行过程,该函数的功能是什么?
if(++k&&5==0)
cout<<"\n";//B
}
return 0;
}
思考:1)将A行改为for(int i=2;i<=x/2;i++)或for(int i=2;i<=sqrt(x);i++),结果如何?
2)B行中为什么要用++k?能不能用k++?
(2)#include <iostream>
using namespace std;
提示:递归公式为:
xn=1
px(n)=
px(n-1)+(-1)n-1xnn>1
(-1)n-1xn=-(-x)n,可以自己写一个函数double power( double x, int n);
(3)设计一组函数分别计算三角形、矩形和圆面积。要求:
1)使用函数重载;
2)在主函数进行测试。
问题讨论
(1)使用递归方法的条件
(3)#include <iostream >
using namespace std;
void fun(void)
{ int a=1,b=2;
staticint c; //A
a++;
{ int a=1;
b++;
c++;
cout<<a<<","<<b<<","<<c<<"\n";
}
cout<<a<<","<<b<<","<<c<<"\n";
(2)如何实现函数重载?
2)在主函数中输入一个数,调用num函数,判断此整数是否为水仙花数,并输出结果。
(2)编写一个函数doublepx(doublex,int n);用递归的方法求下列级数前n项的和s。
在主函数中定义变量x与n,用键盘输入x与n的值,调用px()函数计算并返回级数前n项和s。最后输出s的值。
输入实验数据:x=1.2 n=10
void output1(int x)
{ if(!x) return;
cout<<(x%10)<<"\t";
output1(x/10);
}
void output2(int x)
{ iBaidu Nhomakorabea(!x) return;
output2(x/10);
cout<<(x%10)<<"\t";
}
int main(void)
{ int prime=1;
if(x==0||x==1)
prime=0;
for(int i=2;i<x;i++)//A
if(x%i==0)
prime=0;
return prime;
}
intmain()
{intk=0;
for(int i=5;i<20;i+=2)
if(fun(i))
{ cout<<""<<i;
}
intmain()
{int a=1,b=2,c=3;
fun();
fun();
fun();
return 0;
}
思考:将A行中static删除,运行结果是什么?
2.编程题
(1)编写一个函数,判断一个数是不是水仙花数。在主函数中输入一个整数,输出是否是水仙花数的信息。(所谓水仙花所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。要求:1)编写一个函数int num(int n),返回给定整数n是否为水仙花数。
实验
实验目的
1.掌握函数的定义和调用的方法。
2.学会使用递归方法进行程序设计。
3.掌握变量的作用域与存储类别。
4.学会使用函数重载解决实际问题。
5.学会使用宏
实验内容
1.阅读并运行程序,写出运行结果。
(1)#include <iostream>
using namespace std;
int fun(int x)