下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
《C语言程序设计》实验指导书指导教师:王霞目录目录 0TOC\o"1-1"\h\z\u实验一C语言程序初识 1实验二数据类型、运算符和表达式 2实验三选择结构 3实验四循环结(1) 4实验五循环结(2) 6实验六 函数(1) 9实验七函(2) 11实验八数(1) 12实验九数(2) 14实验十指针(1) 16实验十一指针(二) 18实验十二结构体和共用体 20实验十三有关文件的程序设计 29实验十四位运算 31实验十五综合应用举例 32PAGEPAGE20实验一C语言程序初识[实验目的和要求]1、熟悉C语言运行环境。2、掌握C语言程序的书写格式和C语言程序的结构。3、掌握C语言上机步骤,了解运行一个C程序的方法。4、本实验可在学习完教材第一章后进行。[实验内容和步骤]1、输入一个简单的C语言程序:输入矩形的两条边,求矩形的面积。[分析与讨论]策成功或失败的原因。2、总结C程序的结构和书写规则。实验二 数据类型、运算符和表达式[实验目的]熟练表达式的表示方法了解表达式的运行结果[实验内容和步骤]printf程序试图计算由键盘输入的任意两个整数的平均值:[问题讨论]1.“=”和“==”有什么区别?2.“&&|”有什么区别?如何正确地选用数据类型?实验三 选择结构[实验目的]1、了解条件与程序流程的关系[实验内容和步骤]1、题目有如下程序段:{……if(a>1&&b==0)x=x/a;if(a==2||x>1)x=x+1;}为了更容易明白程序的逻辑结构,要求用流程图来加以描述。要求增加一些输入语句和输出语句,以便使上述程序能在不同的a,b和x值下运行,并且能观察程序流程经过(覆盖)了哪些语句、哪些分支及哪些路径。[分析讨论]用哪两组数据就可以把判定框中的每个条件运算都进行一次?如果为了测论。件的组合的情形,应该使用什么样的测试数据?请上机验证自己的结论。用哪四组数据才可以把起始到终止的各条路径都覆盖一次?如果为了测试论。实验四 循环结构(1)[目的和要求]1、掌握在程序设计条件型循环结构时,如何正确地设定循环条件,以及如何控制循环的次数。2[实验内容与步骤]1、下面是一个计算e的近似值(使误差小于给定的δ)的程序。main(){doublee=1.0,x=1.0,y,detax;inti=1;printf(“\npleaseinputenteraerror:”);scanf(“%lf”,&detax);y=1/x;while(y>=detax){x=x*I;y=1/x;e=e+y;++i;}printf(“%12.10lf”,e);}[分析讨论]、阅读上面的程序,写出程序所依据的计算公式。detax.不进入循环;.只循环一次;.只循环两次;.进入死循环(程序将永远循环下去)。为了能知道程序循环了多少次,应该在程序中增加一条什么样的语句?(3)、原程序中while语句中的y>=detax,分别换成y>detax,y=detax,y<detax,y<=detax,观察程序运行将会有什么变化。假如不知道机器内的程序中的各语句实际上是什么,分别输入什么样的detax来测试出while语句的循环条件写错了。、把原程序中while语句之前的y=1/x假如不知道机器内的程序实际上是怎么写的,输入什么样的detax就能测试出少了上述这条语句。++i换成i++,观察程序的运行发生了什么变化?假如不知道这条语句到底是怎么写的,输入什么样的detax就能测试出这条while结构改写成do—while(2)、两步进行实验。实验五 循环结构(2)[目的和要求]1、掌握如何正确地控制计数型循环结构的次数2、了解对计数型循环结构进行测试的基本方法3、了解在嵌套循环结构中,提高程序效率的方法[实验内容与步骤]实验题目:下面是一个循环结构的C程序。main(){inti,j;longsum=0;for(i=1,i<=20,i++)for(j=1;j<=3;j++)sum=sum+(i+1)*(i+1)*(j+2)printf(“sumis:%d\n”,sum);}[分析讨论]将上述程序中的和分别做什么样修改,能使程序按如下要求运行:.不循环;.外循环1次,不进入内循环;.外循环,内循环各1次;.外循环1次,内循环2次;.外循环2次,内循环1次;193202213试修改程序,以便能知道控制表达式i=1;j<=20;i++和j=1;j<3;j+=各执行了多少次?并且观察对换后的外循环与内循环控制表达式执行的总次数有无变化?将中程序写为main(){inti,j,k;longsum=0;for(j=1.j<=3.j++){k=j+2;for(i=1;i<=20;i++)sum=sum+(i+1)*(i+1)**k;}printf(“sumis:%d\n”,sum);}观察程序的执行结果有无变化?将中程序改写为main(){intI,j,m,n;longsum=0;for(j=1;j<=3;j++){m=j+2;for(I=1;j<=20;I++){n=I+1;sum=sum+m*m*k;}}printf(“sumis:%d\n”,sum);}观察程序的执行结果有无变化?实验六 函数(1)[实验目的]理解和掌握多模块的程序设计与调试的方法。掌握函数的定义和调用的方法。[实验内容和步骤]编写一个函数,判断一个数是不是素数。在主函数中输入一个整数,输出是否是素数的信息。实验步骤与要求:编写一个函数prime(n),返回给定整数n编写一个主函数,输入一个整数,调用(1)数,并输出结果。再连接、运行。如果编译有错时,可分别修改,这样便于调试。实验23也可以使用这样的调试方法。实验步骤与要求:编制一个函数sab(a,b,n),其功能是求函数f(x)在[a,b]上的定积分,其中n为区间[a,b]的等分数。要求该函数在一个独立的文件中。编制一个主函数以及计算被积函数值的函数f(x(1函数计算并输出下列积分值。要求主函数与函数f(x)在同一个文件中。编制另一个主函数以及计算被积函数值的函数f(x),的函数计算并输出下列积分值。要求主函数与函数f(x)在同一个文件中。说明:用梯形法求定积分,梯形公式为s=h[f(a)+f(b)]/2+hf(a+kh)其中,h=(b-a)/n用递归方法编写程序,求n1(n=0)pn(x)=x(n=1)((2n-1)xpn-1(x)-(n-1)pn-2(x))/n(n>1),[分析讨论]小结函数的定义及调用方法。小结函数中形参和实参的结合规则。实验七 函数(2)[目的与要求]1、掌握C语言函数定义及调用的规则。2、理解参数传递的过程。[实验内容与步骤]1、上机调试下面的程序,记录系统给出的出错信息,并指出出错原因。main(){int,y;printf(“%d\n”,sum(x+y));intsum(a,b){inta,b;return(a+b);}}2、 编写并调试一个(n为整数的递归函数希望能在程序运行过程中态地显示递归函数被调用的轨迹。[分析讨论]1、针对以上实验内容写出相应的参数传递过程并分析结果。2、讨论参数的传递的几种形式。实验八 数组(1)[实验目的]掌握有关数组和字符串的程序设计方法。[实验内容和步骤]1已知一组数据如下:6,3,42,23,35,71,98,67,56,38程序如下:/*EX3-1*/#include<stdio.h>#defineN10main(){inta[N]={6,3,42,23,35,71,98,67,56,38};inti,j,t;printf(“Thearraybeforefor(i=0;i<N;i++)printf(“%4d”,for(i=0;i<9;i++){for(j=i+1;j<10;j++){if(a[i]>a[j]){t=a[i];a[i]=a[j];a[j]=t;}}}for(i=0;i<N;i++)printf(“%4d”,returno;}[分析讨论]2.实验九 数组(2)[目的和要求]1、掌握数组定义的规则。2、掌握C语言数组的基本用法。[实验内容与步骤]1、编写程序,测试下列数组的定义方式是否正确main(){intn;scanf(“%d”,&n);inta[n];……}main(){constintn=10;inta[n];}#include<stdio.h>#defineM10main(){inta[M];}main(){inta[2+2*4];#include<stdio.h>#defineM2#defineN8main(){inta[M+N];}通过这一实验,可以说明什么问题?2、运行下面的C程序,根据运行结果,可以说明什么?main(){intnum[5]={1,2,3,4,5};intii;for(i=0;i<=5;i++)printf(“%d”,num[i]);}3用以求一个变量的地址,这在函数scanf中已经使用过了。现在要你3*5的二维数组各元素的地址,并由此说明二维数组中各元素是按什么顺序存诸的。4、为一个起泡排序程序设计测试用例,并测试之。[分析讨论]通过实验,分析定义与引用数组的区别。实验十 指针(1)[目的和要求]熟悉指针的正确用法。[实验内容和步骤]1、指出下面程序错误的原因。main(){intx=10,y=5,*px,*py;px=py;px=&x;py=&y;printf(“*px=%d,*py=%d,*px,*py);}main(){char*S=”COMPUTER”;charc;printf(“whichstyleyouwantto\n”);printf(“capital(c)oruncapital(u);”);c=getchar();if(c=’c’)put(s);else{s=”computer”;puts(s);}}分析出错原因。设计一个C(1) y=*px++(2) y=*++py(3) y=(*py)++(4) [分析讨论]数组与指针的联系。实验十一 指针(二)[目的和要求]1、了解指针参数的特殊性。[实验内容与步骤]1、想使指针变量pt1指向a和b中的大者,pt2指向小者,以下程序能否实现此目的?swap(int*p1,int*p2){int*p;p=p1;p1=p2;p2=p;}main(){inta,b;scanf(“%d,%d”,&a,&b);pt1=&a;pt2=&b;if(a<b)swap(pt1.pt2);printf(“%d,%d\n”,*pt1,*pt2);}上机调试此程序。如果不能实现题目要求,指出原因,并修改之。2、下面的程序。注意其中的复杂声明语句;int(*function[4])();和各标记符的含义,并记录执行结果。main(){intfun1();intfun2();intfun3();intfun4();int(*function[4])();inta=10,b=5,i;function[0]=fun1;function[1]=fun2;function[2]=fun3;function[3]=fun4;for(I=0;I<4;i++)printf(“funno.%d->%d\n”,i+1,execute(a,b,function[i]));}execute(intx,inty,int*fun()){return(*fun)(x,y);}fun1(intx,inty){return(x+y);}fun2(intx,int{return(x-y);}fun3(intx,int{return(x*y);}fun4(intx,int{return(x/y);}[分析讨论]指针、数组、函数的联系。实验十二 结构体和共用体[目的和要求]1、掌握结构体类型方法以及结构体变量的定义和引用。2、掌握指向结构体变量的指针变量的应用,特别是链表的应用。3、掌握运算符”.”和”->”的应用。4、共用体的概念和应用。[实验内容和步骤]1、编写程序:有4名学生,每个学生的数据包括学号、姓名、成绩,要求找出成绩最高者的姓名和成绩,上机运行程序。2malloc打印出creat来建立链表,用list5101,103,105,107,109。3106。写一函数insert4、在上面的基础上,写一函数delete,用来删除一个结点。要求删除职工号为103的结点。打印出删除后的链表.5、你有无办法测试构造链表时,内存空间的动态分配情形?[分析讨论]怎样引用结构体变量成员?实验十三 有关文件的程序设计[实验目的]掌握文件建立的方法。掌握包含文件操作的程序设计和调试方法。[实验内容和步骤]1建立一个磁盘文件,其内容是0~90°之间每隔5°的正弦值。程序如下://EX8-1#include<iostream.h>#include<fstream.h>#include<math.h>#definePI3.14159main(){floatS[19];inti,a;ofstreamout(“fsin.bny”);if(!out){cout<<”Cannotopenfile.”<<endl;return1;}for(i=0,a=-5;i<19;i++){a+=5;S[i]=sin(a*PI/180.0);}out.write((unsignedchar*)&s,sizeofs);PAGEPAGE37out.close();return0;}[分析讨论]文件操作中各函数的功能,具体使用方法.实验十四 位运算[目的和要求]掌握位运算的概念和方法。(&,|,^,~)的使用方法。掌握有关位运算的用法。[实验内容和步骤]编一个程序,将一个整数的高字节和低字节分别输出(用位运算方法上机运行。编一个程序,使一个整数的低4和输出。i4ife13。正数或负数)。[分析讨论]位运算时应注意什么问题?实验十五 综合应用举例[目的与要求]1、熟悉C语言的端口及硬件控制的方法与原理。2、了解用C语言实现发声程序所要访问的端口。[实验内容和步骤]1、调试下列程序,注意调出不同的效果。2、调试并总结程序中所用的知识点,写出乐谱文件播放的是什么乐谱?乐谱实例:6000h51h32h20.5h30.5h14h21m72m60.5h10.5m54m32m51.5m60.5h11.5h20.5m60.5h10.5m51h51.5h10.5h60.5h50.5h30.5h50.5h24h21.5h30.5m71m61m51.5m60.5h11h21m31h11m60m50.5m60.5h10.5m54h31.5h50.5m71h21m60.5h10.5m53m30.m50.5m30.5m50.5m50.5m60.5m70.5h20.5m63m50.5m60.5h11.5h20.5h51h31h21h30.5h20.5h11m60.5m50.5m32h12m60.5h10.5m60.5m50.5m30.5m50.5m60.5h10.5m53h30.5h50.5h20.5h30.5h20.5h10.5m71m61h54##voidplay_music(char*filename)/*filename为音乐文件名格式见上*/{FILE*fp; intrate;charsound_high[3];floatsound_long;registerinti=0,j;intsign=0;floatstr[1000][2];if((fp=fopen(filename,"r"))==NULL){printf("Openfilemusic.docErrors!\n");exit(1);}fscanf(fp,"%d",&rate);while(!feof(fp)&&!sign){fscanf(fp,"%s%f",&sound_high,&sound_long);str[i][1]=rate*sound_long;switch(sound_high[0]){case'h':switch(sound_high[1]){case'1':str[i++][0]=1046.5;break;case'2':str[i++][0]=1174.7;break;case'3':str[i++][0]=1318.5;break;case'4':str[i++][0]=1396.9;break;case'5':str[i++][0]=1568;break;case'6':str[i++][0]=1760;break;case'7':str[i++][0]=1975.5;break;default:printf("\nErrorMusic.doc\n");break;}break;case'm':switch(sound_high[1]){case'1':str[i++][0]=523.3;break;case'2':str[i++][0]=587.3;break;case'3':str[i++][0]=659.3;break;case'4':str[i++][0]=698.5;break;case'5':str[i++][0]=784.0;break;case'6':str[i++][0]=880;break;case'7':str[i++][0]=987.8;break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广州卫生职业技术学院《食用菌栽培技术》2023-2024学年第一学期期末试卷
- 2025湖南省安全员-C证考试题库
- 2025山东省安全员B证考试题库附答案
- 2025年湖北省建筑安全员知识题库
- 【语文课件】《我的信念》课件
- 《壶口瀑布》课件
- 单位管理制度展示选集【人员管理篇】
- 单位管理制度展示合集【职员管理】十篇
- 电力天然气周报:多省2025年长协电价落地11月我国天然气表观消费量同比下降0.3
- 2024年上海市县乡教师选调考试《教育学》真题汇编带解析含完整答案(各地真题)
- 2024年国家公务员考试公共法律知识考试题库及答案(共530题)
- 2024年秋一年级上册4日月山川 公开课一等奖创新教学设计
- 人教版英语2024年初中中考考纲单词表(整合版)
- 《安全记心中平安伴我行》课件2024年五一假期安全教育主题班会
- 形象权授权协议
- 高中数学人教A版(2019)必修第一册第二册知识点概要填空
- 2023-2024学年山东省聊城市阳谷县八年级(上)期末英语试卷
- 2024-2030全球与中国吹灌封一体化产品市场现状及未来发展趋势
- 2024年保安员考试题库及参考答案(巩固)
- 安全隐患规范依据查询手册22大类12万字
- 大中小学心理健康教育一体化共同体建设研究课题评审书
评论
0/150
提交评论