《《程序设计语言C》实验指导书.doc》由会员分享,可在线阅读,更多相关《《程序设计语言C》实验指导书.doc(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、程序设计语言C实验指导书实验一 熟悉C语言的运行环境一、实验目的1熟悉Visual C+ 6.0的集成环境,了解如何编辑、编译、连接和运行一个C程序,即运行一个C程序的全过程。2通过运行简单的C程序,初步了解C程序的基本结构及特性。二、实验内容1.上机验证运行教材P4例1.1。 文件名:SY01-01.C2.上机验证运行教材P4例1.2。 文件名:SY01-02.C3.上机验证运行教材P5例1.3。 文件名:SY01-03.C4.上机完成教材P13习题1.5。 文件名:SY01-04.C5.上机完成教材P13习题1.6。 文件名:SY01-05.C上机操作的基本步骤见谭浩强C程序设计题解与上机
2、指导P212-P220,注意:(1)先在硬盘上建立一个工作目录(例如:E:2018314101欧阳海),将实验中的源文件都保存到该文件夹。(2)选择“File/New/Files/C+ Source File”,在“Location”框中选择要保存文件的目录,在“File”框中输入文件名,文件名后缀 .C。(3)在新建一个C+源程序文件前,先关闭以前的工作区(文件/关闭工作区或File/Close Workspace)。实验二 数据类型、运算符与表达式一、实验目的1掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及对它们赋值的方法,输出方法。2了解不同的类型数据之间赋值的规律。
3、3学会使用C的有关算术运算符,以及包含这些运算符的表达式,特别是自加(+)和自减()运算符的使用。二、实验内容1定义整型变量、单精度浮点型变量、双精度浮点型变量、字符型变量各1个,给变量赋值并输出。 文件名:SY02-01.C#includevoid main() int a; float b; double c; char d; a=10; b=357.123456789; c=357.123456789; d=A; printf(a的十进制数是:%d,十六进制是:%xn,a,a); printf(b=%fn,b); printf(c=%lfn,c); printf(d=%cn,d);2算术
4、表达式,文件名:SY02-02.C#includevoid main() int a,b,c,x,y,z; a=4,b=6,c=7; x=a+b*5-+c%3; a=12,b=5,c=23; y=a+-b*3+-c%3; a=12,b=5,c=23; z=(a+)+(-b)*3+(-c)%3; printf(x=%dn,x); printf(y=%dn,y); printf(z=%dn,z);3赋值表达式,文件名:SY02-03.C#includevoid main() int a=3,b=10,c=20,x,y,z; x=y=z=0; x+=a+b+4; y*=(y=5)+a+5; z+=y
5、+x+(z=9); printf(x=%d,y=%d,z=%dn,x,y,z);4关系表达式,文件名:SY02-04.C#includevoid main() int a=2,b=7,c=12,x,y,z; x=(a=c); z=(a=(c!=5); printf(x=%d,y=%d,z=%dn,x,y,z);5逻辑表达式,文件名:SY02-05.C#includevoid main() int a=1,b=0,c=1,x,y,z; x=!(a&b)|(a&c); y=+a&b&+a; z=-c|a|b+; printf(a=%d,b=%d,c=%dn,a,b,c); printf(x=%d,
6、y=%d,z=%dn,x,y,z);6逗号表达式,文件名:SY02-06.C#includevoid main() int a=2,b=7,c=12,x1,x2,y1,y2; x1=(a-8,b*3,c+20); x2=a-8,b*3,c+20; y1=(a-6,b*12); y2=a=6,b*12; printf(x1=%d,x2=%d,y1=%d,y2=%dn,x1,x2,y1,y2);7编写一个程序,求表达式x-z%2*(x+y)%2/2的值。设x=8.5 ,y=2.5 ,z=4。文件名:SY02-07.C#includemain() float x,y,bds; int z; x=8.
7、5,y=2.5,z=4; bds=x-z%2*(int)(x+y)%2/2; printf(x-z%2*(x+y)%2/2=%fn,bds);8教材P50 例3.6 文件名:SY02-08.C#includevoid main() char c1,c2; c1=97; c2=98; printf(%c %cn,c1,c2); printf(%d %dn,c1,c2);9教材P51 例3.7 文件名:SY02-09.C#includevoid main() char c1,c2; c1=a; c2=b; c1=c1-32; c2=c2-32; printf(%c %cn,c1,c2);10教材P
8、57 例3.8 文件名:SY02-10.C#includevoid main() float x; int i; x=3.6; i=(int)x; printf(x=%f,i=%dn,x,i);11教材P67 习题3.10 文件名:SY02-11.C#includevoid main() int i,j,m,n; i=8; j=10; m=+i; n=j+; printf(i=%d,j=%d,m=%d,n=%dn,i,j,m,n);12程序改错 文件名:SY02-12.C下面的程序的功能是计算由键盘输入的任意两个整数的平均值,找出程序中的错误并改正之。include main( ) int x
9、, y, a;scanf(“%x, %y, &x, &y);a=(x+y)/2;printf(“The average is :”a);调试无错误后,使用下列测试用例对上述程序进行测试:2,5改正后的程序:#includemain() int x,y; float a; printf(Input x&y:n); scanf(%d,%d,&x,&y); a=(float)(x+y)/2; printf(The average is: %fn,a);实验三 顺序结构程序设计一、实验目的1掌握赋值语句的使用方法。2掌握各种类型数据的输入、输出的方法,能正确使用各种格式转换符。3掌握输入、输出函数的使
10、用。二、实验内容1从键盘输入两个数,求两数之和并输出。 文件名:SY3-01.C2从键盘输入园的半径,求园的面积并输出。 文件名:SY3-02.C3从键盘输入一个小写字母,要求输出其对应的大写字母。(教材P87例4.11)文件名:SY3-03.C4输入圆锥的底面圆的半径和高,求圆锥的表面积和体积。 文件名:SY3-04.C 求平方根函数sqrt( ) 可用函数pow(r,2)表示,也可用r*r表示5求一个小于1000的正整数每位上的数字之和。 文件名:SY3-05.C6求一元二次方程的根。(教材P87例4.12) 文件名:SY3-06.C实验四 选择结构程序设计一、实验目的1熟悉关系表达式和逻
11、辑表达式的使用。2掌握break 和continue语句的使用,以及它们之间的区别。3熟悉掌握if语句和switch语句的应用。二、实验内容1从键盘输入3个整数,求最大的数。(P111 习题5.4) 文件名:SY4-01.C2有一函数 (P111 习题5.5) 文件名:SY4-02.C编写程序:输入x,输出y值。3输入百分制成绩,要求输出对应的等级AE。90分以上为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 (P111 习题5.6) 文件名:SY4-03.C4编写程序:输入月收入,输出应交个人所得税金额。 文件名:SY4-04.C个人所得税税率级数应纳税所得额(
12、月)税率速算扣除数1不超过1500元部分3%02超过1500元至4500元部分10%1053超过4500至9000元部分20%5554超过9000至35000元部分25%10055超过35000至55000元部分30%27556超过55000至80000元部分35%55057超过80000元的部分45%13505超额累进应纳税款 = 纳税所得额按全额累进所用税率速算扣除数个人所得税起征点为3500元。五险一金(养老保险、医疗保险、失业保险、工伤保险、生育保险、住房公积金)不交税,本题不考虑五险一金。例如:某人月收入为6000元,则3500元不用交税,2500元要交税。2500元中的1500元交
13、税3%即45元,1000元交税10%即100元,此人需交个人所得税145元。用速算法:(6500-3500)*10%-105=145元。实验五 循环结构程序设计一、实验目的1掌握三种循环语句:while语句 、do while语句、for语句。2学会非顺序程序的编写,并结合程序掌握一些简单的算法。3会使用循环嵌套进行编程。二、实验内容1求1+2+3+100。 (教材P114 例题6.2、6.3、6.4)要求分别用以下三种循环实现: while语句、do while语句、for语句;文件名分别为:SY5-01F1.C、SY5-01F2.C、SY5-01F3.C。2求100之内的素数。 (P127
14、 例题6.9) 文件名:SY5-02.C3输入两个正整数,求其最大公约数和最小公倍数。(P129 习题6.1) 文件名:SY5-03.C4求1!+2!+3!+ +20! (P129 习题6.4) 文件名:SY5-04.C5求1-100之间能同时被3和5整除的数。 文件名:SY5-05.C6输出所有的“水仙花数”。“水仙花数”是指一个3位数,其各位数字立方和等于该数本身。例如,153是一个水仙花数,因为153=13+53+33。7编写程序输出1000之内的所有“完数”。(P129 习题6.7) 文件名:SY5-07.C注:一个数如果恰好等于它的因子之和,这个数就称为“完数”。例如,6的因子为1、
15、2、3,而6=1+2+3,因此6是“完数”。8输出“九九乘法表”。 文件名:SY5-08.C9输出以下图形 (教材P130 习题6.14) 文件名:SY5-09.C10.已知,求的近似值。 文件名:SY5-10.C实验六 数组一、实验目的1掌握一维数组和二维数组的定义、赋值和输入输出的方法;2掌握字符数组和字符串函数的使用;3掌握排序、求最大值(最小值)、求平均值(和)等基本算法。二、实验内容1从键盘输入10个整数,求最大数。 2从键盘输入10个整数,按从大到小顺序输出。3编写程序,完成以下功能 (1)先从键盘上输入一个 3行3列矩阵的各个元素的值, (2)输出主对角线元素之和,(3)实现矩阵
16、的转置(即行列互换) 。4输入N*N矩阵的N及各元素,找出最大元素,并指出该最大元素位于矩阵的第几行,第几列。5输入一行字符,求字符串的长度6输入一行字符,统计出其中英文大写字母、小写字母、数字、空格以及其它字符的个数。7输入一行字符,反向显示。8编写程序,将两个字符串连接起来。9输出以下的杨辉三角形。 P153 7.6实验七 函数一、实验目的1掌握函数的定义、调用、参数传递;2掌握函数嵌套调用和递归调用的方法;3掌握全局变量和局部变量、动态变量、静态变量的概念和使用方法;二、实验内容1求2个数中较大者。(教材P5例1.3)2编写求圆周长、圆面积、球体积的程序。要求在主程序中输入半径、输出圆周
17、长、圆面积、球体积,用函数分别实现求圆周长、圆面积、球体积。3编写函数fun将两个两位数的正整数a、b合并形成一个整数放在c中。合并的方式是:将a数的十位和个位数依次放在c数的千位和十位上, b数的十位和个位数依次放在c数的个位和百位上。 例如,当a45,b=12。调用该函数后,c=4251。要求:在主函数中输入a、b,输出c。4用递归方法求n!。 教材P173例8.85文本菜单 圆周长、圆面积、球体积计算1计算圆周长 2计算圆面积3计算球体积 4退出(1)用文本菜单方式循环实现,在键盘上通过1、2、3、4选择对应功能。(2)主程序显示文本菜单、进行功能选择、调用子函数。(3)计算圆周长、圆面
18、积、球体积分别用三个子函数实现。#include#include#include#define PI 3.1415926float zc();float mj();float tj();main() char c; while(1) system(cls); /清屏 printf(*n); printf( 1. 计算园周长n); printf( 2. 计算圆面积n); printf( 3. 计算球体积n); printf( 4. 退出系统n); printf(*n); printf(请选择:); scanf(%c,&c); switch(c) case 1:zc();getch();break
19、; case 2:mj();getch();break; case 3:tj();getch();break; case 4:exit(0);break; float zc() float r,qzc; printf(Input r: ); scanf(%f,&r); qzc=2*PI*r; printf(%f,qzc);float mj() float r,qmj; printf(Input r: ); scanf(%f,&r); qmj=PI*r*r; printf(%f,qmj);float tj() float r,qtj; printf(Input r: ); scanf(%f,&r
20、); qtj=4.0/3.0*PI*r*r*r; printf(%f,qtj);实验八 指针一、实验目的1通过实验加深理解指针概念,掌握指针变量的定义与应用;2学会使用数组的指针和指向数组的指针变量;3学会使用字符串指针和指向字符串的指针变量;4了解指向指针的指针的概念及其使用方法。二、实验内容1运行下列程序#includemain() int a=100,*p1; float b=12.56,*p2; char c=A,*p3; char s=ABCDEF,*p4; p1=&a; p2=&b; p3=&c; p4=&s0; /或 p4=s; printf(%d %dn,a,*p1); pri
21、ntf(%f %fn,b,*p2); printf(%c %cn,c,*p3); printf(%c %cn,*p4,*(p4+2);#includemain() int a5=1,2,3,4,5; int *p; p=&a0; /或p=a; printf(%d %dn,*p,*(p+2); printf(%d %d %dn,a0,a2,*(a+2);2输入3个整数,按由小到大的顺序输出。 (教材P278 习题10.1)3输入3个字符串,按由小到大的顺序输出。 (教材P278 习题10.2)4有一个3*4的矩阵,编写一程序利用指针变量实现矩阵的转置。(教材P279 习题10.9)5写一函数,求
22、一个字符串的长度。 (教材P279 习题10.6)6输入一行文字,统计大写字母、小写字母、空格、数字字符及其他字符的个数。 (教材P279 习题10.8)7有n个整数,使其右循环移m个位置,写函数实现此功能,n、m在main函数中输入,并输出循环移位之后的n个数。 (教材P278 习题10.4)实验九 结构体和共用体一、实验目的1掌握结构体类型变量和结构体类型变量数组的定义和使用;2掌握共用体的概念与使用。二、实验内容1结构变量 对成员取字符型name,整数型age和salary,结构名为shain的结构和结构变量进行说明之后,将lixia赋值给name,20赋值给age,2580赋值给sal
23、ary并进行显示。2多结构变量 将下表数据赋值给结构变量并进行显示。姓名年龄工资lixia202580wangpin354500sunjun2838003结构数组变量 将上题表格中的数据赋值给结构数组并进行显示。4结构指针变量 将第3题表格中的数据赋值给结构数组,并用指向结构体数组的指针来进行显示。5.下表为学生成绩表,编写程序从键盘输入5个学生的数据记录,然后输出这些记录。学号(num)姓名(name)成绩1(score1)成绩2(score2)成绩3(score3)101Li907989102Ma979068103Wang958892104Sun678956105Xue8765696对上题
24、中的学生成绩表,从键盘输入5个学生的数据,计算每个学生的平均成绩,要求输出学生信息(学号、姓名、3门课程成绩、平均分),以及平均分最高的学生数据。实验十 文件一、实验目的1掌握文件的打开和关闭方法;2了解文件的基本处理函数。二、实验内容1从磁盘文件顺序读入字符并在屏幕上显示出来。 教材P3352从键盘输入一些字符,逐个把它们送到磁盘上去,直到输入一个“#”为止。35个学生的学习成绩表见实验九第5题,从键盘上输入这些数据,计算平均成绩,将原有数据及计算出的平均成绩存放在磁盘文件“stud”中。4将上题“stud”文件中的学生数据,按平均分(降序)排序处理,将已排序的学生数据存入一个新文件“stu
25、dsort”中。实验十一 位运算一、实验目的1掌握按位运算的概念和方法,学会使用位运算符;2学会通过位运算实现对某些位的操作。二、实验内容1.求数5和12的AND、OR、XOR、NOT的值。2逻辑运算:a取12、b取18、c为0,编写求a&b,a&c,a|b,a|c,!a,!b的程序。3编写求将数12左移3位,将数5右移1位的值的程序。实验上交材料要求1实验3实验7实验的源程序(只要源程序,其余文件删除),文件名用指定的文件名。以自己的学号和姓名为目录,例如:2018314101欧阳海,下面不要有子目录。2程序设计语言C学习心得:C语言课程的内容、你觉得学习中比较困难的地方、实验中遇到的问题及
26、解决方法、学习的心得体会(比如:学得好或不好的原因)、对今后教学的建议等。3上交时间:17周星期一之前,收齐后以班级为单位发到 实验资料电子版在邮箱: 密码:computer附录:一、 上机操作步骤1.工作目录、文件名2.编辑、保存文件3.编译、调试改错4.连接、运行二、 C程序结构三、 常见错误1.程序中的符号、界限符等为半角下字符,而非全角下字符2.变量要先定义再使用3.语句以分号;结尾4.等号(=)与赋值符号(=)的区别5.注意大小写6.函数名错误7.数据类型、格式说明符要一致8.复合语句用 9.括号要配对10.if else的配对11.scanf、printfPrintf函数可输出字符
27、串,也可输出变量的值。格式为:输出字符串:Printf(“This is a C program.n”);输出字符串及变量:Printf(“sum is %dn”,sum);Scanf函数可将键盘输入的值赋值给变量键盘输入一个整数赋值给变量a:scanf(“%d”,&a); 格式符%d加引号,变量前要使用&键盘输入两个整数赋值给变量a和b:scanf(“%d,%d”,&a,&b); 或scanf(“%d%d”,&a,&b); 注意:由键盘输入多个数值时格式(逗号、空格、回车)要与scanf中的一致。不要用:scanf(“a=%d”,&a); 改为:printf(“a=”); scanf(“%d”,&a);不要用:scanf(“%dn”,&a);四、编程风格注释、空行、空格、缩进、对齐