《C语言程序设计》实验指导书847_第1页
《C语言程序设计》实验指导书847_第2页
《C语言程序设计》实验指导书847_第3页
《C语言程序设计》实验指导书847_第4页
《C语言程序设计》实验指导书847_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、软 件 工 程 系计算机语言(C)实验指导书专业班级: 过控11-1、2 指导教师: 柴世红 目 录 TOC o 1-1 h z u HYPERLINK l _Toc326141288实验一 熟悉C程序的开发环境 PAGEREF _Toc326141288 h 3 HYPERLINK l _Toc326141289实验二 常量、变量及数据类型 PAGEREF _Toc326141289 h 12 HYPERLINK l _Toc326141290实验三 基本输入输出 PAGEREF _Toc326141290 h 14 HYPERLINK l _Toc326141291实验四 选择结构程序设计

2、(1) PAGEREF _Toc326141291 h 16 HYPERLINK l _Toc326141292实验五 选择结构程序设计(2) PAGEREF _Toc326141292 h 18 HYPERLINK l _Toc326141293实验六 循环结构程序设计(1) PAGEREF _Toc326141293 h 20 HYPERLINK l _Toc326141294实验七 循环结构程序设计(2) PAGEREF _Toc326141294 h 21 HYPERLINK l _Toc326141295实验八 循环结构程序设计(3) PAGEREF _Toc326141295 h

3、23 HYPERLINK l _Toc326141296实验九 一维数组 PAGEREF _Toc326141296 h 25 HYPERLINK l _Toc326141297实验十 二维数组 PAGEREF _Toc326141297 h 27 HYPERLINK l _Toc326141298实验十一 字符数组的应用 PAGEREF _Toc326141298 h 28 HYPERLINK l _Toc326141299实验十二 函数1 PAGEREF _Toc326141299 h 30 HYPERLINK l _Toc326141300实验十三 函数2 PAGEREF _Toc326

4、141300 h 32 HYPERLINK l _Toc326141301实验十四 结构体 PAGEREF _Toc326141301 h 34 HYPERLINK l _Toc326141302实验十五 指针 PAGEREF _Toc326141302 h 36 HYPERLINK l _Toc326141303实验十六 文件 PAGEREF _Toc326141303 h 38实验一 熟悉C程序的开发环境实验目的1熟悉Trubo C+ 3.0集成开发环境2掌握C程序上机的步骤3通过运行简单的C程序,初步了解C源程序的结构实验环境与地点实验环境:安装Trubo C+ 3.0或Visual c

5、+ 6.0的微机实验地点: 实验内容与步骤题目1:在Turbo C+ 3.0 集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出一行信息。#include #include main( ) printf(Hello,World!n); getch( );代码说明:为了方便,对程序的每一行都加了一个行号,即每一行最前面的编号,表示此行代码所在的行数,在实际程序编写过程中不需要写出来。第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第05行用到了格式化输出函数printf( )。第02行,编译预处理命令,包含标准库函数头文件conio.h,因为第06行用到了系统函

6、数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盘)下新建一个以自己的学号或自己名字的拼

7、音命名的文件夹,然后将源程序保存在这个文件夹里。例如输入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命令。【注意】学生在以后的实验中可以将自己编写的程序放在一个专门的文件夹里,以便于集中管理和查看,可

8、以按照以下步骤进行操作。题目2:在Visual C+6.0集成开发环境中输入并运行下面的程序,这个程序的功能是计算12345+5432并在屏幕上输出。#includemain( ) printf(n12345+5432=%dn, 12345+5432);Visual C+6.0是Windows操作系统上主流的可视化C语言集成开发环境,具有使用方便、编程快速的特点,可以使用汉字,有相当多的程序员使用它,是作者认为最好的C语言开发环境。同时,全国计算机等级考试二级C语言的上级考试环境就是Visual C+6.0。下面是Visual C+6.0中C程序编写步骤:1. 进入Visual C+6.0集成

9、开发环境:依次点击“开始菜单所有程序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. 新建一空白工

10、程:一个工程(或项目),一般是一套软件的源程序及其资源的集合。执行“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”,出现新工程信息窗口,单

11、击“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所示的对话框。

12、然后选择“是”,查看结果。图1.18 编译、链接、执行源程序6. 查看结果:如果没有编译或链接错误,将出现如图1.19的运行结果。如果有错误,则会在消息框给出错误提示。图1.19 运行结果7. 退出VC+ 6.0环境。方法同一般Windows窗口的退出。题目3:在集成开发环境中输入并运行下面的程序,这个程序的功能是在屏幕上输出星号组成的图案。#include#include main( ) printf( *n); printf( *n); printf( *n); printf( *n); getch( );代码说明:第01行,编译预处理命令,包含标准输入输出头文件stdio.h,因为第06

13、行用到了格式化输出函数printf()。第02行,编译预处理命令,包含头文件conio.h,因为第10行用到了getch( )函数来暂停以查看屏幕。第05行到第08行,直接用格式化输出函数printf() 打印出星号图案。实验总结与分析1C程序上机的步骤是:编辑、编译、链接、运行2C程序的基本组成元素是函数,至少包含一个main函数。实验二 常量、变量及数据类型实验目的1掌握C语言的数据类型,熟悉整型、字符型、实型数据的常量表示2掌握如何定义一个整型、字符型、实型变量,以及对他们赋值的方法实验环境与地点实验环境:安装Trubo C+ 3.0或Visual c+ 6.0的微机实验地点:实验内容与

14、步骤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.1

15、4 /*定义符号常量*/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,需要如何修改源程序,给出

16、运行结果。实验总结与分析1变量定义的格式2输入变量使用哪个函数、输出变量用哪个函数3符号常量的作用实验三 基本输入输出实验目的1掌握C语言常用运算符的运算规则2掌握输入输出函数(printf、scanf、getchar、putchar)的基本使用实验环境与地点实验环境:安装Trubo C+ 3.0或Visual c+ 6.0的微机实验地点:实验内容与步骤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 )

17、; 2输入两个整数,计算a+|b|的值main( ) int a , b;printf(“input 2 integers : ”) ;scanf(“%d%d” , &a , &b);printf(“%dn” , b=0? a+b : a-b ); 输入3 4,给出输出结果?输入3 -4 ,给出输出结果?输入的两个整数之间如何分隔?如果将输入语句更改为 scanf(“%d,%d” , &a , &b);,则输入数据时如何分隔两个整数如果将输入语句更改为 scanf(“a=%d,b=%d” , &a , &b);,则如何输入数据3已知三角形三边长分别为8,9,10,求此三角形的面积。要求:程序填

18、空并写出运行结果。#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语言表示逻辑量的方法(

19、以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:

20、n); scanf(%d, 【1】 ); if ( 【2】 ) printf(It is an odd number.n ); else printf(It is an even number.n); getch();题目3:计算如下分段函数值:具体要求如下: = 1 * GB3 用if语句实现分支。自变量x与函数值均用单精度类型。 = 2 * GB3 自变量x用scanf函数输入,且输入前要有提示。结果的输出采用以下形式:x=具体值,f(x)=具体值 = 3 * GB3 程序填空,上机运行并分别输入x=-5.0,-3.0,1.0,2.0,2.5,3.0,5.0,运行该程序,写出运行结果。#i

21、nclude 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整除;能

22、被400整除。程序填空并写出运行结果。#include stdio.h#include conio.hmain() int year; printf(nPlease input a year:n); scanf(%d, 【1】 ); if(year%4=0&year%100!=0| 【2】 =0) printf(%d is leapnn, 【3】 ); else printf(%d is not leapnn, 【4】 ); getch();题目2:根据百分制分数决定成绩等级如下:80分(含)以上为A级。70分(含)以上且80分以下为B级。60分(含)以上且70分以下为C级。60分以下为D级。

23、用多分支语句if-else if和switch两种方法编写程序,输入一个百分制分数,输出相应的等级。要求:程序填空并写出运行结果。方法一:#include stdio.h#include conio.hmain() float score; / 定义实型变量,用于输入百分制成绩 char rank; / 定义字符变量,用于表示等级 printf(nPlease input a score:n); scanf(%f, 【1】 ); / 输入百分制成绩 if( 【2】 ) / 如果成绩小于0或大于100 printf(Input error!n ); /*输入错误*/ getch( ); exit

24、(0); /结束程序运行 else if( 【3】 ) rank=A; else if( 【4】 ) rank=B; else if( 【5】 ) rank=C; else rank=D; printf(%g is rank %c.n,score,rank); getch();方法二:#include stdio.h#include conio.hmain() float score; int x; char rank; printf(nPlease input a score:n); scanf(%f, 【1】 ); x=(int)score/10; if(score100) x=11; s

25、witch(x) case 10: case 9: case 8: rank= 【2】 ;break; case 7: rank= 【3】 ; break; case 6: rank= 【4】 ; break; case 5: case 4: case 3: case 2: case 1: case 0: rank= 【5】 ; break; default:printf(Input error!n ); /*输入错误*/ getch( ); exit( 0 ) ; / 结束程序运行 printf(%g is rank %c.n,score,rank); getch();题目3【选作,实验报告

26、中不写该题】:由键盘输入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组运行

27、结果。#include #include #include main( ) char c; int letter=0,capital=0,lower=0,space=0,digital=0,other=0; printf(ninput a line character :n); while(c=getchar()!=n) if( 【1】 ) /*统计大小写字母的个数*/ letter+; if ( 【2】 ) lower+; /*统计小写字母的个数*/ else if( 【3】 ) space+; /*统计空格的个数*/ else if( 【4】 ) digital+; /*统计数字的个数*/

28、 else other+; /*统计其他字符的个数*/ capital=letter-lower; printf(Letter: %d (Capital: %d Lowercase: %d)n,letter,capital,lower); printf(Spaces: %dnDigital : %dnOther : %dn,space,digital,other); getch();实验总结与分析实验七 循环结构程序设计(2)实验目的1、练习并掌握选择结构与循环结构的嵌套、多重循环的应用。2、掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。实验内容与步骤题目1:在屏幕上打印出

29、下三角的乘法表,如图6.1。试着完成下面的程序,并查看运行结果是否正确。图6.1 乘法表#include #include main( ) int i,j; for(i=1;i=9;i+) for(j=1; 【1】 ;j+) printf(%d*%d=%-4d,i,j, 【2】 ); printf(n); getch();题目2:打印出图6.2所示图案。要求:程序填空并写出运行结果。 图6.2 *号图案#include#includemain() int i,j; char space=; for(i=0;i=3;i+) for(j=1; 【1】;j+) printf(%c,space); f

30、or(j=1;j=3;j+) printf(*); for(j=1; 【2】 ;j+) printf(%c,space); for(j=1;j=3;j+) printf(*); 【3】; 题目3:编程把下列数列延长到第50项:1、2、5、10、21、42、85、170、341、682、屏幕输出时要求格式对齐。要求:上机运行并写出运行结果。#include #include /*奇数项= 前一偶数项21,偶数项=前一奇数项2*/main() int i; double result; result=0; for (i=1;i=50;i+) if (i%2=1) result=result*2+1

31、; else result=result*2; printf(%-15.0f,result); if (i%5=0) printf(n); 实验总结与分析实验八 循环结构程序设计(3)实验目的1、练习并掌握多重循环的应用。2、掌握在程序设计中用循环的方法实现一些常用算法,加强调试程序的能力。实验内容与步骤题目1:求两个正整数的最大公约数和最小公倍数。分析:求两个正整数的最大公约数采用辗转相除法:输入正整数m和n,保证m不小于n;如果n0,则求r=m%n,然后m=n,n=r;重复此操作直到n=0;如果n=0,则此时m就是最大公约数,而最小公倍数是这两数之积除以这两数的最大公约数得到的商。要求:程

32、序填空并写出2组运行结果。#include #include main( ) int m,n,r,a; printf(nInput 2 positive integer:n); scanf(%d%d, 【1】 ); a= 【2】 ; if(mn) m=m+n; n=m-n; m=m-n; while(n!=0) r= 【3】 ; m=n; n=r; printf(The largest divisor is : %dn, 【4】 ); /*输出最大公约数*/ printf(The smallest common multiple is : %dn,a/m); /*输出最小公倍数*/ getch

33、();题目2:在屏幕上打印出1000以内的素数,每行打印出10个,并统计个数。要求:程序填空并写出运行结果。#include #include main( ) int i,j,prime,s=0; for(i=2; 【1】 ;i+) prime=1; for(j=2;j=i-1;j+) if( 【2】 ) prime=0; break; if( 【3】 ) printf(%6d,i); s+; if( 【4】 ) printf(n); printf(nThe sum of prime is :%d,s); getch();实验总结与分析【思考题】1、求解1000以内的完数。如果一个数恰好等于它

34、的所有因子(包括1但不包括自身)之和,例如:6的因子为1,2,3,且1236,因此6是一个“完数”。计算并输出1000以内的所有“完数”之和,输出形式为:因子1+因子2+=和值。2、计算分数序列 前20项之和。实验九 一维数组实验目的1、掌握数组的定义、初始化及基本用法。2、掌握使用数组进行冒泡排序的算法。实验内容与步骤题目1:阅读下面的程序,写出运行结果并说出程序的功能,然后上机验证。#include #include main( ) int i,f10; f0=f1=1; for(i=2;i10;i+) fi=fi-1+fi-2; puts(n); for(i=0;i10;i+) prin

35、tf(%6d,fi); if(i+1)%5=0) puts(n); getch();题目2:从键盘上任意输入10个整数,按从小到大的顺序显示在屏幕上。以下采用选择排序法排序。要求:程序填空并写出运行结果。#include #include main( ) int i,j,a10,p; printf(nPlease input 10 integer:n); for(i=0;i10;i+) /*输入数组元素 */ scanf(%d, 【1】 ); printf(Before sortint:n); for(i=0;i10;i+) /*输出排序前数组元素值 */ printf(%6d,ai); fo

36、r(i=0;i10-1;i+) /*进行选择法排序 */ p=i; for(j=i+1;j10;j+) if( 【2】 ) p=j; if(p!=i) ap=ap+ai; ai=ap-ai; ap=ap-ai; printf(nAfter sortint:n); for(i=0;i10;i+) /*输出排序后的数组元素值 */ printf(%6d, 【3】 ); printf(n); getch();实验总结与分析什么是数组?给出一维数组定义格式实验十 二维数组实验目的1、掌握二维数组的定义、初始化及基本用法。2、掌握与二维数组相关的基本算法。实验内容与步骤题目1:按图示形式输出杨辉三角的前

37、10行。将杨辉三角存储在二维数组中,如图7.1所示,分析杨辉三角的形成规律及存储规律,完成程序编码上机调试。图7.1 杨辉三角的存储#include #include main( ) int i, j, a1010, p=0; for(i=0; i10; i+) for(j=0; j=i; j+) if(j=0|j=i) aij=1; else aij=ai-1j+ai-1j-1; printf(%6d,aij); if(+p%10=0) printf(n); printf(n); getch();题目2:请编程计算图7.2给出的矩阵周边元素之和。要求:编写程序、输出并记录结果。图7.2 矩阵

38、实验总结与分析实验十一 字符数组的应用实验目的1、练习并掌握字符数组处理字符串的方法。2、掌握常用字符串处理函数。实验内容与步骤题目1:将下列给出的城市名列表按降序排序。Atlanta、Boston、Chicago、Denver、Hoston、LosAngeles、Miami、NewYork 。思路:将城市名存放到一个二维字符数组中,然后用选择法对这N个字符串降序排序。可利用strcmp()、strcpy()函数。要求:程序填空并写出运行结果。#include#include#include main( ) char s812=Atlanta,Boston,Chicago, Denver,Ho

39、ston,LosAngeles, Miami,NewYork,str12; int i,j; for(i=0;i7;i+) for(j=i+1;j8;j+) if(strcmp(si,sj) 【1】 ) strcpy(str,si); strcpy(si,sj); 【2】 ; for(i=0;i8;i+) puts(si); getch();题目2:输入某月份的整数值112,输出该月份的英文名称。思路:将12个英文月份以字符串的形式存放到month1315中,一行存放一个字符串。要求:程序填空并写出运行结果。#include#include main( ) char ch,month 15=I

40、llegal month., January,February,March,April, May,June,July,August,September, October,Novenber,Decenmber; int m; do printf(nInput month:); scanf(%d, 【&m】 ); printf(%d:%sn,m,(m12)?month0: monthm ); printf(If contiued,press Y,otherwise press any key abort:); ch=getche(); while(ch=Y|ch=y); getch();实验总结与

41、分析scanf与gets在接收字符串时有什么区别?字符串内容比较时,应该使用字符串比较函数strcmp( ),还是用关系运算符“=”?字符串比较函数strcmp的返回值及其意义字符串复制时可以使用哪个函数?实验十二 函数1实验目的1、掌握函数的定义和调用的方法。2、理解C语言函数的参数传递方式。实验内容与步骤题目1:写一个判断素数的函数,在主函数输入一个整数,输出是否素数的信息。要求:程序填空并写出2组运行结果。#include#include /* 穷举法判断素数 */int prime(int n) int i; for (i=2; i=n-1; i+) if (n%i=0) return

42、 0; return 1;main( ) int prime(int n); int m; char ch; do printf(nInput a positive integer:); scanf(%d, 【1】 ); printf(%d is %s prime.n, 【2】 ,(prime(m)?:not); printf(If contiued,press Y,otherwise press any key abort:); ch=getche(); while(ch=Y|ch=y);题目2:编写两个函数,分别求两个正整数的最大公约数和最小公倍数,用主函数调用这两个函数并输出结果,两个正

43、整数由键盘输入。要求:程序填空并测试运行结果。#include #include int largedivisor(int m,int n) int r; if(mn) m=m+n; n=m-n; m=m-n; while(n!=0) r= 【1】 ; m=n; n=r; return m;int smallmultiple(int m,int n) return m*n/ largedivisor(m,n);main( ) int largedivisor(int m,int n); int smallmultiple(int m,int n); int m,n; printf(nInput

44、 2 positive integer:n); scanf(%d%d, 【2】 ); printf(The largest divisor is : %dn, 【3】 ); /*输出最大公约数*/ printf(The smallest common multiple is:%dn,【4】);/*输出最小公倍数*/ getch();实验总结与分析main()函数能否被其他函数调用?实验十三 函数2实验目的1、掌握函数的嵌套调用方法。2、掌握函数的递归调用方法。实验内容与步骤题目1:计算1!+2!+3!+4!=?。试着完成下面的程序,并查看运行结果是否正确。#include #include l

45、ong fac(intm) int f=1,i; for(i=1;i=m;i+) f= f*i ; return f;main( ) int i; long s=0; for(i=1;i=4;i+) S=s+faxc(i) printf(1!+2!+3!+4!=%ld,s ); printf(n); getch();题目2:编一递归函数求n!。思路:以求4的阶乘为例:4!=4*3!,3!=3*2!,2!=2*1!,1!=1,0!=1。递归结束条件:当n=1或n=0时,n!=1。要求:程序填空并写出运行结果。#include #include #include float fact (int n

46、) float f=0; if(n0) printf(n0,error!); getch(); exit(0); else if (n=0 | n=1) f=1; else f=fact(n-1)*n; return f ;main( ) float fact (int n); int n; float y; printf(nInput n:); scanf(%d, &n ); y=fact(n); printf(%d!=%-10.0fn, n , y ); getch();实验总结与分析递归方法有什么优缺点?实验十四 结构体实验目的掌握结构体类型、结构体变量的定义及使用方法。实验内容与步骤题

47、目1:计算学生的平均成绩并输出学生的个人信息。说明:有5个学生的数据记录,每个记录包括的信息有:学号(4位数字)、姓名(20个字符)、性别(1字符)、成绩1(float)、成绩2(float)、成绩3(float)、平均成绩(float)。编写程序,完成这5条记录的输入,并计算出每个人的平均成绩,最后输出这些信息。实验要求:(输入、输出均编写成子函数完成)输入:有提示信息,明确表示将对第几位同学的什么数据进行录入。输出:按下列格式显示NUMNAMESEXSCORE1SCORE2SCORE3AVER1001Li qiangM78.2899085.731002 实验步骤:先完成下面的设计,再上机调

48、试。 结构体变量定义。 输入、输出函数的编写。 主函数的编写。 输入程序,进行编译和运行,查看结果。 若运行有问题,请用单步调试和加观察点的方法逐步排除故障。要求:程序填空并写出运行结果。#include#include #define N 2typedef struct int num; char name20; char sex; float score1,score2,score3,aver; student;void inputstu(student stu , int n) int i; float temp; for(i=0;in;i+) printf(input No.%d Nu

49、m:,i+1); scanf(%d%*c,&stui.num); printf(input No.%d Name:,i+1); scanf(%s,); printf(input No.%d Sex:,i+1); scanf(%*c%c,&stui.sex); printf(input No.%d Score1:,i+1); scanf(%f,&temp); stui.score1=temp; printf(input No.%d Score2:,i+1); scanf(%f,&temp); stui.score2=temp; printf(input No.%d Score3

50、:,i+1); scanf(%f,&temp); stui.score3=temp; void printstu(student stu , int n) int i; printf(nNumtNametttSextScore1tscore2tscore3tAvertn); for(i=0;in;i+) printf(%dt%-20st%ct%gt%gt%gt%.1fn, stui.num, , stui.sex, stui.score1, stui.score2 ,stui.score3,stui.aver);main( ) int i; student stuN; inp

51、utstu( 【1】 ,N); for(i=0;iN;i+) stui.aver= (stui.score1+stui.score2+stui.score3)/3; printstu( 【2】 ,N); getch();题目2:(教材例10-10)定义一个日期结构体变量(包括年、月、日)。从键盘输入一个日期,计算该日子在该年是第几天。用一个函数days来计算日子数,从主函数将日期传给days函数,计算后将日子数传回主函数输出。要求:编写程序并写出运行结果。实验总结与分析实验十五 指针实验目的1、掌握指针的定义、引用和处理。2、掌握通过指针变量引用一维数组元素的方法。3、掌握指针变量作为函数参数

52、的方法。实验内容与步骤题目1:输入下面的程序并进行单步运行,从中了解变量的指针和指针变量的概念。# include stdio.hmain( ) int a=5,*p; p=&a; a=10; *p=8;操作步骤:输入程序后,连续按三次F8,使绿条停留在p=&a语句行上。用Ctrl+F7操作分别将a,&a,p及*p显示出来。按下Ctrl+F7弹出Add Watch对话框,用来添加监视表达式,一个对话框只能添加一个,按4次才能添加完。调试程序时,添加的监视表达式不要超过4个。查看观察窗口中的内容,可发现此时a己有确定的地址(&a)和确定的值,而p还没有确定的值(此时语句p=&a还未执行),即p还没有明确的指向,因而它所指向的内存单元(*p)中的内容也是不确定的。按F8往下执行一步后再查看观察窗中的内容,可发现p已有确定的值,它与&a的值一致,说明p中存放了变量a的地址,也就是说p是指向变量a的指针变量。同时可发现,*p的内容与a的内容一致,即p所指向的内存单元中的内容就是a的内容;从而可以理解*p等效于a,表示同一内存单元。按F8往下执行一步后再查看观察窗中的内容,可发现*p和a的内容都已发生变化,从而可理解通过改变指针变量p所指向的内存单元中的内容可以间接地改变a中的内容。再按F8往下执行一步,可发现,a的值和*p的值都已发生变

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论