C语言实验指导书.docx
《C语言实验指导书.docx》由会员分享,可在线阅读,更多相关《C语言实验指导书.docx(43页珍藏版)》请在冰豆网上搜索。
C语言实验指导书
浙江长征职业技术学院
C语言程序设计
实
验
指
导
书
学期:
__2008/2009学年第一学期
实验学时/次数:
30/15
课程性质:
专业必修课
实验年级、专业、班级:
_08计应
(1),
(2),08软件
指导教师:
_________相方莉
所属学院:
计算机学院计算机系
目录
1、实验一××××××(小4号黑体)-----------------------------页码
2、实验二××××××(小4号黑体)----------------------------页码
…………………………………………………………………………………………
实验一CFree集成开发环境和C程序实现
一、课时安排:
2课时
二、实验目的:
1.熟悉CFree集成开发环境
2.熟悉C程序的实现过程和方法
1)掌握编辑、编译、连接、运行程序的过程和方法
2)学会发现和解决常见的语法错误
三、实验环境:
CFREE3.5
四、实验内容:
1.启动CFree集成开发环境,了解CFree集成开发环境的功能,熟悉菜单、
热键基本操作。
2.程序改错(要求在Cfree中对如下程序进行测试,把实验出现的问题、
实验结果分析写在横线上)
1)要求文件名为1_1.c
main()
{
printf(“Helloworld!
\n”);
}
2)要求文件名为1_2.c
#include
main()
{
inti=9
printf(“i=%d\n”,i);
}
3)要求文件名为1_3.c
#include
main()
{
inti=9,j=1,s;
s=i+j;
printf("s=%d\n",s);
};
五、实验内容指导:
1.程序改错(要求在Cfree中对如下程序进行测试,把实验出现的问题、实验结果分析写在横线上)
1)要求文件名为1_1.c
main()
{
printf(“Helloworld!
\n”);
}
补上头文件:
#include
2)要求文件名为1_2.c
#include
main()
{
inti=9
printf(“i=%d\n”,i);
}
把inti=9 改成inti=9;
3)要求文件名为1_3.c
#include
main()
{
inti=9,j=1,s;
s=i+j;
printf("s=%d\n",s);
};
把这段程序最后的;去掉
六、注意事项:
注意文件的保存路径。
七、实验思考题:
1.与C语言程序直接相关的几种文件及扩展名分别是什么?
2.C语言程序主要的实现过程是怎样的?
实验二基本数据类型的使用,运算符与表达式
一、课时安排:
2课时
二、实验目的:
1.掌握C语言基本数据类型(整型,实型,字符型)数据的常量表示、
变量的定义和使用。
2.掌握常见格式控制字符对输出结果的控制作用。
3.掌握C语言算术、赋值、自增、自减运算符及相应表达式
4.掌握不同类型数据之间的赋值规律
5.了解强制数据类型转换以及运算符的优先级、结合性。
6.学会根据表达式,编写相应程序,验证表达式结果的方法。
三、实验环境:
在CFREE3.5下完成程序的编辑、编译、运行。
查看、分析程序结果。
四、实验内容:
1.已知:
a=2,b=3,x=3.9,y=2.3(a,b整型,x,y浮点),计算算术表达式(float)(a+b)/2+(int)x%(int)y的值。
试编程上机验证。
您分析的表达式结果:
。
2.已知:
a=7,x=2.5,y=4.7(a整型,x,y浮点),计算算术表达式x+a%3*(int)(x+y)%2/4的值。
试编程上机验证。
您分析的表达式结果:
。
3.摄氏温度转化为摄氏温度的公式为C=(F-32)*5/9,输入一个.华氏温度,输出相应的摄氏温度,注意类型转化。
4.编写一个计算三角形周长的程序:
输入三角形三边,程序输出计算结果。
五、实验内容指导:
1.提示编程要点:
(1)先判断结果值类型,可设置一个此类型的变量用于记录表达式结果,
本例用r存放结果;
(2)程序先给几个条件变量赋初值,然后将表达式赋值给变量r;
(3)最后打印变量r的值就是表达式的值。
#include
main()
{
inta=2,b=3;
floatx=3.9,y=2.3,r;
r=(float)(a+b)/2+(int)x%(int)y;
printf(“%f”,r);
}
表达式结果:
3.50000。
2.#include
main()
{
inta=7;
floatx=2.5,y=4.7,r;
r=x+a%3*(int)(x+y)%2/4;
printf(“%f”,r);
}
表达式结果:
2.500000。
3.#include
main()
{
floatf,c;//f代表华氏温度,c代表摄氏温度
printf(“请输入一个华氏温度\n”);
scanf(“%f”,&f);
c=(5.0/9.0)*(f-32);
printf(“摄氏温度为:
%6.2f\n”,c);
}
4.#include
main()
{
floata,b,c,zhouchang;//a,b,c代表三角形的三条边
printf(“请输入一个三角形的三条边\n”);
scanf(“%f,%f,%f”,&a,&b,&c);
zhouchang=a+b+c;
printf(“周长为:
%6.2f\n”,zhouchang);
}
六、注意事项:
1.注意标点符号
七、实验思考题:
1.数据类型的转化有哪几种?
2.把数学公式转化为c语言的表示式时要注意哪些?
实验三顺序结构程序设计
一、课时安排:
2课时
二、实验目的:
1.掌握:
使用标准输入/输出函数进行常见数据类型的数据的输入/输出方法。
2.初步培养编制程序框图和源程序、准备测试数据以及实际调试程序的独立
编程能力。
三、实验环境:
在CFREE3.5下完成程序的编辑、编译、运行。
查看、分析程序结果。
四、实验内容:
1.已知一个直角三角形的两个直角边分别为a=5,b=8,求直角三角形的面积s。
2.从键盘输入一个小写字母,将其转化为大写字母。
3.输入一个字母,输出它的后继字母。
如输入’a’,则输出’b’。
4.输入两个整数,输出它们的积。
5.已知一个圆柱体的半径r=10,高h=15,求圆柱体的:
地面周长c,底面积s,侧面积s1,表面积s2,体积V。
6.假定个人所得税的征收依据如下:
按工资收入的15%征收个人所得税。
编写一个程序,当从键盘输入职工工资时,计算出实发工资并输出。
该如何编写这个程序呢?
(选做)
五、实验内容指导:
1.#include
main()
{
inta=5,b=8;
floats;
s=1/2.0*a*b;
printf("面积为:
%6.2f\n",s);
}
2.#include
main()
{charc;
printf("请输入一个小写字母\n");
scanf("%c",&c);
c=c-32;
printf("这个小写字母对应的大写字母为%c\n",c);
}
3.#include
main()
{charc;
printf("请输入一个字母\n");
scanf("%c",&c);
c=c+1;
printf("这个字母的后继字母为%c\n",c);
}
4.#include
main()
{
longinta,b,m;
printf("请输入两个整数\n");
scanf("%ld,%ld",&a,&b);
m=a*b;
printf("您输入的两个数的乘积为%ld\n",m);
}
5.#include
main()
{floatpi,h,r,c,s,s1,s2,v;
pi=3.14;
printf("请输入圆柱半径r,圆柱高h\n");
scanf("%f,%f",&r,&h);
c=2*pi*r;
s=pi*r*r;
s1=2*pi*r*h;
s2=s1+2*s;
v=pi*r*r*h;
printf("底面周长为:
c=%6.2f\n",c);
printf("底面积为:
s=%6.2f\n",s);
printf("侧面积为:
s1=%6.2f\n",s1);
printf("表面积为:
s2=%6.2f\n",s2);
printf("体积为:
v=%6.2f\n",v);
}
6.#include
main()
{floatgongzi,shifagongzi;
printf("请输入你的工资\n");
scanf("%f",&gongzi);
shifagongzi=gongzi*(1-0.15);
printf("您的实发工资为%6.2f\n",shifagongzi);
}
六、注意事项:
1.注意编程的风格,取变量名称最好“见名识意”。
2.scanf函数的正确使用。
七、实验思考题:
1.变量类型的一般如何定义?
2.注释是否会被编译?
实验四选择结构程序设计
一、课时安排:
4课时
二、实验目的:
1.掌握关系、逻辑运算符及其表达式的正确使用。
2.掌握if语句,条件运算符和switch语句的使用。
三、实验环境:
在CFREE3.5下完成程序的编辑、编译、运行。
查看、分析程序结果。
四、实验内容:
阶段一:
1.给出一个百分制成绩,要求输出成绩等级’A’,’B’,’C’,’D’,’E’,即90分以上为’A’,80~90为’B’,70~79为’C’,60~69为’D’,60分以下为’E’。
2.有一函数:
x(x<1)
y=2x-1(1<=x<10)
3x-11(x>=10)
编写一程序,输入一个x值,输出y的值。
3.编写一个体重测量仪,要求当输入体重和身高后,能够计算出体重指数,并根据指数情况进行判断。
体重指数=体重(公斤)除身高(米)的平方(kg/m2)
判断标准:
偏瘦:
体重指数<18
正常体重:
18<=体重指数<25
微度肥胖:
25<=体重指数<30
轻度肥胖:
30<=体重指数<35
中度肥胖:
35<=体重指数<40
重度肥胖:
体重指数>=40
4.某单位马上要加工资,增加金额取决于工龄和现工资两个因素:
对于工龄大于等于20年的,如果现工资高于2000,加200元,否则加180元;对于工龄小于20年的,如果现工资高于1500,加150元,否则加120元。
工龄和现工资从键盘输入,编程求加工资后的员工工资。
(选做)
阶段二:
1.由键盘输入三个整数a,b,c,用条件运算符求出其中最大值和最小值。
2.从键盘输入星期号,并显示该日期的英文星期名字。
3.某市不同车牌的出租车3公里的起步价和计费分别为:
夏利7元,3公里以外的2.1元/公里;富康8元,3公里以外的2.4元/公里;桑塔纳9元,3公里以外的2.7元/公里;.编程:
从键盘输入乘车的车型和行车公里数,输出应付车资。
4.给一个不多于5位的正整数,要求:
①求出它是几位数;②分别打印出每一位数字;③按逆序打印出各位数字。
如原数为123,则逆序为321。
五、实验内容指导:
阶段一:
1.#include
main()
{floatscore;
chargrade;
printf("请输入学生成绩(百分制):
\n");
scanf("%f",&score);
if(score>90)
grade='A';
elseif(score>80)
grade='B';
elseif(score>70)
grade='C';
elseif(score>60)
grade='D';
else
grade='E';
printf("这位学生的成绩相应的等级是%c.\n",grade);
}
2.#include
main()
{floatx,y;
printf("请输入x的值\n");
scanf("%f",&x);
if(x<1)
y=x;
elseif(x>=10)
y=3*x-11;
else
y=2*x-1;
printf("x=%6.2f,y=%6.2f",x,y);
}
3.#include
main()
{floatweight,height,tzzs;
printf("请输入您的体重(公斤)\n");
scanf("%f",&weight);
printf("请输入您的身高(米)\n");
scanf("%f",&height);
tzzs=weight/(height*height);
if(tzzs<18)
printf("偏瘦\n");
elseif(tzzs<25)
printf("体重正常\n");
elseif(tzzs<30)
printf("轻度肥胖\n");
elseif(tzzs<35)
printf("中度肥胖\n");
else
printf("重度肥胖\n");
}
4.#include"stdio.h"
main()
{
intage;
floatsalary_old,salary_new;
printf("请输入您的工龄\n");
scanf("%d",&age);
printf("请输入您原来的工资\n");
scanf("%f",&salary_old);
if(age>=20)
if(salary_old>2000)
salary_new=salary_old+200;
else
salary_new=salary_old+180;
else
if(salary_old>1500)
salary_new=salary_old+150;
else
salary_new=salary_old+120;
printf("\n加工资后你的工资变为为:
%f\n",salary_new);
}
阶段二:
1.#include
main()
{inta,b,c,max1,max,min1,min;
printf("请输入三个整数\n");
scanf("%d,%d,%d",&a,&b,&c);
max1=a>b?
a:
b;
max=max1>c?
max1:
c;
min1=a
a:
b;
min=min1min1:
c;
printf("最大值为:
%d,最小值为:
%d\n",max,min);
}
2.#include
main()
{
intxqh;
charywm;
printf("请输入星期号(1~7):
\n");
scanf("%d",&xqh);
switch(xqh)
{case1:
printf("Monday\n");break;
case2:
printf("Tuesday\n");break;
case3:
printf("Wednesday\n");break;
case4:
printf("Thursday\n");break;
case5:
printf("Friday\n");break;
case6:
printf("Saturday\n");break;
case7:
printf("Sunday\n");
}
}
3.#include
main()
{
intcx;
floatgl,cf;
printf("\t1-夏利\n\t2-富康\n\t3-桑塔纳\n");
printf("\t请输入车型(1-3):
");
scanf("%d",&cx);
printf("\n\t请输入行车公里数:
");
scanf("%f",&gl);
switch(cx)
{case1:
if(gl<=3)
cf=7.0;
else
cf=7+(gl-3)*2.1;break;
case2:
if(gl<=3)
cf=8.0;
else
cf=8+(gl-3)*2.4;break;
case3:
if(gl<=3)
cf=9.0;
else
cf=9+(gl-3)*2.7;
}
printf("\t应付车资为%.1f\n",cf);
}
4.#include"stdio.h"
main()
{
unsignedx,m,n=0,w=0;
unsignedge=0,shi=0,bai=0,qian=0,wan=0;
printf("请输入一个不多于5位的正整数");
scanf("%u",&x);
m=x;
ge=m%10;
m=m/10;
w=1;
n=ge;
if(m)
{shi=m%10;
m=m/10;
w=2;
n=n*10+shi;
if(m)
{bai=m%10;
m=m/10;
w=3;
n=n*10+bai;
if(m)
{qian=m%10;
m=m/10;
w=4;
n=n*10+qian;
if(m)
{wan=m;
w=5;
n=n*10+wan;
}
}
}
}
printf("\n您输入的数为%u位数",w);
printf("\n正整数的原序为:
%u",x);
printf("\n正整数的逆序为:
%u",n);
}
六、注意事项:
1.注意关系表达式的书写。
2.注意数学公式的转化。
3.注意嵌套条件语句的使用
七、实验思考题:
1.条件运算的运算规则是怎样的?
2.switch语句的使用场合如何?
3.如何表达给定正整数的每一位?
实验五循环结构程序设计
一、课时安排:
4课时
二、实验目的:
1.掌握while,do-while循环的语法结构与应用。
2.掌握while,do-while循环的区别。
3.掌握for循环的语法结构与应用。
4.握循环嵌套使用方法。
5.掌握break,continue语句。
三、实验环境:
在CFREE3.5下完成程序的编辑、编译、运行。
查看、分析程序结果。
四、实验内容:
阶段一:
1.用循环实现求1+2+4+8+…64的和
2.用循环实现求1+1/2+1/3+1/4+1/5+…+1/100
3.用循环实现求100以内能够被8整除的数的和
4.求1000以内所有的水仙花数。
(水仙花数是一个3位数,它的每一位数字的立方和等于它本身。
)
趣味提高题(选做):
1.在歌星大奖赛中,有10个评委为参赛的选手打分,分数为1~100分。
选手最后得分为:
去掉一个最高分和一个最低分后其余8个分数的平均值。
请编写一个程序实现。
2.马克思手稿中有一道趣味数学问题:
有30个人,其中有男人、女人和小孩,在一家饭馆吃饭花了50先令;每个男人花3先令,每个女人花2先令,每个小孩花1先令;问男人、女人和小孩各有几人?
阶段二:
1.输出乘法口诀表
2.打印如下图形
&
&&
&&&
&&&&
3.求出500以内的所有素数,并要求每8个打一行,最后还要统计500以内所有素数的个数
4.猴子吃桃问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不过瘾,又多吃了一个。
第二天早上又将剩下的桃子吃掉一半,又多吃了一个。
以后每天早上都吃了前一天剩下的一半零一个。
到第10天早上想再吃时,见只剩下一个桃子了。
求第一天共摘了多少个桃子。
趣味提高题(选做):
抓交通肇事犯:
一辆卡车违反交通规则,撞人后逃跑。
现场有三人目击事件,但都没有记住车号,只记下车号的一些特征。
甲说:
牌照的前两位数字是相同的;
乙说:
牌照的后两位数字是相同的,但与前两位不同;
丙是数学家,他说:
四位的车号刚好是一个整数的平方。
请根据以上线索求出车号。
五、实验内容指导:
阶段一:
1.#include
main()
{inti=1,s=0;
while(i<=64)
{
s=s+i;
i=2*i;
}
printf("s=%d\n",s);
}
2.#include
main()
{floats=0;
inti=1;
while(i<=100)
{
s=s+1.0/i;
i++;
}
printf("s=%.2f\n",s);
}
3.#include
main()
{intn,s=0;
for(n=1;n<=100;n++)
if(n%8==0)
{s=s+n;
printf("%4d",n);
}
printf("\n100以内能够被8整除的数的和为s=%d",s);
}
4.#include
main()
{intn=100,ge,shi,bai;
while(n>=100&&n<=999)
{
ge=n%10;
shi=n/10%10;
bai=n/100;
if(n==ge*ge*ge+shi*shi*shi+bai*bai*bai)
printf("%d是水仙花数\n",n);
n++;
}
}
趣味提高题(选做):
1.#include
intmain()
{
intscore,i=1,sum=0,max,min;
floataverage=0;
printf("请输入您的评分%d=",i);
scanf("%d",&score);/*输入评委的评分*/
sum=max=min=score;
i++;