《大学C程序设教程》由会员分享,可在线阅读,更多相关《大学C程序设教程(45页珍藏版)》请在金锄头文库上搜索。
1、厌栽什且渊吟喻肥尺能铰住门嘱聋仪赵霹津念弦芜寒幻揖刻留贤条埠膏锄大学C程序设教程大学C程序设教程大学大学C+程序设计教程程序设计教程西安交通大学西安交通大学计算机教学实验中心计算机教学实验中心http:/尽监溜谅氯胃畜优韦扒将迎靶扒赢磅兰至藉诀孩遏忻肪亡镰找痈床束眩戮大学C程序设教程大学C程序设教程第第2章章 控制结构控制结构u本章目标本章目标结构化程序设计方法的基本思想结构化程序设计方法的基本思想C+的基本控制结构的基本控制结构C+的控制语句的控制语句结构化程序设计方法的基本思想结构化程序设计方法的基本思想V+的几种基本控制语句的几种基本控制语句熟悉使用伪代码的编程方法熟悉使用伪代码的编程方
2、法顾拙靖车夺秧强土迟爆瞧抓围顾懈痊另令尔鬃赴肩阐幽躲汾生撅蛮平拜丽大学C程序设教程大学C程序设教程1授授 课课 内内 容容 u2.1 程序的基本控制结构 u2.2 自顶向下,逐步求精u2.3 +的控制结构u2.4 伪代码 u调试技术u程序设计举例充倦遇番仁匀撤阻否华猖孟临镜泪侵纹柿醛酶脓安柄投砧疮揪穴阁净汽跳大学C程序设教程大学C程序设教程22.1 程序的基本控制结构程序的基本控制结构 结构化程序设计方法结构化程序设计方法 的基本思想是任何的基本思想是任何程序都可以用三种基本结构表示,即顺程序都可以用三种基本结构表示,即顺序结构,选择结构,循环结构。由这三序结构,选择结构,循环结构。由这三种基
3、本结构经过反复嵌套构成的程序成种基本结构经过反复嵌套构成的程序成为结构化程序。而这些结构中的各种程为结构化程序。而这些结构中的各种程序流程语句就是流程控制语句。序流程语句就是流程控制语句。语句序列语句序列1语句序列语句序列2语句序列语句序列 1条件?条件?成立成立不成立不成立语句序列语句序列 2语句序列语句序列不成立不成立成立成立条件?条件?顺序结构顺序结构 选择结构选择结构 循环结构循环结构蚜梳戚釜兢掐准料噎狠剖杆曝村偷苏建姐沪式脾峡宛橱榴郎栓厩档谍耐井大学C程序设教程大学C程序设教程3结构化程序设计方法结构化程序设计方法 u“软件危机软件危机”-结构化程序设计结构化程序设计 u基本观点:基
4、本观点: 程序设计的目标不应再集中于如何充分发挥程序设计的目标不应再集中于如何充分发挥硬件的效率方面,新的程序设计方法应以能硬件的效率方面,新的程序设计方法应以能设计出结构清晰、可读性强、易于分工合作设计出结构清晰、可读性强、易于分工合作编写和调试的程序编写和调试的程序u结构化设计方法是以模块化设计为中心结构化设计方法是以模块化设计为中心 健述宙胳曼吃审蹄么惑虾液贴僻锗烯瘦揍繁肘售咒组喂娜镁段晶的发董译大学C程序设教程大学C程序设教程4模块化程序结构模块化程序结构 u模块化模块化 就是把程序划分为若干个部分,每个部分独立就是把程序划分为若干个部分,每个部分独立存放、完成一个特定的功能。其目的是
5、降低程存放、完成一个特定的功能。其目的是降低程序的复杂度,使设计出来的程序便于阅读、调序的复杂度,使设计出来的程序便于阅读、调试和维护。试和维护。 一个模块可以是一条语句、一段程序、一个函一个模块可以是一条语句、一段程序、一个函数等数等 基本特征是其仅有基本特征是其仅有一个入口一个入口和一和一个出口个出口 模块相互独立,内聚性很强,一个模块完成一模块相互独立,内聚性很强,一个模块完成一个功能个功能 服印育木黑赴集货方蒲诽园击琼佐囊委宁早恳员仓翰牺醇羊坡孺冲帖库娇大学C程序设教程大学C程序设教程5翅蜡苫浊栅娶懒营顿提侈智脐圆鼻党焰秘腺绢记找拓芥掩须宗股獭锐倦垦大学C程序设教程大学C程序设教程62
6、.2自顶向下自顶向下, 逐步求精逐步求精u结构化程序设计支持结构化程序设计支持“自顶向下自顶向下, 逐步求精逐步求精”的程序设计方法。的程序设计方法。 u“自顶向下自顶向下” 是将复杂、大的问题划分为小问题,找出问题的关是将复杂、大的问题划分为小问题,找出问题的关键、重点所在,然后用精确的思维定性、定量地去键、重点所在,然后用精确的思维定性、定量地去描述问题。描述问题。 u“逐步求精逐步求精” 是将现实世界的问题经抽象转化为逻辑空间或求解是将现实世界的问题经抽象转化为逻辑空间或求解空间的问题。复杂问题经抽象化处理变为相对比较空间的问题。复杂问题经抽象化处理变为相对比较简单的问题。经若干步抽象(
7、精化)处理,最后到简单的问题。经若干步抽象(精化)处理,最后到求解域中只是比较简单的编程问题求解域中只是比较简单的编程问题。 郧愤医秸刽踞淌墅帘救攘赋磨议靶裂叭瓤类乙环篇河袒杰莱笼哉庚俄琳奇大学C程序设教程大学C程序设教程7例例2-1 验证验证“哥德巴赫猜想哥德巴赫猜想”u“哥德巴赫猜想哥德巴赫猜想”表述为:表述为:任何任何 一个大于等于一个大于等于4的偶数均可的偶数均可以表示为两个素数之和。以表示为两个素数之和。u第一步第一步 提出问题:提出问题: 验证哥德巴赫猜想验证哥德巴赫猜想 u第二步第二步 设一上限数设一上限数M,验证,验证 从从4到到M的所有偶数是否能被的所有偶数是否能被 分解为两
8、个素数之和。分解为两个素数之和。1. 定义一个变量定义一个变量X,初值为,初值为4。2. 每次令其加每次令其加2,并验证,并验证X能否能否 被分解为两个素数之和,直被分解为两个素数之和,直到到 X不小于不小于M为止。为止。验证哥德巴赫猜想验证哥德巴赫猜想X = 4X M ?验证验证x是否能被分解是否能被分解为两个素数之和为两个素数之和X = X +2否否是是榴始欣崎碱得汐渣阶撩彻长摩等磨虫隧嗜胰隆耻盂以惟脖民党刹陷乡腑汗大学C程序设教程大学C程序设教程8验证哥德巴赫猜想(续一)验证哥德巴赫猜想(续一)u第三步第三步 如何验证如何验证X是否能是否能被分解为两个素数之和。被分解为两个素数之和。1.
9、 从从P=2开始;开始;2. 判别判别XP是否仍为素数:是否仍为素数:3. 若是,打印该偶数的分解若是,打印该偶数的分解式。式。4. 否则,换更大的素数,再否则,换更大的素数,再继续执行继续执行2.。如此循环,。如此循环,直到用于检测的素数大直到用于检测的素数大X/2且且X 与其之差仍不是素数,与其之差仍不是素数,则打印则打印“哥德巴赫猜想哥德巴赫猜想”不成立。不成立。 P = 2P= x / 2 ?处理哥德巴赫猜想处理哥德巴赫猜想不成立的情况不成立的情况打印出打印出X的的分解情况分解情况是是否否团它滦傣慈惶咎氟护玖贫任锻傻射销扣犹译芍仓豌圆锌嘛卤霄诵喜旋音黄大学C程序设教程大学C程序设教程9
10、验证哥德巴赫猜想(续二)验证哥德巴赫猜想(续二)u第四步第四步 生成下一个素数。生成下一个素数。 (1)当前素数)当前素数P加加1 (2)判别)判别P是否是素数;是否是素数; (3)若是素数,返回)若是素数,返回P; (4)否则,)否则,P加加1,继续,继续执行(执行( 2)。)。 P = P + 1是素数?是素数?P = P + 1否否返回素数返回素数 P壤崇倾诚侩积悯泣示坞痕短阅酸综吮宦匙处顽嘻淆摄斌蕊荚迪叠囤汛逼逆大学C程序设教程大学C程序设教程10验证哥德巴赫猜想(续三)验证哥德巴赫猜想(续三)u经过四步分解精化,将经过四步分解精化,将“验证哥德巴验证哥德巴赫猜想赫猜想”这个命题已经分
11、解为计算机这个命题已经分解为计算机可以求解的数学模型了。可以求解的数学模型了。u剩下的问题就是编程求解了。如何编剩下的问题就是编程求解了。如何编程正是我们这门课程要解决的问题。程正是我们这门课程要解决的问题。u关于关于“验证哥德巴赫猜想验证哥德巴赫猜想”的求解程的求解程序稍后给出。序稍后给出。唱谁玄屹啤奔也训届伯蒋彪俯牢褂吐沥右磅槽咒撰吗迭馅业侥岿蝉藻婆兢大学C程序设教程大学C程序设教程112.3 C+语言的控制结构语言的控制结构C语言是一种很好的结构化程序设计语言,它语言是一种很好的结构化程序设计语言,它提供了实现结构化程序所需的多种流程控制提供了实现结构化程序所需的多种流程控制语句。分类如
12、下:语句。分类如下:秽翼唤甘褪粉辐矫账腾诵宝甥毛拙沧靳殃拙送廊卖搁维圃犀髓鹃呻犊雪氯大学C程序设教程大学C程序设教程121、顺序结构、顺序结构u顺序结构语句包括:顺序结构语句包括:说明语句说明语句赋值语句赋值语句I/O 语句语句复合语句和和空语句用花括号括起来的程序段落又称为分程序或者用花括号括起来的程序段落又称为分程序或者复合语句复合语句。复合语句的复合语句的一般形式: 复合语句可以复合语句可以嵌套嵌套,即在复合语句中可以有其它复合语句,即在复合语句中可以有其它复合语句空语句空语句:在:在C语言中经常使用只有一个分号的语句,它程为空语句语言中经常使用只有一个分号的语句,它程为空语句在语法上占
13、据一个语句的位置,但不具备任何可执行的功能。在语法上占据一个语句的位置,但不具备任何可执行的功能。 抠欢吃扣畏腹杯因仿攀霹幼千挡堵煽芝馁靡雹栋臼譬脱战低泞沂题散莱缕大学C程序设教程大学C程序设教程132、选择结构(之一)、选择结构(之一)u一路分支一路分支 语句格式:语句格式: if (表达式)(表达式) 语句序列语句序列 条件?条件?成立成立不成立不成立语句序列语句序列u两路分支两路分支 语句格式:语句格式: if (表达式)(表达式) 语句序列语句序列1 else 语句序列语句序列2条件?条件?语句序列语句序列 1成立成立不成立不成立语句序列语句序列 2语句序列可以是语句序列可以是一个语句
14、一个语句,也可以是也可以是复合语句复合语句结构。结构。囚箭晒窟加慌撬毕桔吼拱晰乏雨英躯塌堰乡舆仗盯涛腋石岁折渡绰兄矩霞大学C程序设教程大学C程序设教程14选择分支的嵌套选择分支的嵌套if(表达式表达式1) 语句语句1else if(表达式表达式2)语句语句2else if(表达式表达式3)语句语句3else if(表达式表达式m)语句语句melse语句语句nelse总是与它上面的最近的总是与它上面的最近的if配对。配对。如果如果if与与else的数目不一样的数目不一样,可以可以加花括弧来确定配对关系。加花括弧来确定配对关系。例如例如: if() if ()语句语句1 else语句语句2(内嵌内
15、嵌if) 湛僳让套拓澡拌羔份存巾哀先粕站焕蓑称戏山莲甭糖亮惮惧氓脂稼殉谢缮大学C程序设教程大学C程序设教程15选择结构之二选择结构之二u多路(开关)选择语句多路(开关)选择语句 语句格式:语句格式: switch(整数表达式)(整数表达式) case 数值数值1: 语句序列语句序列1; . case 数值数值n: 语句序列语句序列n; default : 语句序列语句序列n+1; u 计算整型表达式计算整型表达式值值 = ?语句语句序列序列1.语句语句序列序列2语句语句序列序列n回抄祟愈办坏芜灸壮柬罩臆喳潮朗陌纶搏技式谷锑午捷固肛钻娩退瑰豌浦大学C程序设教程大学C程序设教程163、循环结构(之
16、一)、循环结构(之一)u当型循环当型循环 语句格式:语句格式: while (表达式)(表达式) 语句序列语句序列 u直到型循环直到型循环 语句格式:语句格式: do 语句序列语句序列 while (表达式)(表达式);条件?条件?语句序列语句序列成立成立不成立不成立语句序列语句序列不成立不成立成立成立条件?条件?辑伟裙测毗且冶盈人争滚份戳掘铲埔爷聚妆饼佬昌果艺屁椿乌狡斋惫硬少大学C程序设教程大学C程序设教程172.4 伪代码伪代码uC语言的控制结构语句和自然语言结合起来描述算法比画流程图省时、省力,且更容易转化为程序u不能运行,例如例如: e = 1.0; n = 1; u = 1.0;wh
17、ile (通项通项u大于等于大于等于107) 计算新的通项值计算新的通项值 u = u/n; 将新通项值加到结果近似值上将新通项值加到结果近似值上; 准备处理下一项准备处理下一项 n = n+1;隶殊泄渡历佩掖刊庙键鸦胃悬属店炒沂瞥及途脏禹糙沛条熄余袭磺语呛卉大学C程序设教程大学C程序设教程18获得帮助的方法(四种)获得帮助的方法(四种)1.F1帮助。单击一个单词、突出显示一条短帮助。单击一个单词、突出显示一条短语或单击一条错误信息,再按语或单击一条错误信息,再按F1就可以了;就可以了;可在源代码编辑器窗口、帮助窗口、输出可在源代码编辑器窗口、帮助窗口、输出窗口中使用;窗口中使用;2.帮助索引
18、,它包含绝大多数所需的信息;帮助索引,它包含绝大多数所需的信息;3.搜索机制,搜索的范围比索引要广的多;搜索机制,搜索的范围比索引要广的多;4.帮助目录,使用帮助窗口中目录选项卡可帮助目录,使用帮助窗口中目录选项卡可以阅读某个主题的所有内容。以阅读某个主题的所有内容。铱仪沙丫昌碑励烦柳斗阿急是郁忽洼扛宙同骋碧磅绍兔光哭处瑞搬头机悲大学C程序设教程大学C程序设教程19常见错误常见错误u语法错误语法错误少了;函数名输入错误u语义错误语义错误将“=”误输入为“=”u逻辑错误逻辑错误简单跟踪:在程序中加入输出语句u注意:双击注意:双击Visual C+ output窗口的错误信息,就窗口的错误信息,就
19、可以打开产生该错误的源代码,并且光标会位于出可以打开产生该错误的源代码,并且光标会位于出错的那一行上。错的那一行上。浩委浊辆演酚灼牛视首魔啪全挺狂供硫啥易快憨刑舀炎典畦惶刹沂膨伺拯大学C程序设教程大学C程序设教程202.7 调试技术调试技术:Developer Studio 的文本编辑器的文本编辑器uUndo和和Redou查找和替换查找和替换Find& ReplaceFind in Filesu编程指导信息编程指导信息List Member 列成员列成员Type Info 简单介绍简单介绍Parameter Info 参数信息参数信息Complete Word 自动输入自动输入廓喘峡订叼既恭劣
20、函赃惶宵顾救毖打娥查帚项莆人档针座扔潞塌籍岳宙臂大学C程序设教程大学C程序设教程21程序设计举例程序设计举例u2.百分制化为五分制百分制化为五分制u3.用用while结构求结构求e值值u4.用用do-while结构求结构求e值值u5.水仙花水仙花u6.猜幻数游戏猜幻数游戏 u实例编程:实例编程:哥德巴赫猜想哥德巴赫猜想退浩班圃惊挫蚜癣淖力宰吏丢嘛兴翌窿提沼慰力睹扼贷减涯箭摊材棍告亡大学C程序设教程大学C程序设教程22例例2.2 百分制化为五分制百分制化为五分制u算法分析:算法分析: 1、取一个百分成绩经过运算得到、取一个百分成绩经过运算得到5分制成绩。分制成绩。构造什么样的表达式呢?构造什么样
21、的表达式呢? “百分成绩百分成绩/10 =” ? 2、共有、共有5个分数档,选择分支大于个分数档,选择分支大于2,因此用多,因此用多路开关语句路开关语句switch。 3、计算结果应该是唯一的。转换后应从、计算结果应该是唯一的。转换后应从switch中中break出来。出来。 4、输入一个百分成绩,就应该转换成、输入一个百分成绩,就应该转换成5分制成分制成绩。因此,转换程序应编成子函数。绩。因此,转换程序应编成子函数。辜攫莎颤歇神坤毯淄啮晌乃徽烧火瘁脊刁墓桨疡拼攫廷庶浙葛荤霄僻男它大学C程序设教程大学C程序设教程23程序逻辑功能框图程序逻辑功能框图 继续继续 ?输入成绩输入成绩XX / 10
22、= ?10,9 8 7 6 5X = 1X = 2X = 3X = 4X = 5返回、打印返回、打印X是是否否转换子函数功能转换子函数功能佐漂责五堵抽越呈汹跃郧绿酌迟毯煽顿溉蛔错复篷涡烟蝎滚让沧漏兑委磅大学C程序设教程大学C程序设教程24转换成绩子函数转换成绩子函数/ Example 2-2:将百分制的分数转换为:将百分制的分数转换为5级制分数级制分数#include int main() int old_grade, new_grade;coutold_grade;switch (old_grade/10)case 10:case 9:new_grade = 5;break;case 8:n
23、ew_grade = 4;break;case 7: new_grade = 3;break;惕蔷赤斗末斥亿掏栖腺卞天跑殖镭拨份怠匝井筑佬好恬库脂救隐彪咸铁痒大学C程序设教程大学C程序设教程25主函数(主函数(VC0202.cpp) case 6:new_grade = 2;break;default:new_grade = 1;cout”Before transformed, the score is ”old_gradeendl;cout”After transformed, the score is ”new_grade 10 -7 ?计算:计算: u = u / n; e = e +
24、u ; n = n + 1;是是否否输出结果输出结果 e肤沧买踪濒迅镇秘恳烙防呈默经歌努瞬羞派则枚倾剧迈渐拄误鸟熊忱民梁大学C程序设教程大学C程序设教程28计算计算e程序(程序(VC0203.cpp)/ Example 2-3:计算常数:计算常数e的值的值#include int main() double e = 1.0; double u = 1.0;int n = 1;while(u = 1.0e-7)u = u/n;e = e+u;n = n+1;cout e = e ( n = n ) endl;return 0;解歧诧铲仍冰文崇颂携线绢竖阴咀拒芯巨封严注旱阎瓷趴剩埠锣藉倡职扦大学C
25、程序设教程大学C程序设教程29例例2.4 用用do-while结构求结构求e值值/ Example 2-4:计算常数:计算常数e的值的值#include int main() double e = 1.0; double u = 1.0;int n= 1;dou = u/n;e = e+u;n = n+1;while(u=1.0E-7);cout e = e ( n = n ) endl;return 0;非凳吧泣染烽慨砖讶兢岳且厌继儒捻练比赁连吾梨斥怀忘涸性达掩瓤穿紧大学C程序设教程大学C程序设教程30例例2.5 水仙花水仙花u算法分析:算法分析:1、用穷举法对用穷举法对100999之间的每
26、个数进行验证。验证公式之间的每个数进行验证。验证公式为:为: hdn= h3 + d3 + n32、如何分解一个、如何分解一个3位数的百位、十位和个位?是关键!位数的百位、十位和个位?是关键! 百位百位 = n / 100 整除整除100,丢弃小数,丢弃小数 十位十位 = (n / 10 )% 10 整除整除10,得百十位。再,得百十位。再 对对10取余数,得十位数取余数,得十位数 个位个位 = n % 10 n对对10取余数,得个位取余数,得个位 例:例: 371 h = 371/100 = 3 d = (371/10)%10 = 37 % 10 = 7 n = 371 % 10 = 1下疆
27、持什椎悍震镰楷剔曼绑荡琼豹搬窖斟井嘲绩抛或札吠正锯令舅棒醉吊大学C程序设教程大学C程序设教程31程序逻辑功能框图程序逻辑功能框图 n = 100n 999 ? i = n / 100; j = ( n /10 )% 10 ; k = n % 10 ; h = I 3+j 3 + k 3h=n ?打印该水仙花数打印该水仙花数 n = n +1 是是否否是是否否棺匀逾胃痹脚郎呛假芍罚架超况荡肥辙戒治惩锑猪兢亏益悄钢坛夯介简搭大学C程序设教程大学C程序设教程32打印水仙花程序打印水仙花程序(VC0205.cpp)/ Example 2-5:打印所有的水仙花数:打印所有的水仙花数#include in
28、t main()int n, i, j, k;for(n=100; n=999; n=n+1)i = n/100; / 取出取出n的百位数的百位数j = (n/10)%10; / 取数取数n的十位数的十位数k = n%10; / 取出取出n的个位数的个位数觉灵瞅碱寞倚残互烫迸软该寨逻稻讹怒了擒瑶凌咬檀佃盎彬焰刚栓续擂舜大学C程序设教程大学C程序设教程33 if(n=i*i*i+j*j*j+k*k*k)cout n = i3 + j3 + k3endl;return 0;侥永尽危冤福贱蓖旗禽强贩北殃炽统梯某背讲依木巨离吴扣甲取奋淮伏盏大学C程序设教程大学C程序设教程34例例2-6 猜幻数游戏猜幻
29、数游戏u系统随机给出一个数字(即幻数),游戏者系统随机给出一个数字(即幻数),游戏者去猜,如果猜对,打印成功提示,否则打印去猜,如果猜对,打印成功提示,否则打印出错提示,并提示游戏者选择下一步动作,出错提示,并提示游戏者选择下一步动作,最多可以猜最多可以猜5次。次。u算法算法 for(i=0; n=5; i=i+1)if (猜对猜对)打印成功提示打印成功提示;else打印出错提示打印出错提示;埃柱差漏去竹织舒扳蜀杭绊怎涎絮情侈策钩滩漾龟下茄扩凿钻浙爱隘冰讳大学C程序设教程大学C程序设教程35/ Example 2-6:猜幻数游戏:猜幻数游戏#include #include int main(
30、) int magic; int guess; magic=rand();coutGuess the magic number. It is between 0 and 32767.endl;for(int i=1; iguess;if(guess=magic) cout*Right*endl; break; else if(i=5)coutThe i time is wrong. End of game!endl; else虏谓楚妙姿苯钡闭还翠醉瞎塘瑟吩掉室假墙狼签绦宪熟此谊阎唾垦晴九墒大学C程序设教程大学C程序设教程36/ Example 2-6:猜幻数游戏:猜幻数游戏(续续) if(gu
31、essmagic)coutYou have been wrong for i time(s). Please try a bigger one.endl; elsecoutYou have been wrong for i time(s). Please try a smaller one.endl; return 0;疆梢陨筑雁呆导篓损揍寺勃箱辅踢驳禄掇篆俞抿宅琉陋毙惭厉锡骋筒铬槐大学C程序设教程大学C程序设教程37实例编程:实例编程: 哥德巴赫猜想哥德巴赫猜想u算法分析:算法分析:1) 用用“筛选筛选”法生成素数表法生成素数表PrimeListM。先在素数表中产。先在素数表中产生到生到-1
32、的所有自然数,然后将已确定的所有素数的倍的所有自然数,然后将已确定的所有素数的倍数置数置(求模取余为)。求模取余为)。 2,3,5,7,13,17,.2) 这样一来,素数表中有许多这样一来,素数表中有许多0,为找下一个素数,要跳过这,为找下一个素数,要跳过这些些0。3) 分解分解0到到M-1之间的所有偶数;之间的所有偶数; 循环循环(x M) x初值取初值取4 先取素数先取素数P=2,判别判别 若若PrimeListx-p等于等于0,说明分,说明分 解不成功,解不成功,p取素数表中下一个素数;再执行取素数表中下一个素数;再执行 若若PrimeListx-p不等于不等于0,分解成功,打印分解式,
33、分解成功,打印分解式 x = x + 2,继续执行,继续执行,检查下一个偶数。,检查下一个偶数。述硫淀秤战诡砾竖韩贝扔杏谋铺楞仑情掠蕾侄酪篇束飘议斋舀偏初晋观捣大学C程序设教程大学C程序设教程38程序逻辑功能框图程序逻辑功能框图 建立素数表建立素数表reatPrimeList(PrimeList)X M ?P =M/2?P = 2x = x +2是是否否是是否否是是否否x = 4打印该偶数分解式打印该偶数分解式显示显示“哥德巴赫猜想错哥德巴赫猜想错“艳馆卢妻奠熄走邑壬擒温托嘎料孩阻靠孩索淑够枝晃蹬辩眷毕挛真莲衰垃大学C程序设教程大学C程序设教程39程序模块结构程序模块结构 主函数主函数main
34、()()子函数生成素数表子函数生成素数表CreatPrimeList( )子函数求下一个素数子函数求下一个素数NextPrimeNomber()()子函数求下一个素数子函数求下一个素数NextPrimeNomber()()旋宿琉俞勿牢窟镐甫孪什熙央锄抡脖羽菇贤植疫辈除彻腻盂酋论戈休矽傅大学C程序设教程大学C程序设教程40程序(生成素数表子函数)程序(生成素数表子函数)#include #define M 10001 /* 定义验证范围定义验证范围 */void CreatPrimeList(int PrimeList) int i, j; for(i=0; iM; i = i+1) Prime
35、Listi = i; i = 2; while( i M / 2 ) /只需验证一半数据只需验证一半数据 for(j=i+1; jM; j=j+1) if(PrimeListj!=0 & PrimeListj%PrimeListi=0) PrimeListj = 0; i = NextPrimeNumber(i,PrimeList);); 畏扔丽早春绳地旭祟伶适屈扣尝式丽骂鲤恐掩挟目禾密助柱奶趴受鹅婿踌大学C程序设教程大学C程序设教程41求下一个素数子函数求下一个素数子函数/函数函数 NextPrimeNumber: 求下一个素数求下一个素数int NextPrimeNumber(int p,
36、 int PrimeList) p = p+1; while(PrimeListp=0) p = p+1; return PrimeListp;彦趴俘矛组找怨眺堤蹭轿魁花锋溃硝蹭靡辕慢嘛浙牛榔远拭颐侣秸暴乡帖大学C程序设教程大学C程序设教程42主函数主函数(VC0201.cpp)void main() int PrimeListM; int x,p;CreatePrimeList(PrimeList);x=4;while(xM) p=PrimeList2; while(p=M/2)coutGreat Discoveryendl;else coutThe even numberx=p+x-pendl;x=x+2; 埃麓喜褒哀盒赔赂岁胁旧扁含仿疵蜂待诵瞥孺贯娟代休措愧找琴族者宗逸大学C程序设教程大学C程序设教程43作业作业u1.编写计算阶乘编写计算阶乘n!的程序。的程序。 u2.编写程序求斐波那契数列的第编写程序求斐波那契数列的第n项和项和前前n项之和。项之和。 u3.编程求编程求arcsinx,其中,其中|x|1。 u4.求解猴子吃桃问题。求解猴子吃桃问题。 u5.用弦截法求一元方程用弦截法求一元方程f(x)=0在区间在区间x0,x1 之间的一个根。之间的一个根。佑空苞宋定轴补蔷徽咕职腺卡碾胡巫绣幼坪砂带佯砌配粉旧空虽完而刘复大学C程序设教程大学C程序设教程44