类型高级语言学习知识程序设计(C语言学习知识)实验指导书.doc

收藏

编号:2653423    类型:共享资源    大小:273.02KB    格式:DOC    上传时间:2020-04-20
  
12
金币
分享到微信 分享到微博 分享到QQ空间
关 键 词:
高级 高档 语言 学习 知识 程序设计 实验 试验 指导书
资源描述:
\\ 高级语言(C语言)程序设计实验指导书 第一章 前言 一、C语言实验的目的 学习《C程序设计》课程应当熟练地掌握程序设计的全过程,即独立编写源程序、独立上机调试、独立运行程序和分析结果,不能满足于能看懂书上的程序。上机实验的目的,绝不仅仅是为了验证所编写的程序是否正确,而是为了: 1.加深对讲授内容的理解,尤其是一些语法规定。通过实验来掌握语法规则是行之有效的方法。 2.熟悉所用的操作系统和相应的上机环境。 3.学会上机调试程序,根据出错信息掌握修改程序的方法。 4.通过调试完善程序。 二、C语言实验前的准备工作 1.了解所用的上机环境(包括C编译系统)的性能和使用方法。 2.复习和掌握与本实验有关的教学内容。 3.准备好上机所需的程序,不要完全复制或抄写别人的程序去上机。 4.对程序中出现的问题应事先估计,对程序中自己有疑问的地方应先作上记号,以便上机时注意。 5.准备好调试程序和运行程序所需的数据。 三、C语言实验的步骤 上机实验原则上应一人一组,独立实验(如果程序太大,也可以2—3人一组)。上机过程中出现的问题,除了是系统的问题以外,不要轻易举手问老师。尤其对“出错信息”,应善于分析判断,找出出错的行,然后检查该行或其上一行。上机实验一般应包括以下几个步骤: 1.双击桌面Visual C++快捷方式进入Visual C++,或通过执行“开始=>程序=> Microsoft Visual Studio 6.0=> Microsoft Visual C++6.0”。 2.单击“文件”菜单的“新建”命令。 3.在打开的“新建”对话框中选择“文件”标签。 4.选择C++ Source File,选择文件保存位置,然后在文件输入栏中输入文件名。如图所示: 5.输入源程序。 6.编译程序:按“Ctrl+F7”或通过“编译”菜单中的“编译”命令,或使用工具栏中的相应工具进行编译                 编译   连接  运行 若程序有错则找到出错行修改程序。 7.连接:若程序没有语法错误,则可按功能键F7或执行“编译”菜单中的“构件”命令或通过工具栏中的相关工具(编译工具右边工具),进行连接生成可执行文件。 8.运行程序:按组合键“Ctrl+F5”,或通过“编译”菜单中的执行命令,或通过工具栏中的“!”工具运行程序。 四、写好C语言实验报告 实验报告应包括以下内容: 1.实验目的。 2.实验内容。 3.程序清单。 4.运行结果。 5.对运行结果的分析,以及本次调试程序所取得的经验。 五、C语言实验任务与时间安排  实验序号 实验内容 拟实验时间 实验 形式 1 Visual C++ 6.0集成环境的使用 2 验证性 2 基本数据类型与输入输出 2 验证性 3 顺序结构程序设计 2 验证性 4 选择结构程序设计 2 验证性 5 循环结构程序设计 2 验证性 6 数组 5 设计性 7 函数 5 设计性 9 指针 4 设计性 10 结构体 4 设计性 12 文件 2 验证性   第二章 实验 实验一 Visual C++ 6.0集成环境的使用 1.1 实验目的 1.掌握VC 6.0集成开发环境的使用方法。 2.了解C语言程序从编辑、编译、连接到运行的全过程 3.掌握C语言程序的结构特征与书写规则 1.2 实验要求 1.实验学时:2学时。 2.使用Visual C++6.0环境编写和调试程序。 3.所有上机题应通过调试,并获得正确的结果。 4.对程序中重要的内容作必要的注释。 1.3 实验准备 1.阅读Visual C++ 6.0集成环境的相关材料。 2.复习C语言程序基本结构与书写规则的有关内容。 1.4 实验内容 1. 上机调试 (1)请输入以下程序,练习在Visual C++6.0环境下程序的编辑、编译、连接和运行。 #include void main() { printf("这是我的第一个程序\n"); } (2)请说明以下程序的功能,然后上机验证。 #include void main() { int a,b,c; printf("Please input a,b:"); scanf("%d%d",&a,&b); /*注意,输入数据时,数据间用空格分隔*/ c=a+b; printf("%d+%d=%d\n",a,b,c); } (3)请说明以下程序的功能,然后上机验证。 #include float 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("%f\n",a); } 2.实验思考 (1)输入并运行下面的程序。 #include void main() { char c,h; int i,j; c=a; h=b; i=97; j=98; printf("%c%c%c%c\n",c,h,i,j); printf("%d%d%d%d\n",c,h,i,j); } (2)运行下列程序并分析出现的信息提示。 #include void main() { int i=23,s; s=i+j; printf("s=%d\n",s); } 实验二 基本数据类型与输入输出 2.1 实验目的 1.掌握C语言基本数据类型以及常量的表示方法、变量的定义与使用规则。 2.掌握C语言的算束运算、逗号运算的运算规则与表达式的书写方法。 3.掌握各种输入输出函数的使用方法。 2.2 实验要求 1.实验学时:2学时。 2.使用Visual C++6.0环境编写和调试程序。 3.所有上机题应通过调试,并获得正确的结果。 4.对程序中重要的内容作必要的注释。 2.3 实验准备 1.复习数据类型和运算符的有关概念。 2.复习各种类型常量的表示方法以及变量的概念与命名规则。 3.复习输入输出函数各种格式符的含义与使用规则。 2.4 实验内容 1.上机调试(需作出必要的注释!) (1) 请说明以下程序的功能,然后上机验证。 #include void main() { printf("\t*\n"); printf("\t\b***\n"); printf("\t\b\b*****\n"); } (2) 请说明以下程序的功能,然后上机验证。 # include void mian() { int x=010,y=10,z=0x10; char c1=M,c2=\x4d,c3=\115,c4=77 ,c; printf("x=%o,y=%d,z=%x\n",x,y,z); printf("x=%d,y=%d,z=%d\n",x,y,z); printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4); printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4); c=c1+32; print("c=%c,c=%d\n",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("%f\n",x); } (4)当输入是8.5,2.5,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=%d\n",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,____________; printf("Enter a,b,c: "); scanf("%d%d",_________); ______________; printf("%d,%d,%d",a,b,c); } (2) 以下程序输入一个大写字母,要求输出对应的小写字母。 #include void main() { char upperc,lowerc; upperc=_____________; lowerc=_____________; printf("小写字母");putchar(upperc); printf("大写字母");putchar(lowerc);putchar(/n); } 3..思考题 (1)分析程序,写出运行结果,并上机验证 #include void main() { char c1=a,c2=b,c3=c,c4=\101,c5=101; printf("a%c b%c\tc%c\tabc\n",c1,c2,c3); printf("\t\b%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 void 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=%.2f\ns(m20\nv=%.2f(m3)\n",c0,s0,s,v); } 实验三 顺序结构程序设计 3.1 实验目的 1.熟练掌握格式输入与格式输出函数与各种格式符的使用; 2.掌握各类数据输入/输出的实现方法; 3.学习完成简单的顺序结构程序设计。 3.2 实验要求 1.实验学时:2学时。 2.使用Visual C++6.0环境编写和调试程序。 3.所有上机题应通过调试,并获得正确的结果。 4.对程序中重要的内容作必要的注释。 3.3 实验准备 1.复习格式输入、输出语句的使用。 2.复习各类输入、输出语句。 3.复习简单的顺序程序设计的基本方法。 3.4 实验内容 1.上机调试(需作出必要的注释!) (1)输入三角形的三边长,求三角形面积。为简单起见,设输入的三边长a、b、c能构成三角形。从数学知识已知求三角形面积的公式为area=s(s-a)(s-b)(s-c), 其中s=(a+b+c)/2   #include <math.h> 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("a=%7.2f, b=%7.2f, c =%7.2f, s =%7.2f\n",a,b,c,s); printf("area=%7.2f\n",area); } (2)求ax2+bx+c=0方程的根。a,b,c由键盘输入,设b2-4ac>0。众所周知,一元二次方程式的根为x1=-b+b2-4ac2ax2=-b-b2-4ac2a,可以将上面的分式分为两项:p=-b2a ,q=b2-4ac2a,x1=p+q, x2=p-q   #include <math.h> main(); { float a,b,c,disc,x1,x2,p,q;   scanf("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("\n\nx1=%5.2f\nx2=%5.2f\n",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)以下说法正确的是_______。 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+(int)(b/3*(int)(a+c)/2)%4的值为_____。 (5)输出长整型数据使用格式符_______,输出无符号的整数用格式符_____ ,以指数形式输出单精实数用格式符______。 (6)下面程序运行时输入:10 11<回车>,输出__________。 #include void main() {int a,b; scanf("%o%x",&a,&b); printf("a=%d,b=%d\n",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函数调用中,可以在格式字符和%之间加一星号*,它的作用是________。 (10)a++、++a、a=a+1都能实现使变量a的值增1,与之等效的表达式还有__________ 3.编程题 下面程序功能:键盘输入一个三位数,输出逆序后的数。例如,输入236,输出632。程序中有多处错误,改正后在机器上调试通过。 #include void 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=%d\n",y); 4.思考题 如果输入的数据可以是任意大小的数,并不限制一定是一个三位数,怎样才能将该数逆序并输出? 实验四 选择结构程序设计 4.1 实验目的 1.掌握C语言的关系表达式和逻辑表达式的运算规则与书写方法。 2.掌握各种类型的if语句和switch语句的使用方法。 3.熟悉选择结构程序设计的方法。 4.2 实验要求 1.实验学时:2学时。 2.使用Visual C++6.0环境编写和调试程序。 3.所有上机题应通过调试,并获得正确的结果。 4.对程序中重要的内容作必要的注释。 4.3 实验准备 1.复习关系运算符与关系表达式、逻辑运算符与逻辑表达式的相关内容。 2.复习if语句和switch语句的格式与执行过程。 4.4 实验内容 1.上机调试(需作出必要的注释!) (1)先静态分析一下程序的运行结果,然后上机验证。 #include void main() { int a=3,b=4,c=5,x,yz; x=c,b,a; y=!a+by则将x与y的值进行交换,然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。) #include void main() { int x,y,z,t; scanf("%d%d%d",&x,&y,&z); if (x>y) {t=x;x=y;y=t;} /*交换x,y的值*/ if(x>z) {t=z;z=x;x=t;}/*交换x,z的值,此时则x获最小值*/ if(y>z) {t=y;y=z;z=t;}/*交换z,y的值*/ printf("small to big: %d %d %d\n",x,y,z); } 2.编程题 (1)已知某公司员工的保底薪水为500,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:元): profit≤1000 没有提成 1000< profit≤2000 提成10% 2000< profit≤5000 提成15% 5000< profit≤10000 提成20% 10000< profit 提成25% 请打印员工实际薪水。 #include void main() { int grade,profit; float salary=500; printf("Input profit:"); scanf("%d",&profit); grade=(profit-1)/1000; switch(grade) {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=%.0f\n",salary); } 请按一下步骤实习思考:(调试并注释) ①分析程序中的switch结构。重点学习case标号的设计,本例将利润与提成的关系转换成整数的方法是,由于提成的变化点都是1000的整数被(1000、2000、5000、……),同时为了解决相邻两个区间重叠问题,因此采用将利润porfit先减1(最小增量),然后再整除1000. ②输入并运行程序,用不同的利润去检验运行结果,如果结果不正确,请找出原因,改正后重新运行,直到结果正确为止。 ③ 若没有break; 结果如何? 3.思考题 已知银行整存整取存款不同期限的月息利率分别为: 0.63% 期限1年 0.66% 期限2年 月息利率= 0.69% 期限3年 0.75% 期限5年 0.84% 期限8年 要求输入存钱的本金和期限,求到期时能从银行得到的利息与本金的合计。 实验五 循环结构程序设计 5.1 实验目的 1.掌握语句、语句和语句实现循环的使用方法。 2.掌握循环语句实现一些常用的算法。 3.熟悉程序的跟踪调试技术。 5.2 实验要求 1.实验学时:2学时。 2.使用Visual C++6.0环境编写和调试程序。 3.所有上机题应通过调试,并获得正确的结果。 4.对程序中重要的内容作必要的注释。 5.可以用断点调试法完成部分上机调试题,并观察运行过程。 5.3 实验准备 1.复习while语句、do…while语句、fo语句、continue语句和beeak语句的格式与执行过程。 2.复习一些常用的算法,并总结它们的设计方法和思路。 3.阅读“程序调试与测试”的相关内容。 5.4 实验内容 1.上机调试(需作出必要的注释!) (1)求n! 提示:(1)注意结果的取值范围! (2)3中循环方式由你选择!也可以用两种方法做。 (3)程序的简单验证:正确结果应是: 3!=6。5!=120。8!=40320 注可用单步跟踪(F10)观测循环语句的执行过程。 (4)提示案例:(例3.7) 用while语句来实现1*2*3*…*10的乘积。 #include void main() { int i=1,mul=1; while (i<=10) /*用while 语句求1*2*3*…*10的乘积*/ { mul=mul*i; i++; } printf("\n%ld\n", mul); } (2)求5个数的和及平均值的程序代码如下: #include void main() { int a; float b,sum; for(a=1,sum=0.0;a<6;a++) { printf(“please input NO:%d\n”,a); scanf("%f",&b); /*从键盘上输入5个数*/ sum+=b; /*求输入的5个数的加和*/ } printf("average=%f\n",sum/5);/*求5个数的平均值,并将其输出*/ } (3)从键盘输入10个数,求出最大值及最小值。 #include void main() { int a,max,min,i; //输入整数 b=0; for(i=0;i<10;i++) { printf("INPUT"); scanf("%d",&a); if(a>max) max=a; if(a void main() { int i,t,a[10]={0,1,2,3,4,5,6,7,8,9}; t=a[9]; for(i=9;i>0;i--) a[i]=a[i-1]; a[0]=t; praint("\n"); for(i=0;i<10;i++)printf("%d",a[i]); } (3)数组a存放10位学生成绩,请说明以下程序的功能,对加粗部分进行注释,然后上机验证。 #include void main() { int i; float aver,a[10]={78,89,65,72,68,60,80,75,83,70}; sum=a[0]; max=min=a[0]; for(i=1;i<10;i++) { if(a[i]>max) max=a[i]; else if (a[imax) { max=a[i][j]; x=i;y=j; } printf("这个方阵中最大的数是%d\n",max); } sum=0; for(n=0;n<=c-1;n++) sum=sum+a[n][n]; printf("这个方阵主对角线的和为%d\n",sum); } (6)请说明以下程序的功能,对加粗部分进行注释,然后上机验证。 #include"stdio.h" void main() { char a[100]; int i; gets(a); for(i=0;a[i]!=’\0’;i++) { if(a[i]>=’A’&&a[i]<=’Z’)a[i]+=32; else if(a[i]>=’a’&&a[i]<=’z’)a[i]-=32; } puts(a); } (7)请说明以下程序的功能,对加粗部分进行注释,然后上机验证。 #include"stdio.h" void main() { char a[]=”ab12cd34ef”; int i,j; for(i=j=0;a[i];i++) if(a[i]>=’a’&&a[i]<=’z’)a[j++]=a[i]; a[j]=’\0’; printf(“%s\n”,a); } 2.填空题 (1)以下程序的功能是:若已定义:int a[11],i;:在第一个循环中给前10个数组元素依次赋1、2、3、4、5、6、7、8、9、10;在第二个循环中使a数组前10个元素中的值对称折叠,变成1、2、3、4、5、5、4、3、2、1,然后输出。请在程序的下划线处填空。 #include"stdio.h" main() { int a[10],i; for(i=1;i<=10;i++) =i; for(i=1;i<=10;i++) printf(" %d,", ); for(i=1;i<=5;i++) =a[i]; for(i=1;i<=10;i++) printf(" %d,", ); } (2)以下程序的功能是:求出数组x中各相邻两个元素的和依次存放到a数组中,然后输出。请在程序的下划线处填空。 main() { int x[10],a[9],i; for(i=0;i<10;i++) scanf("%d",&x[i]); for( i=1; i<10;i++) a[i-1]=x[i]+______; for(i=0;i<9;i++ ) printf("%d",a[i] ) ; printf("\n" ); } (3)以下程序的功能是进行方阵的转置。在程序的下划线处填空。 #include void main() { int i,j,t,a[4][4]; printf("\n input a:"); for(i=0;i<4;i++) for(j=0;j<4;j++)scanf("%d",&a[i][j]); for(i=0;i<4;i++) for(j=0;j<4;j++) {t=a[i][j]; ; a[j][i]=t;} for(i=0;i<4;i++) { printf("\n"); for(j=0;j<4;j++) printf("%5d",a[i][j]); } (4)若要按以下形式输出数组num右上半三角 1 2 3 4 6 7 8 11 12 16 请在程序的下划线处填空,满足以上要求。 main() { int num[4][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{
展开阅读全文
提示  得力文库 - 分享文档赚钱的网站所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:高级语言学习知识程序设计(C语言学习知识)实验指导书.doc
链接地址:https://www.deliwenku.com/p-2653423.html
关于得利文库 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

收起
展开