《第 1章 C语言与计算机.docx》由会员分享,可在线阅读,更多相关《第 1章 C语言与计算机.docx(180页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第1章C语言与计算机实验1-1 VC6.0的使用实验内容:1、熟悉VC6.0集成开发环境2、编写及编译运行一个简单的C程序3、运行一个自己仿写C程序实验目的及要求:1、学会使用VC6.02、识别源文件中常见的错误实验重点:1、熟悉C语言的编译环境,了解在VC6.0上如何编辑、编译、连接和运行一个C程序。 实验难点:I、体会VC6.0如何利用工程(project)组织程序2、出现错误时的处理3、区分在VC6.0中运行程序与通过双击可执行文件运行程序的不同实验步骤:1、使用VC6.0编写和编译程序1)运行VC6.0后的界面如图1所示图1 VC6.0集成开发环境界面2)选择【文件(File) I新建
2、(New)菜单命令或按下快捷键(Ctrl+N),则弹出 新建(New)对话框中的工程(Project)选项卡(Project有时也称为项目),如图2 所示。图2新建(New)对话框中的工程(Project)选项卡3)在接下来弹出的如图3和图4对话框中,分别单击完成和确定按钮,VC6.0会呈现 如图5的界面。Win32 Console Application 步 1 央 1 米T鼐 r 7就赢 r小ekWM忸相 T蟠毗魏利吐一步|下一二) | |祺| 鞠图4新建工程信息汇总图3控制台程序的类型图5新建一个名为1 1的工程后VC6. 0的界面4)再次选择【文件(File) I新建(New)命令或按
3、下快捷键(Ctrl+N),则再次 弹出新建(New)对话框,此时显示的是文件(Files)选项卡,如图6所示。图6新建(New)对话框中的文件(Files)选项卡5)单击确定按钮后,VC6.0的编辑器就自动打开了新建的C语言源文件,等待输入。 如图7所示。图7 VC6.0中编辑器等待输入时的界面6)输入图8中的程序1-1后,选择【组建(Build) I执行(Execute)】命令或按下 快捷键(Ctrl+F5),编译执行程序。运行情况如图9所示。图8编译执行程序IT式F:C 语言程序示例l_lDebugl_Lexe” 睛给人诉段数:图9程序1-1正在运行7)在图9的程序运行窗口中输入23 32
4、/ (注本书中用/表示按下回车键),程序运 行情况如图10所示。K F:C 语言程序示例l_lDebugl_l.exe 请输入标个整批23 32和为55Press any key to continue.图io程序it的运行情况2、识别源文件中常见的错误1)C语句没有以分号结束,如图11所示。2)全角的符号 到中文输入法,(用中文输入法输入的符号通常为全角的,只有需要输入汉字时才切换 汉字输入完毕应立刻切换到键盘输入),如图12所示。”9*(和为%00 c);?CI8W.JlFHeViewint a.b.c;print* (谓输入两个整数:n); scnF (tritd, &a. &b);in
5、clude void Min()Configuration: 1 1 - Win32 DebugEZEB III人力/工:力个储厂,HIerror C2018: unknown character * 0xa3*恤行cl.exe时出错.c(6) : error C2B18: unknown character 0xd81_11_1.c(6) : error C21M3: syntax error : missing *;* before string* 1_11_1.c(6) : warning CMS51: function call missing argument list 1_11_1
6、.c(6) : error C2S59: syntax error : )个借误后1-1Obl T E(.H 就是说通常每次只改正定要:再次编译程序,也 个错误!图12程序中有全角的符号3)输入语句中少个&号,如图13所示。l(Globals)include void main() (All global member mainint a(bvc;pr in t * (清输?整数:”“);scanF(r(l%d“.| a, b|;二;篇M*小输入语句中缺少土不会出现语法错误 ,但是巧程序运行时,只要用户输入 完数据,就会现“借误报3” !F:C语言程序示例1爱到问黑需要关闭.我们对此引起的不便
7、表示兑如剜2正处于进程当中,信息有可就丢失.调任M问塞指售给aierosoft.牌羲懒褊I熟?则则翦叫所我m要查寻这个情识报告也含的劣据,击此处.00)发送馀谒(S)| |胃洒她匚I图13输入语句中少个&号4)输入语句中有n,如图14所示。Binclude void iwin()B5ClaV.|.= FileView|ConfiguratiCenpilliif.Linking.int a,btc;1_1.exe - Q error(s), 8 warning”:%通 . m不工川广大:沦EEXS”:次网乍健程序都不会执行卜J!图14输入语句中有n5) printf函数书写不对,如少个f等,如图
8、15所示。Itinclude uoid main()int avbvc;printf (请输入两个整数:n);scanf(,*dZ(r, &a, &b);c = a b;叵牺C和为名dn,c);JlCompiling. 1 1 .cConfiguration: 1_1 - Win32 Debuqprint:没有定义的标识符F:C语言程序示例.c(8) : error C2G65: print,: undeclared identifier执行cl.exe时出错.1_1.obj - 1 error(s), 0 warning(s)图15 printf函数书写不对6)没有层次关系(可读性不好),如
9、图16所示。+ / 1_1 classes: ClassV| 囿 FileViewCompiling. 1 1.cttinclude uoid main()int avb,c;printf (“请输入两个整数:n);scanf(%d%d, &a, &b);c = a b;printf(,和为石n”,c);HConfiguration: 1_1 - Win32 Debug1_1.obj - 0 error(s), 0 warning(s)没仃层次关系, 日性太差!图16源代码没有层次关系3、找到第1步中工程所在的文件夹,找出源文件1_1.C,用“记事本”程序打开查看内容。 把源文件l.c复制到新
10、建的一个文件夹中。如图17、18、19所示。IliU回区文件和文件夹任务公到重命名这个文件畦移动这个文件白复制这个文件8将这个文件发布到Web分以电子邮件形式发送1此文件x删除这个文件其它位置ebDD件文BK 1B_(c31 N 3ds文 B1 p K-S1 D 5i iPLG文件1 KB1 1. dswDSW 1 KB文件(E)编辑(E)查看 收藏(A)工具 帮助但) 。后退. Q T户搜索 文件夹区 地址(P 口 F:C语言程序示例1_1图17找到源文件l_l.cB 1_1 -记事本1二I叵I区I文件(F)编辑(E)格式(Q)查看(V)帮助但)#include void main()int
11、 a, b, c;pTntf:谓蛹入两个整数scanf&a, &b);c = a + b;口2门讦(”和为%01|1,c);图18用记事本打开源文件l_l.c图19把源文件l.c拷贝到新建文件夹中4、在debug文件夹中找出可执行文件,双击运行程序,观察运行结果。如图20所示。Debug口回区文件(E)编辑 查看(丫)收藏(A)工具 部助出)弁,0, Q搜索 文件夹区,地址也)口 F: C语言程序示例l_lDebug其它位置OBJ文件 3 KB文件和文件夹任务到重命名这个文件移动这个文件0复制这个文件 J将这个文件发布到 Web以电子邮件形式发送=此文件x删除这个文件1_1PDB文件409 K
12、Bvc60 PDB文件 44 KBV0转到1 1ILK文件172 KB1 1PCH文件199 KBvc60IDB文件33 KB图20编译后的可执行文件l_l.exe通过双击运行l_l.exe时会出现输入数据结束后程序运行窗口自动关闭的现象,并不会 象在VC6.0中执行程序那样:程序运行窗口呈现输出结果,当按下任意键后才关闭。怎样才能查看程序通过双击运行时的最终输出结果?换言之,如何让呈现出输出结果的 运行窗口不消失?输入函数scanf可以帮忙吗?VC6.0中运行程序有两种方式,如图21所示。以“调试方式”运行程序的详细情况参 见实验1-3。,|q| x|.lg|x|2 1_1 - Micros
13、oft Visual C+ -6文件编辑克看a)插入0)工程电)组建工具Q)窗口他)帮助(H)巴fpgd 一 口。嚣、节3(Globals)-II (All global member? | 当全部重建CtrkF7F71_1 classes批组建清除开始调试位)远程连接调试程序执行l l.exe CtrhF5 7作用相同三的XSJE1移除工程配置. 配置 配置文件include uoid raain()开始调试)远程连接调试程序.R Step JntoF11J 执行l_l.exe Ctrl+F5移除工程配置出)*() Run to Cursor Ctrl+FlO附加到当前进程(&.十击将以调试
14、方式运行程序 ; ClassV. J FileVievJ.行忆列1 REC COL |覆盖欣取及图21 VC6.0中运行程序有两种方式5、关闭工程,找到并打开新建的文件夹中的源文件l.c,编译运行程序。如图22、23、24所示。Microsoft Visual C+ - 1_1.c *图文件(E)编辑(E)查看M)插入(D工程(已 组建0 工具 窗口”)帮助出)图国百 聃二夕屯一岭图与跑Microsoft Visual C+This build comaand requires an active project workspace. Would you like to create a de
15、fault project workspace?S(H)图22只有源文件时的编译第一步(会提示创建一个工程)1 - Microsoft Visual C+ - 1_1. c国文件(E)编辑(E)查看 插入 工程 组建9)工具(I)窗口(勤 帮助(H)蜀H。目 够F g因百聃WI (Globals)_ (All global member;include void main()( j X夕 3 f (3岩跑 三亘 0圜/正卜1再次单击2E11ConFiguration:Compiling.卜.c 1_1.obj - 0 error(s), 0 warning(s)int avbvc;printf
16、(”请输入两个整数 scanfCdd, &a, &b); c - a b;printf(和为*dn”,c);图23只有源文件时的编译第二步F:C语言程序示例例新建文件夹Debugl l. exe23 32和为55Press any key to continue图24程序的执行情况并无不同6、打开新建的文件夹,观察为生成可执行文件VC6.0生成的文件,不必关心每个文件的作 用。用VC6.0编译程序有两种方式:从新建工程开始;从直接新建源文件开始。7、再次选择新建工程,开始一个新的程序。第2个程序的功能:求两个整数的积。(注意: C语言中用“*来代表X”。)如图25、26所示。Microsoft
17、 Visual C+ - 1_1. c置文件(D插入(D工程0)蛆通(&)工具(D窗口0)也助电臼Jl国0 00 4日 mis智嗑叵|(Globals|二J|(All global member:=m b % 3 7 必 0 呱 7 3 / 三!. 图第y !1 1 classesLinking.:C88V|剧印图25再次新建工程,开始一个新的程序22 - Microsoft Visual C+ - 22.c的文件(E)骗辑(E)查看 插入 工程也)组建 工具 窗口(,)帮助 囱彦。0 岫 2二 D国君聃回厂3|髭|1夕48 国| Globals-global member,.main三乳.尊
18、! si 图26求两个整数的积思考:输入两个小数时(比如输入2.3 3.2时),程序的运行结果如图27所示。仄 F:C语言程序示例222Debug222. exe2.3 3.2积为 T717986920图27输入小数时,程序的运行结果错误程序会为什么会出错?怎样改正错误呢(即如何求两个小数的积)?实验12 printf函数的使用实验内容:熟悉printf函数的用法实验目的及要求:能熟练利用printf函数输出信息。实验重点:I、一般字符串的输出2、含有转义序列的字符串的输出3、含有占位序列的字符串的输出(查看“变量”的值)实验难点:1、体会语句与输出之间的对应关系2、由不同的数据类型需要不同的
19、占位序列,体会数据类型在C语言中的重要性 实验步骤:printf函数在输出时有何特点?1、用一条输出语句输出Ilovec!”。2、用多条输出语句输出Ilovec!。注意:1)使用printf函数输出一串字符时只需把欲显示的字符串用一对双撇号()括起来 作为输入值调用printf函数即可。2)程序运行窗口中光标闪烁的位置是下一条printf函数语句输出时的起始位置。转义序列3、用一条输出语句输出如下信息:The first lineThe second line.4,输出字符串“IloveC!”和“我会输出转义序列5。注意:1)反斜杠和下一个字符的组合称为“转义序列”,有着特殊的含义。print
20、f函数在输 出时如遇到“转义序列”就会按照它的含义输出某些特殊字符。所谓特殊字符主要是指C 语言中标识键盘上的某些键如回车键所用的字符。当反斜杠作为“转义序列”开始的标识 后,反斜杠也成了 “特殊”的字符。2)如遇到转义序列n, printf函数就会把输出定位到下一行的开始位置(相当于按下 了键盘上的回车键):遇到转义序列, printf函数就会输出一个双撇号”;遇到转义序列 , printf函数就会输出一个反斜杠占位序列5、根据提示补全程序。#include void main()(定义一个整型变量n接收用户输入的整数并存储到整型变量n中输出用户输入的整数6、编写一个程序,功能为输出用户输入
21、的小数。7、编写一个程序,功能为接收用户输入的两个小数,输出它们的和。程序的运行情况可能 如下所示:1.1 2.21.100000*2.200000=3.300000 rPress any key to continue注意:1)printf函数中另一个特殊的符号组合是百分号及与之相邻的字符,称为“占位序 列”。遇到占位序列时,printf函数会用后面相应位置上.的数据替代占位序列。2)语句printf (和为%d!, z);输出时,双撇号中“和为%d!”的%d会被后面变量z的 值替代。当变量z的值为10时输出结果为:和为10!。“占位序列”也称为格式字符串”, 因为对于不同类型的数据需用不同
22、的格式字符串:整数用%d,小数用/f,字符用%c。探究:1、printf(d”, 3*2);和printf(dn”, 3*2);有何区别?当它们是程序中最后一条语句时两 者有何区别?2、转义序列b,和,有何输出效果?Itinclude uoid main() printf(12356n); printf(“1235b6n);八F :C语言程序示例testDebugtest. exe12345612346Press any key to continue中 test, cF:C语言程序示例Vtesttest.cinclude uoid nain() printF(,123456n); print
23、F(12345r6n);F:C语言程序示例testDebugtest. exe”12345662345Press any key to continue实验1-3 C程序的执行顺序实验内容:1、用VC6.0调试执行一个C程序2、观察一个C函数被调用时的执行情况实验目的及要求:1、掌握用VC6.0调试执行一个C程序的方法2,初步理解一个C函数的执行过程实验重点:1、掌握“断点”、“调试执行”、“单步执行”等概念2、分析函数的执行过程3,在程序调试执行时输入数据,观察输出实验难点:1、区分调试执行时快捷键F10和F11的异同2,理解被调用函数的执行过程实验步骤:1、打开VC6.0,创建一个名为1_
24、4的工程,在编辑器窗口输入如下程序。程序1-4:有两个函数的C程序include int sun(int xy int y) uoid main() 忌JR 国日朝辜F10fipOver .皿F10与F11的作用稍有不同。如果当前的执行语句中有函数调用,则用F10时不会单步执行(即调试执行)被调 用函数,而是正常执行被调用函数(即连续执行被调用函数中的全部语句)。如果当前的执 行语句中没有函数调用,则F10与F11作用相同。通过调试执行可知,程序1-4的执行顺序是:11、12、13、3、5、6、7、13、14、15, 其中在第3、7、15行处暂停执行程序的目的是方便查看当时的程序状态。注意:如
25、果此时不小心按下快捷键F11,那么程序将用调试模式执行printf函数,弹出如 图6所示的对话框。图6调试库函数printf时弹出的对话框单击取消后对VC6. 0将呈现如图7所示的状态。图7调试库函数printf时VC6.0所呈现的状态。此时可以通过调试菜单中Stop Debugging命令结束调试,如图8所示。可以在任何情况下通过此命令回到正常的编辑状态。图8结束调试状态思考:1)使用函数(调用函数)究竟意味着什么?执行了函数体中的代码2)如何与被调用函数传递数据?(怎样向函数中传入数据,函数怎样传出数据,怎样 接收从函数传出的数据?)可以把函数的返回值看作是被调用函数的最终结果。print
26、f (%d, sum(3, 2)*6); 的输出是?3)使用函数时应注意什么?区分函数有无返回值。有返回值时无返回值时printf函数有返回值吗?实验1-2探究2中的例子里它的返回值是多少?(最终的输出是“叠加”的效果) 7、分析实验1T中思考:输入两个小数时(比如输入2.3 3.2时),程序的运行结果如图 所示。-F:C语言程序示例222Debug222. exe2.3 3.2版为-17179869201)在程序中的第5行设置断点。如图9所示。图9在程序设置断点2)调试执行程序。如图10所示。图10调试执行程序3)无需单步执行库函数printf,因此使用F10调试执行程序。如图11所示。IP
27、运行窗I 112纤 r输出寺 mam| void *ain()1 Kinclude ? void main()3int atbvc;5 (“谓输入两个整数:;6(0scanfCtdtd,&v&b);7c a b;Hprint”枳板n”.c);9)IhJJ 三 j上下文:mainQi2”指向r卜条讲句 去lyjpr intf由数以ij1/u去名称I值上a858993M60田 &aSxei2fF7cb-858993460vFl Auto Z Locals X this / .一名栋 一 .1值二II Watchl k Watch2 Watch3 WatcK行6.列1Sec col琴盖读取国F八C语
28、言.一 222 - Microsoft Vi sual C+ break - 222. c|.叵X份文件(E)9辕(E)xe()幡入(I)工程0) 喇8)工具 (!)MM(B),|g|x国Q0 电Fd 闺辔聃眄二ZJ M(Globals) JAII global member; main-三图谢,t $10图11无需单步执行库函数printf注意观察VC6. 0的变化和程序运行窗口的变化。4)无需单步执行库函数scanf,因此使用F10调试执行程序。如图12所示。份文件(E)UHiE)查看 搐入D工程 叮围|103 m| (Globals),10“1 memberi m*ln-3k aam3
29、| void *ain( )(-l|Itlnclude ? uoid nain(), int a,btc;Watch3 Watch4 /岂J 7运彳J /I 己纤池各接收 川户的输入rP”n”(“清箱入两个整数:n“);88二丁西卬;似乎没工小JU:小卜scanf函数 , PFE职加2“,缶1?;(. NJ f的输入此时应切换到程序运11行宙1 输入数据图12无需单步执行库函数scanf5)在程序运行窗口输入2. 3 3.2/,然后转回调试窗口。如图13所示。SIF:C语言4: 入 ,*.电文件(E) OKI(K)Xt(2)入(!)工程(E)喇卜工具(D窗口(,”助(H)业三由H电 d02因老
30、#1。8 *x e(Globals| |A1I global member: main怜 B&in 11 void ain( ) 口 Goinclude void nain()int a.b.c;print“谓输入两个整数:n); scanf&h);23. 222 - Microsoft Vi sual C+ break - 222. c晶MT. c J步向了新的语句,表明scanf函)从卜曲也可以看出lliJJT上下文:mahW;/I -/; J-2.b, 1铜入数据产式丁“人力“仙Lill%inf函数於存新/,1的仍为原来的(虽然“信,(Ua仍然制到新年)| | |H Watchl k W
31、atch2 Watch3 WatdjT7l行。列1图13观察分析程序的运行情况分析观察可知程序出错的原因了。格式字符串%d只能用于整数的输入,当用户输入小 数时(如2. 3) , scanf函数会将其整数部分做为输入值,但此后该函数将不再处理用户后面的输入数据,因此程序中变量b没有获得新值。这里需注意,当定义一个变量时,应该认为 其值为“随机数”。不过为了便于识别没有为变量赋值的情况,VC6.0会自动为其赋一个特 殊值,如整型变量赋值为-858993460。现在就知道为何程序有如下输出了 :c、F:C语言程序示例222Debug222. exe2.3 3.2积为-1717986920试验1-4
32、 C语言学习中的帮手实验内容:熟悉c语言学习中的帮手实验目的及要求:了解每种帮助的特点,能根据情况运用恰当的方式解决学习中遇到问题。实验重难点:每种帮助的特点实验步骤:实践是检验真理的唯一标准。用编程的方式解决问题。1、C语言中大小写敏感吗?(如有int n;则使用这个变量时可以用N吗?可以用则C语言大小写不敏感;否则大小写敏感。)include uoid main()这个问题可以用编程的方式验证。测试程序如图1所示。int n = 3;printF(%dn, N) ;|图1测试程序如果C语言中大小写敏感,则这个程序会出现什么情况? 如果C语言中大小写不敏感,则这个程序又会出现什么情况?/ 上
33、网搜索。2、库函数printf有返回值吗?如图2所示。口(Wma mm血皿 m尸3 皿1继0|pnntf 15回展 1 百工一FpriritTCMH反同么?“国0不TFCgaFE” 即*ramt -104. printrfd* .). prwitrR / L 足贴,Qcntf的回& 百度空1句 应用平日程坛的袅4311. HCFwctfiatT血功、尸IT mm俵忍1 . R鼻程1丁. R鼻应修d&43N1阳卜回Mi值而珏m何年布刁 竣.7玄0 WOOappe hi baidu corr/8h、r“detQl/lW&27276 云1。-8-2 -日出痰丽*口0 0皿“0由敝附但回*bv1zva
34、71221 新浪f 石PrirtfCCi3&fBJiE|o| fB)(2OO7 OG P3 1O SQ 03)知IH/fFk由 Wgif 回钱 1 也 EUtC 皿岫*fW 一个歹蜃交*. Wt JTtilEUXblog eirta com cr/&/blog_4cc6eS3001 OOOadm Html 201 1-1 1-16 -苴DT法图2用BAIDU寻找问题的答案用MSDN。MSDN的全称是Microsoft Developer Network这是微软公司面向软件开发者 的一种信息服务。在此仅将MSDN认为是联机帮助文件和技术文献的集合。3、用MSDN寻找“库函数printf是否有返回
35、值”这个问题的答案。如图3、图4、图5所ZjSo图3 MSDN启动后的界面(不同的版本略有差异)NCC I Ka & t i n%(ocviMrttaM atavamC-c 1Uf uuUMoxcr uKCk4t(tw(a4 MaMc Mwarv. t*(Ml *0MSVORT UBcrr9atV*nWna mllcx Mf(q OOI t*oufc* tu*5i ccd OnOfotn* tuncOon(ant(MM.(fir( rtoc*1 riwtmuMand too*aam C*(iKK *?, y aioc M*vwBlapn*awn*tnr fAn“ wwmM ( MmQ.WM*
36、*oma .tsvctfccAMo* MT1Axs1. Wm 95. Wm MTEach of Ow” CUnctoona retuma the number of ctwwactera onntod. or neajrtive value an errov 图4利用MSDN解决这个问题图5 MSDN提供了详细而权威的信息4、向别人请教。三人行必有我师。遇到问题时也可以向其他人请教,或与别人讨论。5, VC6.0的插件1) VC6.0没有提供显示行号的功能,但通过第三方插件如VC6LineNumberAddin可以让其 显示行号。2) VC6.0的重量级插件Visual Assist (Vis
37、ual Assist X是其升级版)能带给我们非常好的编 程体检。如图6所示。1 ttinclude 2 uoid nain()工具栏ipH| b % u - 国锣鹿 o圆 =q /* ? c旬到此时按FTAB 键向似极迹 补全拼写Visual Assist的1具栏功能强大,方便编程图 6 Visual Assist 的介绍解决问题:1、VC6.0中整理布局混乱代码的快捷键是什么?2、讨论下面程序的输出。1 include 2 uoid main()3 4 int i=43;5printFC,%d,printF(%d,printl:(,%d,i);实验1-5用工作区组织工程实验目的:在VC6.0中利用工作区(workspace或工作空间)组织工程(project) 实验内容:创建一个工作区,并在其中创建多个工程。实验电难点:理解工作区的概念;分清工作区与工程的关系;明白何谓“活动工程 实验步骤:VC6.0中的工程用于组织程序,一个工程中可以包含多个源文件,但源文件中只能有一个 main函数,通常可以由工程得到可执行文件。仔细观察实验1-1中的图2可知,在创建工 程时,实际上已经创建了一个工作区。(注意工作区与工作空间仅是workspace的两种译法)图1新建工程时会自动创建一个工作区由此可知,每个