ImageVerifierCode 换一换
格式:DOCX , 页数:46 ,大小:364.40KB ,
资源ID:15919130      下载积分:1 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-15919130.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(c语言程序设计实验指导学生用.docx)为本站会员(b****7)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

c语言程序设计实验指导学生用.docx

1、c语言程序设计实验指导学生用C语言程序设计实验指导(学生用)计算机基础教研室C语言程序设计课程组2012年9月前 言C语言程序设计是计算机科学技术系面向全校理工科开设的一门专业平台课程。通过这门课程的学习,可以让学生了解程序设计的思想和方法,掌握高级语言程序设计的基本知识,提高问题求解和程序语言的应用能力。C语言程序设计实验指导书是C语言程序设计的配套指导书。本指导书本着“厚基础,重实践,以专业为导向”的原则,其中程序设计基础、数组、函数这三个实验项目是所有学科专业都必须掌握的,其他实验项目根据专业特点,设计了不同的要求:对于普通专业侧重循环、数组、函数、结构体等,生化类专业包含数据文件的处理

2、,机械电子类专业包含位运算,数理类专业包含数值计算等内容。每个实验本着循序渐进的原则,由简到难,逐步深化,另外配有相应的实验练习,学生可根据自己的情况选择完成。本指导书所有程序代码均在Visual C+环境下调试通过。本指导书在编写过程中得到了系领导的大力支持,王海燕主任在百忙中多次参加我们的课程研讨,庄波老师、宫锋老师在大纲编写、指导书任务设计方面给出了切实可行的意见和建议,在此深表感谢。本指导书由计算机基础教研室C语言程序设计课程组全体人员共同编写,谢玉华老师负责统筹安排,实验一、实验二、实验三、实验七由张志芬老师编写,实验四、实验六由陈春华、薛红芳老师编写,实验五由陈庆燕老师编写,最后由

3、张志芬老师统稿,在此一并感谢。由于水平有限,本指导书难免存在疏漏和不足之处,望各位老师在使用过程中多提宝贵意见,有利于我们进一步改进。C语言程序设计课程组2012年9月实验一 基本控制结构的应用1.1 熟悉编程环境一、实验目的1.了解C语言程序的开发环境,掌握C语言源程序的编辑、编译、连接及运行过程;2.通过运行简单的C程序,初步了解C语言源程序的特点及基本结构。二、实验内容1.在TC或VC+环境下,编辑如下所示的简单C语言程序:#include main()printf(“hello world!n”);对其进行编译、连接及运行,观察程序的运行结果。2.编程在显示器上输出如下信息:*How

4、Are You!*三、实验练习1.编程在显示器上输出如下信息: * * *2.求一个三位数的各位上数字之和并输出该和。1.2 顺序结构程序设计一、实验目的1.掌握运算符的使用;2.正确定义程序中的变量;3.掌握C语言中数学公式的表示;4.熟练使用输入、输出语句;5.能够利用顺序结构进行程序设计。二、实验内容已知三角形的三边长分别为3,4,4,求三角形的面积。三、分析三角形三边边长已知,根据公式:面积=s(s-a)(s-b)(s-c),其中s=(a+b+c)/2即可求得面积。四、算法描述1.定义三个边长a,b,c为float型,其初值为3,4,4;2.计算s=(a+b+c)/2;3.计算area

5、=sqrt(s*(s-a)*(s-b)*(s-c)),求得三角形的面积并输出。五、程序#include #include main() /*定义变量*/ /*计算面积*/ /*输出面积*/六、实验练习:1.从键盘上输入一个大写字母,将其转换成相应的小写字母并输出。2.把560分钟换算成小时和分钟表示并输出。3.求解方程2x2+3x+1=0的解。1.3 选择结构程序设计一、实验目的1.掌握关系运算及逻辑运算;2.掌握if语句;3.掌握switch语句;4.能够利用选择结构进行程序设计。二、实验内容根据输入的三角形的三条边,判断是否能组成三角形,若可以则输出它的面积及三角形的类型。三、分析1.首先

6、判断是否能构成三角形,如果满足a,b,c三条边大于0,并且满足a+bc,b+ca,a+cb则能构成三角形;否则不能构成三角形;2.若能构成三角形时,计算三角形的面积。再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。四、算法描述1.定义三个边长a,b,c为float型,从键盘输入三个边长值;2.判断三边是否能构成三角形,条件是a,b,c三条边大于0,并且a+bc,b+ca,a+cb,不满足条件则不能构成三角形;3.如果能构成三角形时,计算三角形的面积(面积= sqrt(s(s-a)(s-b)(s-c)

7、,s=(a+b+c)/2);再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。五、程序#include #include main() /*定义变量*/ /*输入边长*/ /*判断能否构成三角形,能则计算面积判断类型*/ /*计算三角形的面积*/ /*输出三角形的面积*/ /*判断三角形的类型(等边、等腰、直角或一般三角形)*/ else printf(“三边不合适,不能构成三角形!n”);六、实验练习1.编程实现从键盘输入四个整数,把这四个数由小到大输出。2.编程判断从键盘输入的整数的正负性及奇偶性

8、。3.根据键盘输入x的值求y值,其公式如下: 5x+11 0=x20 sinx+cosx 20=x40y= ex-1 40=x60 ln(x+1) 60=xc,b+ca,a+cb则能构成三角形;否则不能构成三角形;2.若能构成三角形时,计算三角形的面积。再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。当为某一类型,其计数加1,若有没出现过的类型,再循环输入各边,直到每种类型都出现过。四、算法描述1.定义三个边长a,b,c为float型,从键盘输入三个边长值;2.判断三边是否能构成三角形,条件是a,b

9、,c三条边大于0,并且a+bc,b+ca,a+cb,不满足条件则不能构成三角形;3.如果能构成三角形时,计算三角形的面积(面积=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2);再判断三角形的类型,如果三边都相等时等边三角形;如果任意两边相等则为等腰三角形;如果两边平方之和等于第三边平方则为直角三角形;其他为一般三角形。4.当为某一类型的三角形时,其计数加1,若有没出现过的类型,再循环输入各边,直到每种类型都出现过。其中输入各种类型三角形边长为外循环,输入合适边长为内循环。五、程序#include #include main() float a,b,c,s,area; i

10、nt i=0,j=0,k=0,l=0; /*i,j,k,l分别用来统计每种类型的三角形出现的次数*/ do /*输入三角形的边长*/ while( ) /*循环输入三边直到能构成三角形*/ /*计算三角形的面积*/ /*判断三角形的类型(等边、等腰、直角或一般三角形),并统计各种类型三角形出现的次数*/ while(i&j&k&l)=0);六、实验练习1.鸡兔问题:假设鸡兔共有30只,脚数共有90只,利用循环编写一个程序求出鸡和兔各有多少只。2.从键盘输入若干学生某门课程的成绩,计算出平均成绩并输出低于60分的学生成绩,当输入负数时结束输入。3.判断从键盘输入的数m是否为素数(素数:只能被1和

11、本身整除的数)。4.利用循环从键盘输入100个数,找出其中的最小值。5.编程求1-+-+-的值。6.编程求s=1+(1+2)+(1+2+3)+(1+2+3+n)的值。7.输入n个整数,求这n个数之中的偶数平均值,并输出。8.编程打印一下图形(行n的值由键盘输入)。* * * * * *9.输出100-999之间的所有水仙花数,每行输出5个(水仙花数:三位数的各位数字的立方之和等于这个三位数本身,如153=1*1*1+5*5*5+3*3*3)。10.编写一个程序,打印如下乘法“九九表”。1*1=1 1*2=2 1*3=3 1*4=4 1*5=5 1*6=6 1*7=7 1*8=8 1*9=9 2

12、*2=4 2*3=6 2*4=8 2*5=10 2*6=12 2*7=14 2*8=16 2*9=18 3*3=9 3*4=12 3*5=15 3*6=18 3*7=21 3*8=24 3*9=27 4*4=16 4*5=20 4*6=24 4*7=28 4*8=32 4*9=36 5*5=25 5*6=30 5*7=35 5*8=40 5*9=45 6*6=36 6*7=42 6*8=48 6*9=54 7*7=49 7*8=56 7*9=63 8*8=64 8*9=72 9*9=8111.从键盘输入6名学生的5门成绩,分别统计出每个学生的平均成绩。实验二 数组的应用2.1 一维数组的应用一

13、、实验目的1.掌握一维数组的定义及初始化;2.掌握一维数组元素的引用;3.掌握几种常见的排序方法;4.能够利用一维数组进行程序设计。二、实验内容从键盘输入10个学生的一门课程的成绩,从高到低排序后输出每个学生的成绩。方法1:选择排序三、分析选择排序方法通过选择最大值的方法,依次将最大、第2大、第3大的数挑选出来,顺序调换到数组的第1个、第2个、第3个元素中。四、算法描述1.定义n个长度的数组用来存放n个元素;2.第1趟将第1个元素和它后面的元素逐个进行比较,有更大的则与第1个元素进行交换,再继续和后面的元素比较。经过若干次比较和交换,从n个元素中找出了最大数并交换到第1个元素中;3.第2趟用同

14、样的方法,在剩下的n-1个元素中找出第2大的数,并把它调换到第2个元素中;4.第i趟再用同样的方法,在剩下的n-i+1个元素中找出第i大的数,并把它调换到第i个元素中。i不断增加,一趟趟重复此过程,直到i=n-1最后一趟比较完为止;5.程序用双重循环实现,外循环用i控制趟数,找第i个元素。内循环让第i个元素和它后面的元素逐个进行比较,有更大的则交换到第i个元素。五、程序#include #define N 10main() /*定义数组*/ /*通过循环输入n个成绩,保存在数组中*/ /*变量i用来控制比较的趟数,需进行N-1趟*/ /*第i个元素和其后各元素进行N-(i+1)次比较,变量j用

15、来控制其后元素*/ /*如果逆序则交换*/ printf(“排序后的成绩:n”); /*通过循环输出排好序的数组中的元素*/方法2:插入排序三、分析插入排序方法通过将要插入的元素从有序数组的最后元素开始逐个进行比较,如果逆序则后移数组元素,直到找到合适为止插入。如正序则直接插入。四、算法描述1.定义n个长度的数组用来存放n个元素;2.第1个数直接存在数组第1个位置,再输入新数m;3.从数组最后一个元素开始,逐个将数组元素与数m进行比较,如果逆序则将数组元素后移一个单元,直到找到合适正序位置并插入;如果第一次比较正序,则将数m插入到数组最后。再输入新数m;4.重复第3步,直到n个数全部有序插入。

16、五、程序#include #define N 6main() /*定义数组*/ /*先输入一个数*/ /*就一个数时必是有序的,直接存到数组第零个元素中*/ /*通过循环利用i控制输入的元素个数*/ /*再输入一个新数,和数组中已有元素进行比较*/ /*利用循环从现有数组的最后一个元素开始往前逐个比较*/ /*如果逆序,则把数组中元素逐个后移*/ /*如果正序,则退出循环*/ /*把该数放在数组中第j个元素之后*/ printf(排序后的成绩:n); /*通过循环输出排好序的数组中的元素*/方法3:冒泡排序三、分析冒泡排序方法每趟顺序比较相邻的两个数,如果两数逆序,则交换两数,最多进行n-1趟

17、,即完成n个数由高到低顺序排列。四、算法描述1.定义n个长度的数组用来存放n个元素;2.第1趟比较第1个和第2个元素,逆序则交换,再依次比较第2个和第3个、第3个和第4个,每次比较中若是逆序则交换。经过这趟比较和交换,最小的数到最后一个元素中;3.第2趟用同样的方法,在前面n-1个元素中依次进行比较和交换,第2小的数到倒数第2个元素中;4.第i趟再用同样的方法,在剩下的n-i+1个元素中依次进行比较和交换,第i小的数到倒数第i个元素中。一趟趟重复此过程,直到i=n-1最后一趟比较完为止;5.程序用双重循环实现,外循环用i控制趟数,找第i个元素。内循环j比较两个相邻元素,若逆序则交换。五、程序#

18、include #define N 10main() /*定义数组*/ /*通过循环输入n个成绩,保存在数组中*/ /*变量i用来控制比较的趟数*/ /*依次比较相邻的两个数,共比较n-i个*/ /*如果逆序则交换*/ printf(“排序后的成绩:n”); /*通过循环输出排好序的数组中的元素*/六、实验练习1.从键盘输入10个学生的成绩存储在数组中,求成绩最高者的序号和成绩。2.从键盘输入n个数到数组中,统计其中的正数个数,并计算它们的和。3.将整型数组中的所有元素镜像对调(第一个与最后一个对调,第二个与倒数第二个对调),按对调后的结果输出。2.2 二维数组的应用一、实验目的1.掌握二维数

19、组的定义及初始化;2.掌握二维数组元素的引用;3.能够利用二维数组进行程序设计。二、实验内容从键盘输入10个学生的三门课程的成绩,求每个学生各门课程的平均分,并按平均分从高到低的顺序输出每个学生各门课程的成绩和平均成绩。三、分析要存储10个学生三门课程的成绩需要定义二维数组,要存储10个学生的平均成绩需要定义一维数组,利用循环输入成绩、计算平均分,再利用循环选用一种排序方法按平均成绩进行排序,最后利用循环按要求输出。四、算法描述1.定义数组int sN3存储N=10个学生三门课程的成绩,数组float aN存储10个学生的平均成绩;2.用for循环从键盘按行输入每个学生三门课的成绩;3.用fo

20、r循环计算出每个学生的平均成绩并存入数组a中;4.按照平均成绩从高到底的顺序排序(可选用选择排序、冒泡排序、插入排序、快速排序等多种排序方法用选择排序);5.按要求输出。五、程序#include #include #define N 10main() /*定义二维数组用来保存n个学生的3门成绩*/ /*定义一维数组用来保存n个学生的平均成绩*/ /*通过循环输入n学生的三门课成绩*/ /*通过循环计算n个学生的平均成绩*/ for(i=0;iN-1;i+) for(j=i+1;jN;j+) /*比较平均成绩,高则平均成绩高者进行交换*/ /*通过循环交换三门课的成绩*/ /*交换平均成绩*/

21、printf(按平均分排序后的成绩为:n); printf(课程一 课程二 课程三 平均分n,i+1); /*通过循环输出排好序的n个学生的三门课成绩及平均成绩*/六、实验练习1.从键盘输入矩阵A的值,将A的转置矩阵存入矩阵B,输出矩阵B。2.找出6*6矩阵每列绝对值最大的元素,并与同列对角线元素交换。3.输出杨辉三角形(行数由键盘输入)。11 11 2 11 3 3 11 4 6 4 14.矩阵求积。2.3 字符数组的应用一、实验目的1.掌握字符数组的定义及初始化;2.掌握字符数组元素的引用;3.掌握字符串处理函数;4.能利用字符数组及字符串处理函数进行程序设计。二、实验内容从键盘输入N个学

22、生的姓名存储在字符数组中,并按字典顺序输出。三、分析因为姓名为字符串,要存储N个学生姓名需要定义二维字符数组,每行存储一个学生的姓名,用选择排序法按字典顺序比较大小时用strcmp()函数,交换时赋值用strcpy()函数。四、算法描述1.定义数组int sN12存储N个学生的姓名,数组strN用于交换时的中间变量;2.用for循环从键盘按行输入每个学生三门课的成绩;3.用for循环计算出每个学生的平均成绩并存入数组a中;4.按照平均成绩从高到底的顺序排序(可选用选择排序、冒泡排序、插入排序、快速排序等多种排序方法用选择排序);5.按要求输出。五、程序#include #include #de

23、fine N 10main() /*定义二维数组保存n个学生的姓名*/ /*定义一维数组保存在交换时一个学生的姓名*/ /*通过循环输入n个学生姓名*/ /*通过选择排序对n个学生姓名进行排序*/ for(j=i+1;jN;j+) /*调用strcmp函数进行比较*/ /*交换时调用strcpy函数进行赋值*/ printf(“排好序的成绩为:n”); /*通过循环输出排好序的姓名*/六、实验练习1.输入一行字符,统计其中有多少个单词,单词之间用空格分隔开。2.输入一行字符,删除字符串中的空格。实验三 函数的应用一、实验目的1.掌握函数的定义;2.掌握函数的调用方法;3.掌握函数之间的值传递方

24、式;4.能够利用函数进行综合程序设计。二、实验内容求两位的所有绝对素数,并输出(一个素数经过任意次调换位,仍然为素数,则为绝对素数,例如:13(31)就是一个绝对素数)。三、分析求所有两位数的绝对素数,可定义一个判断这个数是否为绝对素数的函数,在实现该函数时需要判断该数是否为素数及换位后是否为素数,所以还应定义一个函数判断一个数是否为素数的函数。四、算法描述1.定义素数函数判断一个数是否为素数,判断时需考虑数小于2、等于2及大于2的情况,大于2时需用循环进行判断。是素数返回1,不是则返回0;2.定义绝对素数函数判断一个数是否为绝对素数,判断时需调用已定义的素数函数来判断原数及换位后的数是否为素

25、数。是绝对素数返回1,不是则返回0;3.在main函数中对10至99的数调用绝对素数函数,如果是绝对素数则输出这个数。五、程序#include #include /*定义sushu函数用来判断一个数是否为素数*/int sushu(int n) /*如果小于2,不是素数返回0*/ /*如果是2,是素数返回1*/ /*大于2的需要判断是不是素数,是则返回1,不是返回0*/*定义jueduisushu函数用来判断一个数是否为绝对素数*/int jueduisushu(int m) /*得到m各位交换后的数*/ /*调用sushu()判断原数和交换后的数是否为素数,是则返回1,不是返回0*/main

26、() int i; for(i=10;i100;i+) /*判断10到99的数是否为绝对素数*/ /*调用jueduisushu()判断是否为绝对素数,是则输出*/六、实验练习1.编写一个程序,已知一个圆筒的半径、外径和高,计算该圆筒的体积。2.编写一个判断某数是否为水仙花数的函数,在main函数中求100到999之间的全部水仙花数。3.编写一个函数,输入整数m的全部素数因子(例如:m=120,因子为:2,2,2,3,5。)。4.编写一个函数,求10000以内所有的完数(完数是指一个数正好是它的所有约数之和。例如6就是一个完数,6的因子有1,2,3,并且6=1+2+3)。5.编写一个函数,求1

27、0000以内的所有互满数(如果有两个数,每一个数的所有约数(除它本身以外)的和正好等于对方,则称这两个数为互满数)。实验四 位运算的综合应用一、实验目的单片机又称为微控制器,由于其具有集成度高、功能强、速度快、体积小、功耗低、使用方便、性能可靠、价格低廉等特点,因此在工业控制、智能仪器仪表、数据采集和处理、通信系统、汽车工业、国防工业、家用电器等领域有着十分广泛的应用。位运算在单片机、ARM等硬件程序设计中有着较为广泛的应用,通过设计C语言程序,模拟单片机操纵相关器件,实现流水灯、串行通信等效果,激发学生学习C语言课程的热情,使其熟练掌握位运算知识,提高其分析问题与解决问题的能力,以及将C语言

28、程序设计技能运用于专业领域的意识,为学生后续相关专业课程的学习打下坚实的基础。同时,通过实验,培养学生的算法描述能力以及养成良好的编码风格。二、实验内容1.流水灯效果模拟2.串行通信模拟三、项目分析1.流水灯效果模拟1)背景知识根据单片机的型号以及任务要求的不同,线路接法会有所不同,下面以AT89S52单片机为例进行说明。图中,将8个LED灯接在了P2口上,P2口的每个引脚对应着一个LED灯,当P2口有低电平输出时,就会点亮相应的LED灯,而将低电平转为高电平后,相应的灯会熄灭。利用这个特点,就很容易操纵图中的8个LED灯,如向P2口输送(即0x63)时,P2_0= P2_3= P2_4= P2_5=0,就会点亮D1、D4、D5、D6。如果在暂停一段时间后,令P2的各个位向左或向右移位,再点亮相应的灯,就会给人一种灯在流动的感觉,即所谓的流水灯效果。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2