《-C语言程序设计》实验指导书.doc

上传人:wuy****n92 文档编号:53815075 上传时间:2022-10-26 格式:DOC 页数:13 大小:74.01KB
返回 下载 相关 举报
《-C语言程序设计》实验指导书.doc_第1页
第1页 / 共13页
《-C语言程序设计》实验指导书.doc_第2页
第2页 / 共13页
点击查看更多>>
资源描述

《《-C语言程序设计》实验指导书.doc》由会员分享,可在线阅读,更多相关《《-C语言程序设计》实验指导书.doc(13页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C语言程序设计实验指导书课程编号: 课程名称:C语言程序设计 实验学时: 44 一、本实验课的性质、任务与目的本实验课目的是使学生掌握C语言编程的常用方法,熟悉该语言中的语法、词法规则,为以后进行软件开发和学习后继专业课程打下基础。通过学习能够运用C语言中的各个知识点编写能完成一定功能的程序。训练学生进行复杂程序设计的技能和培养良好程序设计的习惯,其重要程度决不亚于知识的传授。把高级语言的学习与程序设计、上机实践紧密地结合起来,以提高学生能灵活运用新的知识分析问题和解决问题的能力。二、本实验课所依据的课程基本理论本实验课基于C语言的语法和词法规则、数据的表示及算法的处理,而语法及算法正是高级语

2、言程序设计的主要研究对象。C语言程序设计的主要任务是:C 语言是一种应用广泛结构化程序设计语言,本课程介绍C语言的基本概念、基本语法和编程方法,重点描述C语言的结构化的特征,并通过本课程的学习,使学生掌握一定的结构化程序设计的知识,以及用C语言编写程序的能力。三、实验类型与要求在做每个实验之前,让学生对本次实验相关的内容进行预习、算法设计、流程图的设计、编写程序,做好实验的准备工作;写出预习报告,画出流程图,要求独立完成。说明:1、实验类型:设计性; 2、实验要求:必做。四、每组人数与实验学时数每组1人,实验学时数44学时。五、考核方式与评分办法 实验总成绩=出勤情况*10%+实验报告*20%

3、+平时*30%+实验表现*40%六、本实验课配套教材或实验指导书谭浩强. C程序设计. 北京:清华大学出版社 ,2006年3月第3版谭浩强. C程序设计题解与上机指导. 北京:清华大学出版社 ,2006年3月第3版谭浩强. C程序设计试题汇编. 北京:清华大学出版社 ,2006年3月第2版夏宽理. C语言程序设计. 北京:中国铁道出版社,2006年2月第1版夏宽理. C语言程序设计上机指导与习题解答. 北京:中国铁道出版社,2006年2月第1版王士元. C高级实用程序设计. 北京:清华大学出版社,1996年1月第1版七、实验报告要求在机器上交作业,每次实验成绩分为优、良、及格、不及格,未参加的

4、为0分。要求认真书写实验报告。实验报告编写要求:1实验题目2实验要求3程序流程图4调试过程(实验过程出现的问题、解决的方法)5程序代码及运行结果。八、实验内容实验一:C语言运行环境的认识与简单的C程序【目的与要求】 1、了解TC环境下C语言的运行环境,熟悉编译系统的操作环境。2、了解在该系统上如何编辑、编译、连接和运行一个C程序。3、通过运行简单的C程序,初步了解C源程序的特点。4、掌握和理解C程序中最基本的C语句。【实验内容】1、题目:由键盘输入两个整数,计算并输出两个数之和。2、程序如下: #include “stdio.h” void main() int a,b,sum;printf(

5、“Please input two integer numbers:n”);scanf(“%d%d”,&a,&b);sum=a+b;printf(“%d+%d=%d”,a,b,sum); 3、具体操作: (1)输入程序,然后进行编译连接。若在编译中有词法或语法错误,则根据提示进行修改,再进行调试,直到没有语法错误。 (2)运行程序,依下列不同的方式输入数据,查看程序执行结果。 12_ 34 12 34 1234 【实验分析与讨论】 1、总结C程序的基本结构和书写规则。2、分析调试过程中常见的错误提示和解决策略。实验二:C语言程序的单步调试实验三:选择结构的程序设计【目的与要求】 1、了解三种基

6、本数据类型的定义。2、掌握各种不同运算符及其对应的表达式的使用。3、熟练掌握if语句和switch语句的使用【实验内容】一、判断方程ax2+bx+c=0有几个解,若有,则输出其解。 1、算法分析:对于方程ax2+bx+c=0的解,存在以下情况:a=0,不是一元二次方程;b2-4ac=0,有两个相等的实根;b2-4ac0,有两个不等的实根;b2-4ac0) x1=(-b+sqrt(d)/(2*a) x2=(-b-sqrt(d)/(2*a) else x1=(-b+sqrt(-d)i)/(2*a) x2=(-b-sqrt(-d)i)/(2*a)2、程序代码:#include “stdio.h” #

7、include “math.h”void main() float a,b,c,x1,x2,d; printf(“请输入ax2+bx+c=0方程三系数值:”); scanf(“%f%f%f”,&a,&b,&c); if (abs(a)=1e-6) /a=0 printf(“该方程非一元二次方程.n”); else d=sqr(b)-4*a*c;if (abs(d)1e-6) x1=(-b+sqrt(d)/(2*a);x2=(-b-sqrt(d)/(2*a);printf(“该方程的两个不等实根为:x1=%4.2f,x2=%4.2f”,x1,x2);else / sqr(b)-4*a*c0 pr

8、intf(“该方程的两个复数根为:x1=%4.2f+%4.2fi,x2=%4.2f-%4.2fi” ,-b/(2*a),sqrt(-d)/(2*a), -b/(2*a),sqrt(-d)/(2*a); 二、简单的菜单程序设计。假设要求设计一菜单如下: 主 菜 单 1-汉字 2-拼音 3-英文1、算法分析:(1) 根据要求使用输出语句将上述菜单输出,提示按要求选择。(2) 运用if语句或switch语句,编写分支结构。2、程序代码:#include “stdio.h”void main() int i; printf(“nnn=主 菜 单=n”); printf(“ (中 国)”) printf

9、(“ 1-汉字n”); printf(“ 2-拼音n”); printf(“ 3-英文n”); printf(“请选择:”); scanf(“%d”,&i); switch(i) case 1:printf(“ 中 国n”);break;case 2:printf(“ Chinan”);break;case 3:printf(“ Zhong guon”);break; 【课后练习】1、判断一年份是不是闰年。2、从键盘上输入1-7之间的数字,输出表示一个星期中对应某一天的英文单词。【实验分析与讨论】 1、总结分支选择结构的设计方法与技巧。2、掌握简单菜单的设计。实验四:循环结构的程序设计【目的与

10、要求】 1、掌握三种循环语句在编程中的使用。2、理解break语句和continue语句在循环结构中的不同作用。3、了解循环的嵌套,学会穷举算法与迭代算法。【实验内容】一、输入两个正整数,求出它们的最大公约数与最小公倍数。1、算法分析: 辗转相除法对于两个数m和n,将大数放在m中,小数放在n中,用n去除m,若余数为0,则n为最大公约数,否则将n作为m,余数作为n,再用n去除m,直到余数为0,则n为最大公约数。2、程序代码: #include “stdio.h” #include “math.h” void main() int m,n,t,max,min;printf(“请输入两个正整数:”)

11、;scanf(“%d%d”,&m,&n); min=m*n;if (mn) t=n;n=m;m=t;while(n!=0)t=m%n;m=n;n=t;printf(“最大公约数为:%dn”,m);printf(“最小公倍数为:%dn”,min/m);二、将一张100元钱,换成10元,20元,50元零钱,问有多少种不同的换法(假设三种零钱每种都可不出现)。1、算法分析 运用穷举算法实现:考虑到三种零钱各种可以不出现,则各自的张数范围如下: 10元-0张 到 10张 20元-0张 到 5张 50元-0张 到 2张 并且要考虑到共数只有一张100元票子。2、程序代码: #include stdio.

12、h void main() int Tencount,Twecount,Fifcount,i=0; for(Tencount=0;Tencount=10;Tencount+) for(Twecount=0;Twecount=5;Twecount+) for(Fifcount=0;Fifcount=2;Fifcount+) if (Tencount*10+Twecount*20+Fifcount*50=100) printf(第%d种换法为:10元 %d张 20元 %d张 50元 %d张n,+i,Tencount,Twecount,Fifcount); 【课后练习】 *1、求1100之间,能被5

13、整除的数之和。 * * *2、判断任一个数是否是质数。 * * * * *3、输出一有规则的图形,如右图。 * * * *【实验分析与讨论】 1、分析总结for语句,while语句,do-while语句的用法。2、巧用break语句和continue语句。实验五: 数组及其应用【目的与要求】 1、掌握一维数组与二维数组的使用。2、掌握字符数组与字符串的区别与使用。3、熟练掌握与数组有关的算法(选择排序与冒泡排序、查找与插入)。【实验内容】一、输入一个整数,将其插入一含有9个数的有序序列中,确保插入后其仍然有序,。 1、算法分析:将待插入的数与序列中的每个数进行比较,找到其插入的具体位置i; 将

14、从第i个数组元素开始,一直到原数组中的最后一个元素,整体往后移,空出一空间来存储待插入的整数。 2、程序代码: #include stdio.h void main() int a10=2,5,7,11,14,19,21,33,67,i,k,m; printf(“原数组为:”); for(i=0;i9;i+) printf(“%4d”,ai); printf(“n请输入待插入的整数:”); scanf(“%d”,&m); for(i=0;i9;i+) if (m=i;k-) ak=ak-1; /移位,准备插入新的整数ai=m; printf(“新数组为:”); for(i=0;i10;i+)

15、printf(“%4d”,ai);二、编程实现:将字符串str2连接到字符串str1 后,构成新的字符串str1。 1、算法分析: 本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志。 2、程序代码: #include stdio.h #include string.h void main() char str140,str220,i,j,len1,len2; printf(请输入字符串str1:); gets(str1); len1=strlen(str1); printf(请输入字符串str2:); gets(str2); le

16、n2=strlen(str2); for(i=len1,j=0;jlen2;i+,j+) str1i=str2j;str1i=0; printf(新的字符串str1为:); puts(str1); 【课后练习】1、 判断一方阵是不是对称矩阵。2、 实现两个字符串拷贝的功能。3、 运行折半查找法,在一个有序序列中查找某一特定的数。【实验分析与讨论】1、 分析两种基本排序算法的核心与两者的不同之处。2、 在实现字符串处理函数时的一些注意事宜及其实现方法。3、 讨论二维数组解决矩阵与行列式。实验六: 函数及其应用【目的与要求】 1、掌握C中函数的定义、调用及设计。2、掌握函数嵌套调用、递归调用的设计

17、。3、掌握变量、函数的作用域及存储类。【实验内容】一、设计一个子函数对n个整数进行排序,由主函数从键盘接收若干个数,调用子函数进行排序,并在主函数中进行输出显示。1、算法分析: 子函数的设计 以两个参数来实现,一个是接收主函数传来的数组首地址,另一个是持排序的整数个数,如fun(int a,int n); 主函数的实现 定义一整型数组,从键盘上接收若干个整数,调用子函数fun,再将最后的结果输出。2、程序代码:#include stdio.hvoid fun(int a,int n) / 选择排序算法 int i,j,t; for(i=0;in-1;i+) for(j=i+1;jaj) t=a

18、i;ai=aj;aj=t;void main() int a10,i; for(i=0;i10;i+) scanf(%d,&ai); printf(输入的数值序列为:); for(i=0;i10;i+) printf(%4d,ai); printf(n); fun(a,10); printf(输入的数值序列为:); for(i=0;i10;i+) printf(%4d,ai); 二、输入任意两数m,n的值,输出下列表达式的值。 S= 1、算法分析 编写一函数fac(n), 返回n!的值。 编写主函数,从键盘输入m,n的值,调用上述fac()函数,计算表达式的值,并将其输出。 2、程序代码 #i

19、nclude “stdio.h” long fac(int n)if (n=1) return 1; else return n*fac(n-1);void main()int m,n,t; float s;printf(“please input 2 integer numbers:”);scanf(“%d%d”,&m,&n);if(mn) t=m;m=n;n=t;printf(“s=%f”,fac(m)/(fac(m-n)fac(n);【课后练习】1、 若正整数A恰好出现在其平方数的右侧,则称A为一个同构数。如:5,6,76。求100以内的所有同构数。要求:(1)编写一子函数int fun

20、(int n),判断给定正整数n是不是同构数,若是,返回1,否则,返回0。(2)编写主函数,调用函数fun(),寻找并输出100以内的所有同构数。(3)在输出同构数的同时,要输出其平方的值。2、 运用递归,求任一个字符串的长度。【实验分析与讨论】1、 被调函数的实现及调用过程。2、 简单递归问题的实现。实验七:指针及其应用 【目的与要求】 1、了解指针的定义与应用。2、掌握使用指针变量的程序设计。3、 了解使用函数指针的程序设计。4、 了解使用指针数组的程序设计。【实现内容】一、设计一程序,将两个变量的值进行交换。1、 算法分析:(1)编写一个函数swap(int *p,int *q),交换两

21、个参数指针所指的数据。(2)编写主函数,调用函数swap,将两个变量的值进行交换。2、 程序代码:#include “stdio.h”void swap(int *p,int *q);void main()int a,b;printf(“请输入两个整数:”);scanf(“%d%d”,&a,&b);printf(“两个数交换前顺序为:a=%d,b=%d”,a,b);swap(&a,&b);printf(“两个数交换后顺序为:a=%d,b=%d”,a,b);void swap(int *p,int *q)int t;t=*p;*p=*q;*q=t;二、编程实现:运用指针将字符串str2连接到字符

22、串str1 后,构成新的字符串str1。 1、算法分析: 本程序即实现字符串处理函数strcat()的功能。两字符串str1和str2进行连接,要注意的是字符串的结束标志,并运用指向字符串的指针来实现。 2、程序代码: #include stdio.h #include string.h void main() char str120 ,str210,*p=str1,*q=str2 ,j,len1,len2; printf(请输入字符串str1:); gets(str1); len1=strlen(str1); p=p+len1-1; printf(请输入字符串str2:); gets(str

23、2); len2=strlen(str2); for( j=0;jlen2; j+) *(+p)=*(q+);str1len1+len2=0; printf(新的字符串str1为:); puts(str1); 【课后练习】1、运用指向数组的指针,求一数组中所有元素之和。2、【实验分析与讨论】实验八:结构体及其应用 【目的与要求】 1、了解结构体类型的定义。2、掌握结构体类型变量的使用。【实验内容】有10个学生,每个学生包括学号、姓名、三门课的成绩,从键盘输入10个学生数据,要求输出三门课中每一门课的平均成绩,以及最高分学生的数据。1、算法分析: 定义一个结构体类型,其中含有学号、姓名、三门课的

24、成绩、总分数据;先后根据要求解决上述问题。2、程序代码:#include stdio.htypedef struct stuint number;char name4;float len1,len2,len3;float score;student; void main() student stu10;int i,flag;float ave3,sum3=0,0,0,max=0;printf(请输入10位同学的所有信息:);for(i=0;i=max) max=stui.score; flag=i; sum0+=stui.len1; sum1+=stui.len2; sum2+=stui.le

25、n3; for(i=0;i3;i+) avei=sumi/3;printf(三门课的平均成绩分别为); for(i=0;i3;i+) printf(%6.2f,avei); printf(n最高分是:%d %s %6.2f %6.2f %6.2f,stuflag.number,stuflag.name,stuflag.len1, stuflag.len2, stuflag.len3);【实验分析与讨论】 13个人围成一圈,从第1个人开始顺序报号1、2、3。凡报到“3”者退出圈子,找出最后留在圈子中的人原来的序号。实验九: 链表的处理【目的与要求】 1、了解键表的相关概念。2、掌握单向键表的创建

26、、编历、插入、删除等简单处理。【内容】创建一个链表。#include stdio.h#include stdlib.htypedef struct list int data;struct list *next;list;void main()list *head,*ptr;int num,i;ptr=(list *)malloc(sizeof(list); head=ptr;printf(Please input 5 numbers:);for(i=0;idata=num;ptr-next=(list *)malloc(sizeof(list);if(i=4) ptr-next=NULL;

27、else ptr=ptr-next;ptr=head;printf(The value is:);while(ptr!=NULL)printf(-%d,ptr-data);ptr=ptr-next;getchar();【实验分析与讨论】实验十:文件及其应用【目的与要求】 1、了解运用于文件操作的库函数。2、掌握对文件进行简单的处理。【实验内容】有5个学生,每个学生包括学号、姓名、三门课的成绩,从键盘输入5个学生数据,计算每个人的平均成绩,并将原有数据及平均成绩存放于磁盘文件“stud.txt”中。1、算法分析: 先将5个学生的相关信息从键盘上输入,并求出各自的平均成绩;再次以写方式打开一个文件

28、“stud.txt”,将5个学生的信息全存入文件中。 2、程序代码: #include stdio.htypedef struct stuint number;char name4;float len3,ave;student; void main() student stu5; FILE *fp;int i ;printf(请输入5位同学的所有信息:);for(i=0;i5;i+) scanf(%d%s,&stui.number, stui.name); stui.ave=0; for(int j=0;j3;j+) scanf(%f,&stui.lenj); stui.ave+=stui.lenj;stui.ave/=3;fp=fopen(stud.txt,w+);for(i=0;i5;i+)fprintf(fp,%d %s %5.2f %5.2f %5.2f %5.2f, stui.number, stui.name, stui.len0,stui.len1,stui.len2,stui.ave);fclose(fp);【实验分析与讨论】 将上述问题中“stud.txt”文件中的学生数据,按平均分进行排序处理,将已排序的学生数据存入一新文件“stu.txt”中。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 合同协议

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com