实训1: C语言上机环境介绍
一、实训目的
1、
掌握Windows DOS环境的操作以及有效管理用户程序文件。
2、
熟悉C程序的实现过程和方法。
(1)
掌握编辑、编译、连接、运行程序的过程和方法。
(2)
了解常见的两种语法错误(Error/Warning)。
3、
了解Turbo C集成开发环境强大的功能。
二、实训内容
1、
Windows DOS环境的操作以及有效管理用户程序文件,即:掌握
切换工作驱动器;创建、进入用户目录;目录列表(注意可以随时用图形界面比较)的命令。
2、
了解Turbo C集成开发环境的功能,熟悉菜单、热键基本操作
(1)
启动、退出Turbo C集成开发环境。
(2)
了解F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用。
(3)
激活文件菜单(File)、编译菜单(Compile)、运行菜单(Run)、监视菜单(Break/Watch),查看菜单选项。
3、
在Turbo C下完成“源程序清单”中规定的程序题。
三、实训要求
1、
实训中仔细观察本实训创建的目录、文件,回答实训小结和思考中的问题。
2、
在Turbo C下完成“源程序清单”中规定的程序题。编辑、编译、运行程序并获得程序结果;如果程序有错,记录编译、连接遇到的提示错误。仔细思考出错原因,并更正之。
3、
编制的程序必须保存在D:\用户目录中。注:用户目录可以用学号或姓名拼音简写。
四、实训步骤、过程
1、
启动操作系统,查找Turbo C集成开发环境安装位置(路径)。假如为:C:\TC,查看目录中是否有tc.exe,此程序就是Turbo C集成开发环境的执行程序。记录您的系统Turbo C2.0的安装位置
。
2、
进入DOS窗口,切换到D盘,创建、进入用户目录。
(1)
开始-程序-附件-命令提示符,进入DOS窗口;
(2)
D:<CR>,切换到D盘;
(3)
md \您的学号<CR>,创建以学号为目录名的用户目录;
(4)
dir<CR> , 查看目录是否创建好
(5)
cd \您的学号<CR>, 进入您的用户目录
以后您的程序默认保存在此目录下!
3、
启动、退出Turbo C集成开发环境。
(1)
启动Turbo C集成开发环境。如Turbo C集成开发环境安装位置(路径)为:C:\TC,则:C:\>c:\tc\tc<回车> 启动Turbo C集成开发环境。
(2)
退出Turbo C集成开发环境。File-Quit 退出Turbo C集成开发环境
(3)
再次启动Turbo C环境。C:\>c:\tc\tc<回车>
4、
Turbo C环境中,F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用。
(1)
重复按F6键,仔细观察。当前激活窗口在编辑窗口、消息窗口之间切换。
(2)
重复按F5键,仔细观察。当前激活窗口最大,正常状态之间切换。
(3)
先按F10,可以看到主菜单被激活,按→、←,主菜单各个项被依次激活,试着按↑、↓可以打开相应菜单。重点浏览File(文件管理)、Run(程序运行控制)、Compile菜单(程序编译、连接)菜单。最后按ESC键光标回到编辑窗口。
(4)
主菜单各个项,首字母为红色(高亮度)。可以按Alt+高亮字母,直接激活相应菜单选项。例如按Alt+F激活File菜单,比F10再按光标快捷多了!按ESC键光标回到编辑窗口。
(5)
观察当前源程序名NONAME.C表示当前的程序还没有取名字,以后保存程序时,系统会提示输入源程序名。
5、
按照下面步骤完成第1个程序题。
(1)
“File”-“New”创建一个新的源程序文件
(2)
输入源程序,全屏幕编辑源程序。
(3)
“File”-“Save”保存源程序(文件名应按题目要求)。观察编辑窗口源程序名是否已经修改。用Windows资源管理器查看用户目录中是否产生了源程序文件*.c。
(4)
“Compile”-“Build all”编译、连接源程序。如果有语法错误,修改源程序后再次编译、连接程序,直到没有语法错误,系统提示成功。
编译连接成功后用Windows资源管理器查看用户目录中是否产生了目标文件*.obj,可执行文件*.exe,观察其命名规则。
(5)
“Run”-“Run”运行程序,用Alt-F5切换到用户屏幕查看运行结果。对比结果是否与预期相同。如果发现逻辑错误-结果与预期不同,修改源程序,重复(3)-(5)保存、编译、运行程序,直到程序获得正确结果。
注意:
n
必须顺序完成程序编辑、编译连接、运行的各个过程。没有正确编译成功的程序是不可能运行的!
n
程序开发中经常用“File”-“Save”保存源程序以免意外导致源程序丢失。
6、
按步骤5完成第2个程序题。注意:Error-致命错的程序不能产生目标程序、执行程序,必须修改程序,并重新编译,直到成功。
7、
按步骤5完成第3个程序题。注意:Warning-警告错的程序可以产生目标程序、执行程序,试着运行一下,结果是?!
^_^,还是修改吧,警告错一般也意味着程序有毛病,尽管这种程序可以强行编译连接为可执行程序,但结果一般都有问题。
五、源程序清单、测试数据、结果。
1、
最简单的C程序。(要求文件名:1_1.c)
main()
{
printf(“Hello world!\n”);
}
2、
一个具有致命语法错的程序。(要求文件名:1_2.c)
main()
{
int i=9
printf(“i=%d\n”,i)
}
3、
一个具有警告语法错的程序。(要求文件名:1_3.c)
main()
{
int i=9,j,s;
s=i+j;
printf("s=%d\n",s);
}
六、实训出现的问题、实训结果分析(语法错英语提示,中文翻译,原因,您的理解?)
1、
2、
3、
七、实训小结和思考
1、
您自己的系统上Turbo C安装目录在哪里?Turbo C集成开发环境程序名是什么?
答:Turbo C安装目录是:c:\tc ;Turbo C集成开发环境程序名为:tc.exe。
2、
写出常见Dos命令的格式。
答:
切换工作驱动器:X:...> 驱动器:<CR>
创建用户目录:X:...> md 目录名<CR>
进入用户目录:X:...> cd 目录名<CR>
目录列表:X:...> dir<CR>
启动程序:X:...> 路径\程序名<CR> ,例如:c:\tc\tc<CR>
注:<CR>表示回车键。
3、
F5/F6;F10,→、←、↑、↓功能键;Alt+高亮度键的效果和作用?
答:
F10,→、←、↑、↓:F10激活Turbo C主菜单,光标键选择菜单之间;回车确认。
F5:编辑窗口或消息窗口最大/恢复;
F6:切换编辑窗口/消息窗口。
Alt+高亮度键,直接激活主菜单项。
4、
与C语言程序直接相关的几种文件及扩展名分别是什么?
答:C语言源程序、目标程序、可执行程序,其后缀分别为*.c,*.obj,*.exe。
5、
C语言程序主要的实现过程?
答:分为编辑、编译、连接、运行四个阶段。其中,开发环境中,编辑完成后,可以直接启动运行,但分解的阶段仍然是四个,前面阶段未完成,程序仍然不能运行。
6、
C语言程序主要的错误?
答:程序错误分为:
(1)
语法错误:编译系统可以协助查找出来的语法上的错误。语法错还包括:致命错Error/和警告错Warning。致命错必须修改!,警告错可以不修改,但常常暗示程序存在问题。
(2)
逻辑错误:运行结果与预期不符,与程序算法逻辑相关的错误。
一、实训目的
1、
掌握C语言基本数据类型(整型,实型,字符型)数据的常量表示、变量的定义和使用。
2、
掌握常见格式控制字符对输出结果的控制作用。
3、
了解数据溢出错误和舍入误差(以整型、实型数据为例)。
4、
进一步熟悉C程序的实现过程。
二、实训内容
在Turbo C下完成“源程序清单”中规定的程序题(4个)。
三、实训要求
1、
实训前认真预习,自行分析4个程序题的结果,体会本次实训的目的并了解实训要求。实训时仔细对比程序实际运行结果,认真思考并回答实训小结和思考中的问题。
2、
在Turbo C下完成“源程序清单”中规定的程序题。编辑、编译、运行程序并获得程序结果;如果程序有错,记录编译、连接遇到的提示错误。仔细思考出错原因,并更正之。
3、
编制的程序必须保存在D:\用户目录中。注:用户目录可以用学号或姓名拼音简写。
4、
学生可以对实训程序进行修改、补充,以便上机完成自己需要的程序验证和测试。在完成实训要求的工作外,要学会创造性的工作。
四、实训步骤、过程
1、
启动操作系统,进入DOS窗口;切换到用户磁盘,创建、进入用户目录。(方法、命令与实训1相同)
2、
启动Turbo C集成开发环境。(方法与实训1相同)
3、
完成4个程序题。(编辑、编译连接、运行程序,步骤与实训1相同)
注:
(1)仔细观察2_3,2_4两个程序的编译、连接、运行过程,系统提示错误吗?程序运行结果有问题吗?
(2)经常用“File”-“Save”(热键F2)保存源程序以免意外导致源程序丢失。
4、
退出Turbo C集成开发环境,关机。
五、源程序清单、测试数据、结果。(注释供阅读、理解程序,上机时不必输入)
1、
写出一个程序测试整型、字符型数据表示,并输出以验证是否正确。(要求文件名:2_1.c)
main()
{
int x=010,y=10,z=0x10; /* 整型数据表示 */
char c1='M',c2='\x4d',c3='\115',c4=77,c; /* 字符型数据表示 */
/* 整型数据的输出 */
printf("x=%o,y=%d,z=%x\n",x,y,z);
/* 数据以原进制输出,注意是否有前导0或0x */
printf("x=%d,y=%d,z=%d\n",x,y,z);
/* 数据以10进制输出,换算到10进制,结果对吗? */
/* 字符型数据的输出 */
printf("c1=%c,c2=%x,c3=%o,c4=%d\n",c1,c2,c3,c4);
/* 数据以原进制输出,注意是否有前导0或0x */
printf("c1=%c,c2=%c,c3=%c,c4=%c\n",c1,c2,c3,c4);
/* 结果都是什么字符?,也就是说字符可以自由的表示成几种形式? */
printf("c1=%d,c2=%d,c3=%d,c4=%d\n",c1,c2,c3,c4);
/* 看看这些字符的10进制ASCII码,哦,ASCII码一样,同一种字符 */
/* 字符型数据参与算术运算 */
c=c1+32; /* 字符怎么参加了数学运算,哦,是字符对应的ASCII码-整数
/*
参与数学运算;结果还是一个整数-另外一个字符的ASCII码 */
printf("c=%c,c=%d\n",c,c);
/* 看看这个字符是什么?哇,'M'+32='m'了,看看ASCII码表,原来如此! */
}
参考结果:
x=10,y=10,z=10
x=8,y=10,z=16
c1=M,c2=4d,c3=115,c4=77
c1=M,c2=M,c3=M,c4=M
c1=77,c2=77,c3=77,c4=77
c=m,c=109
2、
常见预定义的转义字符对输出的控制作用。(要求文件名:2_2.c)
main()
{
int a,b,c;
a=5,b=6,c=7;
printf("12345678123456781234567812345678\n"); /* 打印一个标尺以便检查输出结果 */
printf("%d\n\t%d
%d\n %d %d\t\b%d\n",a,b,c,a,b,c); /* 打印1个字符串 */
printf("c:\\a.txt");
/* 打印一个文件名 */
printf("\n");
}
参考结果:
12345678123456781234567812345678
5
6 7
5 67
c:\a.txt
3、
整型数据的溢出错误。(要求文件名:2-3.c)
整型(int型)数据的表达范围是-32768~32767,如果最大允许值32767+1,最小允许值-32768-1,会出现什么情况?
main()
{
int a,b;
a=32767;
b=a+1;
printf("a=%d,a+1=%d\n",a,b);
a=-32768;
b=a-1;
printf("a=%d,a-1=%d\n",a,b);
getch(); //获得键盘击键,起到暂停程序运行作用,目的是保留用户屏幕,便于查看结果。
}
参考结果:
a=32767,a+1=-32768
a=-32768,a-1=32767
4、
实型数据的舍入误差。(要求文件名:2_4.c)
实型变量只能保证7位有效数字,后面的数字无意义
main()
{
float a,b;
a=123456.789e5;
b=a+20;
printf("a=%f,b=%f\n",a,b);
printf("a=%e,b=%e\n",a,b);
}
参考结果:
a=12345678848.000000,b=12345678848.000000
a=1.23457e+10,b=1.23457e+10
六、实训出现的问题、实训结果分析(语法错英语提示,中文翻译,原因,您的理解?)
1、
2、
3、
七、实训小结和思考
(3)
C语言中整型数据、一般的字符型数据分别可以以什么形式表示?
答:整型数据可以用:10进制、8进制、16进制表示;
一般字符型数据可以用:字符本身(例‘M’)或转义表示。转义表示可以用字符的8进制或16进制ASCII码值表示(例‘\115’、‘\x4d’)。
(4)
程序1_1.c中c4=77,c=c4+32说明什么问题?
答:C语言中字符型数据存储的是字符的ASCII码值(1个字节的整数),所以可以将一个整数(看作字符的ASCII码)赋值给字符变量。本实训即允许:c4=77。同时,C语言字符数据可以参与算术运算,其本质是字符数据的ASCII码值(整数)参与算术运算。本实训即允许c4+32,其结果仍然是一个整数。再将结果看作是一个字符的ASCII码值,赋值给字符变量c,即本实训中的c=c4+32。
另外,从1_1.c可以看出小写字母ASCII码>大写字母ASCII码,同一字母小写大写相值32。
(5)
程序1_1.c中c=77是否还可以写成c=0x4d,c=0115?
答:可以,整数可以直接赋值给字符变量,即10、8、16进制形式的整数都可以赋值给字符变量。
(6)
简述转义字符:‘\n’,‘\t’,‘\b’的功能?
答:(略,学生补充,不要也给我写略哦,^_^)
(7)
可以用一个字符串表示文件的路径,请问路径的连接符‘\’在C语言中如何表示?若要表示D:\wubin\stu.dat这个文件,C语言如何表示?
答:‘\’在C语言中如何表示‘\\’;C语言要表示D:\wubin\stu.dat这个文件,应当表示为“D:\\wubin\\stu.dat”。
(8)
观察2_3,2_4两个程序的编译、连接、运行过程,系统提示错误吗?程序运行结果有问题吗?思考如何解决?
答:系统不提示错误,但运行结果不是我们希望的或者说是错误的。对2_3可以使用长整型数据类型,对2_4可以使用双精度数据类型解决。
(9)
使用计算机处理数据可能出现溢出错误和舍入误差,这对我们编制程序有什么要求?
答:要求我们根据实际对数据的需求(范围、精度)正确选择合适的数据类型。另外,由于实数存在舍入误差,使用时要注意:
l
不要试图用一个实数精确表示一个大整数,记住:浮点数是不精确的。
l
实数一般不判断“相等”,而是判断接近或近似。
l
避免直接将一个很大的实数与一个很小的实数相加、相减,否则会“丢失”小的数。
l
根据要求选择单精度、双精度。
(10)
写出一个演示字符型数据溢出的程序。(提示:参考2_3.c)
答:参考程序如下:
main()
{
char a,b;
a=127;
b=a+1;
printf("a=%d,a+1=%d\n",a,b);
a=-128;
b=a-1;
printf("a=%d,a-1=%d\n",a,b);
getch();
}
参考结果:
a=127,a+1=-128
a=-128,a-1=127