C语言实践指导书.docx
- 文档编号:3125640
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:38
- 大小:84.67KB
C语言实践指导书.docx
《C语言实践指导书.docx》由会员分享,可在线阅读,更多相关《C语言实践指导书.docx(38页珍藏版)》请在冰点文库上搜索。
C语言实践指导书
实验一C语言的运行环境和运行过程
实验目的:
1.掌握c程序设计编程环境C-Free3.5,掌握运行一个c程序设计的基本步骤,包括编辑、编译、连接和运行。
2.掌握c语言程序设计的基本框架,能够编写简单的c程序。
3.了解程序调试的思想,能找出并改正c程序中的语法错误。
实验内容:
1.在“我的电脑”上新建一个文件夹,用于存放c程序,文件夹名字可以是学号姓名。
2.调试示例,在屏幕上显示一个短句“HelloWorld!
”。
源程序
#include
voidmain()
{
printf(“HelloWorld!
\n”);
}
运行结果:
HelloWorld!
基本步骤:
(要求熟练掌握)
1)启动C-Free3.5进入C编程环境。
2)新建文件(*.cpp)
“文件”->“新建”,单击“文件”选项卡,选择“新建文件”。
3)编辑和保存(注意:
源程序一定要在英文状态下输入,即字符标点都要在半角状态下,同时注意大小写,一般都用小写)
在编辑窗口输入源程序,然后执行“文件”->“保存”或“文件”->“另存为”
3.编程,在屏幕上显示一个短句“thisismyfirstcprogram.”。
4.调试示例,在屏幕上显示一个短句“welcometoyou!
”。
源程序(有错误的程序)
#include
voidmian()
{
printf(WelcometoYou!
\n”)
}
运行结果(改正后的运行结果)
WelcometoYou!
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验二简单的C程序设计和基本数据处理
实验目的:
1.掌握C语言的运算符和表达式的正确使用以及C语言的几种基本数据类型和基本输入输出函数的使用方法。
2.通过编程进一步理解和掌握运算符的确切含义和功能。
3.理解和掌握运算符与运算对象的关系,优先级和结合方向。
4.通过编程,掌握C语言的几种基本数据类型,int、char、flloat、double,以及由这些基本数据类型构成的常量和变量的使用方法。
5.掌握基本输入/输出函数的使用方法,包括printf()、scanf()、getchar()、putchar()。
6.掌握简单的C程序的查错方法。
实验内容:
一.输入程序,观察输出结果,并对输出结果作出合理的解释。
1./*e1.cpp*/
#include
voidmain()
{floatx;
doubley;
x=213.82631;y=213.82631;
printf("%-4.2f,-6.2e\n",x,y);
}
输出结果:
解释:
2./*e2.cpp*/
#include
voidmain()
{charch;
intk;
ch=’a’;k=10;
printf(“%d,%x,%o,%c”,ch,ch,ch,ch,k);
printf(“k=%%d\n”,k);
}
输出结果:
解释:
3./*e3.cpp*/
#include
voidmain()
{floata1,a2;
doubleb1,b2;
a1=3141.59;a2=0.000001;
b1=3141.59;b2=0.000001;
printf(“%f,%lf\n”,a1+a2,b1+b2);
}
输出结果:
解释:
4./*e4.cpp*/
#include
voidmain()
{floatx=5/2,y=5.0/2;
printf("x=%f,y=%f\n",x,y);
}
输出结果:
解释:
二.编写程序。
1.编程(c1.cpp)定义3个整型变量x,y,z和一个实型变量averge,计算并输出3个整数的平均值averge,其中x=y=1,z=0。
观察运行结果。
再将x,y,z和averge改为实型变量,再观察运行结果。
理解整除和不同类型数据进行混合运算的转化规律,对结果进行合理的解释。
源程序:
输出结果:
解释:
2.改写程序(c2.cpp),针对上一题要求,采用从键盘用scanf()函数输入x,y,z的值。
要求输出结果的形式为averge=…。
源程序:
输出结果:
解释:
3.输入3个整数给a,b,c,然后交换它们中的数,把a中原来的值给b,把b原来的值给c,把c中原来的值给a。
源程序:
输出结果:
三.调示示例。
1.求华氏温度100。
F对应的摄氏温度。
计算公式:
C=(5/9)(F-32),其中C表示摄氏温度,F表示华氏温度。
源程序(有错误)
#include
voidmain()
{intcelsius;fahr;
fahr=100;
celsius=5*(fahr-32)/9;
printf("fahr=d,celsius=%d\n",fahr,celsius);
}
1)输入源程序。
2)实验一中用菜单完成编译、连接和运行,现在介绍工具栏的使用方法。
在工具栏或菜单栏上单击鼠标右键,
出现如图所示的整个工具箱,在“编译”或“编译微型条”项前打上“√”。
图中第1个按钮为“Compile”(编译,Ctrl+F7),第2个按钮为“Build”(构件,F7),第4个按钮为“BuildExecute”(执行,Ctrl+F5)。
3)单击“编译”工具条中的第1个按钮,出现第一个错误信息:
Cannotopenincludefile:
'stdoi.h':
Nosuchfileordirectory(不能打开stdoi.h)
改正(应该是stdio.h)后,重新编译,新产生的第一个错误信息是:
'fahr':
undeclaredidentifier?
(“fahr”变量没有定义)
改正:
将fahr前的分号改为逗号,重新编译,编译正确。
4)单击“编译”工具条中的第2个按钮,连接正确。
5)单击“编译”工具条中的第4个按钮,运行结果为:
fahr=d,Celsius=100
不符合题目的要求,仔细检查源程序,发现函数printf()中的d应为%d,改正的,重新连接和运行,运行结果与题目要求的结果一致,程序调试结束。
2.改错,计算某个数x的平方y,并以算术公式的形式输出x和y的值.请不要删除源程序中的任何注释。
输入输出示例(假设x的值为3):
9=3*3
3*3=9
#include
voidmain()
{
inty;
y=x*x;
printf(“%d=%d*%d”,x);?
?
/*输出
printf(“d*%d=%d”,y);
}
改正后的源程序:
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三选择结构程序设计
实验目的
1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式;
3、熟练掌握if语句和switch语句;
4、熟练掌握switch语句中break语句的作用。
实验内容
1.调试示例,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。
源程序(有错误的程序)
#include
#include
voidmain()
{
doublea,b,c,d;
printf(“输入一元二次方程a=,b=,c=\n”);
scanf(“a=%lf,b=%lf,c=%lf”,&a,&b,&c);
d=b*b-4*a*c;
if(a==0)
{
if(b=0)
{if(c==0)
printf(“0==0参数对方程无意义!
”);
else
printf(“c!
=0方程不成立”);
}
else
printf(“x=%0.2f\n”,-c/b);
}
else
if(d>=0)
{printf(“x1=%0.2f\n”,(-b+sqrt(d))/(2*a));
printf(“x1=%0.2f\n”,(-b-sqrt(d))/(2*a));
}
else
{printf(“x1=%0.2f+%0.2fi\n”,-b/(2*a),sqrt(-d)/(2*a));
printf(“x1=%0.2f-%0.2fi\n”,-b/(2*a),sqrt(-d)/(2*a));
}
}
运行结果(改正后程序的运行结果)
输入一元二次方程a=,b=,c=
a=2.1,b=8.9,c=3.5
x1=-7.22
x2=-10.58
运行结果(有错误的程序的运行结果)
输入一元二次方程a=,b=,c=
a=2.1,b=8.9,c=3.5
x1=-7.22
x2=-10.58
对以上程序进行编译、连接、调试和运行如下:
1)执行“编译”->“构件”,对以上程序进行编译、连接,没有出现错误信息。
2)调试开始,设置三个断点(断点的作用,程序执行到断点处暂停,使用户可以观察当前的变量或其他表达式的值,然后继续运行),先把光标定位到要设置断点的位置,然后单击编译工具条上的
Inert/RemoveBreakpoint或F9,断点就设置好了,如果要取消断点,只要把光标放到要取消的断点处,单击
,这个断点就取消了。
3)单击编译工具条
(goF5),程序运行,等待输入一元二次方程a、b、c的值,输入a=2.1,b=8.9,c=3.5.
4)程序运行到第一个断点,在Watch窗口输入变量名a,b,c观察执行到第一个断点时变量a,b,c的值是否和
(2)中输入一致。
注意,变量可以在Watch1、Watch2、Wathc3、Watch4任何一个窗口输入,输入可以是变量,也可以是表达式。
5)假设我们在输入的时候,输错了变量a的值,我们可以在Watch窗口重新赋值,改变原来的值,如我们在Watch窗口中输入表达式a=0,则a的值就改变为0了。
单步执行,单击
,箭头指向下一行,说明程序执行到这一行,再观察变量a,b,c的值,发现变量b的值已经改变,原来输入的是8.9,现在已改变为0,我们在2)中输入变量b的值是8.9,说明在程序的执行过程中肯定有一个地方改变了b的值,通过仔细观察、分析,发现if语句中误把相等“==”写成了赋值“=”,所以b=0了,单击
(StopDebugging(Shift+F5)停止调试,把源程序中的“=”改为”==”后,重新编译、连接,没有出现错误信息。
6)单击
,重新开始调试,执行3)和4),此时,观察b的值没有改变,单击
,结束本次调试。
7)单击
,重新开始调试,观察结果的正确性。
2.编程,输入任意三个数n1,n2,n3,求其中最大的一个数。
输入输出示例:
Inputn1,n2,n3:
210.5?
8
max=10.50
提示:
模仿1,运行时调试程序,包括设置断点、在Watch窗口设置变量的值等。
思考:
1)如何求5个数中的最大的一个数
2)如果要在3个字符中找出最大的一个,如何修改程序
3.编程,输入x,计算并输出下列分段函数f(x)的值(保留2位小数)。
y=
x
x<1
2x-1
1<=x<10
3x-11
x>=10
输入输出示例:
Inputx:
-2.5
f(-2.500000)=-2.5
提示:
该程序应该运行3次,每次测试一个分支,即分别输入每个分段中的x值。
思考:
假设x为整数,如何用switch计算上述分段函数。
4.编程,把百分制成绩转换成5级记分制,要求用switch语句。
90分以上(包括90):
A
80至90分(包括80):
B
70至80分(包括70):
C
60至70分(包括60):
D
60分以下:
E
输入输出示例:
InputScore:
86
86的等级为B
提示:
1)该程序应该运行6次,每次测试一种情况,即分别输入不同等级的成绩
2)在switch中使用break语句
思考:
如何用if语句实现转换?
5.编程,输入2005年的任一个月,输出这个月的天数,要求使用switch语句。
输入输出示例:
Inputmonthof2005:
10
2005年10月有31天
提示:
1)该程序应该运行13次,分别输入1-12月,以及除此之外的数
2)运行时调试跟踪月份的变化
3)编程时注意不同月份可以有相同的天数
思考:
输入年和月,如何求该月的天数?
6.改错,对2个整数进行乘、除和求余运算。
输入输出示例:
输入x运算符y:
21%8
21Mod8=5
源程序(有错误的程序)
#include
voidmain()
{charsign;
intx,y;
prnitf(“输入x运算符y:
”);
scanf(“%d%c%d”,&x,&sign,&y);
if(sign=’*’)
printf(“%d*%d=%d\n”,x,y,x*y);
elseif
printf(“%d*%d=%d\n”,x,y,x*y);
elseif
printf(“%d*%d=%d\n”,x,y,x*y);
else
printf(“运算符输入错误”);
}
提示:
在程序调试中,在变量窗口和Watch窗口中观察变量值的变化。
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验三选择结构程序设计
实验目的
1、了解C语句表示逻辑量的方法(以0代表“假”以1代表“真”);
2、学会正确使用逻辑运算符和逻辑表达式;
3、熟练掌握if语句和switch语句;
4、熟练掌握switch语句中break语句的作用。
实验内容
1.调试示例,输入参数a,b,c,求一元二次方程ax2+bx+c=0的根。
源程序(有错误的程序)
#include
#include
voidmain()
{
doublea,b,c,d;
printf(“输入一元二次方程a=,b=,c=\n”);
scanf(“a=%lf,b=%lf,c=%lf”,&a,&b,&c);
d=b*b-4*a*c;
if(a==0)
{
if(b=0)
{if(c==0)
printf(“0==0参数对方程无意义!
”);
else
printf(“c!
=0方程不成立”);
}
else
printf(“x=%0.2f\n”,-c/b);
}
else
if(d>=0)
{printf(“x1=%0.2f\n”,(-b+sqrt(d))/(2*a));
printf(“x1=%0.2f\n”,(-b-sqrt(d))/(2*a));
}
else
{printf(“x1=%0.2f+%0.2fi\n”,-b/(2*a),sqrt(-d)/(2*a));
printf(“x1=%0.2f-%0.2fi\n”,-b/(2*a),sqrt(-d)/(2*a));
}
}
运行结果(改正后程序的运行结果)
输入一元二次方程a=,b=,c=
a=2.1,b=8.9,c=3.5
x1=-7.22
x2=-10.58
运行结果(有错误的程序的运行结果)
输入一元二次方程a=,b=,c=
a=2.1,b=8.9,c=3.5
x1=-7.22
x2=-10.58
对以上程序进行编译、连接、调试和运行如下:
1)执行“编译”->“构件”,对以上程序进行编译、连接,没有出现错误信息。
2)调试开始,设置三个断点(断点的作用,程序执行到断点处暂停,使用户可以观察当前的变量或其他表达式的值,然后继续运行),先把光标定位到要设置断点的位置,然后单击编译工具条上的
Inert/RemoveBreakpoint或F9,断点就设置好了,如果要取消断点,只要把光标放到要取消的断点处,单击
,这个断点就取消了。
3)单击编译工具条
(goF5),程序运行,等待输入一元二次方程a、b、c的值,输入a=2.1,b=8.9,c=3.5.
4)程序运行到第一个断点,在Watch窗口输入变量名a,b,c观察执行到第一个断点时变量a,b,c的值是否和
(2)中输入一致。
注意,变量可以在Watch1、Watch2、Wathc3、Watch4任何一个窗口输入,输入可以是变量,也可以是表达式。
5)假设我们在输入的时候,输错了变量a的值,我们可以在Watch窗口重新赋值,改变原来的值,如我们在Watch窗口中输入表达式a=0,则a的值就改变为0了。
单步执行,单击
,箭头指向下一行,说明程序执行到这一行,再观察变量a,b,c的值,发现变量b的值已经改变,原来输入的是8.9,现在已改变为0,我们在2)中输入变量b的值是8.9,说明在程序的执行过程中肯定有一个地方改变了b的值,通过仔细观察、分析,发现if语句中误把相等“==”写成了赋值“=”,所以b=0了,单击
(StopDebugging(Shift+F5)停止调试,把源程序中的“=”改为”==”后,重新编译、连接,没有出现错误信息。
6)单击
,重新开始调试,执行3)和4),此时,观察b的值没有改变,单击
,结束本次调试。
7)单击
,重新开始调试,观察结果的正确性。
2.编程,输入任意三个数n1,n2,n3,求其中最大的一个数。
输入输出示例:
Inputn1,n2,n3:
210.5?
8
max=10.50
提示:
模仿1,运行时调试程序,包括设置断点、在Watch窗口设置变量的值等。
思考:
1)如何求5个数中的最大的一个数
2)如果要在3个字符中找出最大的一个,如何修改程序
3.编程,输入x,计算并输出下列分段函数f(x)的值(保留2位小数)。
y=
x
x<1
2x-1
1<=x<10
3x-11
x>=10
输入输出示例:
Inputx:
-2.5
f(-2.500000)=-2.5
提示:
该程序应该运行3次,每次测试一个分支,即分别输入每个分段中的x值。
思考:
假设x为整数,如何用switch计算上述分段函数。
4.编程,把百分制成绩转换成5级记分制,要求用switch语句。
90分以上(包括90):
A
80至90分(包括80):
B
70至80分(包括70):
C
60至70分(包括60):
D
60分以下:
E
输入输出示例:
InputScore:
86
86的等级为B
提示:
1)该程序应该运行6次,每次测试一种情况,即分别输入不同等级的成绩
2)在switch中使用break语句
思考:
如何用if语句实现转换?
5.编程,输入2005年的任一个月,输出这个月的天数,要求使用switch语句。
输入输出示例:
Inputmonthof2005:
10
2005年10月有31天
提示:
1)该程序应该运行13次,分别输入1-12月,以及除此之外的数
2)运行时调试跟踪月份的变化
3)编程时注意不同月份可以有相同的天数
思考:
输入年和月,如何求该月的天数?
6.改错,对2个整数进行乘、除和求余运算。
输入输出示例:
输入x运算符y:
21%8
21Mod8=5
源程序(有错误的程序)
#include
voidmain()
{charsign;
intx,y;
prnitf(“输入x运算符y:
”);
scanf(“%d%c%d”,&x,&sign,&y);
if(sign=’*’)
printf(“%d*%d=%d\n”,x,y,x*y);
elseif
printf(“%d*%d=%d\n”,x,y,x*y);
elseif
printf(“%d*%d=%d\n”,x,y,x*y);
else
printf(“运算符输入错误”);
}
提示:
在程序调试中,在变量窗口和Watch窗口中观察变量值的变化。
实验报告要求
将以上各题的源程序、运行结果,以及实验中遇到的问题和解决问题的方法,以及实验过程中的心得体会,写在实验报告上。
实验五循环结构程序设计
(二)
实验目的
1.熟练掌握循环程序设计,包括嵌套循环
2.熟练掌握使用break、continue语句在循环程序设计中的实现
3.继续掌握VC++的程序调试方法
实验内容
1.调试示例,输入正整数的个数n,再输入n个正整数,判断它们是否为素数。
素数就是只能被1和自身整除的正整数,1不是素数,2是素数。
源程序(有错误)
#include
#include
voidmain()
{inti,j,k,m,n;
printf(“输入正整数的个数n:
”);
scanf(“%d”,&n);
printf(“输入%d个正整数\n”);
for(j=0;j {scanf(“%d”,&m); n=sqrt(m); for(i=2;i if(m/i==0)break; if(i>n) printf(“%d是一个素数! \n”,m); else printf(“%d不是一个素数! \n”,m); } } 运行结果(改正后程序的运行结果) 输入正整数的个数: 2 输入2个正整数 11 11是一个素数 15 15不是一个素数 按照前面学过的程序调试的方法,设置断点调试程序,找出程序的逻辑错误,得到正确的运行结果。 2.编程,输出101-115之间不能被3整除的数,每行输出5个。 要求使用continue语句。 输入输出救命: 101? 103? 10
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 实践 指导书