1、实验一熟悉C程序开发环境实验一 熟悉C程序开发环境实验目的(1) 掌握在VC2010的集成开发环境编辑、编译、运行程序的主要操作。(2) 学习通过查看VC2012的错误信息提示定位错误。实验范例1.创建第一个C程序(1)创建步骤如下:(1)VC2010按解决方案-项目-文件的层次结构组织程序,创建一个C程序需要先创建一个工程和解决方案。在打开的VC2010开发环境中,单击菜单“文件”-“新建”-“项目”,弹出“新建项目”对话框如图1-1所示。在“已安装的模板”列表中选择“空项目”选项单;在下方文本框“名称”中输入新建项目名称,此处为“EX1_1”;文本框“位置”可输入或单击其后的按钮在“选择目
2、录”指定新建文件存放的位置,此处为“D:C语言程序设计C2012CPP”, 解决方案名称默认与项目名称相同。按“确定”后VC2010自动创建EX1_1解决方案的结构和相应文件,文件结构如图1-2所示。图1-1 新建空项目图1-2 生成的解决方案(2)在“解决方案资源管理器”视图中选择“源文件”文件夹,单击“项目”-“添加新项”,弹出“添加新项”对话框,选择“C+文件”选项,在下方文本框“文件名”中输入新建项目名称,此处为“EX1_1”,按添加生成EX1_1.cpp文件。图1-3 添加C+文件(3)按“确定”后进入编辑界面,在编辑区编辑第一个C程序EX1_1.cpp,程序内容如图1-4所示图1-
3、4 编辑C程序(1) 保存编辑好的C源程序,可以直接按工具栏上的“保存”按钮,也可以执行菜单命令“文件”-“保存”。(2)编译菜单命令“生成”-“生成解决方案”,将执行编译连接,生成exe文件 ,输出窗口中会给出是否成功的信息,如出现1生成成功。11已用时间 00:00:04.14= 生成: 成功 1 个,失败 0 个,最新 0 个,跳过 0 个 =说明EX1_1.exe生成成功,可进行下一步操作;否则在输出窗口中显示出错信息,需要改正错误后重新组建。(3)执行编译完成可以启动调试,单击工具栏上 按钮,执行程序,会在控制台窗口中显示执行的结果,如图1-5所示。图1-5 在控制台窗口中显示结果(
4、4)关闭解决方案当一个程序完成,要开始编写另一个程序时,一定要关闭活动解决方案,执行菜单命令“文件”“关闭解决方案”。否则新创建或打开的其它文件将不能正常的编译,因为活动工作记录的文件始终是创建活动空间时关联的那个文件。2.解读第一个C程序(1)生成的文件解读打开保存C源程序的文件夹,可以发现除源文件之外,还生成了如表1-2所示的文件和一个Debug文件夹。表1 生成C程序VC产生的文件类型后缀名解释cpp源程序文件sln解决方案文件vcxproj项目文件FiltersVC+ Project Filters FileUserStudio Project User Options file除CP
5、P文件之外,其它文件都是由开发环境在“生成解决方案”时自动产生,所以保存C程序只需要保存CPP文件。Debug文件夹中存放着生成的obj文件,exe文件及其它一些中间文件。(2)程序语法解读Hello程序是常见的入门程序,它的功能从执行结果可以看出,是输出一行字符串“Hello C World!”。#includevoid main(void) printf (Hello C Worldn);getchar();对此程序简单解读如下:(1)C程序必须由一个main函数构成,系统自动执行main函数。(2)程序的执行从main函数开始,顺序执行每一条语句,到main函数右括号结束(3)print
6、f是标准输出函数,输出的字符串在一对西文双引号之间,例如Hello C Worldn。(4)C语句以分号结束。(5)控制台输出时,系统会紧跟着自动输出“press any key to continue”,等待按任意键关闭控制台窗口。(6)n是一个转义字符,转义字符是一些键盘不能输入的控制字符,此处表示“换行”(7)#include是一个预编译命令,表示要加入stdio.h文件(标准输入输出函数头文件),要在程序中使用printf函数必须使用该命令。(8)getchar()函数的作用是等待输入一个字符,在此起“按任意键继续。”的作用。(3)思考:如果要输出两行问候语句Hello C World
7、!Hello C World!下面几组语句哪些是正确的,哪些是错误的(A)printf (Hello C World);printf (Hello C World);(B)printf (Hello C Worldn);printf (Hello C World);(C)printf (Hello C Worldn Hello C World);3.认识程序错误程序错误区分为语法错误和逻辑错误,语法错误包括编译错误和连接错误,逻辑错误又包含运行错误。(1)语法错误编译错误,是指不符合高级语言定义的语法书写规则,编译或解释程序能自动检查出语法错误,只需根据错误提示进行修改。例如,双引号是每个字符
8、串的标志,字符串前后没有加双引号或双引号不完整就是语法错误。要打开实验文件error1-1.cpp。首先需要创建一个空项目error1-1(步骤参见项目EX1_1的创建),在“解决方案资源管理器”视图中选择“源文件”文件夹,单击“项目”-“添加现有项”,选择实验文件error1-1.cpp。要注意的是:确保其它解决方案已关闭。编译该程序文件啊。发生语法错误的程序,编译通不过,编译器会在输出窗口中给出错误信息如下图1-6所示。图1-6 编译错误示例向上拖动输出窗口的滚动条可以看到编译错误,C语言的错误信息的形式: 文 行号错误编号 错误信息 error1-1.cpp(4): error C200
9、1: 常量中有换行符 双击输出窗口中的错误信息可自动定位到相应错误行,要注意的是(1)错误信息往往只能起提示作用,不是特别精确反映错误产生的原因,更不会告诉你如何修改。例如上图所示,产生错误的原因是缺少右双引号,但出现的提示都没有提及双引号。根据提示能快速反应错误产生的原因需要经验的积累。(2)一条语句错误可能会产生若干条错误信息,只要修改了这条错误,其他错误会随之消失。特别提示:一般情况下,第一条错误信息最能反映错误的位置和类型,所以调试程序时务必根据第一条错误信息进行修改,修改后,立即重新编译程序,如果还有很多错误,再一个一个地修改,即,每修改一处错误要重新编译一次程序。(2)连接错误连接
10、错误,是编译成功后,连接器连接外部程序的时候产生的错误。例如,打开程序文件error1-2.cpp, 当main函数名写错了,连接器不认识该字符串,连接器在输出窗口中给出错误信息如下图1-7所示,提示的错误是找不到入口点1- 已启动生成: 项目: error1_2, 配置: Debug Win32 -1生成启动时间为 2012/9/6 11:14:55。1PrepareForBuild:1 正在创建目录“D:C语言程序设计C2012CPPerror1_2Debug”。1InitializeBuildStatus:1 正在创建“Debugerror1_2.unsuccessfulbuild”,因
11、为已指定“AlwaysCreate”。1ClCompile:1 error1-2.cpp1LINK : fatal error LNK1561: 必须定义入口点11生成失败。11已用时间 00:00:01.01= 生成: 成功 0 个,失败 1 个,最新 0 个,跳过 0 个 =图1-7 连接错误示例连接错误不提示出错行数,但小程序的定位也比较简单,一般是函数和外部变量的名称出错,只需根据错误提示的字符串去寻找可能出现的位置 。(3)逻辑错误逻辑错误则是程序设计上或逻辑上的错误,指程序已生成可执行文件,但运行出错或不能得到正确的结果,这可能是由于算法中问题说明不足,解法不完整或不正确所造成的。
12、逻辑错误的测试需要事先准备好测试数据,测试数据是指一组输入及对应的正确输出。测试数据的设计直接关系到能不能测试出程序可能包含的错误。例如打开文件error1-3.cpp以下程序会产生一个逻辑错误。程序的功能是如果输入一个整数1,则输出“true”,输入其它整数则输出“false”。#includevoid main(void) int x; scanf(%d,&x);if(x=1) printf(true);else printf(false);这个程序的测试用例可设计如下:测试用例一:输入:1输出:true测试用例二:输入:0输出:false测试用例三:输入:10输出:false但在测试过程
13、中,只有测试用例一的执行是正确的,其它二个测试用例的执行是错误的。说明该程序出现逻辑错误。该程序的逻辑错误在于“x=1”写成了“x=1”,修改后三个测试用例均能正确。程序运行时输入测试数据,如果程序没有产生预先设计的正确结果,程序员必须查找程序的错误,修改错误,再重新测试程序。逻辑错误出错位置需要程序员对程序代码进行分析,一般会借助一些调试手段,如单步执行,设断点,watch窗口观测等等,以后陆续介绍。(4)运行错误运行错误是指程序经编译连接生成可执行文件后,在运行的过程中系统报错,没有运行结果。常见的运行错误有:除数为0;死循环;浮点指针出错等等。运行错误往往是逻辑错误引起的。逻辑错误除了运
14、行错误还包括的情况是能得到运行结果,但那运行结果不正确,必须用测试用例来判断程序的正确性。 例如,当下面程序文件error1-4.cpp运行时执行以下测试用例会产生运行错误 。#includevoid main(void) int x,y,z;printf(请输入x:); scanf(%d ,&x );printf(请输入y:); scanf(%d,&y);z=x/y;printf(z=%d,z);测试用例:x=8,y=0; z无效程序的错误在于对y的值没有检查,一旦y的输入值为0,就会引起异常。可修改如下#includevoid main(void) int x,y,z;printf(请输入x:); scanf(%d ,&x );printf(请输入y:); scanf(%d,&y);if(y=0) z=0;elsez=x/y;printf(z=%d,z);实验内容任务一:改错1.打开程序文件error1-5.cppint mian(void) printf(*n); printf( Welcomen) printf(*n); return 0;2.程序的功能是输出三行文本,请根据VC2010的compile和link错误信息改正错误,并作记录任务二:编写程序,输出下面图案:ex1_2.cpp 注意:输出的“空格”,“ 换行”的方法。源程序清单:
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1