1、廖金祥编VC60 集成环境下 C 语言编译操作指导第 1 页 共 47 页VC60 集成环境下C 语言编译操作指导廖金祥 编廖金祥编VC60 集成环境下 C 语言编译操作指导第 2 页 共 47 页上机实验目的与要求一、实验目的上机实验是学习程序设计语言必不可少的实践环节,特别是 C 语言灵活、简洁、语法检查不太严格,更需要通过编程实践来掌握它。C 程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。若因为学时所限不能保证集中的上机学时,希望学生能在课外自行上机,当然更应珍惜有限的课内上机的机会。如此才能尽快掌握 C 语言开发程序的能力,为今后的继续学习打下一个良好的基础。为
2、此,我们结合课堂讲授的内容和进度,安排了 12次上机实验。上机实验的目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,更重要的还有如下几个方面:1加深对课堂讲授内容的理解课堂上要讲授许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背更不可取。通过多次上机练习,对于语法规则有了感性的认识,能加深对它的理解。在理解的基础上就自然而然地掌握了。对于一些知识点自己认为在课堂上听懂了,但上机实践中会发现原来的理解有偏差;还有一些知识点中错误只有在程序运行时(编译连接通过后)才能发现,这些只能通过上机才能体会和掌握。学习C语言不能停留在只学习它的语法规则上,而在于利用学到的
3、知识编写C语言程序并解决实际问题,由计算机帮助我们解题。只有通过上机才能检验自己编写的程序是否能得到正确的结果。通过上机实验来验证自己编制的程序是否正确,是大多数同学初入门的心态。倘若只停留在这一步,那就是“固步自封”。当程序验证完成后,应该问自己:还有其他的解决方法吗?还可以用其他的语句吗?这是最好的吗?此题中自己犯了那些错误?通过自己编程得到正确的结果才能加深对C语言的理解和和提高开发能力。算法之精妙、程序结构之清晰、界面之友好、容错性之高永远是程序员追求的目标。2熟悉程序开发环境、学习计算机系统的操作方法武汉科技大学计算机学院二 0 一 0 年 二月二十六日廖金祥编VC60 集成环境下
4、C 语言编译操作指导第 3 页 共 47 页一个C语言源程序从编辑、编译、连接到运行,都要有一定的外部操作环境下的支撑。所谓“环境“就是所用的计算机系统硬件、软件配置情况,只有学会使用这些环境,才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它语言开发环境时就会触类旁通,很快掌握。本书中将要介绍 3 种上机实验环境,以适应不同的要求。它们分别是:WIN-TC 集成环境(16 位图形界面编译系统)Visual C+ V6.0 集成环境(32 位图形界面编译系统)Turbo C2.0 集成环境(16 位字符界面编译系统)
5、。3学习上机调试程序完成了程序的编写,决不意味着万事大吉。无论技术多么高超的人都不敢吹嘘:“凡是自己编写的程序能一次性通过而无任何错误”。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出一大堆语法错误:scanf( )函数的输入表中出现非地址项、某变量未进行类型定义、语句末尾缺少分号括号或引号未成对等。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小
6、小错误,调试高手一眼就看出错误所在。经常上机的人见多识广,经验丰富,对出现的错误能很快地找到出错点。通过C语言提供的调试手段逐步缩小错误点的范围,最终找到错误点和错误原因,这样的经验和能力只有通过长期上机实践才能取得。向别人学习调试程序的经验当然重要,但更重要的是自己上机实践,分析、总结调试程序的经验和心得。别人告诉你一个经验,当时似乎明白。当出现错误时,由于情况千变万化,这个经验不一定用得上,或者根本没有意识到使用该经验。类似的错误照犯不误。只有通过自己在调试程序过程中的经历并分析总结出的经验才是自己的。一旦遇到问题,应对之策自然而生。所以调试程序不能指望别人替代,必须自己动手。编制出源程序
7、,只能说完成一半工作,另一半工作就是调试程序、得到正确结果。可以这样说:“不会调试程序就编不好程序”。 二、实验要求上机实验一般经历上机前的准备(编程)、上机调试运行和实验后的总结三个步骤。1上机前的准备根据问题,进行分析,选择适当算法并编写程序。上机前一定要仔细检查程序(称为静态检查)直到找不到错误(包括语法和逻辑错误)。分析可能遇到的问题及解决的对策。准备几组测试程序的数据和预期的正确结果,以便发现程序中可能存在的错误。 上机前没有充分的准备,到上机时临时拼凑一个错误百出的程序,宝贵的上机时间白白浪费了;如果抄写或复制一个别人编写的程序,到头来自己一无所获。2上机输入和编辑C源程序,并对源
8、程序进行编译、连接、调试运行。按照C 语言语法规则而编写的C 程序称为源程序。源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII 码表示,并保存在扩展名为 .C 或.CPP的文件中。源程序廖金祥编VC60 集成环境下 C 语言编译操作指导第 4 页 共 47 页是无法直接被计算机运行的,这就需要把源程序先翻译成机器指令(目标程序),然后计算机的CPU 才能运行。源程序翻译过程由两个步骤实现:编译与连接。首先对源程序进行编译,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序。但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数的计算过程
9、并不是用户自己编写的,而直接调用系统函数库中的库函数。因此,必须把“库函数”的计算过程指令连接到经编译生成的目标程序中,合成可执行程序,并加入经操作系统对执行程序的地址重定位机制而产生的文件头,方可由计算机运行,最终得到结果。首先进入 C 语言集成开发环境,输入并编辑事先准备好的源程序;然后对源程序进行编译,查找语法错误,若存在语法错误,重新进入编辑环境,改正后再进行编译,直到通过编译,得到目标程序(扩展名为 .OBJ)。下一步是进行连接,产生可执行程序(扩展名为.EXE)。使用预先准备的测试数据运行程序,观察是否得到预期的正确结果。若有问题,则仔细调试,排除各种错误,直到得到正确结果。在调试
10、过程中,要充分利用C语言集成开发环境提供的调试手段和工具,例如单步跟踪、设置断点、监视变量值的变化等。整个过程应自己独立完成。不要一点小问题就找老师,学会独立思考,勤于分析,通过自己实践得到的经验用起来更加得心应手。3整理上机实验结果,写出实验报告实验结束后,要整理实验结果并认真分析和总结,根据教师要求写出实验报告。实验报告一般包括如下内容: 实验名称。 实验目的要求 具体的实验步骤(含程序或程序段) 实验结果原始数据、相应的运行结果和必要的说明。 实验小结实验过程中的心得体会和经验教训的分析与思考C 语言编译工具及其操作方法一、WIN-TC 编译系统WIN-TC 是基于 windows 操作
11、系统的一个 16 位的 C 语言编译工具,它的内核还是 Turbo c V2.0。所以最好是在 windows98 下使用。操作步骤:1、进入 WIN-TC 集成环境:双击桌面上的 WIN-TC 图标或在 WIN-TC 文件夹中双击 WIN-TC.EXE 文件进入 WIN-TC 集成环廖金祥编VC60 集成环境下 C 语言编译操作指导第 5 页 共 47 页境,如图 W-1。若你想将自己的实验成果(含源程序)保存在自己的文件夹中,可以先建立一个文件夹,如:C:mydoc, 然后单击:编辑 编辑配置 工作目录右边图标 找到 Cmydoc确定。出现如图 W-2,你的实验成果将保存在 C:mydoc
12、 文件夹中。否则你的所有成果将保存在:WIN-TCprojects 文件夹中。在如图 W-1 主窗口中可能残留有其它 C 程序,此时可以单击: 文件新建。出现图 W-3。在图 W-3 的中间窗口中输入准备好的 C 语言源程序,认真仔细检查有无错误,然后转第 2步进行编译连接。此处,假设已经输入了如下程序:例 L1-1 #include void main( ) /*主函数 */ printf(“This is a program.n”); /*在屏幕上显示:This is a program */getch();图 W-1 新建文件窗口 廖金祥编VC60 集成环境下 C 语言编译操作指导第 6
13、 页 共 47 页图 W-2 编辑配置2、编译、连接源程序:图 W-3 WIN-TC 集成环中境源程序输入与编辑在如图 W-3 中单击:运行 编译连接,此时有 2 种可能:程序中有错误,此时在屏幕下部 输出 小窗口中有出错的行号及错误原因,应据此进行修改并再次编译连接。廖金祥编VC60 集成环境下 C 语言编译操作指导第 7 页 共 47 页程序无错。则出现如下图 W-4图 W-4 输入源程序文件名输入文件名后单击: 保存 ,出现如图 W-5,单击: 确定。图 W-5 编译连接成功3、运行程序单击:运行 编译连接运行 确定。廖金祥编VC60 集成环境下 C 语言编译操作指导第 8 页 共 47
14、 页 特别重要提示:在 WIN 2K 或 WIN XP 系统下运行,程序最后一行一定要加上: getch(); 否则,看不到运行结果。出现如下显示运行结果的黑色窗口(图 W-6) ,在此窗口中,若需要输入数据,则在此按照输入格式输入。本例不要求输入数据。图 W-6 运行结果二、VISUAL C+ V6.0 编译系统 VC+6.0是一个集成环境下的编辑、编译、运行C语言程序的工具,其操作步骤如下:1、事先在尾逻辑盘上建立自己的工作文件夹(例如:E:MYDOC)2、单击桌面上的图标或单击:开始 程序 Microsoft Visual Studio 6.0 Microsoft Visual C+ 6
15、.0,可启动VC+,屏幕上将显示图V-1所示的窗口。图V-1 VC+ 6.0主窗口廖金祥编VC60 集成环境下 C 语言编译操作指导第 9 页 共 47 页3、单击:文件 新建工程 出现图V-2窗口,选中Win32 Console Application并在在工程文本框中输入工程名(例如:P1) ;单击位置文本框右边的省略号按钮进行浏览并找到自己事先建立的文件夹(如:E:MYDOC).单击 确定完成确定图V-2 新建工程窗口4、单击:文件 新建文件 ,选中 “C+Source File”,在“文件”框中输入文件名(如VL1-1) ,若想将实验成果保存在自己的文件夹中,此处可以在目录对话框中输入
16、自己的事先建立的文件夹(如:c:mydoc)。或单击目录对话框右边的按钮并逐步选择到c:mydoc,出现图V-3。图V-3 输入文件名再单击:确定 按钮,出现如下图V-45、在图V-4的源程序编辑区内,输入源程序。以如下程序VL1-1为例:选中控制台应用工程选中 C+源文件本工程所有结果保存在自己的文件夹E:MYDOCP1中廖金祥编VC60 集成环境下 C 语言编译操作指导第 10 页 共 47 页#includevoid main( ) /*主函数*/ /*函数体应该处于一对大括号中 */int a,b,sum; /*定义整形变量a,b,sum*/a=123; b=456; /*给变量a,b
17、 赋值*/sum=a+b; /*做加法,并将此和赋值给变量SUM保存*/printf(“total=%dn“,sum); /*输出变量SUM的值*/图V-4 输入源程序特别提示:在Visual C+下,程序尾不要:getch(); VC+不支持该函数。6、单击:编译 编译VL1-1.cpp,出现如图V-5。在窗口底部信息框中可以看到:0 errer(s), 0 warning(s) 表明编译通过,程序无任何错误,可以进行下一步连接。图V-5 编译源程序正确7、若程序有错误,则出现 图V-6 ,且在屏幕底小信息窗口中出现错误信息,应根据提示改正廖金祥编VC60 集成环境下 C 语言编译操作指导第
18、 11 页 共 47 页错误,重新进行第6步,直到无任何错误。单击菜单 编译 构建VL1-1.EXE进行连接。无任何错误时出现如图V-7窗口。进入第 8 步。否则重新第5步修改源程序。图V-6 源程序有错误提示(注:本例题中sum 变量未定义且第4行尾缺了分号 ;。改正后再重复第6步、第7步直到编译连接正确。此时信息窗口中显示错误是 0 。)图V-7 连接源程序正确8、单击菜单 编译 执行P1.EXE,出现如图V-9窗口。廖金祥编VC60 集成环境下 C 语言编译操作指导第 12 页 共 47 页图V-8 执行程序9、出现程序运行结果,如图V-9。观察结果正确后,按任何键即可回到集成环境窗口。
19、若程序需要输入数据,则在图V-9中按照数据格式输入数据后得到运行结果。若结果不正确,再修改源程序,重复第6、7 、8、9步。图V-9 程序运行结果10、完成第一个程序:单击主菜单中的 文件 关闭工作区,弹出小窗口如图V-10,单击 是回到图V-1,完成第一个程序。廖金祥编VC60 集成环境下 C 语言编译操作指导第 13 页 共 47 页图V-10在硬盘上查看本工程p1产生的文件在自己的文件夹如E:MYDOC中可以看到子文件夹P1,在P1中有VL1-1.CPP,这就是源程序文件。有P1.DSW,这是P1工程(工作区)文件,打开(或双击)它可以重新进入P1工程进行修改。进入P1 中的DEBUG文
20、件夹,有P1.EXE文件,这就是执行程序,双击它可以得到本程序运行结果。11、开始第二个程序重复310步输入并编辑、编译、连接、运行第 2个源程序。三、VC60环境下程序调试程序编译连接通过后,发现运行结果不正确时会问“问题出在哪儿?” ,调试程序的过程就是缩小错误范围直到找到发生错误的语句并加以改正的过程。1、在源程序中设置断点设置断点就是为了缩小错误范围而将程序分成若干块甚至单个语句。设置断点:光标移到某程序行上按下 F9 键,该行前出现红色圆点。程序执行到此会无条件停下来,这是无条件断点。有时想当某个变量或某一表达式等于某一特定值时能停下来,即依据条件设置断点,这叫条件断点,要在专门的窗
21、口中设置,其方法较复杂,请参考其他资料。图V-11 程序中设置断点示意2、跟踪执行单步执行:F10键:每次执行当前光标处的一行程序或一条语句或一次函数调用(不进入函数中) 。F11键:每次执行当前光标处的一行程序或一条语句,遇到函数调用则进入该函数中。执行到下一个断点:廖金祥编VC60 集成环境下 C 语言编译操作指导第 14 页 共 47 页F5键:从当前行一直执行到下一个断点处停执行到光标处CTRL+F10键:从当前行一直执行到光标处停执行完余下代码:SHIFT+F10键:从当前行执行完本函数中余下所有代码退出调试模式SHIFT+F5键:停止调试返回到编辑源程序状态重新开始CTRL+SHI
22、FT+F5键:重新开始,返回掉程序的第一条代码3、查看程序执行过程中变量值的变化边执行变查看变量的值时调试的重要环节,进入调试模式后系统会自动打开Variables窗口和Watch窗口。Variables窗口:其中包含三个标签。Auto标签: 按字母顺序显示当前所有变量(包含变量的地址如 /*定义变量 r、s 类型为单精度实型*/printf(“Enter a radius:“);scanf(“%f“, /*由键盘输入圆的半径*/s=PI*pow(r,2); /*计算圆面积 s*/printf(“R=%f,S=%fn“,r,s); /*输出结果*/2、整数溢出示例#includevoid ma
23、in()short int a,b; /*改为:long int a,b;则结果正确*/输入表达式 a+b,系统显示值为 14运行结果:廖金祥编VC60 集成环境下 C 语言编译操作指导第 16 页 共 47 页a=32767;b=a+1;printf(“%d,%dn”,a,b);3、实型数据 7 位有效,小数保留 6 位例#includevoid main()float a,b;a=123456.789e5;b=a+2;printf(“%fn”,a); 改为:double a,b;后结果正确:printf(“%fn”,b); 4、实型数据 7 位有效,小数保留 6 位例#includevoi
24、d main()float x=111111.111,y=222222.222;printf(“%fn”,x+y); 5、字符与整数(ASCII 码)输出例#includevoid main() char ch1,ch2; ch1=a; ch2=b;printf(“ch1=%c,ch2=%cn“,ch1,ch2);printf(“ch1=%d,ch2=%dn“,ch1,ch2);6、字符与字符串的区别(a和”a”除了定界符不一样外,内存占用字节数不同 )例#includevoid main() char c1 =a,c2 =“a“;printf(“%d,%dn“,sizeof(c1),size
25、of(c2); 第二章上机题 学习 C 语言运算符、表达式廖金祥编VC60 集成环境下 C 语言编译操作指导第 17 页 共 47 页1、不同类型数据混合运算及 PRINTF 函数中格式串与输出项类型匹配例#includevoid main()int a=1;char c1=A; float f=100;double d=200.0;long l=40000;printf(“n%f “,a+c1+f+d); printf(“%d “,sizeof(a+c1+f+d);printf(“%ld “,a+l);printf(“%f “,a+c1); /*整数用实输格式%f 输出, 结果错误*/pri
26、ntf(“%lf “,c1+d);2、自增自减运算例 #includevoid 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、自增自减运算例#includevoid main()int i=8;printf(“%3d“,+i); printf(“%3d“,-i); printf(“%3d“,i+);printf(“%3d“,i-);printf(“%3d“,-i+); printf(“%3dn“,-i-);/*单目运算+ 、
27、 - -结合方向自右向左,相当于(i+) 和 -(i- -) */10、自增自减运算例#includevoid main()int x=100;printf(“%d,%d,%d,%dn“,x+,x,-x,x); /*TC20 编译器下函数的实参数的求值顺序为:自右向左 */printf(“%dn“,x); 4、强制类型转换例(变量 num 被强制转换输出后其本身值和类型未改变)廖金祥编VC60 集成环境下 C 语言编译操作指导第 18 页 共 47 页#includevoid main()float num=2.5;int a; a=(int)num;printf(“%dn“,a);print
28、f(“%fn“,num);printf(“%dn“,sizeof(num);5、赋值过程中溢出例#includevoid main()int a,b=322,c;float x,y=8.88;char c1=k,c2;a=y;x=b;c=c1;c2=b;printf(“%d,%f,%d,%c”,a,x,c,c2);/*变量 c2 的值按%c 字符输出为什么是字符 B 呢?*/6、赋值表达式例#includevoid main()int x=2,y,z; x*=3+2;printf(“(1)x=%dn“,x);x*=y=z=4;printf(“(2)x=%dn“,x);x=y=1;z=x+-1;
29、printf(“(3)x=%d*z=%dn“,x,z);z=x+*+y;printf(“(1)x=%d*y=%d*z=%dn“,x,y,z);7、逗号表达式例#includevoid main()int a=4;char b=B;double c=3.14;printf(“(a*a,a)=%dn“,(a*a,a);printf(“(c+2.23,a)=%dn“,(c+2.23,a);廖金祥编VC60 集成环境下 C 语言编译操作指导第 19 页 共 47 页printf(“(c,b,a)=%dn“,(c,b,a);8、逻辑表达式的值例#includevoid main() char x=m,y
30、=n;int n;n=xvoid main()int a=1,b=2,n,x; n=1;x=(ab)printf(“x=%dn“,x);printf(“n=%dn“,n); 10、逻辑表达式的值例#includevoid main()int m,k;k=(m=0)|(m=1)printf(“%d,%dn“,m,k);k=(m=2)|(m=1)printf(“%d,%dn“,m,k);k=(m=2)printf(“%d,%dn“,m,k);k=(m=0)printf(“%d,%dn“,m,k);11、逗号表达式的值#includevoid main()int a=2,b=4,c=6,x,y;廖金
31、祥编VC60 集成环境下 C 语言编译操作指导第 20 页 共 47 页y=(x=a+b),(b+c); /*尾表达式的值就是逗号表达式的值 */printf(“y=%d,x=%dn“,y,x);运行结果:y=10,x=612、位运算例,从键盘上输入 1 个正整数给变量 num,按 16 位二进制位逐位输出该数。#include “stdio.h“void main() int num, mask, i;printf(“Input a integer number: “);scanf(“%d“,mask =1void main() int a=3,b=4, c; printf(“a=%d,b=
32、%dn“,a,b);c=a,a=b,b=c;printf(“a=%d,b=%dn“,a,b);2、输入三角形三边 a, b, c 则计算三角形面积。#include#include /*若无 math.h,编译连接通过,但结果错误,为什么?*/void main( )float a,b,c,area,s; 廖金祥编VC60 集成环境下 C 语言编译操作指导第 21 页 共 47 页printf (“enter float a,b,c:n“) ;scanf(“%f,%f,%f“,s=1.0/2*(a+b+c); /* 或 1/2.0 */area=sqrt(s*(s-a)*(s-b)*(s-c)
33、;printf (“area=%6.2f n“,area);3、输入一个三位正整数,然后将它逆序输出。例如输入 123 , 输出为: 321#includevoid main( ) int m , n , a , b , c ;printf(“input a int numbern“);scanf(“%d“,a=m/100; b=m/10%10;c=m%10;n=100*c+10*b+a;printf(“%dn“,n); 第四章上机题 选择结构程序1、输入三角形三边 a, b, c 若能组成三角形, 则计算三角形面积。否则显示出 错信息。三角形面积=#include#include void
34、main( ) float a,b,c,area,s ;printf (“enter float a,b,c:n“) ;scanf(“%f,%f,%f“,if (a+bc area=sqrt(s*(s-a)*(s-b)*(s-c);printf (“area=%6.2f n“,area);elseprintf(“it is not a trianglen“); 2、输入三个整数 a , b, c, 找出其中最小数送 min 且输出。#include void main ( ) int a, b, c, min ;)()(csbas廖金祥编VC60 集成环境下 C 语言编译操作指导第 22 页
35、共 47 页scanf(“%d,%d,%d“, if (aa c 此时 c 最小 */elseif (bbc 此时 c 最小 */printf(“min=%dn“,min); 3、键盘输入 5 个年份,显示出其中的闰年,并显示出闰年的个数。判断润年的逻辑式:year%4=0 loop1:if(i5) goto loop2;leap=0; scanf(“%d“,if(year%4=0 sum+=1; if(leap) printf(“%d is “,year); elseprintf(“%d is not “,year); printf(“a leap yearn“);i+=1;goto loo
36、p1; loop2:printf(“sum=%dn“,sum); 4、求一元二次方程的根。#include#includevoid main()float a,b,c,disc,x1,x2,realpart,imagpart;scanf(“%f,%f,%f”,if ( fabs(a)1e-6) /*不等的实根*/ x1=(-b+sqrt(disc)/(2*a);x2=(-b+sqr(disc)/(2*a);printf(“has distinct real roots:%8.4f and %8.4fn”,x1,x2); else realpart=-b/(2*a); imagpart=sqrt
37、(-disc)/(2*a); /*虚根*/printf(“%8.4f+%8.4fin”,realpart,imagpart);printf(“%8.4f-%8.4fin”,realpart,imagpart); 第五章上机题 循环结构程序1、数列求和:分析: n 由键盘输入,是项数,分子用变量 m, m=m*x (注意赋值号左右两边 m 表示不同的意义,左边的 m 表示当前项分子 ,右边 m 表示前一项的分子) , m 为 i 个 x 的乘积,即 x 的 i 次幂; i 为控制变量,从 1 开始每次加 1,一直加到 n。各项求和可用表达式 sum=sum+ m / i (注意赋值号左右两边 s
38、um 表示不同的意义 ,左边的 sum 表示包括当前项在内的累加和 ,右边 sum 表示当前项以前的累加和), m , sum 为实型数据. #includevoid main( )int i, n;float x, sum=0.0, m=1.0;printf(“input x , n=?n“);scanf(“ %f,%d“, i=1;while(ivoid main( ) int m ,num, right;printf(“ enter number m: “);nxxs.32n1ixi廖金祥编VC60 集成环境下 C 语言编译操作指导第 24 页 共 47 页scanf(“%d“,num=
39、m; printf(“%dn“,m);do right=num%10; /* 求个位数字 */printf(“%d“,right);num=num/10; /* 个位数字被去掉,得到新的整数 */while(num!=0);printf(“n“); 3、设 limit 为任意给定的整数,编程求和式:sum=1+1/2+1/3+1/4+1/n 大于 limit 的最小自然数 n。#includevoid main()long n=0;float sum=0;int limit; printf(“Enter the upper limit=“);scanf(“%d“,do+n;sum+=1.0/n
40、; while (sumvoid main( ) int d , s , a , b , c , n ; n=0;for(d=100;dvoid main()int i,j;for(i=1;ii) break;printf(“%-2d*%-2d=%-3d“,i,j,i*j);printf(“n“); 6、求 2100 之间的素数.(素数是大于 1,且除了 1 和它本身外,不能被其它任何整数所整除的整数)。根据初等数论,一个正整数的因数不会超过他的算术根。用此范围内整数试除,若都不能除尽他,则此数就是素数,此时标志 flag=1。#include#include void main (void)
41、 int i, j , k, flag;k=0;for( i=2;ivoid main( ) int i , j , k ;for(i=0; ivoid main( )int i,j;for(i=1;ivoid main() int x=-1;do;while (x+);printf(“x=%dn“,x); #includevoid main()int x = -100;while (x+void main()int a,b,i;printf(“Enter two number:“); scanf(“%d,%d“,if (a1;i-)if(a%i=0 /*找到了最大公约数,结束本层循环 */p
42、rintf(“(%d,%d)=%dn“,a,b,i); 11、用 /4=1-1/3+1/5-1/7+.公式求 的近近似值,知道某项的绝对值小于 10-6 为止。#include#includevoid main()float s,n,t,pi;t=1.0;pi=0;n=1.0;s=1.0;while(fabs(t)1e-6)pi=pi+t;n=n+2;s=-s; /*运用这种办法改变符号*/t=s/n;pi=pi*4.0;printf(“pi=%10.6fn“,pi); 12、打印 fibonacci 数列 1,1,2,3,5,8, . 的前 40 项。 分析: f1=1 f2=1 f3=f1
43、+f2 .f(n)=f(n-1)+f(n-2)采用的是递推的方法: 新的 f1=f1+f2, 新的 f2=f2+f1,注意:赋值左右两边的 f1、f2 表示不同的意义,左边的 f2、f2 是当前 fi、f2,右边的 f2、f2 是上一次的 f1、f2. #includevoid main()long f1,f2;int i;f1=1;f2=1;for(i=1;ivoid main()int x,y;for (x=1;xvoid main()int i;double term,e;term=e=1; for(i=1;ivoid main() int i,a10,min;廖金祥编VC60 集成环境
44、下 C 语言编译操作指导第 29 页 共 47 页printf(“input 10 number:“);for(i=0;iai) min=ai;printf(“nmin= %dn“,min); 2、用数组方法打印出 Fibonicci 数列的前 20 项。按定义可以得到 Fibonicci 数列,1,1,2,3,5,8,13,21,#includevoid main()int i;long int f40=1,1; for(i=2;ivoid main() int i,j,a11,t; printf(“input 10 number:n“);for(i=1;iaj)t=ai;ai=aj;aj=
45、t;for(i=1;i void main()int a11; /* 用 a1a10, a0不用 */int i,j,t; /* i,j 作循环变量,t 作两两比较的临时变量 */printf(“input 10 numbers:n“);for(i=1;iai+1) /* 交换大小 */ t=ai; ai=ai+1; ai+1=t; printf(“the sorted numbers:n“);for(i=1;i void main()int x,mid,top,bottom,a10=2,3,5,7,8,11,14,35,68,70;printf(“请输入要查找的数?“); scanf(“%d“,bottom=0,top=9;while(bottomamid) bottom=mid+1;else break;if(bottommax,把 aij作为新的临时最大值,并记录下其行下标 I 和列 j 。当全部元素比较完后,max 是整个矩阵全部元素的最大值。下面给出程序。#includevoid main()int i,j,row=0,colum=0,max;int a34=1,2,3,4,9,8,7,6,-10,10,-5,2; max=a00; for(i=0;imax )