电气C实训指导书_第1页
电气C实训指导书_第2页
电气C实训指导书_第3页
电气C实训指导书_第4页
电气C实训指导书_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

1、精选优质文档-倾情为你奉上C语言程序设计实训指导书电气指导老师:2O11.12.15C程序设计实训指导书(适用于电气专业)C程序设计实训是C程序设计课程的一个重要环节,而且也是整个教学过程中理论联系实际不可缺少的教学环节。为加强学生对于知识掌握的广泛性、应用性和动手能力,以及对各有关先修课程的知识进行较为全面而综合的设计练习,必须搞好C程序设计实训。一、实训目标强化C语言的各种知识,通过一系列实验,使学生获得C语言的相关知识及一定的实际操作技能和用C 编程的实践经验,进一步提高学生分析问题、解决问题的能力,以巩固和加深所学的理论知识。为学生从事本行业相关工作打下比较坚实的基础。使学生获得一定的

2、实际操作技能和程序开发经验,进一步提高学生分析问题、解决问题的能力,增强实践技能,并培养学生勇于动手、勤于动手、热爱本专业的思想。二、实训要求C实验应在计算机机房进行,通过合理选择实验题目,使学生应达到以下要求:本课题设计的基本要求:Ø必须提交系统分析报告,包括系统的功能分析、系统的功能模块设计Ø程序设计的报告:包括程序的运行环境、开发环境、程序的详细设计(包括模块之间的关系,模块的功能、主要功能实现的程序段)。时间够用情况可以尝试。Ø系统的源程序,应带有详细的备注。时间够用情况可以尝试。 要求学生在实训期间,做好实训日记、以及实训所得资料、内容的整理工作。实训结

3、束时,写出实训报告并有实训作品。实训报告内容详略得当,要有程序及程序使用说明。实训要在机房中计算机上完成整个程序的调试,通过实训,对C课程的掌握上应使学生应达到以下要求:1、熟悉C的开发环境。2、掌握C中的数据类型、变量、常量、表达式和运算符的用法。3、掌握C中顺序结构、选择结构、循环结构程序的编写,语句的实现。使学生养成良好的编程习惯。培养分析问题,解决问题的能力。4、掌握C 程序结构的概念与使用方法。5、掌握数组类型的使用方法。6、理解并掌握函数的概念和用法。7、掌握C 编程的技巧。8、树立实事求是、认真工作的思想,培养严密的逻辑思维能力。三、实训内容本次实训要求必须完成两类实训任务:(1

4、)学生对指定的12个实验项目进行验证与设计;(2) 学生从所给的6道实用题目中任意选择5个,自行进行编程实现。1 指定的实验项目验证与设计(对以下指定的12个实验项目进行验证)1、数据类型、运算符和表达式一、实验目的1.熟练表达式的表示方法2.了解表达式的运行结果二、实验内容和步骤用printf函数来输入表达式运行结果观察以下表达式的结果=x<yy>xx!=yx=z-2x=x-2x>=zx<=z以上表达式的值(2)当x=0,y=-1,z=1时 当x当x=0,y=-1,z=1时x&&yx|yy&&xy|z以上表达式的值三、问题讨论1.“=”

5、和“=”有什么区别?2.“&”和“&&”、“|”和“|”有什么区别?2、数据类型一、目的和要求了解语言中数据类型的意义。二、实验内容和步骤、下面的程序试图计算由键盘输入的任意两个整数的平均值:include <stdio.h>main()int x,y,a;scanf(“%x,%y,&x,&y);a=(x+y)/2;printf(“The average is :”a);调试无语法错误后,分别使用下列测试用例对上述程序进行测试:(),(), (),(),(),(),(),(),(),(),1、分析上述哪几组测试用例较好?通过测试,你发现程序有

6、什么错误了吗?若有错误,请指出错误原因。、    操作符sizeof用以测试一个数据或类型所占用的存储空间的字节数。请编写一个程序,测试各基本数据类型所占用的存储空间大小。三、分析与讨论如何正确地选用数据类型?(提示:给合前面做过的两个实验及书本进行讨论总结)3、运行符与表达式一、目的和要求、理解常用运行符的意义。、掌握语言表达式的运行规则。、本实验可在学习了教材第2.3节后进行。二、实验内容和步骤、编写一个语言程序,测试下列各表达式i , ji + 1,j + 1i + + ,j + + + i, + + ji + + + + + j+ + i + + + +

7、+ j + +要求在各表达式中i 和j都分别有相同的初值。在实验中注意下列问题:()   哪些表达式是错误的?为什么?()   理解,i,i的意义和优先级别。、编写一个程序,测试常用的十个运算符的优先顺序。四、分析与讨论分析总结运算符的优先级。4、输入与输出一、目的和要求、掌握语言程序输入、输出的方法和格式。、本实验可在学习教材第二章后进行。二、实验内容与步骤、输入并编辑下面的程序main()int a,b;float c,d;long e,f;unsigned int u,v;char c1,c2;scanf(“%d,%d”,a,b);scanf(“%

8、f,%f”,c,d);scanf(“%ld,%ld”,e,f);scanf(“%o,%o”,u,v);scanf(“%c,%c”,c1,c2);printf(“n”);printf(“a=%7d,b=%7dn”,&a,&b);printf(“c=%10.2f,d=%10.2fn”,&c,&d);printf(“e=17ld,f=%17ldn”,&e,&f);printf(“u=%o,d=%on”,&u,&v);printf(“c1=%c,d=%cn”,&c1,&c2);这个程序有语法错误吗?为什么?、调试上述程序无

9、语法错误后,用下面的测试数据,对程序进行测试:a=123,b=456,c=17.6,d=71837.65,e=70000,f=,u=62000,v=58765,c1=a,c2=b分析运行结果。特别注意输入c1,c2的值是什么?什么原因?、将输入e和f的语句改为:scanf(“%d,%d”,&e,&f);再用上述测试数据测试并分析结果。、将输入u、v的语句改为:scanf(“%d,%d”,&u,&v);再用上述测试数据测试并分析结果。、将输出e,f的语句改为:printf(“e=%17d,f=%17dn”,e,f);再用上述测试数据测试并分析结果。、将输出u、v的

10、语句改为:printf(“u=%u,v=%un”,u,v);或printf(“u=%d,v=%dn”,u,v);再用上述测试数据测试并分析结果。、请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。、在scanf(“%c,%c”,&c1,&c2);语句之前加一个语句:getchar();、验证转义字符n 与 r的意义有何不同。三、分析与讨论、总结在printf函数中可以使用的各种格式指定符,并给出样例。、总结在printf函数中可以使用的各转义字符及其功能。5、顺序程序结构程序设计一、实验目的1.进一步掌握C程序的编辑、编译、连接和运行的过程。2.熟悉顺序结构的

11、程序设计方法。3.熟练使用C的各种表达式。4.熟练掌握输入、输出函数的使用。二、实验内容和步骤1. 输入x,y,编写程序求z=x+|y|的值。实验步骤与要求:(1)程序中用scanf函数输入x和y的值,请分析以下两个语句scanf(“%f%f”,x,y);scanf(“%f%f”,&x,&y);哪一个是正确的,分别运行之,分析程序运行结果。如果scanf函数改为scanf(“%f,%f”,&x,&y);应该怎样输入数据。2. 编写输入三角形的三边长a、b、c,求三角形面积area的程序。实验步骤与要求:(1)输入前要加提示语句。(2)输出结果前要有必要的文字说明

12、。(3)输入一组数据3,4,5,观察运算结果。(4)输入另外一组数据3,4,8,观察运算结果,分析这个运算结果是否有效。三、问题讨论上机各个环节所出现的错误及解决的办法6、选择结构一、实验目的、了解条件与程序流程的关系、了解用不同的数据使程序的流程覆盖不同的语句、分支和路径。、本实验应在学习教材第3.2节后进行。二、实验内容和步骤、题目有如下程序段:if (a>1&&b= =0) x=x/a;if(a=2|x>1) x=x+1;为了更容易明白程序的逻辑结构,我们用图5.1所示流程图来加以描述。a>1&&b= =0x=x/aa= =2|x>

13、1x=x+1 要求增加一些输入语句和输出语句,以便使上述程序能在不同的a,b和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。、实验步骤记下分别使用下列各组数据运行时的操作流程。()   a=1,b=1,x=1;()   a=1,b=1,x=2;()   a=3,b=0,x=1;()   a=2,b=1,x=4;()   a=2,b=1,x=1;()   a=1,b=0,x=2;()   a=2,b=1,x=1;() &

14、#160; a=3,b=0,x=2。三、分析讨论(1)       用哪一组数据就可使程序中的每个处理语句都执行一次?为了找出程序中各条处理语句中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。(2)       用哪两组数据就可以使程序段中的每个分支都运行一次?这种情形与上面的讨论有何不同?如果为了找出程序中积压分支中的错误,应该使用什么样的数据对程序进行测试?请上机验证自己的结论。(3)     

15、0; 用哪两组数据就可以把判定框中的每个条件运算都进行一次?如果为了测试出判定条件中的错误,应使用哪些数据对程序进行测试?请上机验证自己的结论。(4)       用哪四组数据才可以把各种条件的组合都检测一遍? 如果为了测试各种条件的组合的情形,应该使用什么样的测试数据?请上机验证自己的结论。(5)       用哪四组数据才可以把起始到终止的各条路径都覆盖一次?如果为了测试出程序在不同路径下的错误,应该使用什么样的测试数据?请上机验证自己的结论。四、进一步的实验1 

16、; 题目从键盘上输入三个数,让它们代表三条线段的长度,请写一个判断这三条线段所组成的三角形属于什么类型(不等边,等腰,等边或不构成三角形)的C程序。2  请分别设计下列数据对自己的程序进行测试:(1)       找出各条语句中的错误。(2)       找出积压分支中的错误。(3)       找出各条件中的错误。(4)       找出各种条件

17、组合中的错误。(5)       找出各条路径中的错误。7、 条件型循环结构一、目的和要求1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2、了解条件型循环结构的基本测试方法。3、本实验可在学习教材3.3节后进行。二、实验内容与步骤1、下面是一个计算e的近似值(使误差小于给定的)的程序。main()double e=1.0,x=1.0,y,detax;int i=1;printf(“n please input enter a error:”);scanf(“%lf”,&detax);y=1

18、/x;while(y>=detax)x=x*I;y=1/x;e=e+y;+i;printf(“%12.10lf”,e);2、实验步骤(1)、阅读上面的程序,写出程序所依据的计算公式。(2)、当输入的detax各是什么值时,能分别使程序按下面的要求运行:.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?(3)、原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y<detax,y<=detax,观察程序运行将会有什么变化。假如不知道机器内的程序中

19、的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。(4)、把原程序中while语句之前的y=1/x语句去掉,观察程序的运行将会发生什么样的变化。假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。(5)、若把原程序中的+i换成i+,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条语句写错了.(6)、把原程序中的while结构改写成dowhile结构,再分别按上述的(2)、(3)两步进行实验。三、分析讨论总结一下测试条件循环结构的一般方法。8、 计数型循环结构一、

20、60; 目的和要求1、  掌握如何正确地控制计数型循环结构的次数2、  了解对计数型循环结构进行测试的基本方法3、  了解在嵌套循环结构中,提高程序效率的方法4、  本实验应在学习了教材第3.3.4进行二、              实验内容与步骤1、  实验题目下面是一个循环结构 的C程序。main()int i ,j;long sum=0;for(i=1,i<=20,i+) for(j=1;j<=3;

21、j+) sum=sum+(i+1)*(i+1)*(j+2)printf(“sum is :%dn”,sum);2、  实验步骤(1)       将上述程序中的和分别做什么样修改,能使程序按如下要求运行:.不循环;.外循环1次,不进入内循环;.外循环,内循环各1次;.外循环1次,内循环2次; .外循环 2次, 内循环1次;.外循环19次,内循环3次;.外循环20次,内循环2次;.外循环21次,内循环3次。(2)       试修改程序,以便能知道控制表达式 i=1;

22、j<=20;i+和j=1;j<3;j+=各执行了多少次?(3)内循环与外循环的控制表达式进行对换,观察程序的执行结果有无变化,并且观察对换后的外循环与内循环控制表达式执行的总次数有无变化?(4)将(3)中程序写为main()int i,j,k;long sum=0;for (j=1.j<=3.j+)k=j+2;for(i=1;i<=20;i+)sum=sum+(i+1)*(i+1)*k; printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(5)将(3)中程序改写为main() int I,j,m,n; long sum=0; for(j=1

23、;j<=3;j+) m=j+2; for(I=1;j<=20;I+) n=I+1; sum=sum+m*m*k; printf(“sum is :%dn”,sum);观察程序的执行结果有无变化?(6)在(5)的程序中,若将外循环控制表达式分别做如下修改:.j=1;j<3;j+.j=1;j=3;j+.j=1;j>=3;j+.j=1;j>3;j+.j=1;j<=3;j-.j=1;j>3;j-.j=1;j<3;j+.j=0;j<=3;j+=.j=0;j<3;j+j=1;j<=3;j+j=1;j<3;+j观察程序的执行结果有无变化

24、?三、  分析讨论(1)       如何测试计数型循环结构的控制表达式中的错误?从实验中你得到了哪些提高嵌套循环程序效率的启示?9、 有关函数的程序设计一、实验目的1.理解和掌握多模块的程序设计与调试的方法。2.掌握函数的定义和调用的方法。3.学会使用递归方法进行程序设计。二、实验内容和步骤1. 编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。实验步骤与要求:(1) 编写一个函数prime(n),返回给定整数n是否为素数。(2) 编写一个主函数,输入一个整数,调用(1)中的函数,判断此整数

25、是否为素数,并输出结果。(3) 对于属于多函数程序,可以采用每个函数分别进行编辑、编译的方法,然后再连接、运行。如果编译有错时,可分别修改,这样便于调试。实验2和实验3也可以使用这样的调试方法。2. 用梯形法求函数的定积分。实验步骤与要求:(1) 编制一个函数sab(a,b,n),其功能是求函数f(x)在a,b上的定积分,其中n为区间a,b的等分数。要求该函数在一个独立的文件中。(2) 编制一个主函数以及计算被积函数值的函数f(x),在主函数中调用(1)中的函数计算并输出下列积分值。要求主函数与函数f(x)在同一个文件中。(3) 编制另一个主函数以及计算被积函数值的函数f(x),在主函数中调用

26、(1)中的函数计算并输出下列积分值。要求主函数与函数f(x)在同一个文件中。说明:用梯形法求定积分,梯形公式为s=hf(a)+f(b)/2+hf(a+kh)其中,h=(b-a)/n3. 用递归方法编写程序,求n阶勒让德多项式的值,递归公式为1 (n=0)pn(x)=x (n=1)(2n-1)xpn-1(x)-(n-1)pn-2(x)/n (n>1)实验步骤与要求:(1) 根据递归公式编制计算n阶勒让德多项式的递归函数p(n,x)。(2) 编制一个主函数,由键盘输入n,x,调用(1)中的函数计算n阶勒让德多项式的值。(3) 输入(n,x)=(4,2)运行该程序。然后自定义几组数据再运行该程

27、序。程序调试说明:多模块的调试除了可以采用前面实验中采用的各种调试方法以外,还可以采用“回声打印”的调试方法。当函数之间要传递的数据较多时,容易出错。这时,在有关的输入数据之后加上输出语句,以便反映数据输入的情况。在函数之间有数据传递后,再用输出语句把传递后的数据输出,这样可以找到数据的错误处,以便分析原因, 三、问题讨论1. 小结函数的定义及调用方法。2. 小结函数中形参和实参的结合规则。3. 编写和调试包10、 函数的定义及调用一、  目的与要求1、  掌握C语言函数定义及调用的规则。2、  理解参数传递的过程。3、  本实验可在学习了教材第4.1节

28、后进行。二、  实验内容与步骤1、  上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。main() int,y; printf(“%dn”,sum(x+y); int sum(a,b) int a,b;return(a+b);2、  编写并调试一个求(n为整数)的递归函数,希望能在程序运行过程中动态地显示递归函数被调用的轨迹。三、  分析讨论1、  针对以上实验内容写出相应的参数传递过程并分析结果。2、  讨论参数的传递的几种形式。11、有关数组的程序设计一、实验目的掌握有关数组和字符串的程序设计方法。二、实验内容和步骤1

29、 已知一组数据如下:6,3,42,23,35,71,98,67,56,38编写程序,把它们按从小到大的次序排列起来。程序如下:/*EX3-1*/# include<stdio.h># define N 10main()int aN=6, 3, 42, 23, 35, 71, 98, 67, 56, 38;int i, j, t;printf(“The array before sorted:”);for(i=0; i<N; i+)printf(“%4d”, ai);for(i=0; i<9; i+)for(j=i+1; j<10; j+)if(ai>aj)t

30、=ai;ai=aj;aj=t;for(i=0; i<N; i+)printf(“%4d”, ai);return o;2 求矩阵:1 2 3 A = 4 5 6的转置矩阵,A矩阵的转置矩阵B是这样的矩阵,其元素bij=aji。程序如下:/*EX3-2*/# include<stdio.h>main()int a23= 1, 2, 3, 4, 5, 6 ;int b32, i, j;printf(“Array A: n”);for(i=0; i<=1; i+)for(j=0; j<=2; j+)printf(“%5d”, aij);printf(“n”);for(i

31、=0; i<=1; i+)for(j=0; j<=2; j+)bji=aij;printf(“Array B: n”);for(i=0; i<=2; i+)for(j=0; j<=1; j+)printf(“%5d”, bij);printf(“n”);return o;12、 数组一、目的和要求1、掌握数组定义的规则。2、掌握C语言数组的基本用法。3、本实验可在学习教材第5.2节后进行。二、实验内容与步骤1、编写程序,测试下列数组的定义方式是否正确(1)    main()int n;scanf(“%d”,&n);int an;(

32、2)    main() const int n=10;int an;(3)    #include <stdio.h>#define M 10 main() int aM;(4)    main() int a2+2*4;(5)    #include <stdio.h>#define M 2#define N 8 main() int aM+N;通过这一实验,可以说明什么问题?2、运行下面的C程序,根据运行结果,可以说明什么?main( ) int

33、 num5=1,2,3,4,5; inti i; for(i=0;i<=5;i+) printf(“%d”,numi); 3、为一个起泡排序程序设计测试用例,并测试之。4、1983年,在ACM图林奖颁奖大会上,杰出的计算机科学家,UNIX的鼻祖,C语言的创始人之一,图林大奖得主,Ken Thompson 上台的第一句话是:“我是一个程序员,在我的1040表上,我自豪地写上了我的职业。作为一个程序员,我的工作就是写程序,今天我将向大家提供一个我曾经写过的最精练的程序。”这个程序如下: char s = t, 0, n, ,;,n,n,/,*,n,/* (213 lines deleted)*/0 ;/* The string is a* representation of the body* of this program from 0* to the end */main( ) int i; printf(“char ts=” ;for (

温馨提示

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

评论

0/150

提交评论