c程序设计实验教案.docx
- 文档编号:26397613
- 上传时间:2023-06-19
- 格式:DOCX
- 页数:53
- 大小:47.29KB
c程序设计实验教案.docx
《c程序设计实验教案.docx》由会员分享,可在线阅读,更多相关《c程序设计实验教案.docx(53页珍藏版)》请在冰豆网上搜索。
c程序设计实验教案
授课时间2007-3-22第1次课
授课章节
实验一数据类性、运算符和表达式
任课教师
及职称
李忠
副教授
实验器材
奔腾计算机
课时安排
2
使用教材和
主要参考书
C程序设计题解与上机指导(第三版).谭浩强编著
ProgrammingInANSIC(thirdedition),E.Balagurusami著
实验目的:
1.在计算机上如何编辑、编译、连接和运行一个C程序。
2.掌握C语言数据类型,熟悉如何定义一个整型、字符型和实型的变量,以及赋值的方法
3.掌握不同的类型数据之间赋值的规律。
4.学会使用C的有关算术运算符,以及包含这些运算符的表达式。
实验内容:
1.检查所用的计算机系统是否已安装了C编译系统并确定它所在的子目录。
2.建立用户自己的子目录
3.进入TC工作环境
4.熟悉TurboC集成环境
5.编辑并运行程序
题目1 写出以下程序运行的结果。
main( )
{
charc1=’a’,c2=’b’,c3=’c’,c4=’\101’,c5=’\116’;
printf("a%cb%c\tc%c\tabc\n",c1,c2,c3);
printf("\t\b%c%c",c4,c5);
}
题目2 写出程序的运行结果。
main( )
{
charc1,c2;
c1=97;
c2=98;
printf("%c%c\n",c1,c2);
printf("%d%d\n",c1,c2);
}
思考:
可否改成intc1,c2;?
题目3 写出程序运行结果。
main( )
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf("%d,%d,%d,%d",i,j,m,n);
}
思考:
m=++i;与m=i++;的相同之处与不同之处?
题目5 下列程序的输出是
main( )
{
inta=9;
a+=a-=a+a; /*包含复合的赋值运算符的赋值表达式*/
printf("%d\n",a);
}
思考:
赋值表达式a+=a-=a+a的求解步骤?
题目6 下列程序的输出是
main( )
{
inta=7,b=5;
printf("%d\n",b=b/a);
}
思考:
若将printf语句中%d变为%f,可否输出分式的值?
题目7 下列程序的输出是
main( )
{
inta=011;
printf("%d\n",++a);
}
题目8 若int类型数据占两个字节,则下列语句的输出为
main( )
{
intk=-1;
printf("%d,%u\n",k,k);
}
思考:
-1在内存中的存储形式?
复习思考题、作业题:
题目9 下列程序的运行结果是
#include
main( )
{
printf("%d",null);
}
运行情况:
因为变量null无定义,无法正确运行。
思考:
如将null改为NULL,则结果如何?
题目10 若k,g均为int型变量,则下列语句的输出为
main( )
{
intk,g;
k=017;
g=111;
printf("%d\t",++k);
printf("%x\n",g++);
}
下次课预习要点
实施情况及实验效果分析
学院审核意见
学院负责人签字
年月日
授课时间2007-4-5第2次课
授课章节
实验二简单的C程序设计
任课教师
及职称
李忠
副教授
实验器材
与手段
奔腾计算机
课时安排
2
使用教材和
主要参考书
C程序设计题解与上机指导(第三版).谭浩强编著
ProgrammingInANSIC(thirdedition),E.Balagurusami著
实验目的:
(1)掌握C语言中赋值语句的使用方法。
(2)掌握各种类型数据的输入输出的方法,能正确使用各种格式转换符。
重点:
各种类型数据的输入输出的方法。
难点:
能正确使用各种格式转换符。
实验内容:
题目1 若a=3,b=4,c=5,x=1.2,y=2.4,z=-3.6,u=51274,n=128765,c1=’a’,c2=’b’。
想得到以下的输出格式和结果,请写出程序(包括定义变量类型和设计输出)。
要求输出的结果如下:
a=V3VVb=V4VVc=V5
x=1.200000,y=2.400000,z=-3.600000
x+y=V3.60VVy+z=-1.20VVz+x=-2.40
u=V51274VVn=VVV128765
c1=’a’VorV97(ASCII)
c2=’b’VorV98(ASCII)
题目2 请写出下面程序的输出结果:
main( )
{
inta=5,b=7;
floatx=67.8564,y=-789.124;
charc=’A’;
longn=1234567;
unsignedu=65535;
printf("%d%d\n",a,b);
printf("%3d%3d\n",a,b);
printf("%f,%f\n",x,y);
printf("%-10f,%-10f\n",x,y);
printf("%8.2f,%8.2f,%.4f,%.4f,%3f,%3f\n",x,y,x,y,x,y);
printf("%e,%10.2e\n",x,y);
printf("%c,%d,%o,%x\n",c,c,c,c);
printf("%ld,%lo,%x\n",n,n,n);
printf("%u,%o,%x,%d\n",u,u,u,u);
printf("%s,%5.3s\n","COMPUTER","COMPUTER");
}
思考:
解释倒数第三个printf语句的输出结果。
题目3 用下面的scanf函数输入数据,使a=3,b=7,x=8.5,y=71.82,c1=’A’,c2=’a’。
问在键盘上如何输入?
main( )
{inta,b;
floatx,y;
charc1,c2;
scanf("a=%d b=%d",&a,&b);
scanf(" %f %e",&x,&y);
scanf(" %c %c",&c1,&c2);
printf("a=%d,b=%d,x=%f,y=%f,c1=%c,c2=%c\n",a,b,x,y,c1,c2);
}
题目4 设圆半径r=1.5,圆柱高h=3,求圆周长、圆面积、圆球表面积、圆球体积、圆柱体积。
用scanf输入数据,输出计算结果,输出时要求有文字说明,取小数点后2位数字。
请编程序。
main( )
{
floatpi,h,r,l,s,sq,vq,vz;
pi=3.1415926;
printf("inputr,h:
\n");
scanf("%f,%f",&r,&h);
l=2*pi*r;
s=r*r*pi;
sq=4*pi*r*r;
vq=4.0/3.0*pi*r*r*r;
vz=pi*r*r*h;
printf("l=%6.2f\n",l);
printf("s=%6.2f\n",s);
printf("sq=%6.2f\n",sq);
printf("vq=%6.2f\n",vq);
printf("vz=%6.2f\n",vz);
}
运行结果:
inputr,h:
1.5,3↙
1=9.42
s=7.07
sq=28.27
vq=14.14
vz=21.21
题目5 输入一个华氏温度,要求输出摄氏温度。
公式为c=
(F-32)。
输出要有文字说明,取2位小数。
main( )
{
floatc,f;
printf("inputf:
\n");
scanf("%f",&f); /*输入华氏温度f*/
c=(5.0/9.0)*(f-32); /*求摄氏温度c*/
printf("c=%5.2f\n",c);
}
运行结果:
inputf:
78↙
c=25.56
思考:
求c值的语句可否改成c=(5/9)*(f-32);为什么?
题目6 下列程序的运行结果为
main( )
{
intx=2,y,z;
x*=3+2;printf("%d\t",x);
x*=y=z=4;printf("%d\t",x);
x=y=1;
z=x++-1; /*此处等价于z=x-1;x=x+1;故z为0,x为2*/
printf("%d,%d\t",x,z);
z+=-x+++y; /*此处等价于z+=-(x++)+y*/
printf("%d,%d\t",x,z);
x=40;y=4;z=4;
x=y==z;printf("%d\t",x);
x=x==(y=z);printf("%d\n",x);
}
运行结果为:
10 40 2,0 3,-1 1 0
思考:
表达式i+++j如何理解?
题目7 下列程序的运行结果为
main( )
{
inti,j;
i=16;
j=(i++)+i;
printf("%d\t",j);
i=15;
printf("%d\t%d\t",++i,i);
i=20;
j=i--+i;
printf("%d\t",j);
i=13;
printf("%d\t%d\n",i++,i);
}
运行结果为:
321615401313
思考:
如函数参数求值顺序是自左向右,则结果又将如何?
题目8 下列程序的运行结果为
main( )
{
unsignedchara=’a’,b=’b’,c=’c’;
a=a-32;
b+=c-a;
c=c-32+b-a;
printf("a=%c,b=%c,c=%c\n",a,b,c);
}
题目9 下列程序的运行结果为
#include"stdio.h"
main( )
{
intx=2,y=4,z=40;
x*=3+2;
printf("%d\n",x);
x=y=z;
printf("%d\n",x);
}
思考:
赋值运算符的结合顺序?
复习思考题、作业题:
题1 下列程序的运行结果为
main( )
{
inta=5;
printf("\n%d,",(3+5,6+8));
a=(3*5,a+4);
printf("a=%d\n",a);
}
思考:
程序第5行如改为a=3*5,a+4;结果将如何?
题2 输入a字母时,下列程序运行结果为
#include
main( )
{
charch;
ch=getchar( );
(ch>=’a’&&ch<=’z’)?
putchar(ch+’A’-’a’):
putchar(ch);
}
题3 下列程序运行结果为
main( )
{
intx,y,z;
x=24;
y=024;
z=0x24;
printf("%d,%d,%d\n",x,y,z);
}
题4 执行下面的程序后,变量w,x,y,z的值分别为:
main( )
{
intw=5,x=4,y,z;
y=w++*w++*w++;
z=--x*--x*--x;
printf("%d%d%d%d",w,x,y,z);
}
题5 下列程序运行结果为
main( )
{
unsignedx1;
intb=-1;
x1=b;
printf("%u",x1);
}
下次课预习要点
实施情况及实验效果分析
学院审核意见
学院负责人签字
年月日
授课时间2007-4-19第3次课
授课章节
实验三 逻辑结构程序设计
任课教师
及职称
李忠
副教授
实验器材
与手段
奔腾计算机
课时安排
2
使用教材和
主要参考书
C程序设计题解与上机指导(第三版).谭浩强编著
ProgrammingInANSIC(thirdedition),E.Balagurusami著
实验目的:
(1)了解C语言表示逻辑量的方法(以0代表“假”,以非0代表“真”)。
(2)学会正确使用逻辑运算符和逻辑表达式。
(3)熟练掌握if语句和switch语句。
(4)结合程序掌握一些简单的算法。
(5)学习调试程序。
重点、难点:
调试程序
实验内容:
题目1 有3个整数a、b、c,由键盘输入,输出其中最大的数。
方法1:
main( )
{
inta,b,c;
printf("inputthreeinteger:
");
scanf("%d,%d,%d",&a,&b,&c);
if(a
if(b printf("max=%d\n",c); else /*a小于b且b大于c,则b最大*/ printf("max=%d\n",b); elseif(a printf("max=%d\n",c); else /*a大于b且a大于c,则a最大*/ printf("max=%d\n",a); } 方法2: main( ) { inta,b,c,temp,max; printf("inputthreeinteger: "); scanf("%d,%d,%d",&a,&b,&c); temp=(a>b)? a: b; /*temp为a、b中较大值*/ max=(temp>c)? temp: c; /*在temp和c中比较出最大值*/ printf("max=%d\n",max); } 运行结果: inputthreeinteger: 12,34,9↙ max=34 题目2 有一函数: y= ,写一程序,输入x,输出y值。 main( ) { intx,y; printf("inputx: "); scanf("%d",&x); if(x<1) /*当x<1时,求对应y值*/ { y=x; printf("x=%3d,y=x=%d\n",x,y); } elseif(x<10) /*当1≤x<10时,求对应y值*/ { y=2*x-1; printf("x=%3d,y=2*x-1=%d\n",x,y); } else /*当x≥10时,求对应y值*/ { y=3*x-11; printf("x=%3d,y=3*x-11=%d\n",x,y); } } 运行结果: inputx: 20↙ x=20,y=3*x-11=49 题目3 给出一百分制成绩,要求输出成绩等级‘A’、‘B’、‘C’、‘D’、‘E’。 90分以上为‘A’,80~89分为‘B’,70~79分为‘C’,60~69分为‘D’,60分以下为‘E’。 main( ) { floatscore; chargrade; printf("inputstudentscore: "); scanf("%f",&score); while(score>100||score<0) /*当输入错误时,提示用户并允许重新输入*/ { printf("error\n."); scanf("%f",&score); } switch((int)(score/10)) /*将score/10的值转换成整型以便于判断*/ {case10: case9: grade=’A’;break; case8: grade=’B’;break; case7: grade=’C’;break; case6: grade=’D’;break; case5: case4: case3: case2: case1: case0: grade=’E’; } printf("score: %5.1f,grade: %c\n",score,grade); } 运行结果: inputstudentscore: 90.5↙ score: 90.5,grade: A 题目4 试编程判断输入的正整数是否既是5又是7的整数倍。 若是,则输出yes;否则输出no。 main( ) { intx; printf("inputx: "); scanf("%d",&x); if(x%5==0&&x%7==0) printf("yes"); else printf("no"); } 题目5 输入年份和月份,求该月有多少天。 main( ) {intyear,month,days; printf("Enteryearandmonth: "); scanf("%d%d",&year,&month); switch(month) {case1: case3: case5: case7: case8: case10: case12: /*处理"大"月*/ days=31;break; case4: case6: case9: case11: /*处理"小"月*/ days=30;break; case2: /*处理"平"月*/ if(year%4==0&&year%100! =0||year%400==0) days=29;/*如果是闰年*/ elsedays=28;/*不是闰年*/ break; default: printf("Inputerror! \n");/*月份输入错误*/ days=0; } if(days! =0)printf("%d,%dis%ddays\n",year,month,days); } 题目6通过键盘输入字符,判断其为控制、数字、大写字母、小写字母和其他字母的哪一类。 #include"stdio.h" main( ) {charc; printf("Enterachar: "); c=getchar( );/*从键盘读取输入的一个字符,然后分类判断*/ if(c<0x20)printf("\nThecharisacontrolchar.\n"); elseif(c>=’0’&&c<=’9’) printf("\nThecharisadigitchar.\n"); elseif(c>=’A’&&c<=’Z’) printf("\nThecharisacaptalchar.\n"); elseif(c>=’a’&&c<=’z’) printf("\nThecharisalowerchar.\n"); elseprintf("\nThecharisanotherchar.\n"); } 复习思考题、作业题: 1.输入3个整数,输出其中绝对值最小的数。 2.输入3个正整数m,n,x,判断x是否是m,n的公约数或公倍数,并输出下列信息之一: ①是公约数;②是公倍数;③既不是公约数,也不是公倍数;④既是公约数,又是公倍数。 3.有一个半径为15的圆,圆心坐标为原点(0,0),从键盘输入任意点的坐标(a,b),判断该点在圆内,在圆外,还是恰巧在圆周上。 4.在屏幕上显示如下提示: pleaseinputachar: 并等待用户键入一个字符,如输入的是大写英文字母,则输出其对应的小写形式;如输入的是小写英文字母,则输出其对应的大写形式;如是数字字符,则输出其ASCII码值;如是其它字符,打印一行’*’号组成的图案。 下次课预习要点 实施情况及实验效果分析 学院审核意见 学院负责人签字 年月日 授课时间2007-5-10第4次课 授课章节 实验四 循环控制 任课教师 及职称 李忠 副教授 实验器材 与手段 奔腾计算机 课时安排 2 使用教材和 主要参考书 C程序设计题解与上机指导(第三版).谭浩强编著 ProgrammingInANSIC(thirdedition),E.Balagurusami著 实验目的: 熟悉掌握用while语句,do-while语句和for语句实现循环的方法。 掌握在程序设计中用循环的方法实现一些常用算法(如穷举、迭代、递推等)。 进一步学习调试过程。 实验重点,难点: 实验内容: 题目1 输入两个正整数m和n,求其最大公约数和最小公倍数。 main( ) { intp,r,n,m,temp; printf("inputnandm: "); scanf("%d,%d",&n,&m); if(n { temp=n; n=m; m=temp; /*把大数放在n中,小数放在m中*/ } p=n*m;/*先将n和m的乘积保存在p中,以便求最小公倍数时用*/ r=n%m; while(r! =0)/*求n和m的最大公约数*/ { n=m; m=r; r=n%m; } printf("gongyueshu: %d\n",m); printf("gongbeishu: %d\n",p/m);/*p是原来两个整数的乘积*/ } 运行情况: Inputnandm: 12,8↙ Gongyueshu: 4 gongbeishu: 24 思考: 请根据最大公约数、最小公倍数的定义考虑有无其它算法? 题目2 输入一行字符,分别统计出其中英文字母、空格、数字和其他字母的个数。 #include main( ) { charc; intletter=0,space=0,digit=0,other=0; printf("inputalineletter: \n"); while((c=getchar( ))! =’\n’) /*读取当前字符,如不为回车符则进行统计*/ { if(c>=’a’&&c<=’z’||c>=’A’&&c<=’Z’) letter++; elseif(c==’’) space++; elseif(c>=’0’&&c<=’9’) digit++; else other++;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计 实验 教案