高级语言程序设计(C语言)实验指导书(修改版).doc

上传人:asd****56 文档编号:70334954 上传时间:2023-01-19 格式:DOC 页数:27 大小:668KB
返回 下载 相关 举报
高级语言程序设计(C语言)实验指导书(修改版).doc_第1页
第1页 / 共27页
高级语言程序设计(C语言)实验指导书(修改版).doc_第2页
第2页 / 共27页
点击查看更多>>
资源描述

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

1、湖 北 工 程 学 院C语言程序设计实验指导书2012年9月2目 录实验一 Visual C+ 6.0集成环境的使用1实验二 基本数据类型与输入输出5实验三 顺序结构程序设计6实验四 选择结构程序设计6实验五 循环结构程序设计7实验六 数组8实验七 函数10实验八 指针12实验九 结构体14实验十 文件16附录 常见错误分析和程序调试19I实验一 Visual C+ 6.0集成环境的使用一、实验目的1熟悉C程序设计编程环境 Visual C +,掌握运行一个C程序设计的基本步骤,包括编辑、编译、连接和运行。2掌握C语言程序设计的基本框架,能够编写简单的C程序。3了解程序调试的思想,能找出并改正

2、C程序中的语法错误。二、实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。三、实验准备1.阅读Visual C+ 6.0集成环境的相关材料。2.复习C语言程序基本结构与书写规则的有关内容。四、实验内容1. Visual C+ 6.0集成环境的使用(1)在磁盘上新建一个文件夹,用于存放C程序,文件夹的名字可以是学号,如 D:3050888。(2)编程示例,在屏幕上显示一个短句“Hello World!”。源程序# include void main( ) printf(Hello Wo

3、rld! n);运行结果Hello World!作为本书的第一个实验,在Visual C+编程环境下,以上述C语言源程序为例,介绍运行一个C程序的基本步骤,请读者按照以下步骤操作。(1)启动VC+ 执行“开始”“程序”“Microsoft Visual Studio 6.0” “Microsoft Visual C+ 6.0”,进入VC+编程环境(如图1.1所示)。图1.1 VC+窗口(2)新建文件执行“文件/File”“新建/New”,单击“文件/Files”选项卡(如图1.2所示),先在“文件/File name”栏中输入test,把C源(程序)文件命名为test.cpp,在“目录/Loc

4、ation”框中选择你已经建立的文件夹,如,D:3050888,然后选中“C+ Sourse Files”,单击“确定”按钮,在D:3050888下就新建了文件test.cpp,并显示编辑窗口和信息窗口(如图1.3所示)。图1.2 新建文件(3)编辑和保存在编辑窗口(如图1.3所示)中输入源程序,然后执行“文件/File”“保存/Save”或“文件/File”“另存为/Save As”,保存源文件。信息窗口编辑窗口图1.3 编辑源程序(4)编译执行“编译/Build”“编译/Compile”或Ctrl + F7(如图1.4所示),在“产生工作区”对话框中(如图1.5所示)选择“是/Y”,开始编

5、译,并在信息窗口显示编译信息(如图1.6所示)。图1.4 编译源程序图1.5 产生一个工作区图1.6 编译正确图1.6信息窗口中出现的“test.obj - 0 error(s), 0 warning(s)”,表示编译正确,没有发现(语法)错误和警告,并生成了目标文件test.obj。F 如果显示有错误error(s),指程序中存在致命的错误,必须要改正;如果显示有警告warning(s),虽然不影响生成目标文件,但通常也应该改正。(5)连接执行“编译/Build”“构件/Build”或F7,也可用“重建全部/Rebuild All”,开始连接,并在信息窗口显示连接信息(如图1.7所示)。图1

6、.7信息窗口中出现的“test.exe - 0 error(s), 0 warning(s)”表示连接成功,产生了可执行文件test.exe。图1.7 连接成功并产生运行文件(6)运行执行“编译/Build”“执行/Execute”或Ctrl + F5(如图1.8所示),自动弹出运行窗口(如图1.9所示),显示运行结果“Hello World!”,其中“Press any key to continue”提示读者按任何键退出DOS窗口,返回到VC+编辑窗口。图1.8 运行程序图1.9 运行窗口(7)关闭程序工作区执行“文件/File”“关闭工作区/Close Workspace”(如图1.10

7、所示),在出现的对话框(如图1.11所示)中选择“是/Y”,关闭工作区。图1.10 关闭程序工作区图1.11 关闭所有文档窗口(8)打开文件如果要再次打开C源文件,可以执行“文件/File”“打开/Open”,在文件夹D:3050888下选择文件test.cpp;或者在D:3050888文件夹下,直接双击文件test.cpp。(9)查看C源文件、目标文件和可执行文件的存放位置经过编辑、编译、连接和运行后,在文件夹D:3050888(如图1.12所示)和D:3050888Debug(如图1.13所示)中存放着有关的文件,其中源文件test.cpp在文件夹D:3050888中,目标文件test.o

8、bj和可执行文件test.exe都在文件夹D3050888Debug中。图1.12 文件夹“D:3050888” 图1.13 文件夹“D:3050888debug” 2. 上机调试(1)请输入以下程序,练习在Visual C+6.0环境下程序的编辑、编译、连接和运行。#includevoid main()printf(This is my first C program!n);(2)请说明以下程序的功能,然后上机验证。#includevoid main() int a,b,c; printf(Please input a,b:); scanf(%d%d,&a,&b); /*注意,输入数据时,数

9、据间用空格分隔*/ c=a+b; printf(%d+%d=%dn,a,b,c);(3)请说明以下程序的功能,然后上机验证。#includefloat ave(float y1,float y2,float y3) float y; y=(y1+y2+y3)/3; return y;void main() float x,y,z,a; scanf(%f,%f,%f,&x,&y,&z); /* 注意,输入数据时,数据间用逗号分隔 */ a=ave(x,y,z); printf(%fn,a);(4)运行下列程序并分析出现的信息提示,并修改调试正确。#includevoid main() int i

10、=23,s; s=i+j; printf(s=%dn,s);(5) 运行下列程序并分析出现的信息提示,并修改调试正确。* Welcome*源程序(有错误的程序)# include void mian( ) printf(*n); printf( Welcomen) printf(*n);3. 思考题(1)如何在屏幕上显示你自己的学号、姓名和班级? (2)如何在屏幕上显示下列图案? AA A A (3)编写一个程序,输入a,b,c三个整数,输出其中的最大值。五、实验报告要求(1)调试2(1)-2(5)的源程序,将运行结果、改正后的源程序,以及实验中遇到的问题和解决问题的方法,将程序中的错误和改正

11、后的内容”的格式,写在实验报告上。(2)编写思考题(1)-(3)的源程序,写在实验报告上。六、附加练习1、输入下列的程序,修改其中的错误(1)忘记定义变量 #include int main()x=3;y=6;printf(“%dn”,x+y);错误信息: 修改错误: (2)使用标识符没有区分大小写 #include int main()int A,B,C;a=2;b=3;c=a+b;printf(“%d+%d=%dn”,a,b,c);错误信息: 修改错误: (3)使用输入函数scanf时,忘记了使用变量的地址运算符#includevoid main() int a,b,c; printf(P

12、lease input a,b:); scanf(%d%d,a,b); /*注意,输入数据时,数据间用空格分隔*/ c=a+b; printf(%d+%d=%dn,a,b,c);错误信息: 修改错误: (4)语句后面遗漏的分号#includevoid main() int a,b,c printf(“Please input a,b:”); scanf(“%d%d”,a,b) /*注意,输入数据时,数据间用空格分隔*/ c=a+b; printf(%d+%d=%dn,a,b,c);错误信息: 修改错误: (5)不该加分号的地方加了分号#includevoid main() int a,b; p

13、rintf(Please input a,b:); scanf(“%d%d”, &a,&b); /*注意,输入数据时,数据间用空格分隔*/ if (ab); printf(“a is larger than bn”); else if (a=b) printf(“a is equal to bn”); else printf(“a is less than bn”);错误信息: 修改错误: 2、程序设计练习(要求提交源程序和运行结果)(1)输入三个数a,b,c,要求按从小到大的顺序输出。解题思路:if ab, 将a和b交换if ac, 将a和c交换if bc, 将b和c交换参考源代码:#inc

14、lude int main() float a,b,c,t; scanf(%f,%f,%f,&a,&b,&c); if(ab) t=a; a=b; b=t; / 实现a和b的互换 if(ac) t=a; a=c; c=t; / 实现a和c的互换 if(bc) t=b; b=c; c=t; / 实现b和c的互换 printf(%5.2f,%5.2f,%5.2fn,a,b,c); return 0; (2) 输入一个华氏温度,要求输出摄氏温度。计算公式为:要求有文字说明。参考源代码:include int main()float c,f;printf(请输入一个华氏温度:n);scanf(%f,&

15、f);c=(5.0/9.0)*(f-32); /注意5和9要用实型表示,否则5/9的值为0printf(摄氏温度为:%fn,c);return 0;输入: ;输出: (3) 设圆的半径r=2, 圆柱的高h=3。求园周长,圆面积、圆球表面积、圆球体积和圆柱的体积。要求:用scanf输入数据,输出计算结果,取小数点后面两位,输出时要求有说明。提示:带小数点的变量(浮点类型变量)定义为:float pi, h,r, l,s ,sq,vq,vz;圆周率定义:float pi=3.1415297;接受带小数点数据的输入格式为scanf(“%f%f”,%r,%h);参考源代码:int main()floa

16、t pi,h,r,l,s,sq,vq,vz;pi=3.1415926;printf(请输入一圆的半径r,圆柱的高h:n);scanf(%f,%f,&r,&h);l=2*pi*r; s=pi*r*r;sq=4*pi*r*r;vq=3.0/4.0*pi*r*r*r;vz=pi*r*r*h;printf(圆的周长为:%fn,l);printf(圆的面积为:%fn,s);printf(圆球的表面积为:%fn,sq);printf(圆球的体积为:%fn,vq);printf(圆柱的体积为:%fn,vz);return 0;输入: ;输出: (4) 输入三个数a,b,c, 求方程式的根。分别考虑:有两个不

17、相等的实根;有两个相等的实根。提示:使用#include 预编译指令;使用sqrt()函数计算平方根求判别式#include #include int main()float a,b,c,delta,x1,x2;printf(请输入三个数a,b,c:n);scanf(%f,%f,%f,&a,&b,&c);/计算判别式;delta=b*b-4*a*c;if (delta0)x1=(-b+sqrt(delta)/(2*a);x2=(-b-sqrt(delta)/(2*a);printf(方程有两个不相等的实数根:x1=%f,x2=%fn,x1,x2);else if (delta=0)printf

18、(方程有两个不相等的实数根:x1=x2=%fn,x1);else printf(方程没有实数根!n);return 0; 输入: ;输出: 3、自主练习(要求提交源程序和运行结果,学会调试和单步跟踪)(1) 编程实现在屏幕上显示如下三行文字 Hello,world! Wolcome to the C language world! Everyone has been waiting for.(2) 编写一个C程序,输入a、b、c三个数,输出其中最大者。试想,如果求四个数中的最大者,则程序该如何编写。(3) 输入三角形三边长a,b,c,求三角形面积s。提示:,其中#include “math.h

19、”main()float a,b,c,s,area;scanf(“%f,%f,%f”,&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c);printf(“area=%f”,area);实验二 基本数据类型与输入输出一、实验目的1.掌握C语言基本数据类型以及常量的表示方法、变量的定义与使用规则。2.掌握C语言的算束运算、逗号运算的运算规则与表达式的书写方法。3.掌握各种输入输出函数的使用方法。二、实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要

20、的内容作必要的注释。三、实验准备1.复习数据类型和运算符的有关概念。2.复习各种类型常量的表示方法以及变量的概念与命名规则。3.复习输入输出函数各种格式符的含义与使用规则。四、实验内容1.上机调试(需作出必要的注释!)(1) 请说明以下程序的功能,然后上机验证。#include void main() printf(t*n); printf(tb*n); printf(tb*n); (2) 请说明以下程序的功能,然后上机验证。# includevoid mian() int x=010,y=10,z=0x10; char c1=M,c2=x4d,c3=115,c4=77 ,c; printf(

21、x=%o,y=%d,z=%xn,x,y,z); printf(x=%d,y=%d,z=%dn,x,y,z); printf(c1=%c,c2=%c,c3=%c,c4=%cn,c1,c2,c3,c4);printf(c1=%d,c2=%d,c3=%d,c4=%dn,c1,c2,c3,c4);c=c1+32;print(c=%c,c=%dn,c,);(3) 请说明以下程序的功能,然后上机验证。#include void main() int m=18,n=13; float a=27.6,b=5.8,x,; x=m/2+n*a/b+1/4; printf(%fn,x);(4)当输入是8.5,2.5

22、,5,分析程序运行结果,并上机验证。#include void main() float x,y; Int z; scanf(%f,%f,%d,&x,&x,&z); y=x-z%2*(int)(x+17)%4/2; printf(x=%f,y=%f,z=%dn,x,y,z); 2.填空题(1) 以下程序输入3个整数值给a,b,c,程序把b中的值给a,把c中的值给b,把a中的值给c,交换后输出a,b,c的值。例如,输入a=10,b=20,c=30,交换后a=20,b=30,c=10。#include void main() int a,b,c,_temp_; printf(Enter a,b,c

23、: ); scanf(%d%d%d,_&a,&b,&c); _temp=a; a=b; b=c; a=temp; printf(%d,%d,%d,a,b,c);(2) 以下程序输入一个大写字母,要求输出对应的小写字母。void main()char upperc,lowerc;upperc=getchar();lowerc=upperc+32;printf(输入的大写字母是:);putchar(upperc);printf(n转换后的小写字母是:);putchar(lowerc);putchar(n);3.思考题(1)分析程序,写出运行结果,并上机验证#include void main()

24、char c1=a,c2=b,c3=c,c4=101,c5=101; printf(a%c b%ctc%ctabcn,c1,c2,c3); printf(tb%c%c.c4,c5); c4=65535; c5=-1.2345; printf (%d%d,c4,c5); (2) 分析程序,写出运行结果,并上机验证#include void main() int i=3,j=5,k,l,m=19,n=-56; k=+i; l=j+; m=i+; n-=-j; printf(%d,%d,%d,%d,%d,%d,n,ij,k,l,m,n)(3) 分析程序,写出运行结果,并上机验证#include vo

25、id main() float r,h,pi=3.1415926; float c0,s0,s,v; printf(input r,h(m):); scanf(%f,%f,&r,&h); c0=2*pi*r; s0=c0*h+2*s0; s=c0*h+2*s0; v=pi*r*r*h; printf(c0=%.2f(m)ns0=%.2fns(m20nv=%.2f(m3)n,c0,s0,s,v);实验三 顺序结构程序设计一、实验目的1.熟练掌握格式输入与格式输出函数与各种格式符的使用;2.掌握各类数据输入/输出的实现方法;3.学习完成简单的顺序结构程序设计。二、实验要求1.实验学时:2学时。2.

26、使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。三、实验准备1.复习格式输入、输出语句的使用。2.复习各类输入、输出语句。3.复习简单的顺序程序设计的基本方法。四、实验内容1.上机调试(需作出必要的注释!)(1)输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area=s(s-a)(s-b)(s-c), 其中s=(a+b+c)/2include main() float a,b,c,s,area; scanf(%f,%f,%f,&a,&b,&c)

27、; s=10/2(a+b+c); area=sqrt(s(s-a)(s-b)(s-c); printf(a=%7.2f, b=%7.2f, c =%7.2f, s =%7.2fn,a,b,c,s); printf(area=%72fn,area); (2)求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac0。众所周知,一元二次方程式的根为x1=-b+b2-4ac2ax2=-b-b2-4ac2a,可以将上面的分式分为两项:p=-b2a ,q=b2-4ac2a,x1=p+q, x2=p-qinclude main(); float a,b,c,disc,x1,x2,p,; sca

28、nf(a=%f,b=%f,c=%f,&a,&b,&c); disc=b*b-4*a*c; p=-b/(2*a);q=sqrt(disc)/(2*a); x1=p+q; x2=p-q; printf(nnx1=%5.2fnx2=%5.2fn,x1,x2); 2.填空题(1)已有如下定义和输入语句,若要求a,b,c1,c2的值分别为5、6、A和B,当从第一列开始输入数据时,正确的数据输入方式是 _ (表示回车)。int a,b;char c1,c2;scanf(%d%c%d%c,&a,&c1,&b,&c2);A) 5 A 6 B B) 5 A6B C) 5A6B D) 5A6 B(2)以下说法正确

29、的是_。A)输入项可以为一个实型常量,如scanf(“%f”,3.5);B)只有格式控制,没有输入项,也能正确输入,如scanf(“a=%d,b=%d”);C)当输入实型数据时,格式控制部分应规定小数点后的位数,如scanf(“%4.2f”,&f);D)当输入数据时,必须指明地址,如scanf(“%f”,&f);E)可以采用不同的格式符,实现对一个实型数据以八进制或十六进制形式输入/输出。F)整型数据不能使用%f或%lf格式符。(3)若a是int型变量,则表达式(a=5*6,a*3),a+8的值是 _ 。(4)若有定义:int b=7; float a=2.5,c=4.7; 则表达式 a+(i

30、nt)(b/3*(int)(a+c)/2)%4的值为_。 (5)输出长整型数据使用格式符_,输出无符号的整数用格式符_ ,以指数形式输出单精实数用格式符_。(6)下面程序运行时输入:10 11,输出_。#includevoid main()int a,b; scanf(%o%x,&a,&b); printf(a=%d,b=%dn,a,b); (7)下面程序段执行时,怎样输入才能让a=10,b=20 ?_ int a,b;scanf(a=%d,b=%d,&a,&b);(8)若a和b均为int变量,以下语句的功能是_。a+=b;b=a-b;a-=b;(9)在scanf函数调用中,可以在格式字符和%

31、之间加一星号*,它的作用是_。(10)a+、+a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有_3.编程题下面程序功能:键盘输入一个三位数,输出逆序后的数。例如,输入236,输出632。程序中有多处错误,改正后在机器上调试通过。#includevoid main()int x,int y; int a,b,c; a=x/100; b=x/10%10; c=x%10; printf(Please input a num:); scanf(%d,&x); y=100c+10b+a; printf(y=%dn,y);4.思考题如果输入的数据可以是任意大小的数,并不限制一定是一个三位数,怎

32、样才能将该数逆序并输出?实验四 选择结构程序设计一、实验目的1.掌握C语言的关系表达式和逻辑表达式的运算规则与书写方法。2.掌握各种类型的if语句和switch语句的使用方法。3.熟悉选择结构程序设计的方法。二、实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。三、实验准备1.复习关系运算符与关系表达式、逻辑运算符与逻辑表达式的相关内容。2.复习if语句和switch语句的格式与执行过程。四、实验内容1.上机调试(需作出必要的注释!)(1)先静态分析一下程序的运行结果,然后上机验证。

33、#include void main() int a=3,b=4,c=5,x,yz; x=c,b,a; y=!a+by则将x与y的值进行交换,然后再用x与z进行比较,如果xz则将x与z的值进行交换,这样能使x最小。)#include void main()int x,y,z,t;scanf(%d%d%d,&x,&y,&z);if (xy) t=x;x=y;y=t; /*交换x,y的值*/if(xz) t=z;z=x;x=t;/*交换x,z的值,此时则x获最小值*/if(yz) t=y;y=z;z=t;/*交换z,y的值*/printf(small to big: %d %d %dn,x,y,z

34、);2.编程题(1)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:元):profit1000 没有提成1000 profit2000 提成10%2000 profit5000 提成15%5000 profit10000 提成20%10000 profit 提成25%请打印员工实际薪水。#include void main() int grade,profit; float salary=500; printf(Input profit:); scanf(%d,&profit); grade=(profit-1)/1000; switch(g

35、rade) case 0: break; case 1: salary+=profit*0.1;break; case 2: case 3: case 4: salary+=profit*0.15;break; case 5: case 6: case 7: case 8: case 9: salary+=profit*0.2;break; default: salary+=profit*0.25; printf(salary=%.0fn,salary);请按下一步骤实习思考:(调试并注释)分析程序中的switch结构。重点学习case标号的设计,本例将利润与提成的关系转换成整数的方法是,由于

36、提成的变化点都是1000的整数被(1000、2000、5000、),同时为了解决相邻两个区间重叠问题,因此采用将利润porfit先减1(最小增量),然后再整除1000.输入并运行程序,用不同的利润去检验运行结果,如果结果不正确,请找出原因,改正后重新运行,直到结果正确为止。 若没有break; 结果如何?3.思考题已知银行整存整取存款不同期限的月息利率分别为: 0.63% 期限1年 0.66% 期限2年月息利率= 0.69% 期限3年 0.75% 期限5年0.84% 期限8年要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。实验五 循环结构程序设计一、实验目的1.掌握语句、语句

37、和语句实现循环的使用方法。2.掌握循环语句实现一些常用的算法。3.熟悉程序的跟踪调试技术。二、实验要求1.实验学时:2学时。2.使用Visual C+6.0环境编写和调试程序。3.所有上机题应通过调试,并获得正确的结果。4.对程序中重要的内容作必要的注释。5.可以用断点调试法完成部分上机调试题,并观察运行过程。三、实验准备1.复习while语句、dowhile语句、fo语句、continue语句和beeak语句的格式与执行过程。2.复习一些常用的算法,并总结它们的设计方法和思路。3.阅读“程序调试与测试”的相关内容。四、实验内容1.上机调试(需作出必要的注释!)(1)求n!提示:(1)注意结果的取值范围! (2)3中循环方式由你选择!也可以用两种方法做。

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

当前位置:首页 > 技术资料 > 其他杂项

本站为文档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