C语言程序设计实践教程.pdf
《C语言程序设计实践教程.pdf》由会员分享,可在线阅读,更多相关《C语言程序设计实践教程.pdf(149页珍藏版)》请在咨信网上搜索。
C语言程序设计 实践教程内容提要本书是C语言程序设计配套使用的教学用书。内容以实验操作为主,重点培养学生的 实际动手能力,并帮助学生对课程内容加深理解。全书分为实验指导、综合测试、习题集 和部分参考答案四个部分。在实验指导中,介绍了 C语言实验上机环境Visual C+6.0的 使用和程序调试方法,精选了 10个实验,每个实验都包括实验目的、实验内容等,重点在 于培养学生实际动手能力。综合测试紧扣计算机等级考试内容,让学生全面地检验自己对 本课程的学习掌握情况及综合解决实际问题的能力。在习题集中,按照教学大纲要求提供 了大量的习题,这些习题突出了重点和难点,更好的帮助学生对所学知识的理解。综合测 试和习题集都配有参考答案。本书可以作为各类高等院校计算机专业、各类高职院校计算机专业及理工科学生的“C 语言程序设计”课程的实验教学用书,也可作为广大计算机爱好者学习C程序设计语言的 参考用书。刖s“C语言程序设计”是教育部高教司组织制订的高校理科类专业大学计算机教学基 本要求中规定的必修课程。本实验教程根据“C语言程序设计”课程教学大纲和“C语言程序设计”实验教学大 纲的要求编写而成。编写过程中,编者注意了本书内容与课堂讲授内容的衔接。通过学习,能够使学生了解计算机程序设计的基本知识,掌握程序设计的基本方法,培养学生程序设 计、综合解决实际问题的能力,为学生继续学习其他的程序设计语言打下基础。本实验教程由工作在教学第一线并具有计算机基础教学经验的多位教师共同编写而 成,由王琳艳担任主编并统稿,杨冬梅、陈爱萍、刘征、刘警分别承担了不同实验单元和 习题单元的编写工作,并由江汉大学计算中心陈刚老师审稿。本书的编写得到江汉大学有 关领导及数计及计算机学院全体老师的支持和帮助,在此一并表示感谢。限于时间的仓促及编者水平有限,书中难免有不妥之处,恳请各位师生批评、指正。编者 第1部分实验指导实验1 Visual C+6.0编译系统入门实验目的(1)熟练掌握Visual C+6.0编译系统的常用功能。(2)学会使用VisualC+6.0编译系统创建、打开、编辑、保存、调试,运行C程序。(3)熟练掌握C程序结构和语法规则。实验内容1.启动 Visual C+6.0 并了解 Visual C+6.0 的环境在Win dows环境下,双击Visual C+6.0图标,启动Visual C+6.0进入一个标题 为“Tip of the Day”窗口,如图1所示。可以看到,在该窗口中显示了一条帮助信息。单击该窗口中的“Next Tip”按钮可以继续得到更多的帮助信息。若单击“Close”按 钮,则会关闭该窗口。进入Visual C+6.0集成开发环境的主窗口,如图1.2所示,表 示Visual C+6.0已经启动成功。图 1.1 Tip of the Day”窗口图1.2 Visual C+6.。集成开发环境的主窗口Visual C+6.0集成开发环境的主窗口由标题栏、菜单栏、工具栏、工作区窗口、源代码编辑窗口、输出窗口和状态栏组成。屏幕窗口最上方是标题栏,显示所打开的应用程序名。标题栏左端是控制菜单图 标,单击后会弹出窗口控制菜单。标题栏右端从左至右有3个控制按钮,分别为“最 小化”、“最大化”和“关闭”按钮,可以用它们快速设置窗口的大小。标题栏下方是菜单栏,由9个菜单项组成。单击菜单项会弹出下拉式菜单,可使 用这些菜单项实现集成开发环境的各种功能。菜单栏下方是工具栏,它由若干个功能按钮组成,单击它们可实现某种操作功能。该工具栏中共有15个工具项按钮。如图L3所示。图L3工具栏自左至右各按钮的功能介绍如下。(1)New Text File:创建新的文本文件。(2)Open:打开已有文档。(3)Save:保存当前文档内容。(4)SaveAH:保存所有打开的文档。(5)Cut:将选定的文档内容从文档中删除,并将之复制到剪贴板中。(6)Copy;将选定的文档内容复制到剪贴板中。(7)Paste:在当前插入点处粘贴剪贴板中的内容。(8)Un do:取消最近一次编辑操作。(9)Redo:恢复前一次取消的编辑操作。(10)Workspace:显示或隐藏工作区窗口。(11)Output:显示或隐藏输出窗口。(12)Win dows list:管理当前打开的窗口。(13)Fin d in File:在多个文件中搜索字符串。(14)Fin d:激活查找工具。(15)Search:搜索联机文档。工具栏的下方有左、右两个窗口,左窗口是项目工作区窗口,右窗口是源代码编 辑窗口。在项目工作窗口和源代码编辑窗口的下方有一个输出窗口,在创建项目(Build)时,用来显示项目创建过程中的错误信息。屏幕最底部是状态栏,它可以给出当前操作或所选命令的提示信息。2.实验 例题将下面改错题输入到源代码编辑窗口,调试,注意系统出现的信息。修改错误,直到程序运行成功。#in clude main()/*main f un ction*/(prin tf(OK.n)操作步骤如下。(1)在Visual C+6.0集成开发环境的主窗口,单击“File”菜单,如图L4所示。(2)选择New选项,出现如图1.5所示的“New”对话框。(3)在“New”对话框中单击“Files”菜单,如图1.6所示。(4)选择“C+Source File”项,在“File”文本框中输入源代码文件的文件名(例 如:aaa.c),并单击Location项的按钮,出现如图1.7所示的对话框(5)在“Drives”选项中找出要保存文件的盘符,例如,要将aaa.c文件保存在D:盘上,如图L8所示,并单击“Choose Directory”对话框中的“OK”按钮。(6)返回到“New”对话框,如图1.9所示。继续单击“New”对话框中的“OK”按钮。(7)系统返回Visual C+6.0集成开发环境的主窗口,并显示源代码编辑窗口,如 图L10所示。(8)在源代码编辑窗口输入改错的程序,如图L11所示。(9)单击菜单栏的“Build”菜单,选择“Build”项进行编译和链接。如图1.12 所示。(10)因为“prin tf(OK.n)”语句缺少“;”,所以编译系统在项目工作窗口和源代 码编辑窗口的下方窗口显示错误信息,如图L13所示。(11)根据错误信息找到相应的地方进行修改,使之正确无误,如图L14所示。(12)选择Build”项进行编译和链接。如图L15所示。(13)屏幕出现“询问是否创建默认项目工作区”对话框,如图1.16所示。(14)单击“Yes”按钮,屏幕出现如图L17所示的“询问是否保存文件”对话框。(15)单击“Yes”按钮,系统开始对源程序文件进行编译,如果程序仍然有错必须 再次修改并重新对源程序进行编译,直到没有错误信息为止,如图L18所示。(16)执行程序可以选择“Build”菜单中的“执行”命令,或者单击主窗口工具栏 中带“!”的“BuildExecute”快捷键,屏幕会出现如图1.19所示的DOS形式的“输入 数据和输出结果”窗口。如果程序要求键盘输入数据,则Visual C+等待用户操作,然 后显示程序的输出结果。当程序成功执行并输出结果后,Visual C+显示提示信息“Press an y key to con tin ue,J;这时按键盘上任意键,系统返回主窗口。(17)关闭程序工作区。单击菜单“File”,选择“Close workspace命令,在弹出 的对话框中单击“是”按钮,关闭工作区。图1.4 File菜单窗口图1.5“New”对话框图1.6单击“File”菜单图1.7单击Location项的按钮后的窗口图1.8选中D:盘后的窗口图1.9单击“OK”按钮后的窗口图L10源代码编辑窗口图1.11输入改错程序后的源代码编辑窗口图1.12选择“Build”项进行编译图L13编译后给出错误信息窗口图1.14程序修改后的窗口图 1.15 Build”窗口图146”询问是否创建默认项目工作区”对话框图1.17“询问是否保存文件”对话框图L18无错误信息的窗口图1.19”输入数据和输出结果”窗口注意要点(1)在编译和链接时,如果编译器发现程序的语法错误,则会在输出窗口中显示 错误信息,这些信息包括错误的性质、出现的位置和产生错误的原因等。如果双击某 条错误信息,文件编辑区窗口的右边出现一个箭头,指向出现错误的程序行,此时用 户可以根据错误的性质修改程序。修改后还需重新对源程序再进行编译,直到没有错 误信息为止。(2)执行程序时出现的错误称为运行错误。例如,负数求开平方、溢出和内存不 够等。如果出现运行错误,用户还要修改源程序并且重新编译、链接和执行。(3)执行结果显示出来后,并不意味它一定是所求解问题的正确答案。因为程序 可能存在逻辑错误。例如,算法错误、使用运算符错误等。这种错误不能被编译器发 现,必须通过人工测试、验证去查找和修正错误。3.实验 操作题读程序写结果/*s-C*/#in clude main()in t a,b,c,d;a=b=c=5;c+=a+b;d=c%a;prin tf(a=%d,b=%d,c=%d,d=%d n,a,b,c,d);)上机前分析结果:实际上机结果:4.完善 程序程序功能:下面的程序是求整数a/b的商和余数,请用正确的表达式填空。/*s-2 c*/#in clude main()(in t a,b,c,d;a=100;b=30;prin tf(a=%d,b=%d,c=%d,d=%d n,a,b,c,d);)5.改错(1)将下面程序输入到C编辑窗口,调试,注意系统出现的信息。修改错误,直到程序 运行成功。/*sl-3 c*/#in clude stdio.h;main();/*main f un ction*/f loat r,s;/*/*r is rtadius*/,/*s is area of circular*/*/r=5.0;s=3.14159*r*r;prin tf(%f/n,s)提示:注意符号的要求。(2)/*si-4 C*/#in clude stdio.hmainf loat a,b,c,v;a=2.0;b=3.0;c=3.0v=a*b*c;prin tf(%f n,v)6.程序设计(1)输入半径,计算圆面积。(sl-5.c)提示:定义两个变量存放半径和圆面积的值;.给半径赋值;计算圆面积=半径X半径X 3.14159;输出圆面积的值。(2)输入出生年份和当前年份计算年龄。(sl-6.c)提示:定义两个变量存放出生年份和当前年份;输入变量:出生年份,当前年份;计算年龄=当前年份-出生年份;输出年龄。(3)输入3个变量的值,假设3个变量分别是1,2,3;将它们的值交换后输出,要 求a的值放入b,b的值放入c,c的值放入a中。(sl-7.c)提示:交换3个变量的值,需要借助另一个变量。即该程序应定义4个变量。(4)把1050分钟换算成用小时和分钟表示,然后进行输出。(sl-8.c)提示:输出语句为:prin tf(%d小时d分钟 n ,h,m);其中h、m为存放小时和分钟的 变量。实验2顺序结构实验目的(1)熟练掌握顺序语句的使用方法。(2)理解并运用各种表达式。(3)熟练掌握输入、输出语句的使用及常用格式字符的使用方法。实验内容1.读程序写结果(1)/*s2-l.c*/#in clude main()(in t i,j,m,n;i=8;j=W;m=+i;n=j+;prin tf(%d,%d,%d,%d n,i,j,m,n);)上机前分析结果:实际上机结果:(2)/*s2-2.c*/#in clude main()(in t a,b,d=241;a=d/100%9;b=(-l)&(-l);prin tf(%d,%d n,a,b):上机前分析结果:实际上机结果:(3)/*s2-3.c*/#in clude main()in t a=3,b=2,c=l,d;d=(abc);prin tf(%d n,d);)上机前分析结果:实际上机结果:(4)/*s2-4.c*/#in cludemain()(in t i=16,j,x=6,y,z;j=i+l;prin tf(l:%d n,j);x*=i=j;prin tf(2:%d n,x);x=l;y=2;z=3;x+=y+=z;prin tf(3:%d n,z+=xy?x+:y+);x=y=z=-l;+xll+y&+z;prin tf(5:%d,%d,%d n,x,y,z);提示:关系运算符分为两个优先级,和“与(&)或(II),“!”优先级高于算术运算符,“&”和“II”优先级低于算术运算符和关系运算符。上机前分析结果:实际上机结果:2.完善程序下列给定程序的功能是:从键盘输入圆柱体的半径r和高度h,计算其底面积s和体积 v并输出。请完善程序并调试。(s2-5.c)/*s2-5.C*/#in cludemain()f loat pi=3.1415926;f loat r,h,s,v;prin tf(Please in put r,h:);scan f(%f,_1_,&r,_2_);s=_3;v=4;prin tf(area=5_,volume=_6_ n,s,v);)3.程序设计从键盘输入变量x,y的值,交换它们的值并输出。(s2-6.c)提示:用scan f函数输入x,y的值;用第三个变量辅助交换x,y的值;用prin tf函数将交换后的x,y输出。(输入X,yt=x x=y y=t输出x,y结束;(2)输入一个十进制数,输出其八进制和十六进制数。(s2-7.c)提示:应用prin tf函数的格式控制。/*s2-7.c*/main()(scanf&n);printf(%o,%xn*,n,n);)(3)编写程序求出任一输入字符的ASCI I 码。(s2-8.c)提示:接收一个字符赋给变量,以整型输出该变量。(4)从键盘输入a,b,c三个变量的值,输出其中最大的值。(s2-9.c)提示:用条件运算符(?:)实现。(5)输入一个华氏温度,要求输出摄氏温度。公式为c=2贫。精确到小数点后两位数字。(s2-10.c)提示:应用prin tf函数的格式控制中的长度限制。开始(6)从键盘输入两个二位数的正整数a和b,将它们合并形成一个新的整数c输出。合并方 式是:将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在 c数的百位和个位上。(如:a=35,b=42时,c=5432)(s2-ll.c)提示:考虑如何截取二位数的个位、十位,分别存入相应变量中,再组合输出。输入两个数a,bc=a的个位*1000+a的十位*10C=c+b的个位+b的十位*100输出c(7)输入一个双精度数,对小数点后第2位进行四舍五入,即保留一位小数,输出四舍五入 后的结果。(s2-12.c)提示:四舍五入算法,x=(x+0.05)*10;x=(in t)x;x=x/10;实验3选择结构实验目的(1)掌握c语言的关系运算符、逻辑运算符以及它们的表达式。(2)掌握各种if语句的使用方法。(3)掌握switch语句的使用。(4)掌握嵌套的选择结构。实验内容1.读程序写结果(1)/*s3-l.c*/#in cludemain()(in t a=10;if(a10)prin tf(%d n ,a10);else prin tf(%d n ,a=10);上机前分析结果:实际上机结果:(2)/*s3-2,c*/#in cludemain()(in t a,b,c,d,x;a=c=O;b=l;d=20;if(a)d=d-10;else if(!b)if(!c)x=15;else x=25;prin tf(d=%d n ,d);)提示:当程序中存在嵌套的ifelse结构时,由后向前每一个else都与其前面的最靠近它 的if配对。上机前分析结果:实际上机结果:(3)/*s3-3.c*/#in cludemain()in t x=l,y=O;switch(x)case 1:switch(y)(case O:prin tf(f irst n );break;case l:prin tf(secon d n );break;case 2:prin tf(third n);上机前分析结果:实际上机结果:2.完善程序将用户输入的字母进行大小写转换。(s3-4.c)提示:小写字母W比大写字母,A,大32O接收一个字符,如果是大写字母,将其转换为小 写字母;如果是小写字母,将其转换为大写字母。/*s3_4.c*/#in clude main()(char i;scan f(%c,&i);if(_1)2;else if(3)4;prin tf(%c n ,i);3.程序设计(1)输入一整数,输出它是奇数还是偶数。(s3-5.c)提示:若除2的余数为0则输出偶数,否则输出奇数。图 S3-5.c输入一个数n丫 n是偶数 n输出n是偶 数输出n是奇数(2)输入3个数,输出其中的最大数。(s3-6.c)提示:用scan f函数输入3个变量,用选择语句比较后用prin tf将结果输出。(3)分段函数:(4)输入一个学生的生日(年,月,日:yl,ml,dl);并输入当前的日期(年,月,日:y2,m2,d2);输出该生的实足年龄。(s3-8.c)提示:因为每月的天数不等,所以只要求精确到年月;可设定实足年龄为y3岁零m3个月;参考算法:y3=y2-yl;m3=m2-ml;if(m30)y3-;m3=12-abs(m3);(5)输入学生某门课的成绩,要求输出成绩等级A、B、C、D、E,90分以上为“A”,80-89 分为“B”,70-79 分为“C”,60-69 分为“D”,其他为“E。(s3-9.c)提示:用switch。实现。#in clude main()(in t score,s;char grade;prin tf(in put a score0,100:);scan f(%d,&score);s=score/10;switch(s)(case 10:case 9:grade=A;break;case 8:grade=B;break;case 7:grade=C;break;case 6:grade=D;break;def ault:grade=E;)prin tf(分数d 对应的等级是%c.n,score,grade);实验四循环结构实验目的(1)熟练掌握三种循环语句的使用方法。(2)重点掌握FOR循环语句的使用。(3)掌握各种循环的嵌套。(4)掌握break和con tin ue语句在循环结构中的应用。实验内容1.读程序写结果(1)/*s4-l.C*/#in cludemain()(in t x;x=-l;do x=x*x;while(!x);prin tf(x=%d n ,x);)上机前分析结果:实际上机结果:该循环执行了 次(2)/*s4-2.C*/#in cludemain()(in t i;f or(i=l;i6;i+)if(i%2)prin tf(#);else con tin ue;prin tf(*);)prin tf(n);)上机前分析结果:实际上机结果:*s4-3 C*/#in cludemain()(in t i,j,k;f or(i=l;i=6;i+)(f or(j=l;j=20-2*i;j+)prin tf();f or(k=l;k=i;k+)prin tf(%4d,i);prin tf(n);)上机前分析结果:实际上机结果:2.完善程序程序功能是:计算150之间7的倍数的数值之和。(s4-4.c)/*s4-4 C*/#in cludemain()(in t i,sum=1;f or(i=1;2;i+)if(3一)sum+=i;prin tf(usum=%d n,sum);)3.改错程序功能:输入一个整数,求它的位数及各位数字之和。(s4-5.c)如:整数123的位数是3,其各位数字之和是6.。/*s4-5 c*/#in cludemain()(in t i,a,b,c;a=c=0;/*found*/in t x,sum,coun t;prin tf(en ter a in teger:);scan f(%d,&x);while(x)sum=sum+x%10;x%=10;)prin tf(coun t=%d,sum=%d n,coun t,sum);)4.程序设计(1)1-3+5-7+-99+101 的值。(s4-6.c)q=(2i 1)sum=0,i=l,sign=li-1101sum=sum+sign X T)i=i+l,sign=sign X(T)输出sumsum=0;i=l sign=l2i-l=7sum=s.Oil2*1-1=1=7 yessum=0+l*(l)=l,i=2;sign=-l2*2-l=3=7 Yessum=l+(-l)*(3)=-2;i=3;sign=-l*-l=l2*3-l=5=7 Yessum=-2+(l)*(5)=3;i=4;sing=l*(-l)=-l;2*4-l=7=7 Yessum=3+(-l)*(7)=-4;i=5;sign=-l*(-l)=l2*5-l=910-6p=pX ie=e+l/p,i=i+l输出e(7)写程序:输出10以内的加法表。(s4-12.c)提示:用双重循环实现。f or i=0 to 9f or j=0 to 9输出i*j输出换行图 S4-12.c(8)求两个非负整数u和v的最大公约数。(S4-13.C)提示:用辗转相除法实现;算法为:将较大的数放在变量u中,较小的数放在v中。当v不为0时,用辗转操作:temp=u%v;u=v;v=temp;当v为0时,u即为最大公约数。(9)写程序,输出以下图形。(s4-14.c)AAAAA A A A AA A A A A A A提示:对图形中每行输出的空格数及字符数,随着行的下移空格数减少而字符数增加,故 可通过两个f or循环控制每行输出的空格数和字符数。用一个大循环(包含上面的两个循环)控制不同行的输出。f or(,)/*从第一行到最后一行*/f or()prin tf(-);/*输出若干空格*/f or()prin tf();/*输出若干字符*/prin tf();/*换行*/)AAAA%=blank+(,-1)*(-1)=blank+l-ib.=2i-lc.=A+(i l)*l=A+i la,an-3,=an+(z-n)*(-2)=1+2(n-z)=2n+1 2za1,an=1,%=2,aj=an+(z-n)*(-1)=l+(n-i)=n+l-i图 S4-14 l.c图 S4-14_2.c输入nf oii=l to nf or j=l to 40+i输出一个空格f orj=l tc 2n+l-2z输出一个*换行*输入nf oir i=l to nf or j=l to 40输出一个空格f or j=l to n+l-i输出一个*换行图 S4-14_3.cA BBB CCCCC DDDDDDD输入nf or i=l to nfor j=l to 40-i输出一个空格f or j=l to 2X i-1输出一个A+i-l换行图 S4-14 4.cA ABA ABCBA ABCDCBA实验五数组实验目的(1)熟练掌握一维数组和二维数组的定义、数组元素的引用形式和数组的输入/输出方法。(2)掌握字符数组和字符串函数的使用。(3)掌握与数组有关的算法(例如:排序算法、矩阵运算等)。实验内容1.读程序写结果()/*s5-c*/#in clude main()in t a=l,2,3,4),i,j,s=0;j=l;f or(i=3;i=0;i)s=s+ai*j;j=j*10;prin tf(s=%d n,s);上机前分析结果:实际上机结果:(2)/*s5-2 c*/#in clude#in clude main()char a20=Good t 0Chin a;in t i,j;i=sizeof(a);j=strlen(a);prin tf(%d,%d n,i,j);上机前分析结果:实际上机结果:/*s5-3 c*/#in clude main()(char s=a good world;in t i,j;f or(i=j=O;si!=0;i+)if(si!=d,)sj+=si;sj=vr;prin tf(%s,s);)上机前分析结果:实际上机结果:(4)/*s5-4 c*/#in clude main()(in t f ib12,i;f ib0=0;f ibl=l;f or(i=2;i12;i+)f ibi=f ibi-l+f ibi-2;f or(i=0;i12;i+)prin tf(%6d,f ibi);prin tf(n);)上机前分析结果:实际上机结果:2.完善程序以下程序实现将读入的字符串si复制给s2,请完善程序并调试。/*s5-5 c*/#in clude main()(in t i;charsl20,s220;prin tf(en ter strin g 1:);gets(sl);f or(i=0;1;i+)2;prin tf(strin g2:%s n,3);以下程序的功能是:计算矩阵所有周边元素的和。部分源程序如下:提示:先对矩阵上边和下边元素求和,再对矩阵左边和右边元素求和。/*c*/#in clude#def in e M 4#def in e N 3main()(in t aMN=1,2,3,4,5,6,7,8,9,10,11,12);in t sum=0,i,j;f or(i=0;iN;i+)sum+=a0i+_1_;f or(j=l;jM-l;j+)sum+=aj0+_ 2_;prin tf(%d n,sum);3.改错设a是一个整型数组,n(不大于10)和x都是整数,数组a中各元素的值互异。在数组 a中查找与x相同的元素,如果找到,输出x在数组a中的下标位置;如果未找到,输出“未找到与x相同的元素!(s5-7.c)如:输入数组元素的个数:5输入数组的5个元素:1 5 3 7 6输入x::3和3相同的数组元素是a2=3/*s5-7 c*/#in clude main()in t i,x,n;/*/in t an;prin tf(输入数组元素的个数:”);scan f(%d,&n);prin tf(输入数组的d个元素:,n);f or(i=0;in;i+)scan f(%d,&ai);prin tf(输入 x:);scan f(%d,&x);f or(i=0;in;i+)/*und*/if(ai!=x)break;if(i!=n)prin tf(未找到与%d相同的元素!n,x);elseprin tf(和d 相同的数组元素是 a%d=%d n,x,i,ai);4.程序设计(1)输入10个整数存入一维数组,按逆序重新存放后再输出。(s5-8.c)提示:重新存放就是数据交换的过程。输入N(例如等于10)个数存于数组aor i=0 to 一 2Ai与 aN-l-i交换输出数组aS5-8.c#in clude#def in eN 10 main()(in taN,i,t;prin tf(in put n umber:);f or(i=0;iN;i+)scan f(%d,&ai);f or(i=0;i=(N-l)/2;i+)(t=ai;ai=aN-l-i;aN-l-i=t;)prin tf(the result:n);f or(i=0;iai pj=iT j#Rajai pk=iT k#j pak-aj输出数组a的各个元素(7)将100以内的所有素数存入一维数组中并输出。(s5-14.c)提示:素数是除1和它本身之外不能被其他任何整数整除的正整数。判断数n是素数的方法:该数不能被2到n-1(或n/2)之间的数除尽。i=0f or n=2 to 100f lag=lf or j=2 to n/2 n被j整除 I-r f lag=0_跳出木层循环|_ T flag=l fai=n i=i+l1f or i=0to iT 输出Aj图 S5-14.c输入一个二维数组,分别统计各行元素之和并输出统计的结果。(S5-15.C)图 S5-15.c对二维数组a N M初始化f ori=0 to N-lSum=0f or j=0 to M-1sum=aij+sum输出sum(9)输入一个字符串,将字符串中所有数字字符(09)转换为一个整数(去掉其他字符)并输出。例如:字符串“h2a4bc7w”转换为整数是247。(s5-16.c)输入串si=0,sum=0.0当siW 0Si是数字TFsum=sum X10+sil-O输出sum图 S5-16.c实验六函数实验目的(1)熟练掌握函数的定义和使用方法。(2)熟练掌握调用函数与被调用函数之间的数据传递。(3)掌握函数的返回值和类型。(4)掌握函数的嵌套调用和递归调用。实验内容1.读程序、写结果/*s6-c*/#in cludemain()(void f un c(in t a,in t b);in t a=2,b=10;f un c(a,b);prin tf(a=%d,b=%d n ,a,b);)void f un c(in t a,in t b)(in t temp;temp=a;a=b;b=temp;上机前分析结果:实际上机结果(分析原因):/*s6-2 c*/#in cludein t a=l,j=2;main()(void f un c();in t i=2;f un c();prin tf(a=%d,i=%d,j=%d n ,a,i,j);void f un c()in t n,i=5;prin tf(a=%d,i=%d n ,a,-i);i+;a+;if(a4)f un c();a-;j+=3;prin tf(a=%d,j=%d n ,a,j);)提示:注意函数递归调用的过程。上机前分析结果:实际上机结果:(3)/*s6-3 c*/#in cludein t qian l(in t x,in t y)(in t qian 2(in t x,in t y);in t c,s,t;s=x+y;t=x-y;c=qian 2(s,t);return(c);prin tf(c=%d n,c);)in t qian 2(in t x,in t y)return(x+y);main()(in t a=l,b=2,c;c=2*qian l(a,b);prin tf(c=%d n,c);上机前分析结果:实际上机结果:2.完善程序给定程序中,函数f un的功能是:计算下式前n项的和作为函数值返回。1x3 3x5,5x7 1.s_l(2x-l)x(2x+l)钎亍一方+石.+(一】)例如:当行参n的值为10时,函数返回-0.204491 double f un(in t n)(s6-4.c)S6-4.cf lag=l,sum=0f or i=l to n v(2z-l)(2z+l)sum=sum+i lag X-i-ii-L4产f lag=f lagX(-1)返回sum/*s6-4 c*/#in clude double f un(in t n)(in t i,k;double s,t;s=0;k=1;f or(i=1;i=n;i+)(t=2;s=s+k*(2*i-l)*(2*i+l)/(t*t);k=k*3;return s;main()(in t n=-l;while(n 0):);scan f(%d,&n);prin tf(n The result is:%lf n,f un(n);)以下函数的功能是:求100(不包括100)以内能被2或5整除,但不能同时被2或5 整除的自然数。结果保存在数组bb中,函数f un()返回数组bb元素的个数。(s6-5.c)in t f un(in t bb)j=0Fori=l to 100i被2或5整除,但i不能 同时被2或5整除 T Fbbj=ij=j+l返回j值S6-5.c/*s6-5 c*/#in clude#def in eN 100in t f un(in t bb)(in t i,j;f or(_1;i100;i+)if(i%2!=0&i%5=0)ll(i%2=0&i%5!=0)2;return j;main()(in t i,n;in t bbN;n=f un(bb);f or(i=0;in;i+)if(i%10=0)prin tf(n);prin tf(%4d,bbi);3.改错(1)以下f un()函数用以判断n是否为素数。f un()函数中有逻辑错。main。函数完成从键盘接 收一个整数,再以该数为参数调用f un()函数,修改f un()函数中的错误。n)f lag=lf or i=2 to n/27 n被i整除 ff lag=C|跳出本层循环返回f lagS6-6.c/*s6I 6 c*/#in cludein t f un(in t n)(/*un d*/in t k,yes=0;f or(k=2;k=n/2;k+)/*un d*/if(n%k=0)(yes=0;break;)/*un d*/return;main()(in t x;prin tf(n in put a n umber:);scan f(%d,&x);if(f un(x)prin tf(%d is shushu.n,x);elseprin tf(%d isn t shushu.n,x);2(2给定程序的功能是:求出以下分数序列的前n项之和:不 和值通过函数值返回。(例如:若n=5,则应输出&391667)double f iin(in t n)328-55-3S6-7.ca=2,b=l,sum=0f or i=l to nsum=sum+a/bc=a+b,b=a;a=c返回sum/*s6-7 c*/#in clude#in clude/*un d*/f un(in t n)(in t a,b,c,k;double s;s=0.0;a=2;/*f oun d*/b=0;f or(k=1;k1=22-5*2+4y2=(xl+15)2-5*(xl+15)+4y3=sin2 无2-5*sin 尤2+4double f Un(double x)f=x2-5x+4返回f值S6-9.c写函数,根据整型形参m的值,计算如下公式的值。t=-.-2x2 3x3 mxm(s6-10.c)double f un(in t m)t=lf or i=l to mt=t-l/(i2)返回tS6To.c(5)下面程序的功能是计算s=依,请编写求n!的函数f un()。(s6-ll.c)k=double f un(in t n)s=0,p=lFor i=l to nP=pXis=s+p返回s图 S6-11.C/*s6-c*/#in clude lon g f un(in t n)main()in t i,n;lon g s;scan f(%d,&n);s=0;f or(i=l;i=n;i+)s=s+f un(i);prin tf(%ld n,s);)(6)请编写函数coun tch(),其功能是:分别统计字符串中英文字母、空格、数字和其它字 符的个数。(s6-12.c)void coun tch(char str,in t n)图 S6-12.c当striW 0Stri是字母I Fletters=letters+1Stri是数字I Fdigit=digit+1,Str i是空格匚T Fcn ace=Others=space+1 others+1i=i+l/*s6-2 c*/#in clude#in clude in t letters=0,space=0,digit=0,others=0;void coun tch(char str,in t n)void main()(in t i;char s30;prin tf(n please in put some characters n);f or(i=O;si=getc- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 实践 教程
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【曲****】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【曲****】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文