第六章上机题目
重点:掌握函数的定义、调用及声明。
参数传递
函数的应用
难点:指针、引用及函数的递归调用
实验内容:
一、基础题
1、定义函数把华氏温度转化为摄氏温度,公式为:C=(F-32)×5/9;在主函数中计算输出30、35、40、45、50、55、60华氏温度对应的摄氏温度对照表。
2、编写函数求一个不超过五位的十进制整数各位数值的和。(如:输入2634,输出15)并将结果传回主调函数
3、定义函数getPower(int x,int y)计算x的y次幂,在主函数调用该函数求x5+y5之和。
4、编写函数求出一个3x3矩阵的最大和最小元素及其下标。(数据自定,所有输入与输出在主函数完成)
5、编写函数,用以判断一个整数是否为素数,如果是,则返回1;否则返回0,并利用此函数,找出100-200之间的所有素数。
6、编写函数将一个浮点数分解成整数部分与小数部分,在主函数中读入任意5个浮点数,调用该函数,输出其整数值和小数值。
7、设计两个函数,求两个数的最大公约数和最小公倍数,在主函数中输入数据进行测试。
8、编写函数,求如下级数和,在主函数中输入n,并输出结果。
A=1+1/(1+2)+1/(1+2+3)+1/(1+2+3+4)+…….+1/(1+2+3+…+n)。
9、设计一个函数,求任意n个整数的最大数及其下标,并在主函数中输入10个整数,调用此函数。
7、编写几个计算面积的函数,分别计算圆、矩形、梯形和三角形的面积,计算边长为1的正方形及其内切圆、内接等腰三角形和等腰梯形面积。
函数原型如下:
double area(double radius=0);
double area(double a, double b);
double area(double a, double b, double h);
double area(double a, double b, double c, int);
完成该程序。
二、提高题
1、设计函数factors(num,k),返回整数num中包含因子k的个数,如果没有该因子,则返回0。
2、删除一维数组中所有相同的数,使之只剩一个。数组中的数已按由小到大的顺序排列,函数返回值为删除重复数据后数组中数据的个数。
例如,若一维数组中的数据是: 2 2 2 3 4 4 5 6 6 6 6 7 7 8 9 9 10 10 10
删除后,数组中的内容应该是: 2 3 4 5 6 7 8 9 10。
返回值为9。
3、设计一个简单的计算器程序,从键盘输入“+ 3 5 ”代表表达式“3+5”,程序读入运算符和数据,调用Calculate( )函数,根据运算符进行加、减、乘、除四则运算。要求能反复执行这一过程,直到用户输入“#”符号作为运算符为止。
函数原型如下:
double add(double ,double ); //加
double minus(double ,double ); //减
double multi(double ,double ); //乘
double div(double ,double ); //除
double Calculate (double ,double ,char ); // 运算符作为字符数读入
4、设计递归函数将十进制数转换二进制输出。
5、设计函数digit(num,k),返回整数num从右边开始的第k位数字的值。例如:
digit(4647,3)=6
digit(23523,7)=0
6、阅读程序,预测结果,上机运行程序对比。
#include
using namespace std;
int i=1; // i 为全局变量,具有静态生存期。
void main(void)
{ static int a; // 静态局部变量,有全局寿命,局部可见。
int b=-10; // b, c为局部变量,具有动态生存期。
int c=0;
void other(void);
cout<<"---MAIN---\n";
cout<<" i: "<
c=c+8; other();
cout<<"---MAIN---\n";
cout<<" i: "<
i=i+10; other();
}
void other(void)
{
static int a=2;
static int b;
// a,b为静态局部变量,具有全局寿命,局部可见。
//只第一次进入函数时被初始化。
int c=10; // C为局部变量,具有动态生存期,
//每次进入函数时都初始化。
a=a+2; i=i+32; c=c+5;
cout<<"---OTHER---\n";
cout<<" i: "<
b=a;
}