当前位置:文档之家› 实验8 函数基本应用

实验8 函数基本应用

实验8 函数基本应用
实验8 函数基本应用

实验8 函数基本应用

一、实验目的

1.掌握函数声明、定义及调用的方法。

2.掌握函数实际参数与形式参数的对应关系以及数据的“值传递”方式。 3

4.学习编写简单的递归程序。 二、实验内容 1.验证性实验 (1)下列程序的执行结果是什么? #include "stdio.h" void change(int a,int b) { int t; t=a;a=b;b=t;

}

void main( )

{ int x,y;

printf("input x,y: "); scanf("%d,%d",&x,&y);

change(x,y);

printf("x=%d,y=%d\n",x,y); }

思考:为什么x 与y

的值没有互换?

(2)下列程序的执行结果是什么? #include void exam1(int); void exam2(void); int a=0; void main(void) { int a; a=15; printf("a=%d\n",a); exam1(a);

printf("a=%d\n",a); exam2( );

printf("a=%d\n",a); }

void exam1( int a)

{ printf("\ta=%d\n",a); a++;

printf("\ta=%d\n",a);

}

void exam2(void)

{ printf("\ta=%d\n",a);

a++;

printf("\ta=%d\n",a);

}

2.程序填空

(1)下列程序的功能是输出100~1000之间所有既能被3整除,又能被7整除的数。

#include

void main()

{int k;

int sele(int n);

for(k=100;k<=1000;k++)

if(sele(k))

printf("%5d",k);

printf("\n");

}

int sele(int n)

{ if(n%3==0&&n%7==0 )

return (1);

return 0 ;

}

(2)下列程序的功能是:prime()函数用于判别一个数是否为素数,在主函数输入一个整数,输出是否素数的信息。

#include

void main()

{

int number;

int prime(int number);

printf("请输入一个正整数:\n");

scanf("%d",&number);

if (prime(number))

printf("\n %d是素数. ",number);

else

printf("\n %d不是素数. ",number);

}

int prime(int num) /*此函数用于判别素数*/

{ int flag= ① ,n;

for(n=2;n

if ( ③ ==0)

flag=0;

return( ④ );

}

(3)以下程序功能是:输入一个长的正整数,将其每位数分离出来,并求其和。例如,输入650123,输出为:6+5+0+1+2+3=17。(求和采用递归实现)

#include

int sum(long n)

{ unsigned long x;

if(n<10)

① ;

else

x=sum(n/10)+ ② ;

return ③ ;

}

void main()

{ unsigned long x;

printf("请输入一个整数:");

scanf("%lu",&x);

printf("s=%d", ④ );

printf("\n");

}

3.程序改错

(1)下列程序的功能是利用自定义函数计算一无符号整数各位数字的乘积。

#include

unsigned f(unsigned num)

{unsigned k=0;★

do

{k*=num/10;★

num/=10;

}while(k);★

return k;

}

void main()

{int x;

printf("input x=:\n");

scanf("%d", x);★

printf("%d",f(x));

}

(2)以下程序的功能是:输入一个三位数,判断是否为“水仙花数”。函数flower()用以判断一个数是否为“水仙花数”,主函数main()中进行测试。

#include

int flower(int n)

{ int x=0,i,j,k;

i=(n%10);

j= (n/10/10);★

k=(n/100);

x=i*i*i+j*j*j+k*k*k;

if(x==n) return 0;

else return 1;

}

void main()

{ int n;

printf("Please intput n: ");

scanf("%f",&n);★

if(n>999||n<100)

printf("Input error!!!");

else

{if(flower(n))★

printf("%d is a flower nubmer!\n",n);

else

printf("%d isn't a flower nubmer!\n",n);

}

}

4.设计性实验

(1)写一函数判断输入年份是否为闰年,并编写主函数测试。

提示:

①该函数有一个整型参数year,若year为闰年,则返回1,否则返回0。

②判断年份year是否为闰年的条件是:若year能被4整除而且不能被100整除,则是闰年;若year能被400整除也是闰年。

(2)编写函数求出任意二个正整数的最大公约数和最小公倍数。在主函数中输入这两个数,并输出它们的最大公约数和最小公倍数。

(3)编写一个函数求1+2+3+…100。要求用递归调用的方法实现,并写一个主函数输出结果。

(4)已知二阶Fibonacci数列:

Fib(0)=0;若n=0

Fib(1)=1;若n=1

Fib(n)= Fib(n-1)+ Fib(n-2) 其他情况

定义递归和非递归函数求Fib(n)。

浙师大 C语言 实验10函数2+答案

上机实验十函数与程序结构 学号姓名 一.目的要求 1.掌握函数声明、定义和调用的基本方法 2.掌握用递归函数解决问题的方法。 3.掌握局部变量与全局变量的作用域区别 4.掌握数组作为函数参数的基本方法。 二.实验内容 【实验题1】 分析如下: Line 2中的变量k是_全局_变量;而Line 10中的k是__局部_变量。程序输出结果是k=1,k=1,k=1 。 如果将第10行改为“static int k=1;变量,程序输出结果是k=1,k=2,k=1 。 如果将第10行改为“k=1; ”,该k变量,程序输出结果是k=1,k=1,k=2 。 如果将第10行改为空语句“; ”后,,程序输出结果是k=1,k=2,k=3 。 【实验题2】程序填空:输入一个整数n (1≤n≤10),再输入n个整数,将它们按升序排列后输出。 程序分析_选择法: (1)由于n最大是10,需要定义一个长度为10的整型数组a; (2)整个排序只需要确定前n-1个元素(a[0] ~a[n-2]),最后一个元素a[n-1]无需另外处理; (3)在确定a[i](i=0,1,…,n-2)时,先将a[i]本身看成最小,即令k=i, 并将a[k]与后面的元素a[j](j=i+1, i+2, …, n-1)一一比较, 如果a[j]< a[k],则更新k的值:k =j。找出对应于下标i的最小元素a[k]后,交换a[i]与a[k]。(4)上述排序算法的代码:

运行程序,输入n: 5,输入5个整数:23 -9 14 0 -3,显示结果为: 如果是按从大到小的降序排列,语句行Line 13 应改为:if(a[k]> a[j] ) k=j; [思考题]程序填空: 将上述的程序用函数调用的方式去实现。定义一个sort()函数来实现数组的排序;在main()函数中调用sort()函数来实现数组的排序,并将结果输出。

数学实验软件

重庆科技学院 数学实验与数学软件课程设计 课程名称:菜单与对话框设计 开课学期:_2014-2015-1 学院:__ 数理学院 开课实验室:_数学实验与建模实验室_ 学生姓名: 谭云文 专业班级: 应数13-2班 __ 学号:___ 20134432214 _

实验十二 我们本次实验做的是菜单与对话框设计,所谓菜单与对话框的设计包括在图形用户界面中。而图形用户界面是由窗口、菜单、对话框等各种图形元素组成的用户界面。因为在这种用户界面中,用户的操作既生动形象,又方便灵活,这是它的一大特点。 在MATLAB中,基本的图形用户界面对象包含3类:用户界面控件对象、下 拉式菜单对象和快捷菜单对象,可以设计出界面友好、操作方便的图形用户界面。 其中MATLAB用户菜单对象是图形窗口的子对象,所以菜单设计总在某一个图形 窗口中进行。MATLAB的图形窗口有自己的菜单栏。为了建立用户自己的菜单系 统,可以先将图形窗口的MenuBar属性设置为none,以取消图形窗口默认的菜 单,然后再建立用户自己的菜单。对话框是用户与计算机进行信息交流的临时窗 口,在现代软件中有着广泛的应用。在软件设计时,借助于对话框可以更好地满 足用户操作需要,使用户操作更加方面灵活。为了更便捷地进行用户界面设计, MATLAB提供了图形用户界面开发环境,这使得界面设计在可视化状态进行,设计过程中变得简单直观,实现了“所见即所得”。 例1 一、实验目的 1. 掌握plot菜单的方法。 2. 掌握建立控件对象的方法。 3. 掌握对话框设计的方法。 二、实验内容 设计图1所示的菜单。

菜单条上仅有Plot菜单,其中有Sine Wave、Cosine Wave和Exit共3个命令。若选择了其中的Sine Wave命令,则将绘制出正弦曲线;若选择了其中的Cosine Wave命令,则将绘制出余弦曲线;如果选择了Exit命令,则将关闭窗口。 程序如下: screen=get(0,'ScreenSize'); W=screen(3);H=screen(4); figure('Color',[1,1,1],'position',[0.2*H,0.2*H,0.5*W,0.3*H],... 'Name','图形演示系统','NumberTitle','off','Menubar','none'); %plot hplot=uimenu(gcf,'Label','&Plot'); uimenu(hplot,'Label','Sine Wave','Call',... ['t=-pi:pi/20:pi;','plot(t,sin(t));',... 'set(hgon,''Enable'',''on'');',... 'set(hgoff,''Enable'',''on'');',... 'set(hbon,''Enable'',''on'');',... 'set(hboff,''Enable'',''on'');']); uimenu(hplot,'Label','Cosine Wave','Call',... ['t=-pi:pi/20:pi;','plot(t,cos(t));',... 'set(hgon,''Enable'',''on'');',... 'set(hgoff,''Enable'',''on'');',... 'set(hbon,''Enable'',''on'');',... 'set(hboff,''Enable'',''on'');']); uimenu(hplot,'Label','&Exit','Call','close(gcf)'); 三、运行结果 1.点击SineWave函数将出现我们所需要的图像,如图: 2点击CosineWave函数将出现我们所需要的图像,如图:

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 =

实验八 公式、序列及函数的使用

实验八公式、序列及函数的使用 一、实验目的 1.熟练掌握序列填充及公式复制的方法; 2.掌握常用函数的功能及使用方法,并能用它们来解决一些实际问题。 二、实验内容与操作步骤 在Excel环境下完成以下各操作: (一)序列填充及公式的使用 1.在Excel中创建一个空白工作簿 2.利用Excel提供的数据填充功能,在Sheet1工作表中输入以下数据: ⑴在区域A1:A9中从上到下填入:2,4,6,8,10,12,14,16,18 ⑵在区域B1:B9中从上到下填入:1,2,4,8,16,32,64,128,256 ⑶在区域C1:C12中从上到下填入:JAN,FEB,MAR,APR,MAY,JUN,JUL,AUG,SEP,OCT,NOV,DEC ⑷在区域D1:D7中从上到下填入:星期日,星期一,星期二,星期三,星期四,星期五,星期六 3.在Sheet2工作表中,利用公式计算二次函数ax2+bx+c的值,其中a=2,b=3,c=5,x从-3到4变化,每隔0.5取一个函数值。操作方法写出如下: 4.把工作簿以E81.XLS为文件名存入D:\EX8中。 (二)函数的使用 在Excel环境下打开D:\EX8\E82.XLS文件,依次完成以下各操作后按E83.XLS为文件名存入D:\EX8中。 1、统计函数的使用 ⑴单击“统计函数”工作表;

⑵在区域F3:G8中用“统计函数”计算出各分店的统计值。 操作方法是:先在F3单元及G3单元输入的计算公式,然后选定区域F3:G3后双击其填充柄。其中F3单元的公式为,G3单元的公式为。 ⑶在区域B9:E12用“统计函数”计算出各季度的统计值。 2、条件函数的使用 ⑴单击“条件函数”工作表。 ⑵计算出各学生的平均分; ⑶给定各学生的成绩等级,规则如下:平均分≥90为“A”,80≤平均分<90为“B,70≤平均分<80为“C”,60≤平均分<70为“D”,平均分<60为“E”。以此规则在区域F3:F62用IF函数确定各学生的等级。 ⑷用FREQUENCY函数在区域I2:I5中统计出平均分0~59,60~79,80~99,100各分数段的学生人数。 3、文本函数的使用 ⑴单击“文本函数”工作表; ⑵在区域A2:F32给出的数据清单中,编号的前3位为系别信息,101为数学系,102为物理系,103为化学系,据此在区域B3:B32用函数求出每位教师的系别。其中B3单元使用的公式为。 ⑶已知身份证号的第7至第10位数为出生年份,据此在区域F3:F32用函数求出每位教师的出生年份。其中F3单元使用的公式为。 4、日期函数的使用 ⑴单击“日期函数”工作表; ⑵在区域A2:F32给出的数据清单中,在区域E3:E32用日期函数求出每位职工的工龄。其中E3单元使用的公式为。 ⑶在区域F3:F32用日期函数求出每位职工的工作天数(即自参加工作以来已经过的总天数。其中F3单元使用的公式为。 5、财务函数的使用 使用 PMT 函数完成以下有关的操作: ⑴单击“财务函数”工作表; ⑵某企业向银行贷款5 万元,准备4年还清,假定当前年利率为 4 % ,在 B5 单元 计算每个月应向银行偿还贷款的数额,根据条件在 B2 : B4 补充所需内容。其中单元格B5 使用的公式为。 ⑶假定当前年利率为 5 %,为使 5 年后得到 10 万元的存款,在 D5 单元计算现在开

实验(7)-函数-参考答案

C语言程序设计实验教学(7) 【实验目的】函数是C程序的基本组成部分,学习函数的设计和调用是很重要的。实验目的是掌握函数的定义、变量的作用域和函数的调用。 【实验要求】实际应用程序通常是由多个函数构成的,要求将常见的功能模块用函数形式实现,并学会在主函数或其他函数中调用定义的函数。要学会函数声明。 【实验课时】6.0 【实验内容】 编写函数fun(n),n为三位自然数,判断n是否为水仙花数,是返回1,否返回0。编写main 函数,输入一个数num,调用fun(num)函数,并输出函数的返回值。 #include "stdio.h" int fun(int n) {int a,b,c; a=n%10; b=n/10%10; c=n/100; if(a*a*a+b*b*b+c*c*c==n) return(1); else return(0);} main() {int num; scanf("%d",&num); while(num<100||num>=1000) {printf("please enter the num again! (num>=100&&num<1000) \n"); scanf("%d",&num);} if(fun(num)==1) printf(" yes \n"); else printf(" no \n");} 编写函数ss(n), 判断n是否为素数,是返回1,否返回0。编写main函数,输入一个数num,调用ss(num)函数,并输出函数的返回值。 #include "stdio.h" int ss(int n) {int i; for(i=2;i=n) return(1); else return(0);} main() { int num; scanf("%d",&num); if(ss(num)==1) printf(" yes \n"); else printf(" no \n");} 编写一个函数fun(n),计算n!,并编写main函数测试,在main函数中输入num,调用fun(num),输出计算的结果。 #include "stdio.h" long fun(int n) {long s=1; int i; for(i=1;i<=n;i++) s=s*i; return(s);}

数学应用软件实验报告(mathematica实验程序)1

徐州工程学院数理学院数学应用软件实验报告 课程(实验序号)数学应用软件实验 1 实验地点、日期数学建模机房2011 年 2 月23 日主要仪器设备计算机 使用的软件名称Mathematica 实验类型演示性实验 验证性实验 综合性实验√设计性实验 研究性实验 班级:姓名:孙娅学号:20090402223 一、实验题目名称:函数】变量和表达式 二、实验目的: 理解变量和算式、内核与前端处理器构成的人机对话系统,了解计算的精度问题个Mathematica使用中的几个问题。熟练掌握数的表示和计算、常用数学函数,会绘制简单函数的图形。通过上机初步了解数学应用软件,Mathematica的各种界面。 三、实验内容: 练习题1 1.计算下列各式的数值: (1) Log[2,10] Log[10]/Log[2] (2) Sqrt[Pi^2+1] 1 2 (3) Log[10,3264] Log[3264]/Log[10] (4) E^E ??/2 (5) Cos[135^0] Cos[1] (6) Sin[Pi^2/2] Sin[π2/2] (7) ArcSin[1/2] π/6 (8) 200! 7886578673647905035523632139321850622951359776871732632947425332443594499634033429203042 8401198462390417721213891963883025764279024263710506192662495282993111346285727076331723 7396988943922445621451664240254033291864131227428294853277524242407573903240321257405579

实验6函数习题及答案

实验6 函数 班级:学号: 姓名:日期: 一、实验目的 (1)掌握定义函数的方法; (2)掌握函数实参与形参的对应关系,以及“值传递”的方式; (3)掌握函数的嵌套调用和递归调用的方法; (4)掌握全局变量和局部变量、动态变量和静态变量的概念和使用方法; (5)学习对多文件的程序编译和运行。 二、实验内容 1.阅读下面程序,写出程序运行结果,并且上机进行验证。 (1)a1.cpp 变量的虚实耦合,实现的是值传递,是单向传递 #include "stdio.h" int swap(int a,int b) { int c,s; c=a; a=b; b=c; s=a+b; return s; } void main() { int a,b,s; a=3;b=4; s=swap(a,b); printf("a=%d b=%d s=%d\n",a,b,s); } (2)a2.cpp

将十进制数26的各位数字相乘 #include "stdio.h" int fun(int num) { int k=1; do { k*=num %10; / num/=10; }while(num); return(k); } void main() { int n=26; printf("%d\n",fun(n)); } (3)a3.cpp 变量的作用域,当在函数内定义了与全局变量同名的局部变量时,全局变量被屏蔽#include "stdio.h" int a=3,b=5,c; void f(int b) { c=a+b; printf("%d %d %d\n",a,b,c); } void main() { int a=8; f(3); printf("%d %d %d\n",a,b,c); } (4)a4.cpp 递归,将十进制11转换为二进制 #include "stdio.h" void dtob(int n) { int i;

数学软件实验报告实验七

数学软件实验报告 学院名称:理学院专业年级: 姓名:学号: 课程:数学软件实验报告日期:2014年12月6日 实验七SIMULINK建模与工具箱的使用 一.实验目的 MATLAB 具有丰富的可用于各种专业方向的工具箱,这些工具箱已经形成了MATLAB 的系列产品。特别是动态仿真建模工具箱,更是成为许多工具箱的基础。本次实验的目的就是要使大家了解MA TLAB工具箱使用的基本方法,以及如何查询工具箱,主要掌握系统优化工具箱的使用和系统动态仿真建模工具箱的使用。 二.实验要求 MATLAB系统的工具箱十分的丰富,并且随着版本的不断升级,其工具箱还在不断地增加。通过本次实验,要求了解MA TLAB系统工具箱的分类与查询,会使用系统优化工具箱解决一些实际问题。能建立系统仿真方框图,并进行系统仿真模拟。 三.实验内容 最优化工具箱 非线性最小化函数 fgoalattain 多目标达到优化 constr 有约束最小化 fminbnd 有边界最小化 fminunc使用梯度法的无约束最小化 fminsearch 使用简单法的无约束最小化 fzero 非线性方程求解(数量情况) fsolve 非线性方程求解 lsqnonlin 非线性最小二乘 fminimax 最小的最大解 fseminf 半无穷区间最小化 2.矩阵问题的最小化 linprog 线性规划

quadprog 二次规划 lsqnonneg 非负线性最小二乘 lsqlin 约束线性最小二乘 第十章 10.1线性优化 >> f=[-5 4 2]; >> a=[6 -1 1;1 2 4]; >> b=[8 10]; >> 1b=[-1 0 0]; >> ib=[-1 0 0]; >> ub=[3 2]; >> [x,fval,exitflag,output,lambda]=linprog(f,a,b,[],[],ib,ub) Optimization terminated. x = 1.3333 0.0000 0.0000 fval = -6.6667 exitflag = 1 output = iterations: 7 algorithm: 'large-scale: interior point' cgiterations: 0 message: 'Optimization terminated.' constrviolation: 0 lambda = ineqlin: [2x1 double]

实验十一指针应用二daan

实验十一指针应用(二) 一?实验目的 1.了解指针与函数的关系并能够初步利用指针处理函数问题。 2.了解指向数组的指针的概念及其使用方法。 3.了解指向指针的指针的概念及其使用方法。 二?实验学时数 1学时 三?实验步骤 (一)阅读程序 #include #include fun(char *s) {char a[7]; s=a; strcpy(a,"look"); puts(s); } main() {char *p; fun(p); 2.#include 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;

MATLAB程序设计及应用(第二版)课后实验答案

Matlab 课后实验题答案 实验一 MATLAB 运算基础 1. 先求下列表达式的值,然后显示MATLAB 工作空间的使用情况并保存全部变量。 (1) 0 12 2sin851z e =+ (2) 221 ln(1)2z x x = ++,其中2120.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) 22 42011 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) 2. 已知:

1234413134787,2033657327A B --???? ????==???? ????-???? 求下列表达式的值: (1) A+6*B 和A-B+I (其中I 为单位矩阵) (2) A*B 和A.*B (3) A^3和A.^3 (4) A/B 及B\A (5) [A,B]和[A([1,3],:);B^2] 解: M 文件: A=[12 34 -4;34 7 87;3 65 7];B=[1 3 -1;2 0 3;3 -2 7]; A+6.*B A-B+eye(3) A*B A.*B A^3 A.^3 A/B B\A [A,B] [A([1,3],:);B^2] 3. 设有矩阵A 和B 1234 53 166789101769,11 121314150 23416171819209 7021222324254 1311A B ???? ????-??? ?????==-??? ? ???????????? (1) 求它们的乘积C 。 (2) 将矩阵C 的右下角3×2子矩阵赋给D 。 (3) 查看MATLAB 工作空间的使用情况。 解:. 运算结果: E=(reshape(1:1:25,5,5))';F=[3 0 16;17 -6 9;0 23 -4;9 7 0;4 13 11]; C= E*F H=C(3:5,2:3) C = 93 150 77

实验8_参考答案

实验8指针与引用(2) 请将自己报告部分,文字和程序代码,加粗 完成下面实验内容和实验要求。 自测题 1.编写函数实现字符串函数strcmp()的功能。 要求:使用指针操作完成题目 ⑴程序代码如下,请补充完整,使程序能运行且运行正确。 #include #include using namespace std; int My_strcmp(char *str1, char *str2) //声明两个字符指针变量str1和str2 { while (*str1==*str2&&*str1!='\0'&&*str2!='\0') // 当对应字符相等且两个字符串未结束时循环,注意*str1和*str2之间是“==”不是“=”,并且两个字符串都要判断是否结束循环{ str1++; str2++;// 将str2指针指向下一个字符 } return (*str1-*str2); /*返回字符串比较结果,根据主函数中r的分支判断确定应该返回的结果*/不要写成str1-str2,这样变成指针值相减,没有意义,另外写成*str1>*str2?1:-1也是可以的 } int main() { char s1[50], s2[50]; cout << "please input the first string : "; cin >> 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)

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()

实验八 函数含答案

实验八函数 【目的与要求】 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"); }

实验十函数应用答案

实验十函数应用 一?实验目的 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); }

实验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="<

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这六个数,记录

数学软件实训报告

数学软件应用实训 实训报告 学生姓名韩* 学号13090***** 班级信计1302班 成绩 指导教师 数学与计算机科学学院 2015年12月15日

实训报告评阅

1特殊函数与图形 问题背景与实验目的 著名的Riemann函数大家都很熟悉了,但是关于它的图像你是否清楚呢?除了最上面那几点,其他都很难画吧?你想不想看看下面那些“挤在一起”的点是怎样分布的呢?还有几何中的马鞍面、单叶双曲面等是怎样由直线生成的,是不是也想目睹一下呢?这些,都离不开绘图. 实际上绘图一直是数学中的一种重要手段,借助图形,往往可以化繁为简,使抽象的对象得到明白直观的体现.比如函数的基本性质,一个图形常可以使之一目了然,非常有效.它虽不能代替严格的分析与证明,但在问题的研究过程中,可以帮助研究人员节约相当一部分精力.此外,它还可以使计算、证明、建模等的结果得到更明白易懂的表现,有时,这比科学论证更有说服力. 同时,数学的教学与学习过程也离不开绘图.借助直观的图形,常可以使初学者更容易接受新知识.如数学分析中有不少函数,其解析式着实让人望而生畏,即使对其性质作了详尽的分析,还是感到难明就里;但如果能看到它的图形,再配合理论分析,则问题可以迎刃而解.又如在几何的学习中,会遇到大量的曲线与曲面,也离不开图形的配合. 传统的手工作图,往往费力耗时,效果也不尽理想.计算机恰恰弥补了这个不足,使你可以方便地指定各种视角、比例、明暗,从各个角度进行观察. 本实验通过对函数的图形表示和几个曲面(线)图形的介绍,一方面展示它们的特点,另一方面,也将就Matlab软件的作图功能作一个简单介绍.大家将会看到,Matlab的作图功能非常强大. 实验内容 数学分析中,特别是积分部分,我们接触了不少有趣的函数,由于其中有的不是一一对应的,用上面的方法无法画出它们的图像,这时就只能用参数了. 此外还有些图形只能用参数来画,比如空间曲线,在计算机上不接受“两个曲面的交线”这种表示,所以也只能用参数来实现. 用参数方式作图的关键在于找出合适的参数表示,尤其是不能有奇点,最好也不要用到开方.所以要找的参数最好是有几何意义的.当然这也不可一概而论,需要多积累经验. 实验步骤 1.做出下图所示的三维图形:

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