文档库 最新最全的文档下载
当前位置:文档库 › 实验七(函数一)

实验七(函数一)

实验七(函数一)
实验七(函数一)

实验七函数(一)

1、以下sum函数用以求a,b两数的和。在主函数中任意给定两数x,y,调用sum函数求其和。上机调试,并改正错误。

#include

main()

{ float x,y;

printf("%f\n",sum(x+y));

}

sum(float a,float b)

{ float x,y;

return(a+b);

}

分析:

A.自定义函数只能写在main函数之前或之后,不能写在其他函数内部。

B.写在main函数之前的自定义函数,可在main函数中直接调用;写在main函数之后的自定义函数,必须先声明再调用。(函数值类型为int或void的可省略声明)

C.调用函数时,必须正确传递正确的参数(参数类型、参数个数必须一致)。

参考答案:

#include "stdio.h"

main()

{ float x,y;/*变更定义后即有值,但不明确值是多少*/

float sum(float a,float b);/*调用函数前声明*/

scanf("%f%f",&x,&y);/*输入x,y的值*/

printf("%f\n",sum(x,y));/*调用函数传递二个参数,返回其和*/

}

float sum(float a,float b)/*函数类型不能省略*/

{

return(a+b);

}

2、跟踪调试以下程序,注意函数调用过程中形参、实参的关系。

#include

main()

{ int x=2,y=5; /*原代码为“int tx=2,y=5;”有误*/

int swap(int,int);

printf("(1) in main:x=%d,y=%d\n",x,y);

swap(x,y);

printf("(4) in main:x=%d,y=%d\n",x,y);

}

swap(int a,int b)

{ int t;

printf("(2) in main:a=%d,b=%d\n",a,b);

t=a;a=b;b=t;

printf("(3) in main:a=%d,b=%d\n",a,b);

}

(1)记录并分析结果;

(2)把形参a,b对应改为x,y,记录并分析结果。

分析:

A.函数内部声明的变量,只能为其函数所用,与函数外部的其他变量没有联系。即使是同名也是如此。

B.函数形参也是变量,也只能为其函数所用,与函数外部的其他变量没有联系。即使是同名也是如此。

3、预测程序输出,然后上机验证运行结果。

(2)static int x=20;

void f1(int x)

{ x+=10;

printf(" %d...f1()\n",x);

}

f2()

{ x+=10;

printf(" %d...f2()\n",x);

}

main()

{ int x=10;

f1(x);

f2();

printf(" %d....main()\n",x);

}

分析:

A.全局变量与局部变量同名,使用的是局部变量。

B.f1中使用的是形参x,与全局变量和主函数中的变量x没有关系。

C.f2中使用的是全局变量。

D.主函数中使用的是局部变量。

参考答案:

20...f1()

30...f2()

10...main()

(3)main()

{ int i;

for(i=1;i<=4;i++)

f(i);

}

f(int j)

{ static int a=10;

int b=1;

b++;

printf(" %d+%d+%d=%d\n",a,b,j,a+b+j);

a+=10;

}

分析:静态变量分配内存后,其生存期与主函数相同,但只能用在定义它的函数内。并且,第二次调用定义它的函数时,不再为其分配内存。因此,除第一次调用f函数外,以后调用该函数时语句“static int a=10;”将不发生作用。注意这是与动态变量不同的。每次调用函数时,其动态变量均会重新分配内存。

参考答案:

10+2+1=13

20+2+2=24

30+2+3=35

40+2+4=46

4、程序填空

(2)求1!+2!+……+10!。

main()

{ long s=0,i,mm(int k);

for(i=1;i<11;i++)

s=s+mm(i);

printf(" %ld",s);

}

long mm(int k)

{ long t=1,j;

for(j=1;j<=k;j++)

_______________;

________________;

}

分析:求阶乘的方法是逐项累积。本题是用循环实现的。

参考答案:

t*=j

return t

5、编程。

(1)用到数组,未学习,不做。

(2)定义函数int f(int x)判断x是否为素数。若是则函数返回1,否则返回0。

参考答案:

int f(int x)

{ int k;

for(k=2;k

if(x%k==0)return 0;

return k==x;

}

(3)定义函数int f(int n)求n!。要求用函数的递归调用方法。

参考答案:

int f(int n)

{ if(n==1)return 1; return n*f(n-1); }

实验七EXCEL 公式与函数

实验七EXCEL公式与函数 一﹑实验目的 1熟练掌握Excel中公式的应用。 2熟练掌握Excel中函数的应用。 二﹑基本知识 Excel具有强大的计算和处理数据功能。在工作表中无论输入简单的公式还是复杂的公式,应用内部函数,在瞬间得到计算结果,为用户估算和分析数据提供结果和解决方案。 三﹑实验内容 1打开工作簿文件table.xls,将下列要求处理数据表格。 表7.1 职工号姓名入公司时间基本工资补贴 200201宋大纲1991-3-440050 200202黄惠惠1983-6-760030 200203翁光明1986-7-770060 200204钱宝方1999-12-154093 200207周甲红1994-7-570056 200208叶秋阳1997-4-468954 200209方昌霞1988-12-422925 200210张之刚1989-9-555998 200211王胜平1987-7-755455 200212傅海英1989-9-845650 200213骆程琳1986-10-378960 2在工作表中添加一列“工龄”,工龄计算公式:2012-year(入公司时间)。 3在工作表中添加一列“奖励后工资”,奖励办法:基本工资>500者,加200,否则加150。提示:利用IF函数。 4在工作表中添加一列“实发工资”,实发工资=奖励后工资+补贴。 5在D15单元格计算出最低工资值。 6在Sheet3中根据下列已知数据建立表。 表7.2 元亨简单科技产业有限公司2007年销售统计表(万元) 公司名称第一季度第二季度第三季度第四季度 北京分公司256.56240.56195.83310.5 上海分公司185.45205.45172.85250.68 天津分公司150.46180.62140.87215.52 深渊分公司225.55255.45197.68265.56

实验7 函数——函数的定义和调用

淮海工学院计算机科学系实验报告书 课程名:《C语言程序设计A 》 题目:实验7 函数 ——函数的定义和调用 班级:软嵌151 学号:2015123349 姓名:陈正宁

1、实验内容或题目 (1)编写函数求一元二次方程的根,并在main主函数中调用该函数。 (2)编写函数fac(int n)求n!,并在main主函数中进行调用,输出6!的值。 (3)写一个判别素数的函数,在主函数中输入一个整数,输出是否为素数的信息。 2、实验目的与要求 (1)要求熟练掌握函数的定义和调用,熟悉函数返回值的使用。 (2)熟悉函数调用的方式和过程。 3、实验步骤与源程序 ⑴实验步骤 (1)、

N

⑵源代码 (1)、 #include #include void root(float a,float b,float c) { float delt; delt=b*b-4*a*c; if(a==0) printf("该方程不是一元二次"); else if(delt>0) printf("x1=%f,x2=%f\n",(-b+sqrt(delt))/(2*a),(-b-sqrt(delt))/(2*a)); else if(delt==0) printf("x1=x2=%f\n",-b/(2*a)); else printf("此方程无实数根\n"); } void main() { float a,b,c; printf("请输入方程的实系数[a b c enter]\n"); scanf("%f %f %f",&a,&b,&c); root(a,b,c); } (2)、 #include long fac (int n) { int i; long f=1; for(i=1;i<=n;i++) f=f*i; return f; } void main() { int n;

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

实验7-2-函数调用

实验7-2 函数(二) 1 【实验目的】 (1)掌握函数的嵌套调用的方法 (2)掌握函数的递归调用的方法 (3)掌握全局变量和局部变量的概念和用法 【实验要求】 (1)熟练掌握函数的嵌套调用的方法 (2)熟练掌握函数的递归调用的方法 【实验环境】 (1) Microsoft XP操作系统 (2) Microsoft VC++ 6.0 【实验内容】 1、素数https://www.wendangku.net/doc/fb16720723.html,/acmhome/problemdetail.do?&method=showdetail&id=1098描述:输出100->200之间的素数的个数,以及所有的素数。 输入:无 输出:100->200之间的素数的个数,以及所有的素数。 样例输入:无 样例输出:

21 101 103 ... 197 199 2、字符串逆序https://www.wendangku.net/doc/fb16720723.html,/JudgeOnline/problem.php?id=1499 题目描述:写一函数,使输入的一个字符串按反序存放,在主函数中输入输出反序后的字符串。 输入:一行字符 输出:逆序后的字符串 样例输入:123456abcdef 样例输出:fedcba654321 3、字符串拼接https://www.wendangku.net/doc/fb16720723.html,/JudgeOnline/problem.php?id=1500 题目描述:写一函数,将两个字符串连接 输入:两行字符串 输出:链接后的字符串 样例输入: 123 abc 样例输出 123abc 4、输出元音https://www.wendangku.net/doc/fb16720723.html,/JudgeOnline/problem.php?id=1501

实验七 函数

实验七函数(一) 1.实验目的 (1)熟悉定义函数的方法 (2)熟悉声明函数的方法 (3)熟悉调用函数时实参与形参的对应关系,以及“值传递”的方式 (4)学习对多文件的程序的编译和运行 2.实验内容 编程序并上机调试运行之 (1)写一个判别素数的函数,在主函数输入一个整数,输出是否素数的信息 本程序应当准备以下测试数据: 17,34,2,1,0。分别运行并检查结果是否正确。要求所编写的程序,主函数的位置在其他函数之前,在主函数中对其所调用的函数作声明。进行以下工作:

<1>输人自己编写的程序,编译和运行程序,分析结果 <2>将主函数的函数声明删掉,再进行编译,分析编译结果 <3>把主函数的位置改为在其他函数之后,在主函数中不含函数声明 <4>保留判别素数的函数,修改主函数,要求实现输出100~200之间的素数(2)写一个函数,将一个字符串中的元音字母复制到另一字符串,然后输出 <1>输人程序,编译和运行程序,分析结果 <2>分析函数声明中参数的写法。先后用以下两种形式

i: 函数声明中参数的写法与定义函数时的形式完全相同,如 void cpy(char s[ ],char c[ ]); ii:函数声明中参数的写法与定义函数时的形式基本相同,但省略写数组名。如: void cpy(char[ ],char[ ]) ; 分别编译和运行,分析结果。 思考形参数组为什么可以不指定数组大小。 <3>如果随便指定数组大小行不行,如: void cpy(char s[40 ],char [40]) 请分别上机试一下。 (3)输人10个学生5门课的成绩,分别用函数实现下列功能: <1>计算每个学生平均分; <2>计算每门课的平均分; <3>找出所有50个分数中最高的分数所对应的学生和课程

实验7 过程和函数

《数据库开发技术》课程之实验七 PL/SQL过程和函数 1、实验目的 1.掌握正确使用异常处理的方法。 2.掌握局部(本地)过程和存储过程的正确使用方法。 3.掌握局部(本地)函数和存储函数的正确使用方法。 2、实验内容和要求 1. 创建一个显示EMP表中雇员总人数的存储过程。然后在程序块 中和SQL*Plus环境中调用该存储过程。 执行结果: 雇员总人数为:17 2. 编写一个存储函数函数,用于判断DEPT表中某一编号的部门是 否存在,若存在此部门编号,则返回TRUE,否则返回FALSE。 3. 编写一过程,调用第2题的函数判断某一编号的部门是否存在, 存在则输出该部门员工的姓名、工作,否则提示不存在此部门 或此部门无员工。 4. 调用第2题的存储函数,查询并显示30号部门的人数。要求函数 体内有对不存在部门的异常处理,给用户的错误指示信息是: 该部门不存在! 5. 有一个权限控制的表中有三个字段,分别存放用户姓名、密码 和权限级别。创建一个用户登录存储函数,用户登录时核对用 户名和密码,正确则函数返回真,否则返回假。要求有适当的 异常处理,还要求进行适当的测试以验证函数的正确性。Create table login(uname varchar(12), pw varchar(12), right_lel varchar(12)); insert into login values('xiaoli','12345','DBA'); insert into login values('zhangsan','zzz','GUEST'); --登录函数测试 输入 user_name 的值: xiaoli 输入 password 的值: 12345 登录成功! PL/SQL 过程已成功完成。 6. *阅读、理解并执行以下程序,并在注释处完成填空,指明当条

实验七 公式与函数的使用

实验七公式与函数的使用 2.1实验内容 利用公式、函数对图2-1所示的“学生成绩表”实现自动计算,统计出每个学生的总分、平均分、是否通过、等级;统计各科的最高分、最低分;统计所有学生成绩的通过率、优秀率。 要求: 1.利用函数产生学生的“是否通过”结果:平均分在60分以上计为“是”,60分以下计为“否”。 2.“等级”结果分三档:平均分在80分以上计为“优秀”,60-80之间为“合格”,60分以下为“不合格”。 3.“通过率”是计算“是否通过”结果为“是”的学生占总人数的百分比。 4.“优秀率”是计算“等级”为“优秀”的的学生占总人数的百分比。 图2-1 学生成绩表 2.2 实验目的 熟练掌握工作表中公式、常用函数的使用。 熟练掌握公式的复制操作。 2.3 实验步骤 2.3.1新建工作薄,建立工作表 启动Excel2003后,在新工作簿的Sheet1中建立如图2-1所示的学生成绩表。在相应的单元格中输入数据。 2.3.2使用公式计算总分 在H3单元格中输入公式“=SUM(D3:G3)”, 按下Enter键或单击确定按钮,计算出第1个学生的总分。 当然,也可输入公式“=D3+E3+F3+G3”,或者使用“自动求和”。

利用“填充柄”复制公式到H3:H12,计算出其他学生的总分。 2.3.3使用函数计算平均分 1.使用“函数向导”输入函数 ①选定单元格I3,单击“插入”菜单 “函数”命令,或者单击工具栏上的“插入函数”按纽,屏幕显示“粘贴函数”对话框,如图2-2所示。 ②在“选择函数”列表框中选择函数“AVERAGE”,单击“确定”。 ③在弹出的“函数参数”对话框中,如图2-3所示, 单击“Number1”右侧的箭头,用鼠标在工作表中选定区域D3:G3,单击“确定”,计算结果显示在单元格中。 图2-2 “插入函数”对话框 图2-3 “函数参数”对话框 2.使用“自动求和”命令按钮输入函数 ①选定单元格I3,按下键盘上的Delete键,先删除单元格中的内容;再单击自动求和按钮右侧的向下箭头,弹出“常用函数”菜单。 ②选择“平均值”,会自动填充函数并用闪动的边框围住被选择的区域,再用鼠标选定

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

实验七 参考答案(参考答案) (1) (sy7-1.c )请编写函数fun ,它的功能是:计算并输出n (包括n )以内能被5 或9 整除的所有自然数的倒数之和。例如,若主函数从键盘给n 输入20后,则输出为s=0.583333。 注意:n 的值要求不大于100。 算法分析: 使用for 循环i ,遍历n 包含n 以内的所有整数,逐一判断每个i ,是否满足条件(能被5 或9 整除),如果满足,则把它的倒数累加到累加器里。注意:i 的倒数要表示成:1.0/i; 参考子函数如下: double fun(int n) { double sum=0; int i; for(i=5;i<=n;i++) if(i%5==0||i%9==0) sum=sum+1.0/i; return sum; } (2) (sy7-2.c ) 请编写函数fun ,其功能是:根据以下公式计算s ,并计算结果作为函数值返回,n 通过形参传入。 n s ?++++?++++++=321132112111 例如:若n 的值为11时,函数的值为1.83333 算法分析: 等式右边从第二项(i=2)开始,其分母等于前一项的分母加上i ;一共有n 项;求出每项的分母,然后把每项进行累加。 参考子函数如下: float fun(int n) { float sum=1; //sum 中已经累加了第一项的值 int i,m=1; //m 表示每项的分母; for(i=2;i<=n;i++) { m=m+i; sum=sum+1.0/m; } return sum; }

(3) (sy7-3.c)请编写函数fun,其功能是:将两个两位数的正整数a、b 合并形成一个整数放在c 中。合并的方式是:将 a 数的十位和个位依次放在c 数的十位和千位上,b 数的十位和个位数依次放在c 数的个位和百位上。 例如,当a=45,b=12,调用该函数后,c=5241。 算法分析: 对一个两位数n,它的各位可以通过n%10求的,它的十位数可以通过n/10求的;所以分别用上述方法求的a和b的个位和十位,同时按照要求累加到c里。 参考子函数如下: long fun(int a, int b) { long c=0; c=a%10*1000+a/10*10+b/10+b%10*100; return c; } (4) (sy7-4.c)请编一个函数fun,函数的功能是使实型数保留2位小数,并对第三位进行四舍五入(规定实型数为正数)。例如:实型数为1234.567, 则函数返回1234.570000;实型数为1234.564, 则函数返回1234.560000。 算法分析: 先把这个数乘以100,然后再加0.5(实现四舍五入),再把这个数存放到一个长整型变量中,目的是把小数点后的小数去除,最后把这个数转换成浮点型数除以100,即可得出所的结果。 参考自定义函数如下: float fun ( float h ) { long w ; w = h * 100 + 0.5 ; return (float) w / 100 ; } (5) (sy7-5.c)请编写一个函数unsigned fun ( unsigned w ),w 是一个大于10的无符号整数,若w 是n (n ≥2)位的整数,函数求出w的低n-1位的数作为函数值返回。 例如:w 值为5923,则函数返回923;w 值为923 则函数返回23。 算法分析: 首先应求出w的位数,有一位,i就乘以10(如果有4位,i就等于10000);然后通过求模运算舍弃最高位; 参考子函数如下: unsigned fun ( unsigned w ) { int i=1;//i用来存放整数的位数

C语言程序实验七 函数

实验七函数 实验目的与要求: 1、掌握函数的定义方法和调用规则。 2、掌握在C语言程序中主调函数和被调用函数之间进行数据传递的规则。 3、了解函数的返回值及其类型,并正确使用它。 4、理解宏的概念,掌握定义无参宏和带参宏的方法。了解文件包含的概念,掌握其用法。实验内容: 实验6-1:1 int prime(int n) 实验6-2:1 x/1000%10 实验6-1:2 (0) 实验6-2:2 0 实验6-1:3 (1) 实验6-2:3 huiwen( x) 实验6-1程序运行结果: 实验6-2程序运行结果: 附实验:6-1的代码: #include int prime(int n); //函数的声明 void main() { int n; printf("请输入一个正整数n:"); scanf("%d",&n); if(prime(n)) printf("%d是素数\n",n); else printf("%d是非素数\n",n); } int prime(int n) { int i; for(i=2;i

int huiwen(int x) { int ge,shi,qian,wan; wan=x/10000; qian=x/1000%10; //分解出千位上的数 shi=x%100/10; ge=x%10; if(ge==wan&&shi==qian) return 1; return 0; //不满足回文数的条件返回一个值 } void main() { int x; printf("\n输入一个五位整数:"); scanf("%d ",&x); if(huiwen( x)) printf("yes!\n"); //调用函数huiwen()来判断是否是回文数 else printf("no\n"); } 2 程序代码: #include int fun(int x) { if(x%3==0&&(x%10==4||x/10==4||x==44)) return(1); return(0); } void main() { int i; for(i=10;i<=99;i++) if(fun(i)) printf("%d ",i); printf("\n"); } 程序运行结果: 附实验6-4代码: #include int fun(int x) { x%3==0; x%10==4||x/10==4||x==4 } void main()

实验7 编写函数过程实现数制转换

实验7 编写函数过程实现数制转换 实验目的: 1、掌握通用子过程的定义和调用方法; 2、掌握函数过程的定义和调用方法; 3、了解传值和传地址的区别。 实验内容: 1、实验要求 编写并调用函数或子过程,能实现不同进制数据之间的相互转换。 2、分析设计 从键盘输入待转换的数据,将转换结果显示在文本框中。 5、源代码 Dim x%, y% Private Sub Command1_Click() x = Val(Text1) If Text1 = "" Then MsgBox "请先输入一个十进制数!" Text1.SetFocus

Exit Sub End If If Option1 = False And Option2 = False And Option3 = False Then MsgBox "请选择进制" Exit Sub End If If Option1.Value = True Then y = 2 ElseIf Option2.Value = True Then y = 8 ElseIf Option3.Value = True Then y = 16 End If Text2 = convert(x, y) End Sub Private Sub Form_Load() Text1.Text = "" Text2 = "" Option1.Value = False Option2.Value = False Option3.Value = False End Sub Public Function convert(ByVal a%, ByVal b%) As String Dim str$, temp% str = "" Do While a <> 0 temp = a Mod b a = a \ b If temp >= 10 Then str = Chr(temp - 10 + 65) & str Else str = temp & str End If Loop convert = str End Function 实验思考: 在本实验基础上,实现各种进制之间的相互转换。

实验七函数——加密算法解读

实验七 函数——加密算法 一、实验目的 1. 掌握函数的定义、申明。 2. 掌握函数的编写要求。 3. 掌握函数的调用方法。 二、实验内容与要求 本实验主要培养、训练学生对函数的理解。输入几个字符,通过定义一个对字符进行加密处理的函数,在主函数中反复调用,输出加密后的字符。 三、实验任务分解 四、实验步骤 1. 建立工程 (1) 新建一个win32 Console Application 的工程: 打开VC++ 开发软件,从[文件]菜单中点击[新建]菜单项,出现如图所示: 在右上角的工程下输入该工程的名称,如 c7,并设置该工程所保存的路径。 最后点击确定。 (2) 当确定后会出现要你选择工程类型的对话框,如图所示:请选择一个空的工程,即第一个选项。

(3) 当单击确定后,工程建立完毕,接下来建立程序源文件,请再单击[文件]菜单下的[新建]出现原先出现的对话框,请选择“文件”选项卡中的c++ source file选项,并取名,如c7 (4)当确定后,就进入了源代码的编辑窗口,如图所示: 2. 编写主函数 (1) 加入头文件:iostream.h、conio.h、string,加入std名称空间。 (2) 写主函数,输入待加密字符。 cout<<"请输入要加密的字符:\t"; cin>>zf;

3. 编写加密函数 (1)定义函数为字符型,带1个字符型参数。 Char jmjg(char a) (2)根据传入字符的ASC码进行处理,此处将其与3取模,分别后移。 switch(a%3) { case 0 :m=a+5; case 1 :m=a+4; case 2 :m=a+2; } (3)返回处理结果。 char b=char(m); return b; 4. 主函数调用加密函数 (1) 计算输入字符的长度。 int i=strlen(zf); (2) 依次输入字符调用加密函数,此处采用从后向前取字符。 for(int i1=i-1;i1>=0;i1--) { jm[i1]=jmjg(zf[i1]); } (3) 加密后字符结束。 jm[i]='\0'; (4) 加密后字符输出。 cout<<"加密后的字符:"; cout<

C语言程设计实验与案例周信东主编实验七函数

实验5 函数 学号:姓名:实验日期: 一、实验目的和要求 (1)掌握C语言函数的定义方法、函数的声明及函数的调用方法。 (2)掌握函数实参和形参的对应关系以及“值传递”的方式。 (3)掌握函数嵌套调用和递归调用的方法。 (4)掌握全局变量和局部变量、动态变量和静态变量的定义、说明和使用方法。 二、实验内容 实验指导书中的实验七“基础部分”和“增强部分”的题目。 三、实验步骤及结果 【基础题】:Ex7-1请在下面分别插入根据题意进行修改后的运行画面,并回答问题: (1)程序修改前的运行结果: 请在此粘贴本程序运行结果的截图 (2)按第①步修改,在主函数的printf语句前加入int a=8;语句后的运行结果:请在此粘贴本程序运行结果的截图

实参a是否为同一变量?请回答 不是 (3)程序按第②步修改后的运行结果: 请在此粘贴本程序运行结果的截图 (4)程序按第③步修改,去掉关键字“extern”后再运行的结果:请在此粘贴本程序运行结果的截图

观察结果有何变化?请回答 有关键字“extern”时的结果为,无关键字“extern”是输出的值乱码,函数并没有调a,b的值。 通过本题,可以得出什么结论?请回答 在被调函数内部,通过对形式参数的操作实现对外部数据的引用。 (5)通过单步调试运行本程序,需要在程序执行过程中观察自定义的函数内部变量的变化情况,该如何操作: 请回答 (1)点击组建 (2)点击开始调试 (3)单步调试 (4)函数内部调试 Ex7-2请在下面分别插入改正错误后的源程序代码及运行成功时的画面: 源程序代码: 请在此粘贴修改后正确的程序代码。 #include #include float px(float x, int n) {

实验7-3函数(补充程序)答案

实验 ftp://172.16.53.222cad c wintc191.exe getch(); } 1. 输入一个正整数n,求1+1/2!+1/3!+……1/n!的值,要求定义 并调用函数jct(x)计算x的阶乘,函数返回值的类型是单精度浮 点型。 2.编写一个判断整数是不是水仙花数的函数jfnum (int m), 并通过调用该函数打印输入所有水仙花数。 说明:所谓水仙花数是指一个3位自然数,其各位数字的立方 和等于该数本身。例如,153就是一个水仙花数,因为 153=13+53+33。 3. 编写一个程序,其中函数int position (char str[],char x) 用于返回字符x在字符串str中第一次出现的位置(数组元素的 下标),在主函数中输入字符串str,以及字符x,并调用position 函数,将得到的位置显示在屏幕上。 例如:在主函数中执行调用语句position (“hello world”,’o’); 后显示结果为4。 4.请编一个函数int fun(int pm),它的功能是:判断pm是 否是素数。若pm是素数,返回1;若不是素数,返回0。在main 函数中通过调用fun函数找出100~200之间的所有素数,并在 屏幕输出。 1. 输入一个正整数n,求1+1/2!+1/3!+……1/n!的值,要求定义并调用函数jct(x)计算x 的阶乘,函数返回值的类型是单精度浮点型。 答: #include void main( ) { int i,n; /*变量声明1分*/ float sum; float jct(int x); sum=0;

实验七 多元函数微积分学

实验七 多元函数微积分学 【实验类型】验证性 【实验学时】2学时 【实验目的】 1. 掌握使用MA TLAB 求多元函数的偏导及高阶偏导数; 2. 通过使用MA TLAB 的一些基本功能(主要是计算功能),理解和掌握重积分、曲线积分、曲面积分的相关基本概念及其相应的计算方法; 3. 会用MA TLAB 计算立体的体积、曲面的面积等应用问题。 【实验内容】 1. 使用 MATLAB 掌握多元函数的各阶偏导数以及一元隐函数导数的方法; 2. 使用MA TLAB 掌握二重积分的直角坐标、极坐标的计算方法; 3. 使用MATLAB 掌握三重积分的直角坐标、柱面坐标、球面坐标的计算方法; 4. 使用MA TLAB 掌握曲面柱体体积的计算方法; 5. 使用MA TLAB 掌握空间曲面面积的计算方法; 6. 使用MA TLAB 掌握第一、二类曲线积分的计算方法; 7. 使用MA TLAB 掌握平面区域的计算方法; 8. 使用MA TLAB 掌握第一、二类曲面积分的计算方法; 【实验方法与步骤】(对于必须编写计算机程序的实验,要附上学生自己编写的程序) 一、实验的基本理论与方法 1、 二重积分的直角坐标计算方法: (1) 若12{(,)|,()()}D x y a x b y x y y x =≤≤≤≤,则 21()() (,)d d d (,)d b y x a y x D f x y x y x f x y y =??? ? (2)若12{(,)|,()()}D x y c y d x y x x y =≤≤≤≤,则 21() () (,)d d d (,)d d x y c x y D f x y x y y f x y x =?? ?? 2、 二重积分的极坐标计算方法:若1212{(,)|,()()}D r r r r θθθθθθ=≤≤≤≤,则 2211() () (,)d d (cos ,sin )d d d (cos ,sin )d r r D D f x y x y f r r r r f r r r θθθθθθθθθθ==?? ????

实验七 函数的应用

实验七函数的应用 一、实验目的 1. 掌握函数的定义和调用方法。 2.. 掌握函数实参与形参的参数传递关系。 二、实验任务 1.阅读、调试、运行程序,比较阅读的结果和运行的结果。 1) #include "stdio.h" void main() { int func(int a, int b); int k=4,m=1,p; p=func(k,m); printf("%d,",p); p=func(k,m); printf("%d\n",p); } int func(int a, int b) {int m=0,i=2; i+=m+1; m=i+a+b; return m; } 2) #include "stdio.h" void fun(int x, int y, int z) { z=x*x+y*y; } void main() { int a=31; fun(5,2,a); printf("%d\n",a); } 3) #include "stdio.h" int fun(int a, int b) { if(a>b) return(a); else return(b); } void main()

{ int x=3, y=8, z=6, r; r=fun(fun(x,y), 2*z); printf("%d\n", r); } 4) #include "stdio.h" void main() { void fun(int i,int j); int i=2,x=5,j=7; fun(j,6); printf("i=%d,j=%d,x=%d\n",i,j,x); } void fun(int i,int j) { int x=7; printf("i=%d,j=%d,x=%d\n",i,j,x); } 5) #include void main() {int f(int a,int b); int i=2, p; p=f(i, i+1); printf("%d\n", p); } int f(int a,int b) {int c; c=a; if(a>b) c=1; else if (a==b) c=0; else c=-1; return (c); } 6) #include int func(int a, int b) { int c; c = a + b; return c; } void main() { int x = 6, y = 7, z = 8, r; r = func((x--,y++,x+y),z--);

实验7 函数程序设计

实验7 函数程序设计 一、实验目的 1.掌握函数定义的方法。 2.掌握函数实参与形参的传递方式。 3.掌握函数的嵌套调用和递归调用的方法。 4.了解全局变量和局部变量、动态变量、静态变量的概念和使用方法。 二、实验内容 1.改错题 (1)下列sub函数的功能为:将s所指字符串的反序和正序进行连接形成一个新串放在t所指的数组中。例如,当s所指字符串的内容为“ABCD”时,t所指数组中的内容为“DCBAABCD”。纠正程序中存在的错误,以实现其功能。程序以文件名sy7_1.c存盘。 #include #include void sub( char s[], char t[] ) { int i, d; d=strlen( s ); for( i=1; i< d ; i++ ) for( i=0; i< d ; i++ ) t[i]=s[d-1-i] ; for( i=0; i #include #define ARR_SIZE = 80; #define ARR_SIZE 80 void Inverse(char str[]) void Inverse(char str[]) ; main() { char a[ARR_SIZE] ;

实验七 函数的定义及调用1

实验七函数的定义及调用 一.实验目的 1.掌握函数声明、定义和使用的方法; 2.掌握形式参数与实在参数之间的对应关系。 3.掌握函数调用时,形参、实参之间的“值传递”和“地址传递”的区别。 4.掌握函数递归调用的方法; 5.掌握全局变量、局部变量、静态变量的使用方法; 二.实验内容 1.体验实验: 写两个函数,分别求出两个整数的最大公约数和最小公倍数,用主函数调用这两个函数,并输出结果,两个整数由键盘输入。 int hcf(int u,int v)/*求两个整数u、v的最大公约数*/ { int t,r; if(v>u) {t=u;u=v;v=t;} while((r=u%v)!=0) { u=v; v=r; }

return(v); } int lcd(int u,int v,int h)/*已知最大公约数h,求u、v的最小公倍数*/ { return(u*v/h); } main() { int u,v,h,l; scanf("%d,%d",&u,&v);/*读入两个数*/ h=hcf(u,v);/*求最大公约数*/ printf("H.C.F=%d\n",h); l=lcd(u,v,h);/*求最小公倍数*/ printf("L.C.D=%d\n",l); } 要求:输入程序,上机调试,分别输入三组不同的数据,然后分析运行的结果。 2、能力培养实验: 编写一个递归函数,计算从键盘上输入的任一整数的自然数之和。 如输入n,也就是求n=1+2+3+.....+n

3、综合素质能力拓展实验: 素数是指除了能被1和自己整除的自然数。所以1不是素数,2是最小的素数。编写一个函数,用以判定一个数是否为素数。 方法:在main()函数里接受一个键盘输入的整型数,然后调用该函数,在函数中判断这个数是不是素数。并返回相关的信息给调用函数,然后在main()中输出是否为素数的信息。 (对返值处理感到困难的同学请直接在被调函数中输出是否为素数的信息)。 三.实验要求 .结合上课内容,写出程序,并调试程序,要给出测试数据和实验结果。 2.整理上机步骤,总结经验和体会。 3.完成实验报告和并上交实验程序。

实验七 函数的基本概念以及实验八

实验七函数的基本概念 一、实验目的 1、掌握函数的定义及调用方法 2、掌握函数参数的传递(传值)、形参与实参的关系以及函数声明。 3、理解局部变量的作用。 二、实验内容 1、将教材中【例2.12】改为用函数实现,编写一个用迭代法求平方根的函数。 【分析】编写一个通用的求平方根的函数,参数(形参)为待求平方根的数,返回值为该数的平方根。 由于平方数不能为负数,因此在主调函数中,需要判断输入数的正、负,为正则用该参数(实参)调用求平方根函数;为负责输出错误信息。 【程序】 #include #include using namespace std; double sroot(double a ); int main(){ double x,a; cout<<"please input a value:\n"; cin>>a; if(a<0) cout<<"input error !\n"; else{ x=sroot(a); cout<<"the square root of"<1e-7) x=(x+a/x)/2; return (x); }

2、设计一个简单的计算器程序,从键盘输入“+ 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 ); // 运算符作为字符数读入 #include using namespace std; double caculate(char op,double n1,double n2 ); int main(){ double n1,n2; char op; do{ cout<<"please input op,n1,n2"<>op>>n1>>n2; cout<

实验7 函数

实验7 函数 姓名:学号:1107082106 专业:计算机科学与技术班级:物联网 同组人:无实验日期:2011-12-05 【实验目的与要求】 ?掌握函数声明、定义和使用的方法; ?掌握函数递归调用的方法; ?掌握全局变量、局部变量、静态局部变量的概念和使用方法; ?掌握定义头文件的方法,学会建立和调试多文件程序。 【实验内容与步骤】 1.程序改错题 (1) 输入并运行下面的程序,查看编译时的出错信息,分析出错的原因,然后修改这个程序使其能够正常运行。程序以文件名sy7_1.c存盘。 #include "stdio.h" void main() { getFloat(9.9); } float getFloat(float m) { printf("%f",m); retutn m; } 请给出正确的程序: #include "stdio.h" void main() { float getFloat(float m); getFloat(9.9); } float getFloat(float m) { printf("%f",m); return m; } //没有输出语句怎么输出? 请给出程序运行测试结果: //没有输出语句怎么输出?

(2)下列程序的功能为:求三角形面积,请纠正程序中存在的错误,使程序实现其功能,程序以文件名sy7_2.c存盘。 #include "math.h" #include "stdio.h" area(float,float,float); void main() { float a,b,c; printf("请输入三角形的三个边长值:\n"); scanf("%f,%f,%f",a,b,c); if(a+b>c&&a+c>b&&b+c>a) printf("Area=%f\n",area(a,b,c)); } area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0; area_s=sqrt(s*(s-a)*(s-b)*(s-c)); return(area_s); } 请给出正确的程序: #include "math.h" #include "stdio.h" float area(float,float,float); void main() { float a,b,c; printf("请输入三角形的三个边长值:\n"); scanf("%f,%f,%f",&a,&b,&c); if(a+b>c&&a+c>b&&b+c>a) printf("Area=%f\n",area(a,b,c)); } float area(float a,float b,float c) { float s,area_s; s=(a+b+c)/2.0; area_s=sqrt(s*(s-a)*(s-b)*(s-c)); return(area_s); } 请给出程序运行测试结果: 2.程序填空 (1)下列程序的功能为:输出如下图形, 请填写适当的符号或语句,使程序实现其

相关文档