实验十函数应用
一?实验目的
1.掌握函数的定义和调用;
2.理解形参和实参的使用和传值调用;
3.理解函数声明的使用;
4.掌握函数的嵌套调用;
5.了解函数的嵌套与递归调用,掌握递归函数的编写规律;
6.了解数组元素、数组名作函数参数。
二?实验学时数
2学时
三?实验步骤
(一)阅读程序
1.#include
int fun (int x, int y, int z)
{ z=x * x + y * y;
}
main()
{ int a=38;
fun(7,3,a);
printf("%d",a);
2.#include
void fun (int x,int y );
main()
{int x=5,y=3;
fun(x,y);
printf("%d,%d\n",x,y);
}
void fun (int x,int y )
{ x=x+y;
y=x-y;
x=x-y;
printf("%d,%d\n",x,y);
3.#include
int f (int a);
main()
{ int s[ 8 ] = {1,2,3,4,5,6} ,i, d=0;
for (i=0; f( s[i] ) ; i++)
d+=s[i];
printf("%d\n",d);
}
int f(int a)
{ return a%2;
}
4.#include
long f( int g)
{ switch(g)
{ case 0:return 0;
case 1:
case 2: return 1;
}
return ( f(g-1)+ f(g-2));
}
main ( )
{ long int k;
k = f(7);
printf("\nk= %d\n",k);
}
5. #include
int f(int b[ ][4])
{ int i,j,s=0;
for(j=0;j<4;j++)
{ i=j;
if(i>2) i=3-j;
s+=b[i][j];
}
return s;
}
main( )
{int a[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
printf("%d\n",f(a) );
}
(二)
要求:依据题目要求,分析已给出的语句,填写空白?但是不要增行或删行,改动程序的结构?
1. 请在以下程序第一行的下划线处填写适当内容,使程序能正确运行?
#include
double max(double a,double b);//或者double max(double,double);
main()
{double x,y;
scanf("%lf%lf",&x,&y);
printf("%.8lf\n",max(x,y));
}
double max(double a,double b)
{return (a>b ? a:b) ;
}
2.以下函数的功能是:求x的y次方,请填空,并配写出主调函数。
double fun( double x, int y)
{int i;
double z;
for(i=1, z=x; i return z; } main( ) { double a; int b; scanf("%lf%d",&a,&b); printf("%lf的%d次方为%lf",a,b,fun(a,b)); } 3.mystrlen函数的功能是计算字符串的长度,并作为函数值返回。请填空,并配写主调函数。 int mystrlen(char str[ ]) {int i; for(i=0; str[i]!=‘\0';i++); return(i); } main ( ) { char a[81]; scanf("%s",a); printf("所输入字符串的长度为%d\n",mystrlen(a)); } (三)调试程序 要求:调试运行下列程序是否正确,若有错,写出错在何处?填写正确的运行结果? 1.行号 1 void func ( float a , float b ) //void----float 2 main() 3 { float x , y ; 4 float z ; 5 scanf(“%f , % f”,&x ,&y); 6 z = func ( x , y ) ; 7 printf ( “ z = % f \n” , z ) ; 8 } 9 float func ( float a , float b ) 10 { float c ; 11 c = a * a + b * b ; 12 return c ; 13 } 2.函数sstrcmp()的功能是对两个字符串进行比较。当s数组中字符串和t数组中字符串相等时,返回值为0;当s数组中字符串大于t数组中字符串时,返回值大于0;当s数组中字符串小于t数组中字符串时,返回值小于0(功能等同于库函数strcmp())。 行号 1 int sstrcmp(char s[ ],char t[]) 2 { int i=0 , j=0 ; 3 while(s[i]&&t[j]&& s[i]== t[j] ) ; 4 return s[i]-t[j]; 5 } 6 main() 7 { int x; 8 char s1[50],s2[50]; 9 scanf("%s%s",s1,s2); 10 x= sstrcmp(s1,s2); 11 printf("\n%d\n",x); } int sstrcmp(char s[ ],char t[]) { int i=0 , j=0 ; while(s[i]&&t[j]&& s[i]== t[j] )i++,j++; return s[i]-t[j]; } main() { int x; char s1[50],s2[50]; scanf("%s%s",s1,s2); x= sstrcmp(s1,s2); printf("\n%d\n",x); } 3.以下程序的功能是用递归方法计算学生的年龄,已知第一位学生年龄最小,为10岁,其余学生一个比一个大2岁,求第12位学生的年龄。 行号main() 1 { int age( int n) ; 2 int n =12; 3 printf (“ Age is %d\n” , age (n)); 4 } 5 int age(int n); 6 { int c; 7 c = age (n-1)+2 ; 8 return ( c ) ; 9 } main() { int age( int n); int n=12; printf("Age is %d\n",age (n)); } int age(int n) { int c; if(n==1) return 10; c=age(n-1)+2; return ( c ) ; } (四)编写程序 1.编写一个函数,选出能被3整除且至少一位是5的两位数,用主函数调用这个函数,并输出所有这样的两位数。 2.编写函数判断某数是否为素数,如果是素数,则返回1,否则返回0,在main函数中调用该函数,根据返回值判断是否为素数。 1 #include int f(int x) { int a,b; a=x/10; b=x%10; if((a==5||b==5)&&x%3==0) return 1; else return 0; } main( ) {int i; for(i=15;i<=95;i++) if(f(i)) printf("%4d",i); } 2 #include int f(int x) { int i,t=1; for(i=2;i<=x-1;i++) if(x%i==0) {t=0;break;} return t; } main( ) {int n,t; scanf("%d",&n); t=f(n); if(t==1) printf("%4d是素数",n); else printf("%4d不是素数",n); } 实验8 函数(一)实验目的: 1、理解自定义函数过程的定义与调用方法; 2、掌握自定义函数的定义与调用方法; 3、理解函数中的参数的作用; 实验内容: 1、编写一函数Fabonacci(n),其中参数n代表第n 次的迭代。While循环 def fib(n): if n==1 or n==2: return 1 a=1 b=1 i=2 while True: c=a+b a=b b=c i+=1 #第i次迭代,也就就是第i个数 if i==n: return c break def main(): n=input("Enter a number of generation:") print fib(n) main() 或者用for循环 def fib(n): a=1 b=1 c=0 if n==1 or n==2: return 1 else: for i in range(3,n+1): c=a+b a=b b=c return c def main(): n=input("enter n:") print fib(n) main() 2、编写一函数Prime(n),对于已知正整数n,判断该数就是否为素数,如果就是素数,返回True,否则返回 False。 def prime(n): if n<2: return False a=0 for i in range(1,n+1): if n%i==0: a+=1 if a>2: return False else: return True def main(): n=input("Enter a number:") print prime(n) main() Or: def prime(n): if n<2: return False if n==2: return True for i in range(2,n): if n%i==0: return False return True def main(): n=input("Enter a number:") print prime(n) main() 实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221ln(1)2 z x x =++,其中2 120.45 5i x +??=? ?-?? (3) 0.30.330.3sin(0.3)ln , 3.0, 2.9,,2.9,3.022a a e e a z a a --+= ++=-- (4) 2242011 122123t t z t t t t t ?≤ =-≤?-+≤ ,其中t =0:0.5:2.5 解: M 文件: z1=2*sin(85*pi/180)/(1+exp(2)) x=[2 1+2*i;-.45 5]; z2=1/2*log(x+sqrt(1+x^2)) a=-3.0:0.1:3.0; z3=(exp(0.3.*a)-exp(-0.3.*a))./2.*sin(a+0.3)+log((0.3+a)./2) t=0:0.5:2.5; z4=(t>=0&t<1).*(t.^2)+(t>=1&t<2).*(t.^2-1)+(t>=2&t<3) .*(t.^2-2*t+1) 4. 完成下列操作: (1) 求[100,999]之间能被21整除的数的个数。 (2) 建立一个字符串向量,删除其中的大写字母。 解:(1) 结果: m=100:999; n=find(mod(m,21)==0); length(n) ans = 43 (2). 建立一个字符串向量例如: ch='ABC123d4e56Fg9';则要求结果是: ch='ABC123d4e56Fg9'; k=find(ch>='A'&ch<='Z'); ch(k)=[] ch = 实验项目:函数的应用 实验目的: (1)掌握函数的定义和调用方法 (2)练习重载函数的使用 (3)练习使用系统函数 (4)使用debug调试功能,使用step into追踪到函数内部。 实验任务: 1.编写重载函数MAX1可分别求取两个整数,三个整数,两个双精度,三个双精度数的最大值。 2.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 实验步骤: 1.分别编写四个同名的函数max1,实现函数重载,在main()中测试函数功能。 int max1(int x, int y) { return (x>y?x:y); } int max1(int x, int y, int z) { int temp1=max1(x,y); return (y>z?y:z); } double max1(double x, double y) { return (x>y?x:y); } double max1(double x, double y, double z) { double temp1=max1(x,y); return (y>z?y:z); } void main() { int x1, x2; double d1, d2; x1 = max1(5,6); x2 = max1(2,3,4); d1 = max1(2.1, 5.6); d2 = max1(12.3, 3.4, 7.8); cout << "x1=" < 实验二函数的应用 一、实验目的 1、掌握函数的定义和调用方法。 2、掌握函数实参与形参的对应关系。 3、掌握函数嵌套调用和递归调用的方法。 二、实验内容与步骤 1、写一个判断素数的函数,在主函数中输入一个整数,输出是否是素数的信息。 2、编写重载函数Max可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 3、递归函数与非递归函数。 编写一个函数,求从n个不同的数中取r个数的所有选择的个数。其个数值为:n! C r n= r!*(n-r)! 其中:n!=n*(n-1)*(n-2)* (1) 要求: (1)分别用递归和非递归两种方式完成程序设计; (2)主程序中设计一个循环,不断从输入接收n和r的值,计算结果并输出,当用户输入0 0时,程序结束; (3)能检查输入数据的合法性,要求n>=1并且n>=r; (4)注意整数能存放的数据范围有限,如何解决? 提示: (1)可以用double数据类型来存放函数的计算结果。 (2)递归结束条件: 如果r=0,则C(n,r)=1; 如果r=1, 则C(n,r)=n。 测试数据: 输入:5 3 输出:10 输入:10 20 输出:Iput Invalid1 输出:50 3 输出:19600 输入:0 0 程序结束 思考问题: (1)对各种数据类型的字长是否有了新的认识? (2)递归函数的书写要点是什么? (3)递归和非递归函数各有哪些好处? 4、求两个整数的最大公约数和最小公倍数,用一个函数求最大公约数,用另一个函 数求最小公倍数。 要求: 两个整数在主函数中输入,并传送给函数1,求出的最大公约数返回主函数,然后再和两个整数一起作为实参传递给函数2,以求出最小公倍数,再返回到主函数输出最大公约数和最小公倍数。 实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include 3. #include 实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈分别输入整数半径和实数半径,使用函数重载计算圆的面积。 #include ⒊编写程序,求)! (!!m n m n C m n -= #include 实验8指针与引用(2) 请将自己报告部分,文字和程序代码,加粗 完成下面实验内容和实验要求。 自测题 1.编写函数实现字符串函数strcmp()的功能。 要求:使用指针操作完成题目 ⑴程序代码如下,请补充完整,使程序能运行且运行正确。 #include 实验1 cin、cout及面向过程的编程实验2 引用与函数重载 实验3 类与对象 实验4 静态成员与对象参数 实验5 拷贝构造函数与内存分配 实验6 对象数组与子对象 实验7 含有数组成员的对象与深拷贝实验8 运算符重载(1) 实验9 运算符重载(2) 实验10 继承与派生 实验11 虚函数与类族 实验12 STL 实验1 cin 、cout 及面向过程的编程 1A :显示某个日期是星期几 (1) 输入、输出要求: 输入:3个正整数,依次为年、月、日,比如2049 10 1 输出:按类似“[2049-10-5] is Friday.”的形式输出 示例: (2) 处理方法 历史上的某一天是星期几?未来的某一天是星期几?关于这个问题,有很多计算公式,其中最著名的是蔡勒(Zeller)公式。即 7)%110)1(26244(-+? ?? ???++-??????+??????+=d m c c y y w 公式中的符号含义: w ——星期几 c ——年份的前两位 y ——年份的后两位 m ——月,3≤m ≤14,某年的1、2月视为上一年的13、14月,比如2003年1月1日要看作2002年的13月1日 d ——日 ??——代表取整,即只要整数部分 %——除法求余数 例如:对于2049年10月1日,计算过程如下: 5 7%547)%284051249(7)%1110)110(2620242044949(==+-++=-+??? ???++?-??????+??????+=w 即2049年10月1日是星期5。如果计算结果是负数,则加7。 1B :格式化输出实数 从键盘读取本金和年利率,求20年中每年末本息合计有多少钱。 输入:用空格分隔的两个数,都可以带小数点 输出:以“钱数(?年后)”的方式显示,以“2格、右对齐”的方式显示年,以“共10格、小数点后取2位、右对齐”的方式显示本息合计的钱数,见示例 示例:本金973.45元、年利率2%的显示结果如下 实验十函数应用 一?实验目的 1.掌握函数的定义和调用; 2.理解形参和实参的使用和传值调用; 3.理解函数声明的使用; 4.掌握函数的嵌套调用; 5.了解函数的嵌套与递归调用,掌握递归函数的编写规律; 6.了解数组元素、数组名作函数参数。 二?实验学时数 2学时 三?实验步骤 (一)阅读程序 1.#include x=x-y; printf("%d,%d\n",x,y); 3.#include 实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include #include 课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。 二、内容及结果 1、程序一素数函数 1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码: #include return 1; } int main() { int prime(int n); int n; printf("Please enter n:"); scanf("%d\n",&n); if(prime(n)==1) printf("%d is a prime number",int(n)); else printf("%d is not a prime number",int(n)); } 3)运行截图: 2、程序二用递归方法求n阶勒让德多项式的值 1)程序要求: 递归公式为: 当n=0,= ) (x P n 1 当n=1, = ) (x P n x; 当n>=1, = ) (x P n((2n-1)x-P n-1(x)-(n-1)P n-2 )x))/n 2)代码: #include #include 实验一顺序结构的程序设计1.输入x的值,根据下面的多项表达式求y的值: y=3 4 x5+12x4-7.3x3- 8 3 x2+2x-4 (1)编程,注意要有输入数据的提示语句。 #include "stdio.h" main() { double x,y; printf("please input x:\n"); scanf("%lf",&x); y=3.0/4*x*x*x*x*x+12*x*x*x*x-7.3*x*x*x+2*x-4; printf("y=%10.4lf\n",y); } (2)x取下列值时,分别运行此程序 2.任意输入一个三位整数,然后逆序输出。如输入为123,则输出为321。 (1) 编程,注意要有输入数据的提示语句 (2) 用八进制的形式输出各位数字的ASCII码。 (3) 输入取下列值时,分别运行此程序 main() { int x,inversed,hundred,ten,indiv; printf("please input x:\n"); scanf("%d",&x); hundred=x/100; ten=(x-hundred*100)/10; indiv=x%10; /*indiv=(x-hundred*100)-ten*10;*/ inversed=indiv*100+ten*10+hundred; printf("the original number is %d\n",x); printf("the inversed number is %d\n",inversed); printf("the oct number is %0,%0,%0\n",indiv+'0',ten+'0',hundred+'0'); } #include 实验八 函 数(二) 参考答案 /*1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 12.0、34.0、4.0、23.0、34.0、45.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】*/ double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) {t=array[i][j]; array[i][j]=arrar[j][i]; array[j][i]=t ; } } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】I am a student! 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案1】 int fun( char s[]) C++语言程序设计实验答案-函数的应用 实验03函数的应用(2学时) (第3章函数) 一、实验目的 (1) 掌握函数的定义和调用方法。 (2) 练习重载函数的使用。 (3) 练习使用系统函数。 (4) 学习使用Visual Studio 2010的调试功能,使用“逐语句”追踪到函数内部。 二、实验任务 3_1(习题3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为:C=(F-32)*5/9。 3_2 编写重载函数Max1可分别求取2个整数、3个整数、2个双精度数、3个双精度数的最大值。 3_3 使用系统函数pow(x, y)计算x y的值,注意包含头文件cmath。 3_4(习题3-13)用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 三、实验步骤 1.(编程,习题3-8)把华氏温度转换为摄氏温度。 编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法 C=(F-32)*5/9,在main()函数中实现输入、输出。程序名:lab3_1.cpp。 ★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer)) //lab3_1(习题3-8) #include 度的值是"< 实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include 实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include int a=3,b=5; 通过本题,可以得出什么结论?若没给未知量赋予初值,那未知量将被随意赋值,赋值一主函数的赋值为先。 2.2 实验内容部分第2题源程序代码,请贴图: 程序运行结果画面,请贴图: 2.3 实验内容部分第3题源程序代码,请贴图: 实验三 函数的应用(2学时) 一、实验目的 1.掌握函数的定义和调用方法。 2.练习重载函数的使用。 3.练习函数模板的使用。 4.练习使用系统函数。 5.学习使用VC++的debug调试功能,使用step into追踪到函数内部。 二、实验任务 1.编写一个函数把华氏温度转换为摄氏温度,转换公式为..C=(F一32)*5/9。 2.编写重载函数Maxl可分别求取两个整数,三个整数,两个双精度数,三个双精度数的最大值。 3.使用重载函数模板重新实现上小题中的函数Maxl。 4.使用系统函数pow(X,y)计算芷的值,注意包含头文件math·h。 5.用递归的方法编写函数求Fibonacci级数,观察递归调用的过程。 三、实验步骤 1.编写函数float Convert(float TempFer),参数和返回值都为float类型,实现算法C=(F一32)*5/9,在main()函数中实现输入、输出。程序名:lab3_1.cpp。 2.分别编写四个同名函数maxl,实现函数重载,在main()函数中测试函数功能。程序名:lab3_2.cpp。 3.使用函数模板实现求任意类型数的最大值,针对不同的参数个数,编写两个同名 函数模板maxl,其参数个数不同,实现函数重载,在main()函数中测试函数功能。程序名:lab3_3.cpp。 4.在main()函数中提示输入两个整数x、y,使用cin语句得到x、y的值,调用 pow(x,y)函数计算x的Y次幂的结果,再显示出来。程序名.1ab3_4.cpp。 5.编写递归函数int fib(int n),在主程序中输入n的值,调用fib函数计算 Fibonacci级数。公式为fib(n)=fib(n一1)+fib(n一2),n>2;fib(1)=fib(2)=1。 使用if语句判断函数的出口,在程序中用cout语句输出提示信息。程序名: lab3_5.cpp。 6.使用debug中的Step Into追踪到函数内部,观察函数的调用过程,参考程序 如下: //lab3_5 #include 实验八指针程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:有n个整数,使各数顺序往后循环移动m个位置(m 实验8 参考答案 二、实验内容与操作步骤 (二) 函数的使用 1、统计函数的使用 其中F3单元的公式为=SUM(B3:E3) ,G3单元的公式为=A VERAGE(B3:E3)。 2、条件函数的使用 ⑶其中F3单元使用的公式为: =IF(E3>=90,”A”,IF(E3>=80,”B”,IF(E3>=70,”C”,IF(E3>=60,”D”,”E”))))。 然后双击F3单元的填充柄。 ⑷具体的操作步骤及计算公式如下: (1)在区域H2:H4输入统计间距数据59.9,79.9,99.9; (2)选定作为统计结果数据的输出区域:I2:I5; (3)输入频度分析统计函数的公式:=FREQUENCY(E3:E62,H2:H4); (4)按[Ctrl]+[Shift]+[Enter] 3、文本函数的使用 ⑵其中B3单元使用的公式为 =IF(LEFT(A3,3)=”101”,”数学系”,IF(LEFT(A3,3)=”102”,”物理系”,”化学系”))。 ⑶其中F3单元使用的公式为 =MID(E3,7,4) 。 4、日期函数的使用 ⑵其中E3单元使用的公式为 =YEAR(TODAY())-YEAR(D3)+1 。 ⑶其中F3单元使用的公式为 =TODAY()-D3 。 5、财务函数的使用 ⑵其中B5单元使用的公式为 =PMT(B2/12,B3*12,B4)。 ⑶其中E5单元使用的公式为 =PMT(E2/12,E3*12,,E4)。 6、排位函数的使用 ⑵其中G2单元使用的公式为 =F2-$B$10 。 ⑶其中H2单元使用的公式为 =RANK(F2,$F$2:$F$8,1) 或 =RANK(G2,$G$2:$G$8,1) 。 三、思考与练习 1、具体的操作步骤及计算公式如下: (1) 在区域F10:F13输入统计间距数据99,199,299,399; (2) 选定作为统计结果数据的输出区域:G10:G14; (3) 输入频度分析统计函数的公式:=FREQUENCY(C3:C23,F10:F13); (4) 按[Ctrl]+[Shift]+[Enter] 2、操作步骤及计算公式: 实验八 函 数(二) 参考答案 1.(sy8-1.c ) 请编写函数 fun ,其功能是:计算并输出给定数组(长度为 9)中每相邻两个元素之平均值的平方根之和。 例如,给定数组中的 9 个元素依次为 1 2.0、34.0、4.0、2 3.0、3 4.0、4 5.0、18.0、3.0、11.0,输出应为:s=35.951014。 【解题思路】 在给出的参考程序中,由于函数要求的返回值为双精度型,所以先将变量 avg 、sum 定义为双精度型,初值为 0.0,然后通过 for 循环分别求出相邻两个元素的平均值放入变量 avg 中,再使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum 中并返回。 【参考答案】 double fun(double x[9]) { int i ; double avg=0.0,sum=0.0; //将变量avg 、sum 定义为双精度型,并给其赋初值为0.0 for (i=0;i< 8;i++) { avg=(x[i]+x[i+1])/2; //通过for 循环分别求出相邻两个元素的平均值放入变量avg 中 sum+=sqrt(avg); //使用求平方根函数sqrt()对各平均值开方求和,最终结果输出到变量 sum } return sum; /*返回计算结果*/ } 2.(sy8-2.c ) 编写函数fun ,实现矩阵(3行3列)的转置(即行列互换)。例如,输入下 面的矩阵:????? ??900800700600500400300200100,程序输出: ???? ? ??900600300800500200700400100。 【解题思路】 方阵转置,只需要将左下半三角元素和右上半三角元素对换即可。 【参考答案】 int fun(int array[3][3]) { int i,j,t ; for(i = 0 ; i < 3 ; i++) for(j = 0 ; j < i ; j++) t=array[i][j], array[i][j]=arrar[j][i], array[j][i]=t ; } 3.(sy8-3.c ) 请编写函数 fun ,函数的功能是:统计一行字符串中单词的个数作为函数值返回。一行字符串在主函数中输入,规定所有单词由小写字母组成,单词之间由若干个空格隔开,一行的开始没有空格。 【解题思路】 在给出的参考程序中,若判断出当前字符为非空格,而它前面的字符是空格,则单词数累加 1;若当前字符为非空格,而其前面的字符也为非空格,则单词数不累加 1,程序细节可以参考程序的注释部分。 【参考答案】 int fun( char s[]) { int i,word=0,num=0;/*word 标志是否是单词,num 用来记录单词数*/ for(i=0;s[i]!=?\0?;i++) 实验 03 函数的应用( 2 学时) (第 3 章函数) 一、实验目的 (1)掌握函数的定义和调用方法。 (2)练习重载函数的使用。 (3)练习使用系统函数。 (4)学习使用 Visual Studio 2010 的调试功能,使用“逐语句”追踪到函数内部。 二、实验任务 3_1(习题 3-8)编写一个函数把华氏温度转换为摄氏温度,转换公式为: C=(F-32)*5/9 。 3_2 编写重载函数 Max1 可分别求取 2 个整数、 3 个整数、 2 个双精度数、 3个双精度数的最大值。 3_3 使用系统函数 pow(x, y)计算 x y的值,注意包含头文件cmath。 3_4(习题 3-13)用递归的方法编写函数求Fibonacci 级数,观察递归调用的过程。 三、实验步骤 1.(编程,习题 3-8)把华氏温度转换为摄氏温度。 编写函数 float Convert(float TempFer) ,参数和返回值都为float 类型,实现算法 C=(F-32)*5/9 ,在 main() 函数中实现输入、输出。程序名:lab3_1.cpp。 ★程序及运行结果:(注意:定义的函数头是float Convert(float TempFer) )//lab3_1 (习题 3-8 ) #includePython 实验8 函数1
MATLAB)课后实验答案[1]
实验2:函数的应用
实验二 函数的应用
实验十一指针应用二daan
实验4-1 函数的应用的答案
实验8_参考答案
面向对象实验题及答案(全)
实验十函数应用答案
实验八 函数含答案
C语言:函数的应用实验报告
c实验题目(实验1-5及答案)
大学生c语言程序设计(第四版谭洪强)实验8答案
C++语言程序设计实验答案-函数的应用
《C语言程序设计》实验.设计.习题.答案 函数
实验三 函数的应用
实验08-1参考答案
实验八参考答案
实验八 参考答案
C++语言程序设计实验答案_函数的应用.docx