VC60集成环境下C语言编译操作指导new_第1页
VC60集成环境下C语言编译操作指导new_第2页
VC60集成环境下C语言编译操作指导new_第3页
VC60集成环境下C语言编译操作指导new_第4页
VC60集成环境下C语言编译操作指导new_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、廖金祥编VC60集成环境下C 语言编译操作指导VC60集成环境下C 语言编译操作指导廖金祥 编武汉科技大学计算机学院二0一0年 二月二十六日上机实验目的与要求一、实验目的 上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁、语法检查不太严格,更需要通过编程实践来掌握它。C程序设计语言除了课堂讲授以外,必须保证有不少于课堂讲授学时的上机时间。若因为学时所限不能保证集中的上机学时,希望学生能在课外自行上机,当然更应珍惜有限的课内上机的机会。如此才能尽快掌握C语言开发程序的能力,为今后的继续学习打下一个良好的基础。为此,我们结合课堂讲授的内容和进度,安排了12次上机实验。上机实验的

2、目的,不仅仅是验证教材和讲课的内容、检查自己所编的程序是否正确,更重要的还有如下几个方面:1加深对课堂讲授内容的理解 课堂上要讲授许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背更不可取。通过多次上机练习,对于语法规则有了感性的认识,能加深对它的理解。在理解的基础上就自然而然地掌握了。对于一些知识点自己认为在课堂上听懂了,但上机实践中会发现原来的理解有偏差;还有一些知识点中错误只有在程序运行时(编译连接通过后)才能发现,这些只能通过上机才能体会和掌握。 学习C语言不能停留在只学习它的语法规则上,而在于利用学到的知识编写C语言程序并解决实际问题,由计算机帮助我们解题。只有通过

3、上机才能检验自己编写的程序是否能得到正确的结果。通过上机实验来验证自己编制的程序是否正确,是大多数同学初入门的心态。倘若只停留在这一步,那就是“固步自封”。当程序验证完成后,应该问自己:还有其他的解决方法吗?还可以用其他的语句吗?这是最好的吗?此题中自己犯了那些错误?通过自己编程得到正确的结果才能加深对C语言的理解和和提高开发能力。算法之精妙、程序结构之清晰、界面之友好、容错性之高永远是程序员追求的目标。2熟悉程序开发环境、学习计算机系统的操作方法 一个C语言源程序从编辑、编译、连接到运行,都要有一定的外部操作环境下的支撑。所谓环境就是所用的计算机系统硬件、软件配置情况,只有学会使用这些环境,

4、才能进行程序开发工作。通过上机实验,熟练地掌握C语言开发环境,为以后真正编写计算机程序解决实际问题打下基础。同时,在今后遇到其它语言开发环境时就会触类旁通,很快掌握。本书中将要介绍3种上机实验环境,以适应不同的要求。它们分别是:WIN-TC集成环境(16位图形界面编译系统)Visual C+ V6.0集成环境(32位图形界面编译系统)Turbo C2.0集成环境(16位字符界面编译系统)。3学习上机调试程序 完成了程序的编写,决不意味着万事大吉。无论技术多么高超的人都不敢吹嘘:“凡是自己编写的程序能一次性通过而无任何错误”。你认为万无一失的程序,实际上机运行时可能不断出现麻烦。如编译程序检测出

5、一大堆语法错误:scanf( )函数的输入表中出现非地址项、某变量未进行类型定义、语句末尾缺少分号括号或引号未成对等。有时程序本身不存在语法错误,也能够顺利运行,但是运行结果显然是错误的。开发环境所提供的编译系统无法发现这种程序逻辑错误,只能靠自己的上机经验分析判断错误所在。程序的调试是一个技巧性很强的工作,对于初学者来说,尽快掌握程序调试方法是非常重要的。有时候一个消耗你几个小时时间的小小错误,调试高手一眼就看出错误所在。经常上机的人见多识广,经验丰富,对出现的错误能很快地找到出错点。通过C语言提供的调试手段逐步缩小错误点的范围,最终找到错误点和错误原因,这样的经验和能力只有通过长期上机实践

6、才能取得。向别人学习调试程序的经验当然重要,但更重要的是自己上机实践,分析、总结调试程序的经验和心得。别人告诉你一个经验,当时似乎明白。当出现错误时,由于情况千变万化,这个经验不一定用得上,或者根本没有意识到使用该经验。类似的错误照犯不误。只有通过自己在调试程序过程中的经历并分析总结出的经验才是自己的。一旦遇到问题,应对之策自然而生。所以调试程序不能指望别人替代,必须自己动手。编制出源程序,只能说完成一半工作,另一半工作就是调试程序、得到正确结果。可以这样说:“不会调试程序就编不好程序”。 二、实验要求 上机实验一般经历上机前的准备(编程)、上机调试运行和实验后的总结三个步骤。1上机前的准备

7、根据问题,进行分析,选择适当算法并编写程序。上机前一定要仔细检查程序(称为静态检查)直到找不到错误(包括语法和逻辑错误)。分析可能遇到的问题及解决的对策。准备几组测试程序的数据和预期的正确结果,以便发现程序中可能存在的错误。 上机前没有充分的准备,到上机时临时拼凑一个错误百出的程序,宝贵的上机时间白白浪费了;如果抄写或复制一个别人编写的程序,到头来自己一无所获。2上机输入和编辑C源程序,并对源程序进行编译、连接、调试运行。 按照C 语言语法规则而编写的C 程序称为源程序。源程序由字母、数字及其它符号等构成,在计算机内部用相应的ASCII 码表示,并保存在扩展名为 .C 或.CPP的文件中。源程

8、序是无法直接被计算机运行的,这就需要把源程序先翻译成机器指令(目标程序),然后计算机的CPU 才能运行。源程序翻译过程由两个步骤实现:编译与连接。首先对源程序进行编译,即把每一条语句用若干条机器指令来实现,以生成由机器指令组成的目标程序。但目标程序还不能马上交计算机直接运行,因为在源程序中,输入、输出以及常用函数的计算过程并不是用户自己编写的,而直接调用系统函数库中的库函数。因此,必须把“库函数”的计算过程指令连接到经编译生成的目标程序中,合成可执行程序,并加入经操作系统对执行程序的地址重定位机制而产生的文件头,方可由计算机运行,最终得到结果。首先进入 C 语言集成开发环境,输入并编辑事先准备

9、好的源程序;然后对源程序进行编译,查找语法错误,若存在语法错误,重新进入编辑环境,改正后再进行编译,直到通过编译,得到目标程序(扩展名为 .OBJ)。下一步是进行连接,产生可执行程序(扩展名为.EXE)。使用预先准备的测试数据运行程序,观察是否得到预期的正确结果。若有问题,则仔细调试,排除各种错误,直到得到正确结果。在调试过程中,要充分利用C语言集成开发环境提供的调试手段和工具,例如单步跟踪、设置断点、监视变量值的变化等。整个过程应自己独立完成。不要一点小问题就找老师,学会独立思考,勤于分析,通过自己实践得到的经验用起来更加得心应手。3整理上机实验结果,写出实验报告 实验结束后,要整理实验结果

10、并认真分析和总结,根据教师要求写出实验报告。 实验报告一般包括如下内容: 实验名称。 实验目的要求 具体的实验步骤(含程序或程序段) 实验结果 原始数据、相应的运行结果和必要的说明。 实验小结实验过程中的心得体会和经验教训的分析与思考 C语言编译工具及其操作方法一、WIN-TC编译系统 WIN-TC是基于windows操作系统的一个16位的C语言编译工具,它的内核还是Turbo c V2.0。所以最好是在windows98下使用。 操作步骤:1、 进入WIN-TC集成环境:双击桌面上的WIN-TC图标或在WIN-TC文件夹中双击WIN-TC.EXE文件进入WIN-TC集成环境,如图W-1。若你

11、想将自己的实验成果(含源程序)保存在自己的文件夹中,可以先建立一个文件夹,如:C:mydoc, 然后单击:编辑 编辑配置 工作目录右边图标 找到Cmydoc确定。出现如图W-2,你的实验成果将保存在C:mydoc文件夹中。否则你的所有成果将保存在:WIN-TCprojects文件夹中。在如图W-1主窗口中可能残留有其它C程序,此时可以单击: 文件新建。出现图W-3。在图W-3的中间窗口中输入准备好的C语言源程序,认真仔细检查有无错误,然后转第2步进行编译连接。此处,假设已经输入了如下程序:例L1-1 #include void main( ) /*主函数*/ printf(“This is a

12、 program.n”); /*在屏幕上显示:This is a program */ getch(); 图W-1 新建文件窗口 图W-2 编辑配置2、编译、连接源程序:图W-3 WIN-TC集成环中境源程序输入与编辑在如图W-3中单击:运行 编译连接,此时有2种可能: 程序中有错误,此时在屏幕下部 输出 小窗口中有出错的行号及错误原因,应据此进行修改并再次编译连接。 程序无错。则出现如下图W-4 图W-4 输入源程序文件名输入文件名后单击: 保存 ,出现如图W-5,单击: 确定。图W-5 编译连接成功3、 运行程序单击:运行 编译连接运行 确定。 特别重要提示:在WIN 2K 或WIN XP

13、 系统下运行,程序最后一行一定要加上: 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.0,可启动VC+,屏幕上将显示图V-1所示的窗口。图V-1

14、VC+ 6.0主窗口3、单击:文件 新建工程 出现图V-2窗口,选中Win32 Console Application并在在工程文本框中输入工程名(例如:P1);单击位置文本框右边的省略号按钮进行浏览并找到自己事先建立的文件夹(如:E:MYDOC).本工程所有结果保存在自己的文件夹E:MYDOCP1中选中控制台应用工程单击 确定完成确定图V-2 新建工程窗口选中C+源文件4、单击:文件 新建文件 ,选中 “C+Source File”,在“文件”框中输入文件名(如VL1-1),若想将实验成果保存在自己的文件夹中,此处可以在目录对话框中输入自己的事先建立的文件夹(如:c:mydoc)。或单击目录

15、对话框右边的按钮并逐步选择到c:mydoc,出现图V-3。 图V-3 输入文件名再单击:确定 按钮,出现如下图V-45、在图V-4的源程序编辑区内,输入源程序。以如下程序VL1-1为例:#include void main( ) /*主函数*/ /*函数体应该处于一对大括号中*/ int a,b,sum; /*定义整形变量a,b,sum*/ a=123; b=456; /*给变量a,b赋值*/ sum=a+b; /*做加法,并将此和赋值给变量SUM保存*/ printf(total=%dn,sum); /*输出变量SUM的值*/ 图V-4 输入源程序特别提示:在Visual C+下,程序尾不要

16、:getch(); VC+不支持该函数。6、单击:编译 编译VL1-1.cpp,出现如图V-5。在窗口底部信息框中可以看到:0 errer(s), 0 warning(s) 表明编译通过,程序无任何错误,可以进行下一步连接。 图V-5 编译源程序正确7、若程序有错误,则出现 图V-6,且在屏幕底小信息窗口中出现错误信息,应根据提示改正错误,重新进行第6步,直到无任何错误。单击菜单 编译 构建VL1-1.EXE进行连接。无任何错误时出现如图V-7窗口。进入第 8 步。否则重新第5步修改源程序。 图V-6 源程序有错误提示(注:本例题中sum 变量未定义且第4行尾缺了分号 ;。改正后再重复第6步、

17、第7步直到编译连接正确。此时信息窗口中显示错误是 0 。) 图V-7 连接源程序正确8、单击菜单 编译 执行P1.EXE,出现如图V-9窗口。 图V-8 执行程序9、出现程序运行结果,如图V-9。观察结果正确后,按任何键即可回到集成环境窗口。若程序需要输入数据,则在图V-9中按照数据格式输入数据后得到运行结果。若结果不正确,再修改源程序,重复第6、7、8、9步。图V-9 程序运行结果10、完成第一个程序:单击主菜单中的 文件 关闭工作区,弹出小窗口如图V-10,单击 是 回到图V-1,完成第一个程序。 图V-10在硬盘上查看本工程p1产生的文件 在自己的文件夹如E:MYDOC中可以看到子文件夹

18、P1,在P1中有VL1-1.CPP,这就是源程序文件。有P1.DSW,这是P1工程(工作区)文件,打开(或双击)它可以重新进入P1工程进行修改。进入P1中的DEBUG文件夹,有P1.EXE文件,这就是执行程序,双击它可以得到本程序运行结果。11、开始第二个程序重复310步输入并编辑、编译、连接、运行第2个源程序。三、VC60环境下程序调试程序编译连接通过后,发现运行结果不正确时会问“问题出在哪儿?”,调试程序的过程就是缩小错误范围直到找到发生错误的语句并加以改正的过程。1、在源程序中设置断点 设置断点就是为了缩小错误范围而将程序分成若干块甚至单个语句。设置断点:光标移到某程序行上按下 F9 键

19、,该行前出现红色圆点。程序执行到此会无条件停下来,这是无条件断点。有时想当某个变量或某一表达式等于某一特定值时能停下来,即依据条件设置断点,这叫条件断点,要在专门的窗口中设置,其方法较复杂,请参考其他资料。 图V-11 程序中设置断点示意2、跟踪执行单步执行: F10键:每次执行当前光标处的一行程序或一条语句或一次函数调用(不进入函数中)。F11键:每次执行当前光标处的一行程序或一条语句,遇到函数调用则进入该函数中。执行到下一个断点: F5键:从当前行一直执行到下一个断点处停执行到光标处 CTRL+F10键:从当前行一直执行到光标处停执行完余下代码:SHIFT+F10键:从当前行执行完本函数中

20、余下所有代码退出调试模式 SHIFT+F5键:停止调试返回到编辑源程序状态重新开始 CTRL+SHIFT+F5键:重新开始,返回掉程序的第一条代码3、查看程序执行过程中变量值的变化边执行变查看变量的值时调试的重要环节,进入调试模式后系统会自动打开Variables窗口和Watch窗口。Variables窗口:其中包含三个标签。Auto标签: 按字母顺序显示当前所有变量(包含变量的地址如&a,若有的话)的值,构造型变量如数组、结构体则可按下前面的+号展开Locals标签:显示当前函数内所有局部变量的名称和值This标签:显示this指针的类型、名称和值Watch窗口:含有Watch14等四个标签

21、,每个标签都可以由用户输入任意变量和表达式并观察其值。 图V-12 Variables窗口中的Auto标签输入表达式a+b,系统显示值为14图V-13 Variables窗口中的Locals标签四、在C语言程序中使用汉字在WIN2K和WIN-XP下汉字只能作为字符串使用,只有VC+系统中才能使用汉字串。第一章上机题 编译环境、数据类型运行结果:1、键盘输入圆的半径,输出其面积#define PI 3.14159 /*编译预处理符号常量*/#include /*编译预处理头文件*/#include void main( ) /*主函数, 用户自定义的函数*/ float r,s; /*定义变量r

22、、s类型为单精度实型*/ printf(Enter a radius:); scanf(%f,&r); /*由键盘输入圆的半径*/ s=PI*pow(r,2); /*计算圆面积s*/ printf(R=%f,S=%fn,r,s); /*输出结果*/2、整数溢出示例#includevoid main()short int a,b; /*改为:long int a,b;则结果正确*/ a=32767;b=a+1; printf(“%d,%dn”,a,b);3、实型数据7位有效,小数保留6位例#include void main()float a,b; a=123456.789e5; b=a+2;

23、printf(“%fn”,a); 改为:double a,b;后结果正确: printf(“%fn”,b); 4、实型数据7位有效,小数保留6位例#include void main() float x=111111.111,y=222222.222; printf(“%fn”,x+y); 5、字符与整数(ASCII码)输出例#include void 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”除了定界符不

24、一样外,内存占用字节数不同)例#includevoid main() char c1 =a,c2 =a; printf(%d,%dn,sizeof(c1),sizeof(c2); 第二章上机题 学习C语言运算符、表达式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 ,

25、a+c1); /*整数用实输格式%f输出, 结果错误*/printf(%lf ,c1+d);2、自增自减运算例 #include 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、自增自减运算例#includevoid main()int i=8;printf(%3d,+i); printf(%3d,-i); printf(%3d,i+);printf(%3d,i-);printf(%3d,-i+); printf(%3dn,-i-)

26、;/*单目运算+、- -结合方向自右向左,相当于(i+) 和 -(i- -) */10、自增自减运算例#includevoid main()int x=100; printf(%d,%d,%d,%dn,x+,x,-x,x); /*TC20编译器下函数的实参数的求值顺序为:自右向左*/ printf(%dn,x); 4、强制类型转换例(变量num被强制转换输出后其本身值和类型未改变)#includevoid main()float num=2.5; int a; a=(int)num; printf(%dn,a); printf(%fn,num); printf(%dn,sizeof(num);

27、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; printf(3)x=%d*z=%dn,x,z); z=x+*+y; pri

28、ntf(1)x=%d*y=%d*z=%dn,x,y,z);7、逗号表达式例#include void 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); printf(c,b,a)=%dn,(c,b,a);8、逻辑表达式的值例#includevoid main() char x=m,y=n; int n; n=xy; printf(%dn,n); n=x=y-1; printf(%dn,n); n=(y!=Y)+(53)+(y-x=1); pri

29、ntf(%d,n,n); 9、逻辑表达式运算法则例#include void main() int a=1,b=2,n,x; n=1; x=(ab)&(+n); printf(x=%dn,x); printf(n=%dn,n); 10、逻辑表达式的值例#include void main()int m,k; k=(m=0)|(m=1)&(m=2); printf(%d,%dn,m,k); k=(m=2)|(m=1)&(m=0); printf(%d,%dn,m,k); k=(m=2)&(m=1)|(m=0); printf(%d,%dn,m,k); k=(m=0)&(m=1)|(m=2); p

30、rintf(%d,%dn,m,k);11、逗号表达式的值#includevoid main()int a=2,b=4,c=6,x,y; 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,&num);mask =115; /*构造1个最高位为1

31、、其余各位为0的整数*/ printf(%d=,num); for(i=1; i=16; i+) putchar(num&mask ?1:0); /*输出最高位的值(1/0)*/ num = 1; /*将次高位移到最高位上*/ if( i%4=0 ) putchar(,); /*四位一组,用逗号分开*/ printf(bBn); 第三章上机题 顺序结构程序重点是输出输入格式控制,难点是scanf()函数的实际操作,特别是数据的分隔和格式控制中的普通字符的键入。1、利用赋值表达式语句交换2个变量的值。#includevoid main() int a=3,b=4, c; printf(a=%d,

32、b=%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; printf (enter float a,b,c:n) ; scanf(%f,%f,%f,&a,&b,&c) ; s=1.0/2*(a+b+c); /* 或1/2.0 */ area=sqrt(s*(s-a)*(s-b)*(s-c); printf (area=%6.2f n,area

33、); 3、输入一个三位正整数,然后将它逆序输出。例如输入 123 , 输出为: 321#include void main( ) int m , n , a , b , c ; printf(input a int numbern); scanf(%d,&m); 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 main( ) float a,b,c,are

34、a,s ; printf (enter float a,b,c:n) ; scanf(%f,%f,%f,&a,&b,&c) ; if (a+bc&b+ca&c+ab) s=1.0/2*(a+b+c); area=sqrt(s*(s-a)*(s-b)*(s-c); printf (area=%6.2f n,area); else printf(it is not a trianglen); 2、输入三个整数a , b, c, 找出其中最小数送min且输出。 #include void main ( ) int a, b, c, min ; scanf(%d,%d,%d, &a, &b,&c) ;

35、 if (ab) if (ac) min=a; /* ab and aa c 此时 c 最小 */ else if (bc) min =b; /* ba and bbc 此时 c 最小 */ printf(min=%dn,min); 3、键盘输入5个年份,显示出其中的闰年,并显示出闰年的个数。判断润年的逻辑式: year%4=0 & year%100!=0 | year%400=0#includevoid main() int year,leap,sum=0,i=1; loop1:if(i5) goto loop2; leap=0; scanf(%d,&year); if(year%4=0 &

36、 year%100!=0 |year%400=0) leap=1; sum+=1; if(leap) printf(%d is ,year); else printf(%d is not ,year); printf(a leap yearn); i+=1; goto loop1; loop2:printf(sum=%dn,sum); 4、求一元二次方程的根。#include#includevoid main()float a,b,c,disc,x1,x2,realpart,imagpart;scanf(“%f,%f,%f”,&a,&b,&c);if ( fabs(a)=1e-6) print

37、f(“is not quadratic”); /*不是二次方程*/else disc=b*b-4*a*c; if ( fabs(disc)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(-disc)/(2*a); /*虚根*/ printf(“%8.4f+%8.4fin”,realpart,imagpart); printf(

38、“%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 (注意赋值号左右两边sum表示不同的意义,左边的sum表示包括当前项在内的累加和,右边sum表示当前项以前的累加和), m , sum为实型数据. #include void main( ) int i,

39、n; float x, sum=0.0, m=1.0; printf(input x , n=?n); scanf( %f,%d, &x,&n); i=1; while(i=n) m=m*x; sum=sum+m/i; i+; printf(sum=%8.2fn, sum); 2、输入一个正整数,并将其逆序输出(如输入12345 则输出54321。分析:键入一个正整数为num, 数值不大于32767) 每次用 %10可求得个位数字, 用 /10 求得整数商,下次再用 %10求得10位上数字.:#include void main( ) int m ,num, right; printf( en

40、ter number m: ); scanf(%d,&m); num=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。 #include void main() long n=0;float sum=0;int limit; printf(Enter the upper lim

41、it=); scanf(%d,&limit); do +n; sum+=1.0/n; while (sum=limit); printf(nn=%ldn,n); do while( )与while( )适合不同的应用题,本题利用while( )循环能方便地编写程序吗?试一试。 4、求在3位数中, 各位数字的立方和等于该数本身的3位数及其个数并输出。例如:153=13+53+33;153就是这样的数(称为水仙花数)分析:所求数的取值范围是100999,该3位数用d 表示,各位数字分别 用a,b,c 表示,则:a=d/100,b=d%100/10 ,c=d%1设变量s,使 s=a3+b3+c3,判

42、断:若d=s,则d 即为所求的3位数。#includevoid main( ) int d , s , a , b , c , n ; n=0; for(d=100;d=999;d+) a=d/100; b=d%100/10; c=d%10; s=a*a*a+b*b*b+c*c*c; if ( d=s ) n+; printf(%6d,d); printf(n n=%d n,n); 5、一个真正的九九乘法表是一个下三角形形式的,如何实现#includevoid main()int i,j; for(i=1;i=9;i+)等价于for(j=1;j=i;j+) for(j=1;ji) break;

43、 printf(%-2d*%-2d=%-3d,i,j,i*j); printf(n); 6、求2100 之间的素数.(素数是大于1,且除了1和它本身外,不能被其它任何整数所整除的整数)。根据初等数论,一个正整数的因数不会超过他的算术根。用此范围内整数试除,若都不能除尽他,则此数就是素数,此时标志 flag=1。#include#include void main (void) int i, j , k, flag; k=0; for( i=2;i100;i+) flag=1; /* 每次进入内循环检查i是否为素数都要重置标志量为1 */ for(j=2;j=sqrt(i);j+) if (i%

44、j=0) flag=0; if ( flag=1 ) printf(%4d,i ); k+; /*素数个数增 1 */ if (!(k%10) ) printf(n);/* 每行输出10个素数 */ printf(n k=%dn, k); 7、输出如下花纹图案、#includevoid main( ) int i , j , k ; for(i=0; i5; i+) for(j=1; j=i; j+) printf(“ ”); for(k=0; k5; k+) printf(“*”); printf(“n”) 8、输出如下花纹图案。#includevoid main( )int i,j; for(i=1;i=5;i+

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论