C语言程序设计实验教学大纲.doc

上传人:小飞机 文档编号:4219552 上传时间:2023-04-10 格式:DOC 页数:31 大小:336.50KB
返回 下载 相关 举报
C语言程序设计实验教学大纲.doc_第1页
第1页 / 共31页
C语言程序设计实验教学大纲.doc_第2页
第2页 / 共31页
C语言程序设计实验教学大纲.doc_第3页
第3页 / 共31页
C语言程序设计实验教学大纲.doc_第4页
第4页 / 共31页
C语言程序设计实验教学大纲.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

《C语言程序设计实验教学大纲.doc》由会员分享,可在线阅读,更多相关《C语言程序设计实验教学大纲.doc(31页珍藏版)》请在三一办公上搜索。

1、C语言程序设计实验教学大纲学时课程总:64 学分:4 实验学时:24 实验个数:9 实验学分: 1.5课程性质:必做 适用专业: 计算机科学技术、网络工程、软件工程、电子商务、教育技术教材及参考书:C语言程序设计及实践实验指导,谢满得 邵俊 编著,机械工业出版社,2014年1月 大纲执笔人: 大纲审定人: 一、实验课的性质及任务C语言程序设计实验是面向计算机相关专业学生开设的C语言程序设计实验课,是配合C语言程序设计课程而开设的实践性教育环节。本课程的主要任务是让学生充分掌握C语言程序设计的基本概念、各种数据类型的使用技巧、模块化程序设计的方法等。C语言程序设计实验对课程中所涉及的知识进行验证

2、,同时也是学生很好地学习课程的辅助手段。通过C语言上机实验的教学活动,使学生真正全面掌握C语言的基础知识,培养和提高学生的程序开发能力。二、实验课程目的及要求1实验目的通过实验课程的学习实践,加深学生对所学的基本概念、基础理论和知识的理解,熟悉使用Visual C+ 6.0集成环境进行C语言的编写、编译及调试。同时,通过项目开发全过程的全方位指导,从需求分析、算法设计到程序编写和过程调试,以项目实训的形式引导和帮助学生解决实际问题,提高学生解决具体问题的能力,以及培养学生用多函数、多文件组织程序的思维习惯,为今后的后继课程学习和实际工作打下良好基础。2实验要求(1)掌握C语言程序的基本格式,了

3、解C程序的开发过程和C语言中的一些常用概念。(2)掌握常量和五种基本数据类型变量的使用。(3)掌握C表达式和运算符的正确使用,熟练掌握数据输入、输出函数。(4)掌握条件转移语句if-else和选择分支语句switch;掌握三种程序跳转的方法,即break语句、continue语句、return 语句。(5)掌握循环语句(for语句;do-while语句;while语句)的正确使用,认真体会应该如何组织循环。(6)掌握数组的定义、赋值,一维数组及二维数组的使用。(7)掌握函数的定义、函数的调用以及函数的类型说明。(8)掌握局部变量、全局变量的定义和使用。(9)掌握指针的基本概念以及数组及指针、指

4、向指针的指针的基本用法。(10)掌握结构体变量的定义,引用结构体中成员的方法,应用结构数组解决实际问题;共用体的概念,引用共用体中成员的方法。(11)掌握链表的类型定义及其基本操作。(12)掌握文件的打开、读写及关闭,并能运用文件提高编程的效率。(13)理解项目式程序开发的过程。三、实验项目及内容提要C语言程序设计实验课程 (1107142019)序号实验项目编号实验名称学时必做选做学分数实验类型内容提要基本操作验证综合设计1实验一数据类型和表达式211、了解C语言中数据类型的意义。2、理解常用运算符的意义。3、掌握C语言表达式的运行规则2实验二分支结构程序设计21了解和掌握分支语句的使用,包

5、括if语句的各种形式以及switch语句3实验三循环结构程序设计221、使用循环语句完成累乘、图像输出的程序编写。2、掌握较复杂结构程序的编写。3、掌握程序调试的方法4实验四数组程序设计42掌握一维和二维数组的使用技巧5实验五函数521、学习函数的编程思想,编写一个包括34个函数的程序。2、掌握函数中参数传递的两种方式和函数的相互调用6实验六指针321、用指针作为函数参数完成字符串的传递。2、掌握函数中参数传递的两种方式7实验七字符串及指针211、掌握用指针进行函数参数传递的方法。2、掌握指针数组和二维数组间的关系以及进行参数传递时的写法8实验八结构体211、掌握结构体的定义、数据输入方法。2

6、、掌握结构体成员变量的两种访问方法。3、掌握编写程序完成单链表的建立和查询方法9实验九文件操作211、掌握文件的打开和关闭。2、精通文件的读写操作。3、了解文件的定位操作及文件的检测函数。4、掌握文件的应用四、实验内容安排:实验一 数据类型和表达式 实验( 验证性 实验 2学时)1、目的要求:(1)了解C语言中数据类型的意义。(2)理解常用运算符的意义。(3)掌握C语言表达式的运行规则。(4)编写实验报告。2、实验内容(参考实验指导书):(1)计算由键盘输入的任何两个双精度数据的平均值。#include void main()printf(请任何两个数);double a,b,c; scanf

7、(%lf%lf,&a,&b); c=(a+b)/2;printf(%lf,c); (2) 写一个输入7个数据的程序,把输入的数据代入a + b * (c d ) / e * f g 表达式进行运算。(3) #include (4) void main()(5) (6) int a,b,c,d,e,f,g,h;(7) scanf(%d%d%d%d%d%d%d,&a,&b,&c,&d,&e,&f,&g);(8) h=a+b*(c-d)/e*f-g;(9) printf(%d,h);(10) (11)(3)编写一个C语言程序,测试下列各表达式: i, j i + 1 , j + 1 i+ , j+

8、+i , +j i+j#includestdio.hvoid main()int i=1,j=2;int a,b,c,d,e,f,g;a=i+1;b=j+1;c=i+;d=j+;e=+i;f=+j;g=(i+)+(+j);printf(a=%d,b=%d,c=%d,d=%d,e=%d,f=%d,g=%d,a,b,c,d,e,f,g);(4)输入存款金额money,存期year和年利率rate,根据下列公式计算存款到期时的利息interest(税前),输出时保留2位小数。 interest = money(1+rate)year money#include #includevoid main()

9、int year; double money,rate,interest; scanf(%lf%d%lf,&money,&year,&rate); interest=money*pow(1+rate,year)-money; printf(money(1+rate)year-money=%lf,interest);(5)输入华氏温度,输出对应的摄氏温度。计算公式如下: c = 5 * ( f - 32) / 9 其中,c表示摄氏温度,f表示华氏温度。#include void main()float c, F;printf(请输入华氏温度:n);scanf(%lf, &F);c = 5 * (

10、F - 32) / 9;printf(转换成摄氏温度为:%.2fn, c);getchar();getchar();实验二 分支结构程序设计 实验( 验证性 实验 2学时)1、目的要求:(1)了解和掌握分支语句的使用,包括if语句的各种形式以及switch语句。(2)编写实验报告。2、实验内容(参考实验指导书):(1)编写一个程序完成输入一个整数,输出它的符号。#include void main() printf(qingshuruyigezhenshu); int a; scanf(%d,&a); if(a0) printf(+); else printf(-);(2)请编写居民应交水费,

11、并提供各种测试数据。 居民应交水费y(元)及月用水量x(吨)的函数关系式如下: 0 x 15 y = f(x) = 4x / 3 0 x 15 #include void main() int x,y; scanf(%d,&x); if(x15) y=2.5*x-10.5;printf(%d,y); else y=(4*x)/3;printf(%d,y); (3)请根据输入的学生成绩给出成绩等级的判断,判断规则如下: 如果输入的成绩大于等于90,则输出优秀; 如果输入的成绩小于90、大于等于80,则输出良好; 如果输入的成绩小于80、大于等于70,则输出中等; 如果输入的成绩小于70、大于等于

12、60,则输出及格; 其他输出不及格。 #includestdio.hmain() int score; printf(请输入第一个学生的成绩); scanf(%d,&score);if(score=90)printf(优秀);else if(score=80)printf(良好);else if(score=70)printf(中等);else if(score+60)printf(及格);else if(score60)printf(不及格);(4)运输公司对用户计算运费。路程(s)越远,每公里运费越低。标准如下: s = 250km 没有折扣 250km s 500km 2%折扣 500k

13、m s 1000km 5%折扣 1000km s 2000km 8%折扣 2000km s 3000km 10%折扣 3000km s 15%折扣 设每公里每吨货物的基本运费为p,货物重为w,距离为s,折扣为d,则总运费的计算公式为: f = p * w * s * ( 1 d ) 请编程实现:从键盘输入基本运费p,货物重w,距离s,计算输出用户最终需要支付的运费。#include void main()double s,p,w,d,f;printf(货物重为:n);scanf(%lf,&w);printf(基本运费为:n);scanf(%lf,&p);printf(路程为:n);scanf(

14、%lf,&s);if(s250&s=500&s=1000&s=2000&s=3000)d=0.15; f=p*w*(1-d);printf(运费为:%lfn,f);getchar();getchar();实验三 循环结构程序设计 实验( 验证性 综合性 实验 2学时)1、目的要求:(1)使用循环语句完成累乘、图像输出的程序编写。(2)掌握较复杂结构程序的编写。(3)掌握程序调试的方法。(4)编写实验报告。2、实验内容(参考实验指导书):(1)已知xyz + yzz = 532,其中x、y、z都是数字(09),编写一个程序求出x、y、z分别代表什么数字。# includemain()int x,

15、y,z;for(x=0;x=9;x+)for(y=0;y=9;y+)for(z=0;z=9;z+)if(x*100+y*10+z)+(y*100+z*10+z)=532)printf(x=%d y=%d z=%d,x,y,z);(2)编写一个程序打印如下对称图形(行数由键盘输入19范围的值),例如下面是输入的数字4时的情形: 4444444 33333 222 1 222 33333 4444444#includevoid main()int n,j,i,k,a;printf(请输入一个数字来表示:);scanf(%d,&n);for(i=n;i=1;i-)for(j=1;j=n-i;j+)p

16、rintf( );for(k=1;k=2*i-1;k+)printf(%d,i);printf(n);for(i=1;i=n-1;i+)for(j=1;j=n-i-1;j+)printf( );for(k=1;k=2*i+1;k+)printf(%d,i+1);printf(n);(3)学校有近千名学生,在操场上排队,5人一行余2人,7人一行余3人,3人一行余1人,编写一个程序求该校的学生人数。#includemain()int i;for(i=1;i900&i1000) printf(%dn,i);(4)学校某班A、B、C、D四位同学中的一位做了好事不留名,表扬信来了之后,班主任问这四位是谁

17、做了好事,四位回答如下: A说:不是我。 B说:是C。 C说:是D。 D说:他胡说。 已知三个人说的是真话,一个人说的是假话。请根据这些信息,找出做了好事的人。#includevoid main()int i;for(i=A;i=D;i+)if(i!=A)+(i=C)+(i=D)+(i!=D)=3)printf(%cn,i);实验四 数组程序设计 实验( 验证性 综合性 实验 4学时)1、目的要求:(1)掌握一维和二维数组的使用技巧。(2)编写实验报告。2、实验内容(参考实验指导书):(1)从键盘输入一个长度为N(比如10)的整型数组,而后将数组中小于零的元素移动到数组的前端,大于零的元素移到

18、数组的后端,等于零的元素留在数组中间。比如原来数组为:2 -5 -89 75 0 -89 0 93 48 0,经过处理后的数组为:-5 -89 -89 0 0 0 75 93 48 2。由于不要求数组有序,所以不允许用排序方法。提示:1)输入N个数据,构建数组。2)按照要求确定数据的位置,需要注意循环条件的确定、0数据元素往中间推的实现过程以及数组处理的方向。#include#define N 10void main()int aN,bN,i,j,x,y;printf(请输入十个数n);for(i=0;iN;i+) printf(a%d= ,i); scanf(%d,&ai);j=N-1;fo

19、r(i=0;i0) bj=ai; j-;x=j;for(i=0;iN;i+)if(ai=0) bx=ai; x-;y=x;for(i=0;iN;i+)if(ai0) by=ai; y-;for(j=0;jN;j+)printf( %d,bj);(2)设数组a的定义如下:int a20 = 2,4,6,8,10,12,14,16; 已存入数组中的数据值已经按由小到大的顺序存放,现从键盘输入一个数据,把它插入到数组中,要求插入新数据以后,数组数据仍然保持有序。请编写一个程序实现上述功能。提示:1)定义整型数组并初始化。2)从键盘输入一个数据。3)将该数据插入到数组中,由于要保证插入的数组仍然有序,

20、所以需要查找插入的位置。4)输出插入数据以后的数组。#include#define N 20void main()int i,x,temp,j,min;int aN=2,4,6,8,10,12,14,16;printf(请输入一个数 x= );scanf(%d,&x);for(i=0;iai)temp=ai+1;ai+1=x;x=temp;for(i=0;iN-1;i+)min=i;for(j=i;jaj) min=j; temp=ai; ai=amin; amin=temp; for(i=0;iN;i+)printf(%d ,ai);(3)写一个3 x 5矩阵的转置程序,输出其原矩阵的值和转

21、置以后的结果。提示:1)定义一个二维数组及相关变量。2)对二维数组赋值,可以由键盘输入,也可以通过其他方式赋值。3)输出转置前的二维数组。4)对二维数组中的值进行转置。5)输出转置后的二维数组中的值。#include#define M 3#define N 5void main()int aMN,i,j;printf(请输入数n);for(i=0;iM;i+)for(j=0;jN;j+) printf(a%d%d= ,i,j);scanf(%d,&aij);for(i=0;iM;i+) for(j=0;jN;j+) printf( %d,aij); printf(n); for(j=0;jN;

22、j+) for(i=0;iM;i+) printf( %d,aij); printf(n);(4) 编程实现随机产生10个位于区间100 200互不相等的整数,并将其按降序排序和输出。#include #include #include #define N 10int main() int stime,z,i,aN,min,j,temp;long ltime; ltime=time(NULL); stime=(unsigned int)ltime/2; srand(unsigned)time(NULL);for(i=0;i=0;i-)min=i;for(j=i;j=0;j-)if(aminaj

23、)min=j;temp=ai;ai=amin;amin=temp;for(i=0;iN;i+)printf(%d ,ai);实验五 函数 实验( 验证性 综合性 实验 5学时)1、目的要求:(1)学习函数的编程思想,编写一个包括34个函数的程序。(2)掌握函数中参数传递的两种方式和函数的相互调用。(3)编写实验报告。2、实验内容(参考实验指导书):(1)写一个函数int digit( int n , int k ),它返回数n的从右向左的第k个十进数字值。例如,函数调用digit(1234,2)将返回值3。#include int digit(int n,int k);void main()i

24、nt i,j,g;printf(please input i and j:n);scanf(%d%d,&i,&j);g=digit(i,j);printf(return %dn,g);int digit(int n,int k)int z,x,t,s;int sum=1,m=10;for(t=1;t=k;t+) sum*=m;z=sum/10;s=n%sum;x=s/z;return x;(2) 写一个函数int isprime(int n),当n是质数时,函数返回非零值;当n是合数时,函数返回零值。#includeisprime(int n);main()int a,b;printf(请输入

25、一个整数);scanf(%d,&a);b=isprime(a);if(b=0)printf(您输入的数是合数);elseprintf(您输入的数是质数);int isprime(int n)int j,i=0;for(j=1;j2)return (0);elsereturn (1);(3) 写一个函数reverse( char s),将字符串s中的字符串倒序输出。试分别用递归和非递归两种形式编写。请老师帮我看看我的问题,我不知道怎么改了,函数调用常出错误,以下的我已经改了很多次了,还是报错,谢谢老师。#include#includeint hanshu(int n);error C4716:

26、hanshu : must return a valuevoid main()int s6;int i,j;for(j=0;j=5;j+)scanf(%d,&sj);for(i=0;i=0;j-)printf(%d,sj);int hanshu(int n)if(n=1)hanshu(n-1);printf(%d);elseexit(-1);(4)写一个主函数输入测试数据(自己指定),并调用上述函数,检查函数功能的正确性。(5)一个数如果从左到右和从右到左读,数字是相同的,则称这个数字为回文数,比如898、1221、15651都是回文数。求:既是回文数又是质数的5位十进制数有多少个?要求:回文

27、判断和质数判断都需要通过子函数实现,输出的时候要求5个数字一行。#includeint isprime(int n);int wanmeishu(int );void main()int n,j=0,x,y;printf(请输入一个五位数 n= );scanf(%d,&n);x=wanmeishu(n); y=isprime(n);if(x=1&y=1) printf(n是一个会文数且是质数n);elseprintf(n不满足条件n);int isprime(int n)int j,i=0;for(j=1;j2)return (0);elsereturn (1);int wanmeishu(i

28、nt w); error C2447: missing function header (old-style formal list?)int a,b,c,d,e;a=w/10000;b=w/1000-10*a;c=w/100-100*a-10*b;d=w/10-1000*a-100*b-10*c;e=w%10;if(a=e&b=d)return(1);else return(0);(5)在n个已排好序(设为从小到大)的数据(数或字符串)中查找某一个数据,如果找到了,就指出其在n个数中的位置;否则给出无该数据的信息。请用递归的方法实现二分查找来实现这一查找过程。提示:采用二分法求解本问题的基本

29、思路是:设数列为a1,a2,an,被查找的数为x,则查找首先对am(m = ( n + 1 ) / 2)进行,于是得到三种情形。若x am,则x只可能在区间am + 1 , an若x am,则x只可能在区间a1 , am - 1若x = am,则am即为查找的数,求解结束。从上面的分析发现,这个过程很适合用递归来实现。#include#includechar zhaoshu(char y);#define N 10void main()char aN,x,c;int i;for(i=0;iN;i+) printf(a%d= ,i); scanf(%c,&ai);printf(请输入一个数 x=

30、 ); c=zhaoshu(x);printf(%d,c);char zhaoshu(char y); missing function header (old-style formal list?)char bN;for(i=0;ibm)zhaoshu(char y);else (ybm)zhaoshu(char y);elseexit(0);第七章函数书上的第七题(老师,这道题我不知道怎么用数组,所以只写了函数调用的正确程序,第四题,我不知道怎么把一个整数转换成字符串,连题意都读不懂。所以就只做了第七题):#include int wanmeishu(int m);void main()i

31、nt n,j,a;for(n=1;n=1000;n+)a=wanmeishu(n);if(a=1)printf(%d ,n);int wanmeishu(int m)int i,sum=0;for(i=1;im;i+)if(m%i=0)sum=sum+i;if(m=sum)return 1;elsereturn 0;实验六 指针 实验( 验证性 综合性 实验 4学时)1、目的要求:(1)用指针作为函数参数完成字符串的传递。(2)掌握函数中参数传递的两种方式。(3)编写实验报告。2、实验内容(参考实验指导书):(1)编写一个函数char *delk( char *sp),把sp所指向的字符串中所

32、有的“$”字符删除,并把处理后的字符串指针返回。(2)写一个函数int find( char *s1, char *s2),函数find的功能是查找串s1中是否包含指定的词(s2指向),如果存在则返回第1次出现的位置,否则返回-1.约定串中的词由1个或1个以上的空格符分隔。(3)编程实现将输入的十进制整数n通过函数DtoH转换为十六进制数,并将转换结果以字符形式输出。例如:输入十进制数79,将输出十六进制数4f。(4)定义函数void Merge(int a, int n, int b, int m),参数a、b为一维数组,数组中的数据为升序排列,n和m分别为它们的元素个数。函数的功能为:将数

33、组a和b合并为一个数组,合并后的结果存放于数组a中,要求合并后的数组a仍旧为升序排列。请编程实现,并编写main函数对其测试。实验七 字符串及指针 实验( 验证性 综合性 实验 2学时)1、目的要求:(1)掌握用指针进行函数参数传递的方法。(2)掌握指针数组和二维数组间的关系以及进行参数传递时的写法。(3)编写实验报告。2、实验内容(参考实验指导书):(1)编写一个书名排序程序,输入10个书名存入一个二维数组,用函数void sortstring( char *name , int n)实现它们的字典顺序。(2)编写函数void search( char *s1, char *s2, char *s3)。函数search()从已知的两个字符串s1及s2中找出它们都包含的最长的单词放入字符串s3,约定字符串中只有小写字母和空格字符,单词用1个或1个以上空格分隔。(3)编写一个主函数,测试上述两个函数的正确性。(4)输入一个字符串,内有数字和非数字字符,例如: A123cdf 456.78cpc876.9er 849.1 将其中连续的数字作为一个实数,依次存放到一数组a中。例如123存放在a0,456.78存放在a2,依次类推,统计共有多少个数,并输出这些数。实验八 结构体 实验( 验证性 综合性 实验 2学时)1、目的要求:(1)掌握结构体的定义、数

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号