教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 学前教育 >

电1C语言实验报告(6)

来源:网络收集 时间:2026-08-03
导读: 《计算方法与程序设计实验》 {if(a[i]!=0)m++; /*对未出局者计数*/ if(m==3)a[i]=0,n=i,m=0;/*对出局者编号为0,并保存原编号,计数从0开始*/ } printf(\最后出局者的编号*/ 学生练习:要求用数组进行编程 1. 已知F

《计算方法与程序设计实验》

{if(a[i]!=0)m++; /*对未出局者计数*/

if(m==3)a[i]=0,n=i,m=0;/*对出局者编号为0,并保存原编号,计数从0开始*/ }

printf(\最后出局者的编号*/ 学生练习:要求用数组进行编程

1. 已知F(0)=F(1)=0 F(2)=1 F(n)=F(n-1)-2F(n-2)+F(n-3) (n>2) 求F(0)到F(100)中正数的个数。

2 . 计算A15的值,已知A1=1,A2=1/(1+A1),A3=1/(1+A2),A4=1/(1+A3)…(结果保留10位小数)。 【实验总结】通过做这个实验,我掌握了一维数组和二维数组的定义、初始化、赋值和输入输出操作;掌握与数组有关的算法:冒泡法、筛选法、二分查找法、矩阵和猴子选大王问题。

实验名称:实验7 函数及其应用

实验时间:第13周周三 实验地点:5423

【实验目的】掌握C语言中定义、调用函数的方法;掌握函数形参与实参的参数传递关系;加强

常用算法的使用。

【实验内容】

1.调试程序,掌握函数的定义形式,分析函数调用过程中形参和实参的关系。 #include \void swap(int x, int y) { int t;

t=x; x=y; y=t;

printf(\}

main( ) {

int a=10, b=20;

printf(\(1)a=%d, b=%d\\n \swap(a,b);

printf(\(2)a=%d, b=%d\\n \}

Key:分析:C语言中由于实参和形参是不同的变量,实参到形参是单向的值传递,swap函数中形 参值的改变不影响主函数中实参的值。 运行结果:main(1)a=10,b=20 swap***x=20,y=10

main(2)a=10,b=20

2.调试程序,分析程序中函数的调用过程,分析程序的运行结果。 #include \int fun(int x) { int y;

if(x==0||x==1) return 3; y=x*x-fun(x-2); return y; }

main()

16

《计算方法与程序设计实验》

{

printf(\}

Key:分析:C语言中递归调用是先递推再回推,主函数中实参3先送给fun函数中形参x,得到y=3*3-fun(1);在未执行return y;返回主函数之前再用1自已调用自已,这时就到了递归出口,返回3到fun(1)处,因而y=3*3-3; 返回值6到主函数的fun(3)处,所以主函数输出6。

3.排错题:下列给定程序中函数fun 的功能是:用递归算法求形参a 的平方根。请改正 程序中的错误,使它能计算出正确的结果。注意:源程序不得增行或删行,也不得更改程序 的结构!

例如,a 为2 时,平方根值为:1.414214。 #include #include

/**********found**********/ void fun(double a, double x0) { double x1, y; x1=(x0+a/x0)/2.0;

/**********found**********/ if( fabs(x1-x0)<=0.00001 ) y=fun(a,x1); else y=x1; return y; }

main( ) { double x;

printf(\

printf(\}

Key:第一个错误:void fun(double a, double x0) 应改为:double fun(double a, double x0) 因根据题意,需通过调用fun()函数返回a的平方根,故必须将void改为double,否则不能用带值的return语句。自增。

第二个错误:if( fabs(x1-x0)<=0.00001 ) 应改为:if( fabs(x1-x0)>=0.00001 ) 因只有 fabs(x1-x0)>=0.00001才须递归。

4.设计一个程序,判断一个整数n 是否是素数。 具体要求如下:

(1)编制一个函数int prime(number),判断整数number 是否是素数。

(2)编制主函数,由键盘输入整数number,调用(1)中的函数,若返回值为真则是素 数,否则不是素数。

(3)分别用以下数据运行该程序:103,117。

【程序源代码】 #include \main() { int number;

printf(\请输入一个正整数:\\n\scanf(\if (prime(number))

printf(\是素数. \else

printf(\不是素数. \}

17

《计算方法与程序设计实验》

int prime(number) int number; {int flag=1,n;

for(n=2;n

5.编写程序,通过两个自定义函数分别求两个正数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果。两个正数由键盘输入。 具体要求如下:

(1)用辗转相除法实现。

(2)输出要有文字说明,输出形式为:最大公约数=具体值,最小公倍数=具体值 (3)分别用以下数据运行该程序: 8 和26, 64 和258

(4) 辗转相除法:对于两个数m 和n,将大数放在m 中,小数放在n 中,用n 去除m, 若余数为0,则n 为最大公约数,否则将n 作为m,余数作为n,再用n 去除m, 直到余数为0,则n 为最大公约数。

【程序源代码】 #include \hcf(u,v) int u,v; {int a,b,t,r; a=u; b=v;

while((r=b%a)!=0) {b=a; a=r;} return(a);} lcd(u,v,h) int u,v,h; {return(u*v/h);} main() {int u,v,h,l; scanf(\h=hcf(u,v);

printf(\l=lcd(u,v,h);

printf(\

6.请编写函数fun,函数的功能是:求出二维数组周边元素之和,作为函数值返回。二维 数组中的值在主函数中赋予。例如,若二维数组中的值为 1 3 5 7 9 2 9 9 9 4 6 9 9 9 8 1 3 5 7 0 则函数值为61。

18

《计算方法与程序设计实验》

【程序源代码】 #include #define M 4 #define N 5

int fun( int a [M][N]) {int i,j,s=0; for(i=0;i

for(j=0;j

if(i==0||j==0||i==M-1||j==N-1)

s+=a[i][j];;

return s; } void main()

{ int aa[M][N]={{1,3,5,7,9},{2,9,9,9,4},{6,9,9,9,8},{1,3,5,7,0}}; int i, j, y; printf (\ for(i=0; i

{for (j=0; j

【实验总结】通过做这个实验,我掌握了C语言中定义、调用函数的方法;掌握函数形参与实参的参数传递关系;加强常用算法(递归算法求算术根;用函数编程判断素数、求最大公约数和最小公倍数及求二维数组周边元素之和)的使用。

实验名称:实验8 作用域和存储类型应用

实验时间:第14周周三 实验地点:5423

【实验目的】理解C语言中变量的作用域和存储类型;掌握函数调用时它们产生的作用。 【实验内容】

1.调试程序,在程序中观察变量值的变化,掌握在函数调用时变量的作用域和存储类型的作用。 #include \int fun(int a) {

auto int y=0; static int z=3; y=y+1; z=z+1;

return (x+y+z); }

main()

{

int x=2,i;

for (i=0;i<3;i++) printf(“=”,fun(x)); }

Key:编译时出错(8):error 'x' : undeclared identifier 将fun(int a)改为fun(int x) 因x是main函数定义的变量,在fun()中没定义,故在fun()函数中不能引用。运行结果: 5 6 7

19

《计算方法与程序设计实验》

分析:主函数3次调用fun()函数,由于y是fun()中定义的自动变量,z是fun()中定义的静态 …… 此处隐藏:2598字,全部文档内容请下载后查看。喜欢就下载吧 ……

电1C语言实验报告(6).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/595017.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)