当前位置:文档之家› 实验十函数应用答案

实验十函数应用答案

实验十函数应用答案
实验十函数应用答案

实验十函数应用

一?实验目的

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); }

Python 实验8 函数1

实验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. 先求下列表达式的值,然后显示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 ?≤=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 =

实验2:函数的应用

实验项目:函数的应用 实验目的: (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=" < main() {int a[5]={2,4,6,8,10},*p,**pp; p=a; pp=&p; printf("%d",*p++); printf("%3d\n",**pp); }

3. #include main() {char *str[]={"Pascal","C language","Cobol","Dbase"}; char **p; int k; p=str; for(k=0;k<4;k++) printf("%s\n",*(p++)); 4. #include main() {int a[2][3]={2,4,6,8,10,12},(*p)[3],i,j; p=a; scanf("%d,%d",&i,&j); printf("a[%d][%d]=%d",i,j,*(*(p+i)+j)); } (二)调试程序 要求:分析下列程序是否正确,如有错,错在哪儿?应如何改正?如正确,运行结果如何?上机调试之。 1.调试下列程序,使之具有如下功能:任意输入2个数,调用两个函数分别求:⑴ 2个数的和,⑵ 2个数交换值。要求用函数指针调用这两个函数,结果在主函数中输出。 行号sum(int a,int b,int c) 1{ c=a+b; 2 return c;

实验4-1 函数的应用的答案

实验4 函数的应用 【实验目的】 1掌握函数声明、定义和调用的方法; 2了解函数调用的实参与形参的传递,以及参数默认值的设置。 3掌握重载函数的实现方法。 4理解递归和嵌套函数的概念、定义与调用。 【实验内容】 ⒈分别输入整数半径和实数半径,使用函数重载计算圆的面积。 #include #define PI 3.14 int area(int); float area(float); void main() { int r1; cout<<"Input a integer r="; cin>>r1; cout<<"area="<> s1; cout << "please input the second string : "; cin >> s2; int r; r = My_strcmp(s1, s2); // 函数调用返回值赋值给r if (r>0) cout << s1 << " is larger!" << endl; else if (r<0)

面向对象实验题及答案(全)

实验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 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); }

实验八 函数含答案

实验八函数 【目的与要求】 1.掌握C语言函数的定义方法、函数的声明及函数的调用方法。 2.了解主调函数和被调函数之间的参数传递方式。 【上机内容】 【一般示例】 【例1】将打印18个"*"组成星形线定义为一个返回值和形参列表都为空的函数,通过主函数调用它。 #include void Star(void) //画星形线。函数没有返回值,形参列表也为空 { int i; for(i=1;i<=18;i++) printf("*"); //18个"*"组成星形线 printf("\n"); return ; //返回值类型为void,return后不带表达式,此句可省略 } int main() { Star( ); //单独的函数调用语句,实参表为空,但必须保留括号 printf("I love C language!\n"); Star( ); return 0; } 【例2】调用prime 函数以每行5个素数的格式输出100到200之间的所有素数。

#include #include int prime(int m) //判断素数函数定义 { int i,k,f=1 ; //函数内定义3个变量 if (m==1) //形参若为1 f=0 ; //形参若为1,非素数 k=(int)sqrt(m); for (i=2; i<=k;i++) if (m%i==0) //m被某除数整除 f=0 ; //则不是素数 return f ; //用return语句返回 } //函数体结束 int main( ) { int i,count=0; for (i=101;i<200;i=i+2) //用i作为循环控制变量,从101开始,步长为2 if (prime(i)) //对每一个i,调用prime函数判断它是否为素数 { printf("%5d",i); //如果是素数,输出该素数i count++ ; //素数个数加1 if (count%5==0 ) //每输出5个素数换一行 printf("\n"); }

C语言:函数的应用实验报告

课程名称:结构化程序设计与C语言开课实验室:年月日 一、实验目的 用C语言编写和调试函数的程序。从而对函数的定义、调用、全局变量的灵活运用有比较深入的了解。 二、内容及结果 1、程序一素数函数 1)程序要求:写一个判断是否是素数的函数,在主函数输入一个整数,调用它后输出结果。2)代码: #include #include int prime(int n) { int i,k; k=sqrt(n); for(i=2;i<=k;i++) if(n%i==0) break; if(i<=k) return 0; else

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 int p(int n,int x); void main() { int n,x; scanf("%d",&x); for(n=0;n<=10;n++) printf("p(%d,%d)=%d\n",n,x,p(n,x)); } int p(int n,int x) { if(n==0) return 1; else if(n==1) return x; else return((2*n-1)*x-p(n-1,x)-(n-1)*p(n-2,x))/n; } 3)运行截图:

c实验题目(实验1-5及答案)

实验一顺序结构的程序设计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 main() { int x,inversed,hundred,ten,indiv; printf("please input x:\n"); scanf("%d",&x); indiv=x%10; ten=((x-indiv)/10)%10; hundred=(((x-indiv)/10-ten)/10)%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'); } 实验二选择结构的程序设计 1.编程计算下面的分段函数。 4x-8 -1≤x<0 y= 3x2+10x-1 0≤x<1 8x3-3x2+2x-1 1≤x<2 (1)事先编好程序和流程图。要求用if语句结构实现,注意数据类型和输入提示语句。#include main ( ) { float x,y; printf ("input x:\n"); scanf ("%f",&x); if (x>=-1&&x<2) { if (x>=-1&&x<0) y=4*x-8; else if (x>=0&&x<1) y=3*x*x+10*x-1; else y=8*x*x*x-3*x*x+2*x-1; printf("y=%10.2f",y); } else printf ("DA TA ERROR!"); } (2)将程序运行六遍,分别从键盘上输入-1,-0.5,0,0.5,1,1.5这六个数,记录

大学生c语言程序设计(第四版谭洪强)实验8答案

实验八 函 数(二) 参考答案 /*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++语言程序设计实验答案-函数的应用

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 using namespace std; float Convert(float TempFer); void main(){ float f; cout<<"输入一个华氏温度值:"; cin>>f; cout<<"华氏温度"<

度的值是"< using namespace std; int Max1(int a,i n t b){

《C语言程序设计》实验.设计.习题.答案 函数

实验5 函数 姓名:学号:实验日期: 1.实验目的和要求:参见实验指导书实验八 2.实验内容和步骤: 实验内容:实验指导书中的实验八 实验步骤: 2.1.实验内容的第1题,通过本题,了解到要在单步调试时能够观察自定义的函数内部变量变化情况,单步调试如何操作: 1.在“菜单栏”中单击“组建”,然后在弹出的下划栏中选择“开始调试”,然后选择“Step Into”;或者按“F11”。 2.然后开始单步调试,按F10 提问 修改前运行结果画面: (1),请在下面粘贴运行结果画面: #include int a=3,b=5; max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a=8; printf("%d\n",max(a,b)); }

实参a是否为同一变量?不是 提问(2),请请在下面粘贴运行结果画面:#include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { extern int a,b; printf("%d\n",max(a,b)); } int a=3,b=5; 提问(3),观察结果有何变化? #include max(int a,int b) { int c; c=a>b?a:b; return(c); } main() { int a,b; printf("%d\n",max(a,b)); }

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 int fib(int n); int main() { int n,answer; cout<<”Enter number”;

实验08-1参考答案

实验八指针程序设计 班级:学号:姓名:评分: 一.【实验目的】 1、理解指针、地址和数组间的关系。 2、掌握通过指针操作数组元素的方法。 3、掌握数组名作为函数参数的编程方式。 4、进一步掌握C程序的调试方法和技巧。 二.【实验内容和步骤】 1、程序调试题 A.目标:进一步学习掌握程序调试的方法和技巧。 B.内容:有n个整数,使各数顺序往后循环移动m个位置(m void mov(int *, int, int); int main() { int m, n, i, a[80], *p; printf("Input n, m:"); scanf("%d%d",&n,&m); for(p=a,i=0;i0;j--) x[j]=x[j-1]; /* 调试时设置断点 */ x[0]=k; } } ②运行结果:(提示:通过屏幕截图,贴粘程序运行界面)。

实验八参考答案

实验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++)

C++语言程序设计实验答案_函数的应用.docx

实验 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 using namespace std; float Convert( float TempFer); void main(){ float f; cout<< " 输入一个华氏温度值:" ; cin>>f; cout<< " 华氏温度 "< using namespace std; int Max1( int a,i nt b){ cout<< " 调用函数 : int Max1(int a,int b)"<b?a:b; } int Max1( int a, int b, int c){ cout<< " 调用函数 : int Max1(int a,int b,int c)"<b ? (a>c?a:c) : (b>c?b:c); }

相关主题
文本预览
相关文档 最新文档