C语言程序设计上机实验指导目录实验一 c语言程序的开发环境 (1)实验二数据类型描述 (3)实验三顺序结构 (6)实验四选择结构 (9)实验五循环结构 (12)实验六函数与编译预处理 (16)实验七数组 (19)实验八指针 (23)实验九结构体数据类型与链表 (25)实验十共用体与枚举类型 (27)实验十一文件 (29)实验一 c语言程序的开发环境一、目的、要求1、使学生了解c语言不同于其他语言的特点。
2、掌握在c语言的开发环境中如何实现简单程序的编辑、运行,熟悉c程序的开发环境及上机步骤。
3、通过简单的c程序,熟悉c语言程序的结构特点,掌握其基本结构框架。
4、通过实践,掌握c源程序的书写格式。
二、预习内容1、熟悉Turbo c的集成开发环境,掌握启动、退出、编辑运行的操作。
2、了解基本命令及函数:include<stdio.h>,include<math.h>,main(),printf(),scanf()等。
三、上机内容1、输入下列程序,记录在Turbo c 下的操作方法。
#include <stdio.h>main(){printf(“I am a student!”);}环境的启动操作:程序的编译方法:快捷键是;菜单操作是程序的保存方法:快捷键是;菜单操作是程序的运行方法:快捷键是;菜单操作是运行结构的查看:快捷键是;菜单操作是环境的退出操作:快捷键是;菜单操作是2、预测结果并上机验证#include <stdio.h>main(){printf(“************\n”);printf(“I am a student!\n”);printf(“************\n”);}预测的结果是:上机验证的结果是:3、预测结果并上机验证#include<stdio.h>#include<math.h>main(){int a,b,sum;scanf(“%d,%d”,&a,&b);sum=a+abs(b);printf(“a and b is %d”,sum);}程序运行后输入:5,-5预测的结果是:上机验证的结果是:4、分析程序的功能,并上机验证#include<stdio.h>#include<math.h>main(){int a,b,sum;scanf(“%d,%d”,&a,&b);sum=abs(a+b);printf(“%d+%d = %d”,a,b,sum);}程序的功能是:上机验证的结果是:5、试编写程序实现下列输出** ** * ** * * *编写的程序为:实验二数据类型描述一、目的、要求1、了解c语言的数据类型的种类。
3、熟悉c语言的变量与常量的定义与使用;符号常量的使用及合法标识符的命名原则。
3、掌握数据类型的定义与使用。
4、掌握相关的算术运算符及相应表达式5、熟悉不同数据类型间的相互转换。
二、预习内容1、继续熟悉Turbo c的集成开发环境,掌握启动、退出、编辑运行的操作。
2、了解各种变量及常量的定义,熟悉标识符的正确含义。
3、各种运算符的结合规则及优先级三、上机内容1、预测结果并上机验证(1) main(){int a,b;a=b=3;printf(“a=%d,b=%d”,a,b);}预测的结果是:上机验证的结果是:若将以上程序进行改写,编辑如下:main(){int a,b;a=3;b=3.1;printf(“a=%d,b=%d”,a,b);}则程序运行的结果是:由此知,若赋值号左右数据类型不一致时,c语言将(2)现有程序如下:1 main()2 {3 int a=1,b=2;4 printf(“%d”,(a=a+b,b=b+a));5 }程序运行的结果是:若将以上程序第四行进行改写,编辑如下:printf(“%d”,a=a+b,b=b+a);则程序运行的结果是:对比以上两程序,结果不同的原因在于(3) 若有以下程序段:int c1=2,c2=4,c3;c3=1.0/c2*c1;则执行后,c3中的值是 ;若将程序段改为:int c1=1,c2=2,c3;c3=1/c2*c1;则执行后,c3中的值是分析c3所得结果,其中的关键在于2、填空题(1) main(){ int a=7, b=10;a=a+b; b=a-b; a=a-b;printf(“%d,%d\n”, a, b );}程序运行的功能是:(2) main(){ int a=0;a+=(a=8);printf("%d\n",a);}程序运行的结果是:(3) main(){int a=2,b=5;int m=3,n;float c=2.1,d=4.5;n=a/m+b*c-d/m;printf(“%d”,n);}程序运行的结果是:(4) main (){ int x=1;printf(“%d %d\n”,++x,x++);}运行该程序的输出结果是(5) main(){int x,y,z;x=y=1;z+=x+=y;x=z++;y=++x;z=x+++y;printf(“x=%d,y=%d,z=%d”,x,y,z);}运行该程序的输出结果是3、改错题#include <math.h>#define STA 30main(){int a,b=3;A=3*PI*SIN(b);STA=3*STA;printf(“%d\n”,2a);printf(“%d”,STA);}正确的程序应改为:实验三顺序结构一、目的、要求1、了解c语言的基本语句的概念。
2、了解数据的输入输出在c语言中的实现方法。
3、掌握数据的输入输出函数的使用;熟练掌握格式输入输出函数。
4、设计简单的顺序结构程序。
二、预习内容1、了解c语言的基本结构。
2、熟悉c语言输入输出函数的使用。
三、上机内容1、写出以下程序的运行结果(1) 以下程序的输出结果是。
main(){unsigned int a=65536; int b;printf(“%d\n”,b=a) ;}分析原因得知:(2) 若有以下程序main(){ char a;a='a'-'A'+‘B';printf("%c\n",a);}执行后输出结果是。
(3) main(){int a,b;a=3;b=3.1;printf(“a=%d”,a,b);}执行后的输出结果是:分析原因得知:2、填空题(1)若有程序main(){ int i,j;scanf("i=%d,j=%d",&i,&j);printf("i=%d,j=%d\n ",i,j);}要求给I赋5,给j赋10,则应该从键盘输入(2) 输入并运行以下程序:1 main( )2 {int a,b;3 float d,e;4 char c1,c2;5 double f,g;6 long m,n;7 unsigned int p,q;8 a=61;b=62;9 c1=’a’;c2=’b’;10 d=3.56;e=-6.87;11 f=3157.890121;g=0.123456789;12 m=50000;n=-60000;13 p=32768;q=40000;14printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%6.2f,e=%6.2f\n”, a,b,c1,c2,d,e);15 printf(“f=%15.6f,g=%15.2f\n m=%ld,n=%ld\n16 p=%u,q=%u\n”,f,g,m,n,p,q);}(a)程序的输出结果是:在以上基础上,做以下改动:(b)将程序第8—13行改为a=61;b=62;c1=a;c2=b;f=3157.890121;g=0.123456789;d=f;e=g;p=a=m=50000;q=b=n=-60000;运行程序,所得结果是。
(c)在(b)的基础上将printf语句改为:printf(“a=%d,b=%d\nc1=%c,c2=%c\nd=%15.6f,e=%15.6f\n”,a,b,c1,c2,d,e);printf(“f=%f,g=%f\n m=%d,n=%d\n p=%d,q=%d\n”,f,g,m,n,p,q);}运行程序,所得结果是。
(d)将p,q改用%o格式符输出。
运行程序,所得结果是。
(e)改用scanf函数输入数据而不用赋值语句,scanf函数如下:scanf(“%d,%d,%c,%c,%f,%f,%lf,%lf,%ld,%ld,%u,%u”,&a,&b,&c1,&c2,&d,&e,&f,&g,&m,&n,&p,&q);输入的数据如下:61,62,a,b,3.56,-6.87,3,157.890121,0.123456789,50000,-60000,37678,40000(说明:lf和ld格式符分别用于double型和long型数据)分析运行结果。
三、编程题编辑程序,输入学生的三个课程成绩(考虑数据类型)。
实验四选择结构一、目的、要求1、掌握关系、逻辑运算符及其优先次序以及关系表达式的使用。
2、重点掌握if语句的使用形式(了解各种形式的使用)。
3、熟练掌握if语句的嵌套(清楚if…….else的配对关系)。
4、掌握选择结构的程序设计。
5、熟练掌握多分支switch语句的格式、功能及其使用。
二、预习内容1、熟悉逻辑运算符、关系运算符的优先级,掌握表达式的书写。
2、熟悉各种分支语句。
3、掌握控制语句break的使用。
三、上机内容1、写出以下程序的运行结果(1)若有以下程序main(){int a=4,b=3,c=5,t=0;if(a<b)t=a;a=b;b=t;if(a<c)t=a;a=c;c=t;printf("%d %d %d\n",a,b,c);}执行后输出结果为。
(2) 若有以下程序main(){ int p,a=5;if(p=a!=0)printf("%d\n",p);elseprintf("%d\n",p+2);}执行后输出结果是。
(3) 以下程序输出的结果是。
main(){ int a=5,b=4,c=3,d;d=(a>b>c);printf("%d\n",d);}(4) 若从键盘输入58,则以下程序输出的结果是。
main(){ int a;scanf("%d",&a);if(a>50) printf("%d",a);if(a>40) printf("%d ",a);if(a>30) printf("%d ",a);}(5) 有如下程序main(){ int x=1,a=0,b=0;switch(x){case 0: b++;case 1: a++;case 2: a++;b++;}printf(“a=%d,b=%d\n ”,a,b);}该程序的输出结果是。