《C语言》实验指导书.docx
《《C语言》实验指导书.docx》由会员分享,可在线阅读,更多相关《《C语言》实验指导书.docx(32页珍藏版)》请在冰豆网上搜索。
《C语言》实验指导书
实验一TC集成环境的使用
一、实验目的
1.熟悉C语言的集成调试环境TC2.0的使用,学习编辑、运行C语言程序的基本方法。
2.进一步认识程序的两种类型的错误对程序运行的影响,加深对程序调试及测试重要性的认识。
3.认识C语言程序的结构特点,学习程序的基本编写方法
二、实验内容
1.TC2.0集成环境的使用。
编辑运行实现乘法运算的程序,源程序如下:
#include"stdio.h"
main()
{
inta,b;
a=251; /*使a具有值251*/
b=8; /*使b具有值8*/
printf("%d\n",a*b);/*计算并输出表达式a*b*/
}运行结果为2008
2.程序错误:
修改上面的程序,观察运行结果。
(1)将程序中第1个语句的分号删除,编译或运行程序,看有何结果。
运行错误
(2)将程序中的表达式“a*b”的“a”改为“A”,然后运行程序。
运行错误
(3)将程序中的表达式“a*b”修改为“a-b”,然后运行程序。
运行结果为243
3.编辑并运行能够对任意两个整数进行乘法运算的程序。
#include"stdio.h"
main()
{
inta,b;
printf("Inputa,b:
");/*在屏幕显示提示信息Inputa,b:
*/
scanf("%d,%d",&a,&b);/*该语句的作用是实现数据的键盘输入*/
printf("a*b=%d\n",a*b);/*输出乘法运算的结果*/
}
4.编辑并运行如下程序,分别输入三组数据,记录输出结果,并分析该程序的功能。
main()
{
intx,y,large;
scanf(“%d,%d”,&x,&y);
large=max(x,y);
printf(“TheMaxnumberis%d\n”,large);
}
intmax(intx,inty)
{
intz;
if(x>y)
z=x;
else
z=y;
returnz;}
5.单步或跟踪运行上题中的程序,体会两种运行方式的特点。
三、实验指导
1.TurboC2.0集成环境的使用。
⑴启动TC2.0。
⑵使用“File→New”命令或使用“Edit”命令,进入编辑状态,录入编辑源程序并保存。
⑶使用“Comple→CompiletoOBJ”对源程序进行编译,如果源程序存在语法错误,这时编译系统会把程序中的错误指示出来。
发现错误后,需要立即修改源程序,然后重新编译。
⑷编译无误后,使用“Comple→LinkEXEfile”连接目标代码,生成可执行文件,这个文件可由运行命令“Run”运行。
上面的⑶、⑷两个步骤,也可以使用“Comple→Buildall”或“F9”功能键一步完成。
⑸连接完成后,使用“Run”命令,或者使用“Ctrl+F9”组合键运行程序。
程序运行过程瞬间结束,要察看程序运行结果,需要切换到运行屏幕,用组合健“Alt+F5”实现。
按Alt+F5后,将看到屏幕显示如下结果:
2008
按任意键,屏幕返回程序状态。
说明:
对一个未经编译和连接的源程序,TC2.0也可以直接运行它,方法是编辑好一个源程序后,直接使用Run命令或“Ctrl+F9”组合键运行它。
此时系统自动启动编译命令和连接命令,只有当编译、连接正常进行后,程序才会被运行。
因此,上面的过程可以简化为两个操作步骤:
⑴启动TC2.0,录入编辑源程序,并保存。
⑵按“Ctrl+F9”组合键运行程序。
特别提示:
⑴保存源程序:
在编辑源程序的过程中或源程序编辑完成后,及时保存源程序是十分必要的,但初学者往往忽视这一环节。
操作步骤如下:
①按“F2”功能键,出现输入文件名的提示框。
白色背景窗口显示了系统为当前程序设定的默认存储位置(C:
\TC,该存储位置因系统而异,可以改变)和默认文件名NONAME.C。
②输入新的文件名。
为了操作方便,可以使用默认存储位置,指定文件名为mult.c。
操作时只需将NONAME.C改写为mult.c后回车确认即可。
⑵使用Windows的记事本程序提高源程序编辑效率。
①启动Windows的记事本程序,录入编辑乘法源程序。
②保存程序,选择合适的存储位置,如上面使用的TC2.0的默认程序目录C:
\TC;输入指定的文件名,如mult.c;选择保存类型为“所有文件”。
③启动或激活TC2.0,按“F3”功能键,出现提示框。
在“LoadFileName”框中键入步骤②使用的文件名mult.c,回车确认后将源程序调入TC系统,然后按组合键“Ctrl+F9”运行程序。
2.程序错误。
第一项内容用于说明语句结束的分号的重要性及语法错误。
第二项内容用于验证C语言中标识符的特性,当用“A”取代“a”后,程序将不能运行,说明作为标识符“A”和“a”是不等价的。
请读者自己进行类似的替换,然后察看程序的运行结果。
如,将程序中的“printf”改为“PRINTF”,然后运行程序看结果。
第三项实验内容说明了程序的逻辑错误情况。
若把“a*b”误写为“a-b”,程序会顺利编译运行,但显然不是乘法运算的结果。
3.编辑并运行能够对任意两个整数进行乘法运算的程序。
编辑该程序前,首先使用“File→New”命令使TC2.0进入新程序编辑状态,然后编辑运行该程序。
程序运行后,屏幕将显示下面的提示信息:
Inputa,b:
此时,应从键盘输入两个整数数据,然后回车确认。
下面是一个输入实例:
20,35
下面是程序的输出结果:
a*b=700
特别提示:
程序的输入数据往往有格式规定,只有按照正确的格式输入数据,才会得到正确的结果。
运行上面的程序时,输入的两个数据必须以“,”分隔,否则将得不到正确的结果。
请读者再次运行程序,对输入的两个数据以空格分隔,察看执行结果。
例如:
Inputa,b:
2035
再次运行程序,然后输入两个很大的整数,察看运行结果。
例如:
Inputa,b:
20000,35000
显然,上面两次运行的结果都是不正确的。
这说明,既没有语法错误,也没有逻辑错误的程序,运行后也会得不到正确的结果。
第一种情况出错,是因为输入数据时数据之间的分隔形式不符合程序的要求。
第二种情况,输入数据的格式没有问题,但输入的数据超出了程序能够允许的整数范围。
这项实验内容提醒读者,在上机实现一个C语言程序时,各种错误的情况都可能出现。
即便是一个看上去很好的程序,仍然会有许多需要改进之处。
从算法的角度理解,就是任何算法,都可能存在进一步完善的空间。
4.编辑并运行如下程序,分析该程序的功能。
(1)程序开始运行后,将首先进入用户屏幕状态(即黑屏),并有光标闪烁,此时用户需输入数据。
(2)输入数据的格式:
两个整数,中间用逗号分开,最后按回车键结束。
四、实验要求
1.实验前充分预习,熟悉操作方法。
2.实验过程中,记录程序运行结果、现象及出错信息,并分析原因。
3.实验中随时注意保存源程序,要指定适当的文件名,以备检查。
4.实验总结,对实验内容中的有关问题进行说明。
五、思考题
1.编辑并运行将自然数1-100累加的程序。
2.进一步熟悉TC2.0集成环境的功能,写出下列操作所使用的菜单命令及快捷键。
(1)新建程序文件
(2)保存程序文件
(3)打开程序文件
(4)程序文件换名保存
(5)程序编译
(6)程序编译并连接
(7)程序编译、连接并运行
(8)查看程序运行结果
(9)单步运行程序
(10)添加监示变量
3.程序中的语法错误和逻辑错误对程序运行及结果有何影响?
实验二数据类型、运算符及表达式
一、实验目的
1.了解C语言数据类型的概念,熟悉各种类型常量的表示及用法
2.掌握整型、字符型和实型三种基本类型变量的定义、赋值和使用方法。
3.掌握算法、关系、逻辑表达式的特点及用法。
4.熟悉自增、自减运算的特点,掌握自增、自减运算符的用法。
5.进一步认识C语言程序的结构特点,学习简单程序的编写方法。
二、实验内容
1.整型变量及算术运算:
要求:
编辑运行下列程序,分析运行结果。
#include“stdio.h”
main()
{
intm,a,b,c,d,e;
printf(“m=”);
scanf(“%d”,&m);
a=m+1;
b=m-2;
c=m*3;
d=m/4;
e=m%5;
printf(“a=%d,b=%d,c=%d,d=%d,e=%d\n”,a,b,c,d,e);
}
2.实型变量及运算:
#include“stdio.h”
main()
{
floatm,n,s;
printf(“m=”);
scanf(“%f”,&m);
printf(“n=”);
scanf(“%f”,&n);
s=m*n;
printf(“s=%f\n”,s);}运行结果为256
3.字符型变量及运算:
(1)输出字符程序:
#include“stdio.h”
voidmain()
{
charc1,c2;
c1=’a’;
c2=’b’;
printf(“%c%c\n”,c1,c2);}运行结果为a,b
(2)字符程序分析:
#include
main()
{
charc1=’A’,c2=’B’,c3=’C’,c4=’\101’,c5=’\x4D’;
printf(“%d\t%c\t%d\n”,c1,c2,c3);
printf(“%c\t%c\n”,c4,c5);}
4.关系运算和逻辑运算:
(1)用程序计算关系表达式的值:
表达式:
x+6>=y>x*3(x=5,y=8)
(2)用程序计算逻辑表达式的值:
从键盘任意输入整数x、y的值,计算下面逻辑表达式的值。
表达式:
x>=y||Y>x*3&&!
(x>=25)
5.自增和自减运算:
(1)#include
main()
{
inti,j,m,n;
i=8;
j=10;
m=++i;
n=j++;
printf(“%d,%d,%d,%d\n”,i,j,m,n);}
(2)分别将上述程序作如下改动并运行。
①将第4、5行改为:
m=i++;
n=++j;
②程序改为:
main()
{inti,j;
i=8;
j=10;
printf(“%d,%d\n”,i++,j++);
}
③在②的基础上,将printf语句改为:
printf(“%d,%d\n”,++i,++j);
④再将printf语句改为:
printf(“%d,%d,%d,%d\n”,i,j,i++,j++);
⑤程序改为:
main()
{inti,j,m=0,n=0;
i=8;j=10;
m=i--;
n=--i;
printf(“i=%d,j=%d,m=%d,n=%d\n”,i,j,m,n);
printf(“i=%d,j=%d,m=%d,n=%d\n”,--i,j--,m,n);
}
(3)main()
{
intx=6,y,z;
x*=9+1;
printf(“%d\n”,x--);
x+=y=z=10;
printf(“%d\n”,x);
x=y==z;
printf(“%d\n”,-x++);}
三、实验要求:
1、充分预习实验内容,写出实验所需程序,分析给出源程序的运行结果。
2、实验中,记录各程序运行结果、出错信息及现象,并分析说明出错原因。
3、实验中随时注意保存源程序,要指定适当的文件名,以备检查。
4、对比各程序的分析结果与实际运行结果的差异,并分析原因。
四、思考题
1、x=++i;与x=i++;两语句在执行时有何区别?
2、字符常量与字符串常量有什么区别?
3、字符型常量或变量能否参与算术、关系及逻辑运算?
若能,应如何运行运算?
4、常用的调试方法有哪两种?
实验三顺序结构程序设计
一、实验目的
1.掌握printf()、scanf()、putchar()、getchar()等基本输出、输入函数的格式及其主要用法。
2.熟练掌握顺序结构的程序设计。
二、实验内容
1.基本输出函数的用法。
编辑运行下面的程序,并根据执行结果分析程序中各个语句的作用。
#include“stdio.h”
main()
{
inta,b;
floatd,e;
charc1,c2;
doublef,g;
longm,n;
unsignedintp,q;
a=61;b=62;
c1='a';c2='b';
d=5.67;e=-6.78;
f=1234.56789;g=0.;
m=50000;n=-60000;
p=32768;q=40000;
printf("a=%d,b=%d\nc1=%c,c2=%c\n",a,b,c1,c2);
printf("d=%6.2f,e=%6.2f\n",d,e);
printf("f=%15.6f,g=%15.10f\n",f,g);
printf("m=%ld,n=%ld\np=%u,q=%u\n",m,n,p,q);}
2.基本输入输出函数的用法。
编辑运行下面的程序,并分析各个语句的作用。
#include“stdio.h”
main()
{
inta,b;
floatc,d;
longe,f;
unsignedintu,v;
charc1,c2;
scanf(“%d,%d”,a,b);
scanf(“%f,%f”,c,d);
scanf(“%ld,%ld”,e,f);
scanf(“%o,%o”,u,v);
scanf(“%c,%c”,c1,c2);
printf(“\n”);
printf(“a=%7d,b=%7d\n”,&a,&b);
printf(“c=%10.2f,d=%10.2f\n”,&c,&d);
printf(“e=17ld,f=%17ld\n”,&e,&f);
printf(“u=%o,d=%o\n”,&u,&v);
printf(“c1=%c,d=%c\n”,&c1,&c2);
这个程序有语法错误吗?
为什么?
3.顺序结构程序设计。
(1)输入一个小写字母,输出其大写字母及对应的ASCII码值。
(2)输入一个整数,输出其最低位数字及最高位数字。
(3)已知圆柱体横截面圆半径r,圆柱高h。
编写程序,计算圆周长l、圆面积s和圆柱体体积v,并输出计算结果。
(4)输入两个复数,输出其和与差。
三、实验指导
1.基本输出函数的用法。
⑴运行所给出的源程序,对照结果分析各语句的作用。
⑵将程序中的第二、第三个printf语句修改为如下形式,然后运行程序,察看结果。
printf("d=%-6.2f,e=%-6.2f\n",d,e);
printf("f=%-15.6f,g=%-15.10f\n",f,g);
⑶将上述两个printf语句进一步修改为如下形式,然后运行程序,察看结果。
printf("d=%-6.2f\te=%-6.2f\n",d,e);
printf("f=%-15.6f\tg=%-15.10f\n",f,g);
⑷将程序的第10-15行修改为如下语句:
a=61;b=62;
c1='a';c2='b';
f=1234.56789;g=0.;
d=f;e=g;
p=a=m=50000;q=b=n=-60000;
运行程序,并分析结果。
⑸修改⑴中的程序,不使用赋值语句,而用下面的scanf语句为a、b、c1、c2、d、e输入数据:
scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);
①请按照程序中原来的数据,选用正确的数据输入格式,为上述变量提供数据。
②使用如下数据输入格式,为什么得不到正确的结果?
输入数据:
6162ab5.67-6.78
⑹进一步修改⑸中使用的程序,使f和g的值用scanf()函数输入。
⑺进一步修改上面的程序,使其他所有变量的值都改用scanf()函数输入。
①参考程序
②数据输入格式
Input(a,b,c1,c2,d):
6162ab5.67-6.78
Input(f,g):
1234.0.
Input(m,n,p,q):
50000-600003267840000
⑻修改⑺中的程序,使c1、c2的数据用getchar()函数输入,用putchar()函数输出。
①可按照如下方法修改程序:
将程序中的“scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);”语句用以下四个语句替换:
scanf("%d%d%",&a,&b);
c1=getchar();
c2=getchar();
scanf("%f%f",&d,&e);
②使用与⑺相同的数据输入格式输入数据。
③请分析:
使用如下格式为a、b、c1、c2输入数据时会出现什么结果?
运行程序验证所分析的结论。
输入数据格式:
6162
a
b
2.基本输入输出函数的使用:
(1)调试上述程序无语法错误后,用下面的测试数据,对程序进行测试:
a=123,b=456,c=17.6,d=71837.65,e=70000,f=,u=62000,v=58765,c1=’a’,c2=’b’
分析运行结果。
特别注意输入c1,c2的值是什么?
为什么?
(2)将输入e和f的语句改为:
scanf(“%d,%d”,&e,&f);
再用上述测试数据测试并分析结果。
(3)将输入u、v的语句改为:
scanf(“%d,%d”,&u,&v);
再用上述测试数据测试并分析结果。
(4)将输出e、f的语句改为:
printf(“e=%17d,f=%17d\n”,e,f);
再用上述测试数据测试并分析结果。
(5)将输出u、v的语句改为:
printf(“u=%u,v=%u\n”,u,v);
或
printf(“u=%d,v=%d\n”,u,v);
再用上述测试数据测试并分析结果。
(6)scanf(“%c,%c”,&c1,&c2);语句之前加一个语句:
getchar();
(7)请读者自己修改程序和改变数据输入的形式,分析各种情况下的输入与输出。
四、实验要求:
1、充分预习实验内容,写出实验所需程序,分析给出源程序的运行结果。
2、实验中,记录各程序运行结果、出错信息及现象,并分析说明出错原因。
3、实验中随时注意保存源程序,要指定适当的文件名,以备检查。
4、对比各程序的分析结果与实际运行结果的差异,并分析原因。
五、思考题:
1.在“基本输出函数的用法”内容⑶中,e和g都是用“\t”进行格式控制,但为什么没有显示在同一列的位置上?
2.说明输入、输出字符型、整数、长整型、浮点型及双精度浮点型数据时分别应使用的格式字符?
3.简述格式化输出函数printf的格式化字符串中可使用的转义字符及其功能
实验四选择结构程序设计
一、实验目的:
1.学会使用逻辑表达式描述问题中的条件。
2.掌握if语句三种形式及其用法。
3.掌握switch语句的格式及使用。
4.学会设计有实用价值的选择结构程序。
二、实验内容:
1、判断任意一年是否为闰年,输入年份,执行程序后输出是否为闰年。
2、输入四个实数,输出其最大值与最小值。
3、输入三个实数,按从小到大的顺序输出。
4、输入x值(实数),输出对应的函数值。
-x2+x-1(x<-10)
y=10(-10≤x<0)
x+1(0≤x≤5)
(5<x)
5、由键盘输入一个字符,判断它是字母、数字还是空白(空格、换行、Tab键),并输出相应的提示信息。
6、输入某学生的成绩,输出相应的信息:
成绩在90~100之间输出“Verygood!
”;在70~89之间输出“Good!
”;在60~69之间输出“Pass!
”;60分以下输出“Nopass!
”。
要求:
(1)用if语句编写程序;
(2)用switch语句编写程序。
7、编写一个能够进行加减法运算的程序,要求:
从键盘任意输入两个实数,然后输入一个运算符,当运算符为“+”时对两个数进行加法运算,为“-”时对两个数进行减法运算,其他符号时,只显示输入的符号不进行运算。
8、已知某公司员工的保底薪水为500元,某月所接工程的利润profit(整数)与利润提成的关系如下(单位:
元):
profit≤1000没有提成
1000<profit≤2000提成10%
2000<profit≤5000提成15%
5000<profit≤10000提成20%
10000<profit提成25%
从if语句、switch语句中任选一种编程:
根据输入的profit值计算并输出员工的薪水(=保底薪水+提成)。
9、编辑如下程序,并调试正确。
程序功能:
求分段函数的值并输出。
include“stdio.h”
main()
{floatx;
scanf(“%d”,&x);
if(x≤10);
if(x≤1)y=
else
y=sqrt(x-1)
printf(“y=%f\n,y);
else
printf(“undefinedvalue!
\n”);
}
三、实验要求:
1、课前充分预习实验内容,准备好实验所需的程序。
2、实验中随时注意保存源程序,要指定适当的文件名,以备检查。
3、记录主要的调试过程、错误信息及运行结果。
四、实验总结:
1、if语句能否完全代替switch语句进行程序设计?
2、在if语句的嵌套结构中,如何确定else与if的匹配关系?
实验五循环结构程序设计
一、实验目的:
1.熟练掌握while、do-while和for三种循环控制语句的特点及其编程应用。
2.掌握break、continue语句的功能及应用。
3.掌握二重循环结构程序的设计方法。
4.掌握循环结构程序的调试方法。
二、实验内容:
1、输入10个实数,输出其和、平均值及最大值。
(分别用while、for语句编程实现)
2、数据统计问题:
从键盘输入一批任意数量的正整数,统计其中不大于100的数值个数。
3、编写并调试程序,使用for循环控制语句实现上面的数据统计问题。
4、输入一个正整数,判断并输出其是否为素数。
5、输入一行字符,剔除如下字符后,再按原来的输入顺序输出。
要剔除的字符为:
K、a、h、5、#。
6、从键盘输入一串字符(按回车结束),统计其中字母、数字及其它字符的个数并输出。
7、输入一个正整数,输出其各位数字之和。
8、输出如下图案:
#
###
#####
#######
#####
###
#
9、输入一个正整数n,求1!
+2!
+…+n!
并输出。
10、输入以下程序,并调试正确:
程序功能:
输入一串字符,将其中的大写字母转换成对应的小写字母并输出。
如输入:
ABCD987EF#$,则输