




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、vc60集成环境下c语言编译操作指导廖金祥编武汉科技大学计算机学院二0 0年二月二十六日上机实验目的与要求、实验目的上机实验是学习程序设计语言必不可少的实践环节,特别是c语言灵活、简洁、语法检查 不太严格,更需要通过编程实践来掌握它。c程序设计语言除了课堂讲授以外,必须保证有不少 于课堂讲授学时的上机时间。若因为学时所限不能保证集中的上机学时,希望学生能在课外自 行上机,当然更应珍惜有限的课内上机的机会。如此才能尽快掌握c语言开发程序的能力,为 今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了 12次上 机实验。上机实验的冃的,不仅仅是验证教材和讲课的内容、检查自己
2、所编的程序是否正确, 更重要的还有如下几个方面:1. 加深对课堂讲授内容的理解课堂上要讲授许多关于c语言的语法规则,听起来十分枯燥无味,也不容易记住,死记碾背 更不可収。通过多次上机练习,对于语法规则有了感性的认识,能加深对它的理解。在理解的 基础上就白然而然地掌握了。对于一些知识点白己认为在课堂上听懂了,但上机实践中会发现 原來的理解有偏差;还有一些知识点屮错i吴只有在程序运行时(编译连接通过后)才能发现, 这些只能通过上机才能体会和掌握。学习c语言不能停留在只学习它的语法规则上,而在于利用学到的知识编写c语言程序并解 决实际问题,由计算机帮助我们解题。只有通过上机才能检验白己编写的程序是否
3、能得到正确的结果。通过上机实验來验证自己编制的程序是否正确,是大多数同学初入门的心态。倘若只停昭 在这一步,那就是“固步门封” o当程序验证完成后,应该问自己:还有其他的解决方法吗? 还可以用其他的语句吗?这是最好的吗?此题中自己犯了那些错误?通过h己编程得到正确的结果才能加深对c语言的理解和和提高开发能力。算法之精妙、程 序结构之清晰、界面之友好、容错性之高永远是程序员追求的目标。2. 熟悉程序开发环境、学习计算机系统的操作方法一个c语言源程序从编辑、编译、连接到运行,都耍有一定的外部操作环境下的支撑。所谓 环境就是所用的计算机系统硬件、软件配置情况,只冇学会使用这些环境,才能进行程序开 发
4、工作。通过上机实验,熟练地掌握c语言开发环境,为以后真正编写计算机程序解决实际问题 打下基础。同时,在今后遇到其它语言开发环境时就会触类旁通,很快掌握。本书中将要介绍3种上机实验环境,以适应不同的要求。它们分別是:wtn-tc集成环境(16位图形界面编译系统) visual c+ v6.0集成坏境(32位图形界面编译系统)turbo c2.0集成环境(16位字符界面编译系统)。3. 学习上机调试程序完成了程序的编写,决不意味着万事大吉。无论技术多么高超的人都不敢吹嘘:“凡是自己编写的程序能一次性通过而无任何错谋”。你认为万无一失的程序,实际上机运行时可能不 断出现麻烦。如编译程序检测出一人堆语
5、法错i吴:scanf()函数的输入表屮出现非地址项、某 变量未进行类型定义、语句末尾缺少分号括号或引号耒成对等。有时程序本身不存在语法错误, 也能够顺利运行,但是运行结果显然是错误的。开发环境所捉供的编译系统无法发现这种程序 逻辑错误,只能靠ti己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作, 对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小 小错误,调试高手一眼就看出错误所在。经常上机的人见多识广,经验丰富,对出现的错误能很快地找到出错点。通过c语言提供的 调试手段逐步缩小错误点的范围,最终找到错误点和错误原因,这样的经验和能力只有通过长 期
6、上机实践才能取得。向别人学习调试程序的经验当然重要,但更重要的是h己上机实践,分 析、总结调试程序的经验和心得。别人告诉你一个经验,当时似乎明白。当出现错谋时,由于 情况变万化,这个经验不一定川得上,或者根本没冇意识到使用该经验。类似的错误照犯不 课。只有通过自己在调试程序过程中的经历并分析总结出的经验才是自己的。一旦遇到问题, 应对之策自然而生。所以调试程序不能指望别人替代,必须自己动手。编制出源程序,只能说 完成一半工作,另一半工作就是调试程序、得到正确结果。可以这样说:“不会调试程序就编 不好程序”0二、实验要求上机实验一般经历上机前的准备(编程)、上机调试运行和实验后的总结三个步骤。1
7、. 上机前的准备根据问题,进行分析,选择适当算法并编写程序。上机前一定要仔细检查程序(称为静态 检杳)肓到找不到错课(包括语法和逻辑错谋)0分析可能遇到的问题及解决的对策。准备几 组测试程序的数据和预期的正确结果,以便发现程序中可能存在的错误。上机前没有充分的准备,到上机时临时拼凑一个错谋百出的程序,宝贵的上机时i'可口口浪 费了;如果抄写或复制一个别人编写的程序,到头来h己一无所获。2. 上机输入和编辑c源程序,并对源程序进行编译、连接、调试运行。按照c语言语法规则而编写的c程序称为源程序。源程序由字母、数字及其它符号等 构成,在计算机内部用相应的ascii码表示,并保存在扩展名为c
8、或.cpp的文件中。源程序 是无法直接被计算机运行的,这就需要把源程序先翻译成机器指令(目标程序),然后计算机 的cpu才能运行。源程序翻译过程由两个步骤实现:编译与连接。首先对源程序进行编译,即把每一条语句用若干条机器指令来实现,以生成由机器指令组 成的目标程序。但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及 常用函数的计算过程并不是用户白己编写的,而直接调用系统两数库屮的库函数。因此,必须 把“库函数”的计算过程指令连接到经编译生成的目标程序中,合成可执行程序,并加入经操 作系统对执行程序的地址重定位机制而产生的文件头,方可由计算机运行,最终得到结果。首先进入c语言集
9、成开发坏境,输入并编辑事先准备好的源程序;然后对源程序进行编译, 查找语法错误,若存在语法错误,重新进入编辑环境,改正后再进行编译,总到通过编译,得到1=1标程序(扩展名为.obj)。下一步是进行连接,产生可执行程序(扩展名为.exe) o使用 预先准备的测试数据运行程序,观察是否得到预期的正确结果。若有问题,则仔细调试,排除 各种错误,直到得到正确结果。在调试过程中,要充分利用c语言集成开发环境提供的调试手段和工具,例如单步跟踪、设 置断点、监视变量值的变化等。整个过程应白己独立完成。不要一点小问题就找老师,学会独 立思考,勤于分析,通过白己实践得到的经验用起来更加得心应手。3. 整理上机实
10、验结果,写出实验报告实验结束后,要整理实验结果并认真分析和总结,根据教师要求写出实验报告。实验报告一燉包括如下内容:(1)实验名称。(2)实验目的要求具体的实验步骤(含程序或程序段)实验结杲原始数据、相应的运行结果和必要的说明。(5)实验小结实验过程中的心得体会和经验教训的分析与思考c语言编译工具及其操作方法一、win-tc编译系统win-tc是基于windows操作系统的一个16位的c语言编译工貝,它的内核还是turbo c v2. 0。 所以最好是在windows98下使用。操作步骤:1、进入win-tc集成环境:双击桌面上的win-tc图标或在win-tc文件夹中双击win-tc. ex
11、e文件进入win-tc集成环 境,如图w-1。若你想将口己的实验成果(含源程序)保存在自己的文件夹中,可以先建立一个 文件夹,如:c:mydoc,然后单击:编辑编辑配置一工作目录右边图标找到cmydoc确定。 出现如图w-2,你的实验成果将保存在c: mydoc文件夹中。 否则你的所冇成果将保存在: wl n-tc projects文件夹中。在如图w-1主窗口中可能残留有其它c程序,此时nj以单击:文件一新建。出现图w-3o在图w-3的中间窗口中输入准备好的c语言源程序,认真仔细检查有无错误,然后转第2 步进行编译连接。此处,假设己经输入了如卜-程序:例 l1-1# include<st
12、dio.h>void main( )/*主函数"7 printf(“this is a program.nn); /* 在屏幕上显示:this is a program */ getch();吵(3 u:05參开始i釦$ 0 谭圜mi. ji卫wi二.| 型 c. i图w-l新建文件窗口编辑主设査i颜色利字体设置i输入凤格设査i新逢横板雉护i工且栏b3标e大es标小s3标自动打jfq 打开 <# noname. c" 打开上一次记录 新建空文档行标识栏设査计数位数为fj位l空位补o其它最多允i午撇消|99 土次行间距 |o自像亲"厂目录没査工作目录|c
13、 : my doc7确定(q图w-2编辑配置2、编译、连接源程序:nlhn-tc -无标题未保存rfin文件d)缜価厲)运行(b)纽级工員集。)刑肋q0o ,® i es g12 3 4 5 60 mclude<st dxo. h>void main ( )/ 拿主函敷/printf (rt this i s a program. n* ) :/ 在屏 斑 上显示:this i s a program / *感*(*4( $*(* 拿拿拿$欢迎使用win-tc “*拿*(*(車拿41拿拿拿软件主宴椅色|1在windows下編锚tc代码.可以充分利用windows的支持却贴
14、版和中文的特点 2. includefolibbs径自动定位.吿别tciftlss径的历史图w-3 win-tc集成环屮境源程序输入与编辑在如图w-3中单击:运行-> 编译连接,此时有2种可能:程序中冇错误,此时在屏幕下部输岀小窗口中冇出错的行号及错误原因,应据此进行 修改并再次编译连接。程序无错。则出现如下图w-4图w-4输入源程序文件名 输入文件名后单击:保存,出现如图w-5,单击:确定。123456 includo <st dio« h> void aain ()/ 至 函数/print f ( * this i s a program n" : /
15、w 屛棊上显示.this is a pr o< r aa /编译结果xnonaao. c:可用內祁 431208打印c话言程序» c话言裁案讲稿输岀: d: vm-tcprojectsnonaae. c辛喜,编译成功图w-5编译连接成功3、运行程序单击:运行f编译连接运行f确定。特别重要提示:在win 2k或win xp系统卜运行,程序最后一行一定耍加上:getch();否 贝|j,看不到运行结果。出现如下显示运行结果的黑色窗口(图w-6),在此窗口中,若需要输入数据,则在此按照输入 格式输入。本例不要求输入数据。图w-6运行结果二、visualo+ v6.0 编译系统vo +
16、 6.0是一个集成环境下的编辑、编译、运行c语言程序的工具,其操作步骤如下:1、事先在尾逻辑盘上建立自己的工作文件夹(例如:e:myd0c)2、单击桌面上的图标或单击:开始程序 f microsoft visual studio 6.0 microsoft visual c+ + 6.0,可启动 vo + ,屏幕上将显示图所示的窗口。图 v-1 vo+ 6.0主窗口3、单击:文件-*新建一工程 出现图窗口,选中win32 console application并在在工程 文本框中输入工程名(例如:p1);单击位置文本框右边的省略号按钮进行浏览并找到自己事先建立的文件夹(如:e:mydoc).单
17、击确定f完成f确定新建文件 工程i工作区i其它文档i rjatlcom appwizard fejciustcr resource type wizard iticustom appwizard idatabase project devstudio add in wizard 0 extended stored proc wizard sisap1 extension wizardmakefilemfc activex controlwizard l mfc appwizard (dll) mfc appwizard (exe) js;new database wizardutility p
18、roject win32 application win32 console application ! dynamic-link library win32 static library存在自己的文件夹e:mydocp1中win32工程c位置:e:mydocp1选中控制台应用工程e b创建新工作区c a添加至现看工厂d从属性的*win32确定结束图vi新建工程窗口4、单击:文件新建-文件,选中“c+ +source file”,在“文件”框中输入文件名 (如vl1-1),若想将实验成果保存在口己的文件夹中,此处可以在目录对话框中输入自己的事 先建立的文件夹(如:c:mydoc) o或单击目录
19、对话框右边的按钮并逐步选择到c: mydoc, 出现图v-3。新建文件 工程|工作区|其它文档|active server page binary file bitmap filec/d header filec* < source filer一cursor filehtml pageicon filemacro fileresource scriptresource template sql script file text file选中c+源文件2 a添加工程:|fm丄文件|vl1-1|c目录:e:mydocp14确定 i结束图v3输入文件名再单击:确定 按钮,出现如下图v45、在图
20、v-4的源程序编辑区内,输入源程序。以如下程序vl11为例: #include<stdio.h>void main()int a,b,sum; a=123; b=456; sum=a+b;厂主函数*/*函数体应该处于一对人扌舌号111*/广定义整形变量a,b,sum*/厂给变量a,b赋值*/广做加法,并将此和赋值给变量sum保存*/口 u a 1/ 皿 ® | q -* .11uoid main()<ft c:bydocvl1-1. cpp *jdljdljd文件1e«奶入工程工貝窗口聖肋'创天中文vc十十*/应形为 h: 函数义变加耐 主t给做勿
21、对大括号中" sum*/int a vb vsum; a = 123; b = i*56; sun=a*b;prints (to tal=%dln 8“ col 3readyprintf(,total=%dn,sum);厂输出变量 sum 的值 */图v4输入源程序特别提示:在visual c+ +下,程序尾不要:getch();vc+ +不支持该函数。6、单击:编译一编译vll-l.cpp,出现如图v5。在窗口底部信息框屮可以看到:0 errer(s), 0 warning(s)表明编译通过,程序无任何错课,可以进行下-步连接。图v5编译源程序正确7、若程序冇错误,则出现图v6,且
22、在屏幕底小信息窗口中出现错误信息,应根据提示改止错 误,重新进行第6步,直到无任何错误。单击菜单编译一构建vl1-1.exe进行连接。无任何错 误时出现如图v-7窗口。进入笫8步。否则重新笫5步修改源程序。图v6源程序有错误提示(注:木例题中sum变量未定义目.第4行尾缺了分号;。改正后再重复第6步、第7步直到编译连 接正确。此时信息窗口中显示错误是0o)图v7连接源程序正确8、单击菜单编译一执行p1.exe,出现如图v-9窗口。图v-8执行程序9、出现程序运行结果,如图v9°观察结來正确后,按任何键即可回到集成环境窗口。若程 序需要输入数据,则在图v9中按照数据格式输入数据后得到运
23、行结果。若结果不正确,再修改源程序,重复第6、7、& 9步。图v9程序运行结果10、完成第一个程序:单击主菜单屮的文件一关闭工作区,弹出小窗口如图v-10,单击 是 回到图v1,完成第一个程序。图v10在硬盘上查看木工程p1产生的文件在口己的文件夹如e:mydool5j以看到子文件夹p1,在p1中有vl1-1.cpp,这就是源程序 文件。有p1.dsw,这是p1工程(工作区)文件,打开(或双击)它可以重新进入p1工程进行修 改。进入p1屮的d田ug文件夹,有p1.exe文件,这就是执行程序,双击它可以得到本程序运行 结果。11、开始第二个程序重m3-10步输入并编辑、编译、连接、运行第
24、2个源程序。三、vc60环境下程序调试程序编译连接通过后,发现运行结果不正确时会问“问题出在哪儿? ”,调试程序的过程就 是缩小错误范围直到找到发生错误的语句并加以改正的过程。1、在源程序中设置断点设置断点就是为了缩小错误范围而将程序分成若t块甚至单个语句。设置断点:光标移到某程序行上按f f9键,该行前出现红色圆点。程序执行到此会无条件停下來, 这是无条件断点。有时想当某个变量或某一表达式等于某一特定值时能停卜来,即依据条件设 置断点,这叫条件断点,要在专门的窗口中设置,其方法较复杂,请参考其他资料。-i® x0文件组輯査看插入工程殂译工具窗口蹇助工02固寺也|m| (global
25、s) (all globalmember 0maxi 罢 tltlinclude<stdio .h>void nain()"主函数main()函数”<int nax(int xfint y);"对max画救值的类二 int a.btc;"定义变豊*printf(taninput two nunber :*); scanfc-td.td-.tla.fcb); c-nax(a 9b); printf(,nax-%(le,fc); int nax(int x9int y) <int z; if (x>y) z-x;else z-y: ret
26、urn(z);>型及签数的个数、类"调用函数.得到的函数值赋值给变:嚴鏗胡髓魏網这是被廡"将n变量的值通过站x函数名返回到调丿conpillng.two cpplinkingp2.exe - 0 error(s)t 0 warning(s)th编译/调试' 査找文件i 査1 < ir eadyln 12, col 2图v11程序中设置断点示意2、跟踪执行 单步执彳丁 :f10键:每次执行当而光标处的一行程序或一条语句或一次函数调用(不进入函数中)。f11键:每次执行当前光标处的一行程序或一条语句,遇到函数调用则进入该函数中。 执行到下一个断点:f5键:从
27、当前行一直执行到下一个断点处停 执行到光标处ctrl+f10键:从当前行一直执行到光标处停 执行完余下代码:shtft+f1o键:从当前行执行完本函数屮余下所冇代码 退出调试模式shift+f5键:停止调试返回到编辑源程序状态 重新开始ctrl+sh1ft+f5键:重新开始,返回掉程序的第一条代码3、查看程序执行过程中变量值的变化边执行变查看变量的值时调试的重要环节,进入调试模式后系统会自动打开variables窗口 和 watch窗口。variables窗口:其中包含三个标签。auto标签:按字母顺序显示当前所有变最(包含变最的地址如&纠若有的话)的值,构造型变 量如数组、结构体则可
28、按下前面的+号展开locals标签:显示当前函数内所有局部变量的名称和值this标签:显示this指针的类型、名称和值watch窗口 :含有watchp4等四个标签,每个标签都可以由用户输入任意变量和表达式并观察 其值。图v12 variables窗口中的auto标签国文件编辑查看插入工程debug工具窗口整助 酋4 iq皿x嗨免 m刁弋 s a ! 川ttinclude<stdio .h>void nain()"主函数nain() f是主调函数*/<int nax(int x,int y);/*nax|g数宿的类型芨参数阳个数.类型进行声明*int a,b,c;&
29、quot;定义变量材 printf(,bninput two number:bi); scanf(-d,d-,&a,&b);g c=nax(a,b);"调用用*函数.得到的函数值赋值给变量c */ printfcnax-dsc):>int nax(int x,int y)"自定义函数耐*与形参x,这是被调函数关/<int z;"定义变量z的类型为整形初 if (x>y) z=x;else z=y;< return(z); >"将z变量的值通过max函数名返回到调用处关/l(globals)global mem
30、ber ii呼q上下minoready卩卞财tchl i watch2 watch3 畅忑运行结果:输入表达式a+b,系统显示值为142、整数溢出示例#include<stdio.h>void main()short int a,b; /*改为:long int a,b;则结果正确*/ a=32767;b=a+l;printf( “d,%dn” ,a,b);"e:vccp 1 debugp 1 .exe"|-ini x|32767,-32768press any key to continueihj±1/3、实型数据7位有效,小数保留6位例#inclu
31、de<stdio.h>void main()float a,b;a=123456.789e5;b=a+2;printf(,a);printf(,b);個!ml二lol 凶改为:double a,bjh结果正确:歯1删&1!1晶倆5豪,|n|x|图v3 variables窗口中的local s标签四、在c语言程序中使用汉字在win2kffwin-xpb'汉字只能作为字符串使用,只有vo- +系统中才能使用汉字串。第一章上机题编译环境、数据类型1、键盘输入鬪的半径,输出其面积#define pi 3.14159 /*编译预处理符号常量*/#include <mat
32、h.h>/*编译预处理头文件*/#include <stdio.h>void main() /*主函数,用户自定义的函数*/ float r,s; /*定义变量r、s类型为单精度实型*/ printf("enter a radius:");scanf(h%f,&r);/*山键盘输入圆的半径*/s=pi*pow(r,2);/*计算圆面积 s*/printf(nr=%f,s=%fnm,r,s); /* 输出结果*/12345678900.00000012345678902.000000press any key to continue4、实型数据7位有
33、效,小数保留6位例# include<stdio.h>void niain()float x=llllll11 ,y=222222.222; printf(,x+y);5、字符与整数(ascii码)输出例#include<stdio.h>void main() char chl,ch2;chl='a: ch2=,b,;printf(mch 1 =%c,ch2=%cn",ch 1 ,ch2); printf("ch 1 =%d,ch2=%dnu,ch 1 ,ch2);6、字符与字符串的区别(x和旷除了定界符不一样外,内存占用字节数不同)例 #
34、include<stdio.h>void main() charcl=,a,c2=,'an;printf("%d,%dn",sizeof(c 1 ),sizeof(c2);)第二章上机题学习c语言运算符、表达式1、不同类型数据混合运算及pr1ntf函数中格式串与输出项类型匹配例#include<stdio.h>void main()int a=l; char cl = a; float f=100; double d=200.0; long 1=40000;"e:vccp4debugp4.exe"3660000008400
35、010000000265.000000printf(mn%f printf(h%ld printf(h%f printf(”lfm,a+c 1 +f+d); printf(h%dfsizeof(a+c 1 +f+d);”,a+1);a+cl);/*整数用实输格式彳输出,结果错误*/“,cl+d);2、h增印咸运算例#include<stdio.h>void main()int i=3,x,y;x二i+;/*执行后,x的值为3, i的值为4*/y=+i;/*执行后,y的值为5, i的值为5*/printf("%d %d %dn",x,y,i);3、口增口减运算例#
36、include<stdio.h>void main()int 上&printf(”3d”,+i); printf(,%3d,-i); printf(“3d“,i+);printf(h%3d,i-);printf(h%3dh,-i+); printf(m%3dnn,-i-);*e:vccp4debugp. |9889 -8 -9press any key to contiruie.ifl1/*单目运算+、八结合方向自右向左,相当于-(i+)和()*/1()、自增自减运算例#include<stdio.h>void main()int x=ioo;printf(&q
37、uot;%d,%d,%d,%dn",x+,x,x,x);/*tc2()编译器下函数的实参数的求值顺序为:c *e:vccp4debug.99,99.99.100100rpress any key to continue口右向左*/*e:vccp4debug. xca*e:vccp4debu |8.322.000000.107,bpress any key to continuef1±1#include<stdio.h> void main() int a,b=322,c;float x,y=8.88; char cl= k ,c2;printfc%diax);4
38、、强制类型转换例(变量num被强制转换输出后其木身值和类型未改变) #include<stdio.h>void main()float num=2.5;int a;a=(int)num;printf(u%dn",a); printf(n%fnn,num);printf(u%dnh,sizeof(num);5、赋值过程中溢出例a=y;x=b;c=c 1 ;c2=b;printf(“d,%f,%d,%c”,a,x,c,c2);/*变量c2的值按c字符输出为什么是字符b呢? */6、赋值表达式例c、 "e:myd0cpp3.口it112,press1to conti门
39、hi#include<stdio.h>void main()int x=2,y,z;x*=3+2;printf("( 1 )x=%dn",x);x*=y=z=4;printf(u(2)x=%dn",x);x=y=l;z=x+-1;printf(n(3)x=%d*z=%dn",x,z);z=x+*+y;printf("( 1 )x=%d*y=%d*z=%dn",x,y,z);7、逗号表达式例#include<stdio.h>void niain()int a=4;char b='b'double
40、c=3.14;printf("(a*a,a)=%dn",(a*a,a);printf("(c+2.23,a)=%dn",(c+2.23,a); printf("(c,b,a)=%dn",(c,b,a);8、逻辑表达式的值例#include<stdio.h>void main() char x=,my=,n,;int n;n=x<y;printf(h%dnn,n);n=x=y-l;printf("%dn'n);n=(y !=* y*)+(5<3)+(y-x= 1);printf(u%d,nu,n
41、);9、逻辑表达式运算法则例# include<stdio.h>void main()int a=l,b=2,n,x;i c' "e:myd0cpp3中x2,12,11 j2,1press1<ey to continue2j x=(a>b)&&(+n); printf(mx=%dn",x); printf(mn=%dn,n); 10、逻辑表达式的值例#include<stdio.h>void main()int m,k;k=(m=0)ll(m=l)&&(m=2);printf(u%d,%dnn,m,
42、k); k=(m=2)ll(m= 1 )&&(m=0); printf(u%d,%dn",m,k); k=(m=2)&&(m=l)ll(m=0); printf(u%d,%dnn,m,k); k=(m=0)&&(m=l)ll(m=2);printf(',%d,%dn',m,k);11、逗号表达式的值# include<stdio.h>void main()int a=2,b=4,c=6,x,y;y=(x=a+b),(b+c); /*尾表达式的值就是逗号表达式的值*/printf(ny=%d,x=%dnu,y,
43、x);运彳亍结果:y=10,x=612、位运算例,从键盘上输入1个正整数给变量num,按16位二进制位逐位输出该数。#include "stdio.h"void main() int num, mask, i;printf("input a integer number: ”);scanf("%d",&num);mask=l«15;/*构造1个最高位为1、其余各位为0的整数*/ printf("%d=",num);for(i=l; i<=16; i+) putchar(num&mask/*输出
44、最高位的值(1/0)*/num «= 1;/*将次高位移到最高位上*/if( i%4=0 ) putchar(',');/*四位一组,用逗号分开*/primf(” bbn”);第三章上机题顺序结构程序重点是输出输入格式控制,难点是scanf()函数的实际操作,特别是数据的分隔和格式控制中 的普通字符的键入。1、利用赋值表达式语句交换2个变量的值。c"g:vccpl'debugba=3,b=4a=4,b=31press any keu to continue. 14# include<stdio.h>void main() int a=3,
45、b=4, c;printf("a=%d,b=%dnm,a,b);c=a,a=b,b=c;printf("a=%d,b=%dn",a,b);2、输入三如形三边a,b,c则计算三如形面积。#include<stdio.h>#include<math.h>/*若无math.h,编译连接通过,但结果错误,为什么?*/void main()float a,b,c,area,s;printf (henter float a,b,c:nj ;scanf(”f,%f,%f',&a,&b,&c); s=1.0/2*(a+b+c
46、);/* 或 1/2.0*/area=sqrt(s*(s-a)*(s-b)*(s-c);printf (harea=%6.2f nh,area);)3、输入一个三位止整数,然后将它逆序输出。例如输入123 , 输出为:321# include<stdio.h>void main() int m , n , a , b , c ;printf(hinput a int numbernu); scanf("%d",&m);a=m/100;b=m/10%10;c=m%10;n=100*c+10*b+a; printf(h%dn",n);讦(avc)
47、min=a;严 a<b anda<c此时a最小*/elsemin=c; /* b>a >c 此吋 c 最小 */第四章上机题 选择结构程序1、输入三角形三边目l,b,c若能组成三角形,则计算三角形面积。否则显示出错信息。三角形面积=s(s-ci)(s-b)(s-c)# include<math.h> #include<stdio.h>void main( ) float a,b,c,areas ;printf (nenter float a,b,c:nh); scanf(”f,%f,%f',&a,&b,&c);if
48、 (a+b>c&&b+c>a&&c+a>b) s=l .0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf ("area=%6.2f n",area);elseprintf(mit is not a trianglenh); 2、输入三个整数a,b,c,找:l淇中最小数送min r输出。#include <stdio.h>void main () int a, b, c, min ; scanf(”d,%d,%d“,&a, &b,&c);讦
49、(a<b)if (b<c) min =b; /* b<a and b<c 此时 b 最小 */ else min=c ;/* a>b>c 此时 c 最小 */printf(,'min=%dn,min);3>键盘输入5个年份,显示出其屮的闰年,并显示出闰年的个数。判断润年的逻辑式:year%4=0&&year%400=0#include<stdio.h>void main()year%100!=0ii int ycar,lcap,sum=o,i=l; loopl:if(i>5) goto loop2; leap=
50、0; scanf("%dh,&year);if(year%4=0 && year%100!=0 llyear%400=0) leap=l; sum+=l; if(leap)printf(n%d is u,year);elseprintf(h%d is not”,year); printf(ua leap yearnm); i+=l;goto loopl;loop2:printf(hsum=%dn,sum); 4、求一元二次方程的根。# include<math.h>#include<stdio.h> void main()floata,
51、b,c,disc,x 1 ,x2,realpart,imag part;scanf( “f,%f,f”,&a,&b,&c);if ( fabs(a)<=le-6) printf( “is not quadratic v );/*不是二次方程*/else disc=b*b-4*a*c;讦(fabs(disc)<=le-6)/*机器冬*/printf( uhas two equal roots:%8.4fn,",-b/(2*a); /*等根*/ else if (disole-6)/*不等的实根*/ x 1 =(-b+sqrt(disc)/(2*a);
52、x2=(-b+sqr(disc)/(2*a);printf( " has distinct real roots:%8.4f and %8.4fn " ,xl ,x2);) else realpart=-b/(2*a); imagpart=sqrt(-disc)/(2*a); /*虚根*/ printf( “8.4f+%&4fin” ,realpart,imagpart);printf(“ 8.4f&4fin” ,realpart,imagpart);第五章上机题循环结构程序1、数列求和:n2立=*+斗+ .+¥i=l分析:n由键盘输入,是项数,分
53、子用变量m, m=m*x (注意赋值号左右两边m表示不同的意 义,左边的m表示当前项分了,右边m表示前一项的分了),m为i个x的乘积,即x的i次幕;i 为控制变量,从1开始每次加1, 一直加到n。各项求和町用表达式sum=sum+ m / i (注意赋值 号左右两边sum表示不同的意义,左边的sum表示包括当前项在内的累加和,右边sum表示当前 项以询的累加和),m,sum为实型数据.#include<stdio.h>void main( ) int i, n;float x, sum=().(), m= 1.0;printf(,rinput x、n=?n,r); scanf(h&
54、amp;x,&n);i=l;while(i<=n) m=m*x;sum=sum+m/i; i+;printf(usum=%8.2fn", sum);2、输入一个正整数,并将其逆序输出(如输入12345则输出54321。分析:键入一个正整数为num,数值不大于32767)每次用%10可求得个位数字,用/10求得整数商,下次再用10求得10位上数字:#include<stdio.h>void main() int m ,num, right;printf(n enter number m: h); scanf(n%dn,&m);num=m; printf
55、(h%dnm,m);do right=num%10;/* 求个位数字 */printf("%du,right);num=num/10; /*个位数字被去掉,得到新的整数*/ while(num!=0);printf(hnh);3、设limit为任意给定的整数,编程求和式:sum= 1 + 1/2+1/3+1/4+l/n 大于 limit 的最小自然数 n°i"g:vccpldeb.#include<stdio.h>void main()long n=0;float sum=0;int limit; printf(menter the upper limit'); scanf(h%d",&limit);do(+n; sum+=1.0/n; while (sum<=limit);printf(mnn=%ldn,n); do while()与while()适合不同的应用题,本题利用while()循环能方便地编写程序吗?试一试。4、求在3位数屮,各位数字的立方和等于该数本身的3位数及其个数并输出。例如: 153=13+53+33; 153就是这样的数(称为水仙花数)分析:所求数的取值范围是10()999,该3位数用d表示,各位数字分别用 a, b, c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 关于孩子抚养权的离婚合同书
- 货物采购合同补充协议
- 设备销售与购买合同范文
- 车险综合保险合同示例
- 服务合同预付款借款范本
- 歌手签约演出服务合同
- 服装采购代理合同
- 大型建筑机械租赁合同样本范本
- 城乡结合部三方共建项目合同
- 商铺租赁合同规范样本
- 2025年湖南高速铁路职业技术学院单招职业倾向性测试题库附答案
- 《高铁乘务安全管理与应急处置(第3版)》全套教学课件
- 历年湖北省公务员笔试真题2024
- 学校食品安全长效管理制度
- 2.2 说话要算数 第二课时 课件2024-2025学年四年级下册道德与法治 统编版
- 滋补品项目效益评估报告
- 提纲作文(解析版)- 2025年天津高考英语热点题型专项复习
- 2025年南京机电职业技术学院高职单招数学历年(2016-2024)频考点试题含答案解析
- 2025年春新人教版历史七年级下册全册课件
- 2025年浙江台州机场管理有限公司招聘笔试参考题库含答案解析
- 《工程勘察设计收费标准》(2002年修订本)
评论
0/150
提交评论