资源描述
软 件 工 程 系计算机语言(C)实验指导书专业班级: 过控11-1、2 指导教师: 柴世红 目 录实验一 熟悉C程序的开发环境3实验二 常量、变量及数据类型12实验三 基本输入输出14实验四 选择结构程序设计(1)16实验五 选择结构程序设计(2)18实验六 循环结构程序设计(1)20实验七 循环结构程序设计(2)21实验八 循环结构程序设计(3)23实验九 一维数组25实验十 二维数组27实验十一 字符数组的应用28实验十二 函数130实验十三 函数232实验十四 结构体34实验十五 指针36实验十六 文件38实验一 熟悉C程序的开发环境一、 实验目的1熟悉Trubo C+ 3.0集成开发环境2掌握C程序上机的步骤3通过运行简单的C程序,初步了解C源程序的结构二、 实验环境与地点1 实验环境:安装Trubo C+ 3.0或Visual c+ 6.0的微机2 实验地点: 三、 实验内容与步骤题目1:在Turbo C+ 3.0 集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出一行信息。01 #include 02 #include 03 main( )04 05 printf(Hello,World!n);06 getch( );07 代码说明: 为了方便,对程序的每一行都加了一个行号,即每一行最前面的编号,表示此行代码所在的行数,在实际程序编写过程中不需要写出来。 第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第05行用到了格式化输出函数printf( )。 第02行,编译预处理命令,包含标准库函数头文件conio.h,因为第06行用到了系统函数getch( ),用来暂停以查看屏幕,并不是完成题目要求要必须用到的语句。Turbo C+ 3.0中C程序编写步骤:1. 进入Turbo C+ 3.0集成开发环境。图1.1 Turbo C+ 3.0集成开发环境2. 新建文件:选择File菜单下的New选项。如图1.2所示,新建文件默认文件名为NONAME00.CPP图1.2 新建文件3. 输入源程序:从光标所在处开始输入源程序。如图1.3所示。图1.3 在编辑区输入源程序4. 保存源程序:选择File菜单下的Save选项,此时弹出重命名对话框,对源程序文件进行重命名(包括路径)。学生可以先在D盘(或E盘)下新建一个以自己的学号或自己名字的拼音命名的文件夹,然后将源程序保存在这个文件夹里。例如输入D:2011hello.C,按回车。如图1.4所示。图1.4 保存源程序5. 编译、链接、执行源程序:执行Run菜单下的Run命令或按下Ctrl+F9。如图1.5所示。图1.5 编译、链接、执行源程序6. 查看结果:如果没有编译或链接错误,将出现如图1.6的运行结果。如果有错误,则会在消息框给出错误提示。图1.6 运行结果按任意键将返回源程序编辑界面,若要再次查看结果,可按下快捷键Alt+F5或执行Window菜单下的User screen命令。【注意】学生在以后的实验中可以将自己编写的程序放在一个专门的文件夹里,以便于集中管理和查看,可以按照以下步骤进行操作。题目2:在Visual C+6.0集成开发环境中输入并运行下面的程序,这个程序的功能是计算12345+5432并在屏幕上输出。01 #include02 main( )03 04 printf(n12345+5432=%dn, 12345+5432);05 Visual C+6.0是Windows操作系统上主流的可视化C语言集成开发环境,具有使用方便、编程快速的特点,可以使用汉字,有相当多的程序员使用它,是作者认为最好的C语言开发环境。同时,全国计算机等级考试二级C语言的上级考试环境就是Visual C+6.0。下面是Visual C+6.0中C程序编写步骤:1. 进入Visual C+6.0集成开发环境:依次点击“开始菜单所有程序Microsoft Visual C+ 6.0Microsoft Visual C+ 6.0”,打开如图1.11的界面。图1.11 Visual C+6.0集成开发环境2. 创建工作空间:执行“File”“New”命令;在“New”对话框中,切换到“Workspaces”选项卡;输入工作空间名(Workspaces Name)和保存位置(Location);然后单击“OK”。如图1.12所示。不管开发几个程序,一般每个人只需一个工作空间(当然也可以每个程序一个),主要用于把个人的源码及其相关资源集中在一起,方便管理。图1.12 创建工作空间3. 新建一空白工程:一个工程(或项目),一般是一套软件的源程序及其资源的集合。执行“File”“New”命令;在“New”对话框中,切换到“Projects”选项卡;选中“Win32 Console Appliaction”(Win32控制台应用程序)和“Add to current workspace”(添加到当前的工作空间),输入工程名Project name和保存位置Location;工程名Project name一般要取与程序功能相关的名称,如图1.13所示。然后单击“OK”,弹出如图1.14的窗口,选择“An empty project”,创建一个空工程,单击“Finish”,出现新工程信息窗口,单击“OK”。图1.13 设置工程名称图1.14 选择空工程图1.15 空工程创建完成4. 添加、编辑、保存C源程序文件:执行“File”“New”命令;在“New”对话框中,切换到“Files”选项卡;选中“C+ Source File”或者“Text File”,输入文件名 (扩展名必须为.c),如图1.16所示。然后单击“OK”。在编辑窗口,输入源程序,并保存。如图1.17。图1.16 输入源程序名图1.17 保存源程序5. 编译、链接、执行源程序:执行“Build” “Execute”命令,或单击Execute Program图标,或按快捷键ctrl+F5,弹出如图1.18所示的对话框。然后选择“是”,查看结果。图1.18 编译、链接、执行源程序6. 查看结果:如果没有编译或链接错误,将出现如图1.19的运行结果。如果有错误,则会在消息框给出错误提示。图1.19 运行结果7. 退出VC+ 6.0环境。方法同一般Windows窗口的退出。题目3:在集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出星号组成的图案。01 #include02 #include 03 main( )04 05 printf( *n);06 printf( *n);07 printf( *n);08 printf( *n);09 getch( );10 代码说明: 第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第06行用到了格式化输出函数printf()。 第02行,编译预处理命令,包含头文件conio.h,因为第10行用到了getch( )函数来暂停以查看屏幕。第05行到第08行,直接用格式化输出函数printf() 打印出星号图案。四、 实验总结与分析1C程序上机的步骤是:编辑、编译、链接、运行2C程序的基本组成元素是函数,至少包含一个main函数。实验二 常量、变量及数据类型一、 实验目的1掌握C语言的数据类型,熟悉整型、字符型、实型数据的常量表示2掌握如何定义一个整型、字符型、实型变量,以及对他们赋值的方法二、 实验环境与地点1 实验环境:安装Trubo C+ 3.0或Visual c+ 6.0的微机2 实验地点:三、 实验内容与步骤1变量的定义、输入及输出输入一个整数,输出它的绝对值,根据注释要求补充代码main( ) _(代码1)_ ; /* 定义int类型变量x和y */ printf(“input an integer: “); scanf(“%d” , _(代码2)_ ); /*输入整型数据,赋给变量x */ if( x=0) y=x ; else y= - x ; printf(“%d” , _(代码3)_ ); /* 输出变量y的值 */ 2编写程序:输入一个华氏温度值,输出对应的摄氏温度值。3符号常量的使用运行以下程序,给出运行结果,并按要求修改代码/*计算圆的面积和周长*/#define PI 3.14 /*定义符号常量*/double calcuArea(double r);double calcuCircum(double r);main( ) float a=2.0; printf(area=%fn,calcuArea(a); printf(circumference=%fn,calcuCircum(a);double calcuArea(double r) /*计算圆面积*/ return (PI*r*r);double calcuCircum(double r) /*计算圆周长*/ return (2.0*PI*r);如果将PI值改为 3.1415926,需要如何修改源程序,给出运行结果。四、 实验总结与分析1变量定义的格式2输入变量使用哪个函数、输出变量用哪个函数3符号常量的作用实验三 基本输入输出一、 实验目的1掌握C语言常用运算符的运算规则2掌握输入输出函数(printf、scanf、getchar、putchar)的基本使用二、 实验环境与地点1 实验环境:安装Trubo C+ 3.0或Visual c+ 6.0的微机2 实验地点:三、 实验内容与步骤1运行以下程序,给出运行结果main( ) int i=3 , j , m=7 , n ;j=+i ;printf(“i=%d, j=%dn” , i , j ) ;n=m- - ;printf(“m=%d , n=%dn” , m , n ); 2输入两个整数,计算a+|b|的值main( ) int a , b;printf(“input 2 integers : ”) ;scanf(“%d%d” , &a , &b);printf(“%dn” , b=0? a+b : a-b ); (1) 输入3 4,给出输出结果?(2) 输入3 -4 ,给出输出结果?(3) 输入的两个整数之间如何分隔?(4) 如果将输入语句更改为 scanf(“%d,%d” , &a , &b);,则输入数据时如何分隔两个整数(5) 如果将输入语句更改为 scanf(“a=%d,b=%d” , &a , &b);,则如何输入数据3已知三角形三边长分别为8,9,10,求此三角形的面积。要求:程序填空并写出运行结果。#include #include #include /* 包含头文件math.h,程序中使用了函数sqrt求平方根 */main( ) int a=8,b=9,c=10; double s,aera; s=(a+b+c)/ 【2】 ; aera=sqrt(s*( 【3】 )*( 【4】 )*( 【5】 ); printf(The aera of this triagle is:%.3fn, 【6】 ); putchar(n); getch( );如果要求三角形的三边从键盘输入,如何修改源程序?四、 实验总结与分析实验四 选择结构程序设计(1)一、 实验目的1了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)2学会正确使用逻辑运算符和逻辑表达式,熟练掌握if语句二、 实验环境安装Trubo C+ 3.0或Visual c+ 6.0的微机三、 实验内容与步骤题目1:将下列由程序流程图描述的算法,转换为C源代码,然后输入计算机并运行。开始结束输入a , b , cabmaxc输出max输出cmax=amax=b图4.1 程序流程图题目2:输入一个整数,打印出它是奇数还是偶数。要求:程序填空,上机运行并写出运行结果。参考程序如下:#include stdio.h#include conio.hmain() int a; printf(nPlease input a integer:n); scanf(%d, 【1】 ); if ( 【2】 ) printf(It is an odd number.n ); else printf(It is an even number.n); getch();题目3:计算如下分段函数值:具体要求如下: 用if语句实现分支。自变量x与函数值均用单精度类型。 自变量x用scanf函数输入,且输入前要有提示。结果的输出采用以下形式:x=具体值,f(x)=具体值 程序填空,上机运行并分别输入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序,写出运行结果。#include stdio.h#include conio.hmain() float x,y; printf(nPlease input float x:n); scanf(%f, 【1】 ); if ( 【2】 ) y=x*x+x-6; else if( 【3】 ) y=x*x-5*x+6; else y=x*x-x-1; printf(nx=%g , f(x)=%gn,x,y); getch();四、 实验总结与分析实验五 选择结构程序设计(2)一、 实验目的熟练掌握if语句、switch语句的使用二、 实验内容与步骤题目1:输入一个年份,判断是不是闰年。闰年的条件有两个:能被4整除,但不能被100整除;能被400整除。程序填空并写出运行结果。01 #include stdio.h02 #include conio.h03 main()04 int year;05 printf(nPlease input a year:n);06 scanf(%d, 【1】 );07 if(year%4=0&year%100!=0| 【2】 =0)08 printf(%d is leapnn, 【3】 );09 else 10 printf(%d is not leapnn, 【4】 );11 getch();12 题目2:根据百分制分数决定成绩等级如下: 80分(含)以上为A级。 70分(含)以上且80分以下为B级。 60分(含)以上且70分以下为C级。 60分以下为D级。用多分支语句if-else if和switch两种方法编写程序,输入一个百分制分数,输出相应的等级。要求:程序填空并写出运行结果。方法一:01 #include stdio.h02 #include conio.h03 main()04 float score; / 定义实型变量,用于输入百分制成绩05 char rank; / 定义字符变量,用于表示等级06 printf(nPlease input a score:n);07 scanf(%f, 【1】 ); / 输入百分制成绩08 if( 【2】 ) / 如果成绩小于0或大于10009 printf(Input error!n ); /*输入错误*/10 getch( );11 exit(0); /结束程序运行12 13 else if( 【3】 )14 rank=A;15 else if( 【4】 )16 rank=B;17 else if( 【5】 )18 rank=C;19 else 20 rank=D;21 printf(%g is rank %c.n,score,rank);22 getch();23 方法二:01 #include stdio.h02 #include conio.h03 main()04 05 float score; int x;06 char rank;07 printf(nPlease input a score:n);08 scanf(%f, 【1】 );09 x=(int)score/10;10 if(score100)11 x=11;12 switch(x)13 case 10:14 case 9:15 case 8: rank= 【2】 ;break;16 case 7: rank= 【3】 ; break;17 case 6: rank= 【4】 ; break;18 case 5:19 case 4:20 case 3:21 case 2:22 case 1:23 case 0: rank= 【5】 ; break;24 default:printf(Input error!n ); /*输入错误*/25 getch( );26 exit( 0 ) ; / 结束程序运行27 28 printf(%g is rank %c.n,score,rank);29 getch();30 题目3【选作,实验报告中不写该题】:由键盘输入3个整数,按降序输出这三个数。请编写程序并上机调试。三、 实验总结与分析如何判断一个数n能否被3和5整除。实验六 循环结构程序设计(1)一、 实验目的1、掌握在设计条件型循环结构时,如何正确地设定循环条件。2、掌握如何正确地控制计数型循环结构的循环次数。3、掌握while、do-while、for语句基本流程二、 实验内容与步骤题目1:用while循环求n!,其中n的数值从键盘输入(1-9)。写出程序及运行结果。题目2:使用for循环计算:1+2+3+100=?写出程序及运行结果。题目3:输入一行字符,分别统计出其中大小写英文字母、空格、数字和其他字母的个数。要求:程序填空并写出1组运行结果。01 #include 02 #include 03 #include 04 main( )05 06 char c;07 int letter=0,capital=0,lower=0,space=0,digital=0,other=0;08 printf(ninput a line character :n); 09 while(c=getchar()!=n)10 11 if( 【1】 ) /*统计大小写字母的个数*/12 13 letter+; 14 if ( 【2】 ) 15 lower+; /*统计小写字母的个数*/16 17 else if( 【3】 )18 space+; /*统计空格的个数*/19 else if( 【4】 )20 digital+; /*统计数字的个数*/21 else22 other+; /*统计其他字符的个数*/23 24 capital=letter-lower;25 printf(Letter: %d (Capital: %d Lowercase: %d)n,letter,capital,lower);26 printf(Spaces: %dnDigital : %dnOther : %dn,space,digital,other);27 getch();28 三、 实验总结与分析实验七 循环结构程序设计(2)一、 实验目的1、练习并掌握选择结构与循环结构的嵌套、多重循环的应用。2、掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二、 实验内容与步骤题目1:在屏幕上打印出下三角的乘法表,如图6.1。试着完成下面的程序,并查看运行结果是否正确。图6.1 乘法表01 #include 02 #include 03 main( )04 05 int i,j;06 for(i=1;i=9;i+)07 08 for(j=1; 【1】 ;j+)09 printf(%d*%d=%-4d,i,j, 【2】 );10 printf(n);11 12 getch();13 题目2:打印出图6.2所示图案。要求:程序填空并写出运行结果。 图6.2 *号图案01 #include02 #include03 main()04 05 int i,j;06 char space=;07 for(i=0;i=3;i+)08 09 for(j=1; 【1】;j+)10 printf(%c,space);11 for(j=1;j=3;j+)12 printf(*);13 for(j=1; 【2】 ;j+)14 printf(%c,space);15 for(j=1;j=3;j+)16 printf(*);17 【3】;18 19 题目3:编程把下列数列延长到第50项:1、2、5、10、21、42、85、170、341、682、.屏幕输出时要求格式对齐。要求:上机运行并写出运行结果。01 #include 02 #include 03 /*奇数项= 前一偶数项21,偶数项=前一奇数项2*/04 main()05 06 int i;07 double result;08 result=0;09 for (i=1;i=50;i+)10 11 if (i%2=1)12 result=result*2+1;13 else14 result=result*2;15 printf(%-15.0f,result);16 if (i%5=0)17 printf(n);18 19 三、 实验总结与分析实验八 循环结构程序设计(3)一、 实验目的1、练习并掌握多重循环的应用。2、掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。二、 实验内容与步骤题目1:求两个正整数的最大公约数和最小公倍数。分析:求两个正整数的最大公约数采用辗转相除法: 输入正整数m和n,保证m不小于n; 如果n0,则求r=m%n,然后m=n,n=r;重复此操作直到n=0; 如果n=0,则此时m就是最大公约数,而最小公倍数是这两数之积除以这两数的最大公约数得到的商。要求:程序填空并写出2组运行结果。01 #include 02 #include 03 main( )04 05 int m,n,r,a;06 printf(nInput 2 positive integer:n);07 scanf(%d%d, 【1】 );08 a= 【2】 ;09 if(mn)10 11 m=m+n;12 n=m-n;13 m=m-n;14 15 while(n!=0)16 17 r= 【3】 ;18 m=n;19 n=r;20 21 printf(The largest divisor is : %dn, 【4】 ); /*输出最大公约数*/22 printf(The smallest common multiple is : %dn,a/m); /*输出最小公倍数*/23 getch();24 题目2:在屏幕上打印出1000以内的素数,每行打印出10个,并统计个数。要求:程序填空并写出运行结果。01 #include 02 #include 03 main( )04 05 int i,j,prime,s=0;06 for(i=2; 【1】 ;i+)07 08 prime=1;09 for(j=2;j=i-1;j+)10 11 if( 【2】 )12 13 prime=0; 14 break;15 16 17 if( 【3】 )18 19 printf(%6d,i);20 s+;21 if( 【4】 )22 printf(n);23 24 25 printf(nThe sum of prime is :%d,s);26 getch();27 三、 实验总结与分析【思考题】1、求解1000以内的完数。如果一个数恰好等于它的所有因子(包括1但不包括自身)之和,例如:6的因子为1,2,3,且1236,因此6是一个“完数”。计算并输出1000以内的所有“完数”之和,输出形式为:因子1+因子2+=和值。2、计算分数序列 前20项之和。实验九 一维数组一、 实验目的1、掌握数组的定义、初始化及基本用法。2、掌握使用数组进行冒泡排序的算法。二、 实验内容与步骤题目1:阅读下面的程序,写出运行结果并说出程序的功能,然后上机验证。01 #include 02 #include 03 main( )04 05 int i,f10;06 f0=f1=1;07 for(i=2;i10;i+)08 fi=fi-1+fi-2;09 puts(n);10 for(i=0;i10;i+)11 12 printf(%6d,fi);13 if(i+1)%5=0)14 puts(n);15 16 getch();17 题目2:从键盘上任意输入10个整数,按从小到大的顺序显示在屏幕上。以下采用选择排序法排序。要求:程序填空并写出运行结果。01 #include 02 #include 03 main( )04 05 int i,j,a10,p;06 printf(nPlease input 10 integer:n);07 for(i=0;i10;i+) /*输入数组元素 */08 scanf(%d, 【1】 );09 printf(Before sortint:n);10 for(i=0;i10;i+) /*输出排序前数组元素值 */11 12 printf(%6d,ai);13 14 for(i=0;i10-1;i+) /*进行选择法排序 */15 16 p=i; 17 for(j=i+1;j10;j+) 18 if( 【2】 )19 p=j;20 if(p!=i)21 22 ap=ap+ai;23 ai=ap-ai;24 ap=ap-ai;25 26 27 printf(nAfter sortint:n);28 for(i=0;i10;i+) /*输出排序后的数组元素值 */29 30 printf(%6d, 【3】 );31 32 printf(n);33 getch();34 三、 实验总结与分析1、 什么是数组?2、 给出一维数组定义格式实验十 二维数组一、 实验目的1、掌握二维数组的定义、初始化及基本用法。2、掌握与二维数组相关的基本算法。二、 实验内容与步骤题目1:按图示形式输出杨辉三角的前10行。将杨辉三角存储在二维数组中,如图7.1所示,分析杨辉三角的形成规律及存储规律,完成程序编码上机调试。图7.1 杨辉三角的存储01 #include 02 #include 03 main( )04 05 int i, j, a1010, p=0;06 for(i=0; i10; i+)07 for(j=0; j=i; j+)08 09 if(j=0|j=i)10 aij=1;11 else12 aij=ai-1j+ai-1j-1;13 printf(%6d,aij);14 if(+p%10=0)15 printf(n);16 17 printf(n);18 getch();19 题目2:请编程计算图7.2给出的矩阵周边元素之和。要求:编写程序、输出并记录结果。图7.2 矩阵三、 实验总结与分析实验十一 字符数组的应用一、 实验目的1、练习并掌握字符数组处理字符串的方法。2、掌握常用字符串处理函数。二、 实验内容与步骤题目1:将下列给出的城市名列表按降序排序。Atlanta、Boston、Chicago、Denver、Hoston、LosAngeles、Miami、NewYork 。思路:将城市名存放到一个二维字符数组中,然后用选择法对这N个字符串降序排序。可利用strcmp()、strcpy()函数。要求:程序填空并写出运行结果。01 #include02 #include03 #include 0405 main( )06 07 char s812=Atlanta,Boston,Chicago,08 Denver,Hoston,LosAngeles,09 Miami,NewYork,str12;10 int i,j;1112 for(i=0;i7;i+)13 for(j=i+1;j8;j+)14 if(strcmp(si,sj) 【1】 )15 16 strcpy(str,si);17 strcpy(si,sj);18 【2】 ;19 20 for(i=0;i8;i+)21 puts(si);2223 getch();24 题目2:输入某月份的整数值112,输出该月份的英文名称。思路:将12个英文月份以字符串的形式存放到month1315中,一行存放一个字符串。要求:程序填空并写出运行结果。01 #include02 #include 0304 main( )05 06 char ch,month 15=Illegal month., 07 January,February,March,April,08 May,June,July,August,September,09 October,Novenber,Decenmber;10 int m;1112 do13 14 printf(nInput month:);15 scanf(%d, 【&m】 );16 printf(%d:%sn,m,(m12)?month0: monthm );17 printf(If contiued,press Y,otherwise press any key abort:);18 ch=getche();19 while(ch=Y|ch=y);2021 getch();22 23三、 实验总结与分析1、 scanf与gets在接收字符串时有什么区别?2、 字符串内容比较时,应该使用字符串比较函数strcmp( ),还是用关系运算符“=”?字符串比较函数strcmp的返回值及其意义3、 字符串复制时可以使用哪个函数?实验十二 函数1一、 实验目的1、掌握函数的定义和调用的方法。2、理解C语言函数的参数传递方式。二、 实验内容与步骤题目1:写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。要求:程序填空并写出2组运行结果。01 #include02 #include 03 /* 穷举法判断素数 */04 int prime(int n)05 06 int i;07 for (i=2; i=n-1; i+)08 if (n%i=0) return 0;09 return 1;10 1112 main( )13 14 int prime(int n);15 int m;16 char ch;17 do18 19 printf(nInput a positive integer:);20 scanf(%d, 【1】 );21 printf(%d is %s prime.n, 【2】 ,(prime(m)?:not);22 printf(If contiued,press Y,otherwise press any key abort:);23 ch=getche();24 while(ch=Y|ch=y);25 题目2:编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个正整数由键盘输入。要求:程序填空并测试运行结果。01 #include 02 #include 0304 int largedivisor(int m,int n)05 06 int r;07 if(mn)08 09 m=m+n;10 n=m-n;11 m=m-n;12 13 while(n!=0)14 15 r= 【1】 ;16 m=n;17 n=r;18 19 return m;20 2122 int smallmultiple(int m,int n)23 24 return m*n/ largedivisor(m,n);25 2627 main( )28 29 int largedivisor(int m,int n);30 int smallmultiple(int m,int n);31 int m,n;32 printf(nInput 2 positive integer:n);33 scanf(%d%d, 【2】 );3435 printf(The largest divisor is : %dn, 【3】 ); /*输出最大公约数*/36 printf(The smallest common multiple is:%dn,【4】);/*输出最小公倍数*/3738 getch();39 三、 实验总结与分析main()函数能否被其他函数调用?实验十三 函数2一、 实验目的1、掌握函数的嵌套调用方法。2、掌握函数的递归调用方法。二、 实验内容与步骤题目1:计算1!+2!+3!+4!=?。试着完成下面的程序,并查看运行结果是否正确。01 #include 02 #include 0304 long fac(intm)05 06 int f=1,i;07 for(i=1;i=m;i+)08 f= f*i ;0910 return f;11 1213 main( )14 15 int i;16 long s=0;17 for(i=1;i=4;i+)18 S=s+faxc(i)19 printf(1!+2!+3!+4!=%ld,s );20 printf(n);2122 getch();23 题目2:编一递归函数求n!。思路:以求4的阶乘为例:4!=4*3!,3!=3*2!,2!=2*1!,1!=1,0!=1。递归结束条件:当n=1或n=0时,n!=1。要求:程序填空并写出运行结果。01 #include 02 #include 03 #include 0405 float fact (int n)06 07 float f=0;08 if(n0) 09 10 printf(n0,error!);11 getch();12 exit(0);13 14 else if (n=0 | n=1) 15 f=1;16 else 17 f=fact(n-1)*n;18 return f ;19 2021 main( )22 23 float fact (int n);24 int n; float y;25 printf(nInput n:);26 scanf(%d, &n );27 y=fact(n);28 printf(%d!=%-10.0fn, n , y );2930 getch();31 三、 实验总结与分析递归方法有什么优缺点?实验十四 结构体一、 实验目的掌握结构体类型、结构体变量的定义及使用方法。二、 实验内容与步骤题目1:计算学生的平均成绩并输出学生的个人信息。说明:有5个学生的数据记录,每个记录包括的信息有:学号(4位数字)、姓名(20个字符)、性别(1字符)、成绩1(float)、成绩2(float)、成绩3(float)、平均成绩(float)。编写程序,完成这5条记录的输入,并计算出每个人的平均成绩,最后输出这些信息。实验要求:(输入、输出均编写成子函数完成)输入:有提示信息,明确表示将对第几位同学的什么数据进行录入。输出:按下列格式显示NUMNAMESEXSCORE1SCORE2SCORE3AVER1001Li qiangM78.2899085.731002 实验步骤:先完成下面的设计,再上机调试。 结构体变量定义。 输入、输出函数的编写。 主函数的编写。 输入程序,进行编译和运行,查看结果。 若运行有问题,请用单步调试和加观察点的方法逐步排除故障。要求:程序填空并写出运行结果。01 #include02 #include 03 #define N 20405 typedef struct 06 07 int num; 08 char name20;09 char sex;10 float score1,score2,score3,aver;11 student;12 void inputstu(student stu , int n)13 14 int i;15 float temp;16 for(i=0;in;i+)17 18 printf(input No.%d Num:,i+1);19 scanf(%d%*c,&stui.num);20 printf(input No.%d Name:,i+1);21 scanf(%s,stui.name);22 printf(input No.%d Sex:,i+1);23 scanf(%*c%c,&stui.sex);24 printf(input No.%d Score1:,i+1);25 scanf(%f,&temp);26 stui.score1=temp;27 printf(input No.%d Score2:,i+1);28 scanf(%f,&temp);29 stui.score2=temp;30 printf(input No.%d Score3:,i+1);31 scanf(%f,&temp);32 stui.sco
展开阅读全文