




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国铁道出版社 China Railway Publishing House 解决一个实际问题而采取的方法和步骤, 称之为“算法”。对于同一个问题,可能有不 同的方法和步骤,即有不同的算法。 求1+2+3+4+100=? 步骤步骤1:1+2=3 步骤步骤2:3+3=6 步骤步骤3:6+4=10 步骤步骤99:4950+100=5 050 步骤步骤1:0+100=100 步骤步骤2:1+99=100 步骤步骤3:2+98=100 步骤步骤50:49+51=100 步骤步骤51:100*50=5 000 步骤步骤52:5 000+50=5 050 算法3 步骤1:k=1,s=0 步骤2:如果k10
2、0,则算法结束,s即为所求的和,输出s; 否则转向步骤3 步骤3:s=s+k,k=k+1 步骤4:转向步骤2 当然,算法也有优劣之分,有的算法较简练,而有的 算法较烦琐。上面三个算法中,算法2比算法1步骤少,算 法3比算法2步骤少,算法3的质量最优。一般地说,希望 采用方法简单、运算步骤少的方法。 顺序结构的程序是按语句的书写顺序执行的,用图 3-2表示 选择结构或称分支结构、条件结构,用图3-3表示 循环结构又称重复结构,有两种方式: 一种是先判断条件,若条件成立再进入循环体,可 用图3-4表示; 另一种是先进入循环体执行,再判断条件是否成立。 可用图3-5表示。 1973年美国的计算机科学
3、家INassi和 BShneiderman提出了一种新的流程图形 式。在这种流程图中把流程线完全去掉了,全 部算法写在一个矩形框内,在框内还可以包含 其他框,即由一些基本的框组成一个较大的框。 这种流程图称为N-S结构流程图(以两人 名字的头一个字母组成)。 伪代码(pseudo code)是用介于自 然语言和计算机语言之间的文字和符号来表 示算法,即计算机程序设计语言中具有的语 句关键字用英文表示,其他的可用汉字,也 可用英文,只要便于书写和阅读就可。 用计算机语言描述算法必须严格遵循所用 语言的语法规则 #include void main() int sign,i,n; float su
4、m; printf(n Please input an integer to n: ); scanf(%d, sign=1; sum=1; i=1; while(ia+b 若a=3,b=4,c=9 则结果为1 a=bc 若b=4,c=9 则a的值为0 两个数值进行比较,是比较其数值的大小,两个 字符进行比较,是比较其ASCII码值的大小。 用逻辑运算符将关系表达式或逻辑表达式连 接起来的式子称逻辑表达式。 例如,若a=4,b=2,x=6,y=7,则: ab c=getchar(); if(c=a 运行情况如下: x Yes! 该语句的功能是:首先计算表达式的值,然后 判断表达式的值是否为非零(
5、真),若非零(真), 则执行语句1,否则执行语句2。 其执行过程下图 【例3.9】输入两个数并判断两数是否相等。 1. if后面的表达式可以为任何类型的表达 式,只要表达式的结果为非零,则表示条件成 立,否则表示条件不成立。 2if语句中的语句1,语句2可以是一条语 句,也可以是由构成的一个复合语句,如果 在该语句处需要写多条语句才能完成所必要的 功能时,就使用复合语句的形式。 3在格式2中的else前面的语句必须要有 一个分号,整个语句结束处有一个分号。如例 3.9中的if语句。 【例3.11】编写程序,求下列分段函数的值。 : C语言规定:else总是与它 上面最近的且又没有配对 的if语
6、句进行配对。 #include stdio.h#include void main( )void main( ) int int score; score; char grade; char grade; printf(please printf(please input a score input a score:n);n); scanf(%d,); grade = score=90? A:(score grade = score=90? A:(score=60? B: C);=60? B: C); printf(%d belongs to %c,score,grade printf(%d
7、belongs to %c,score,grade);); 运行结果如下:运行结果如下: please input a score please input a score :5959 59 belongs to C59 belongs to C switch语句属于多分支结构语句,通常用于描述有多种情况语句属于多分支结构语句,通常用于描述有多种情况 的选择,其格式如下:的选择,其格式如下: switch (表达式表达式) case 常量表达式常量表达式1: 语句语句1; case 常量表达式常量表达式2: 语句语句2; case 常量表达式常量表达式n: 语句语句n; default: 语句
8、语句(n+1); 图3-29 用嵌套的if语句求一元二次方程的解 (1)goto语句以及用goto语句构成的循环 (2)用while 语句 (3)用do-while 语句 (4)用for 语句 goto语句为无条件转向语句,其格式为 通常在两种情况下使用goto语句: (1)与if语句一起构成循环结构; (2)从循环体中跳转到循环体外,但在C语言 中可以用break语句和continue语句跳出本层 循环和结束本次循环。 while 语句又称当循环语句,其一般的形式如下: ; while 语句的执行过程: 第1步:计算表达式的值,若表达式的值为真(非0), 则执行第二步,若表达式的值为假(值为
9、0),则转到 第四步执行。 第2步:执行循环体语句,循环体语句可以是简单的一条 语句,也可以是由多条语句构成的复合语句。 第3步:转到第一步执行。 第4步:结束循环,执行while语句后的第一条语句。 do-while循环语句又称直到型循环语 句,但是与Pascal语言中的repeat-until 语句又有所不同。 C语言中do-while语句的格式: i=1 sum=0 sum+=i i=i+2 当 i=100 输出 sum 求解表达式1 当表达式2 为真 执行循环体语句 求解表达式3 执行for 语句的下一条语句 图3-35 for语句的执行图解 break语句格式: break; bre
10、ak语句的作用是从最内层的switch、 for、while或dowhile语句中跳出,终止这 些语句的执行,把控制流程转移到被中断的循 环语句(或者switch语句)后去执行。 通过使用break语句,可以不必等到循环 或switch语句执行结束,而是根据情况,提前 结束这些语句的执行。 continue语句的形式: continue;continue; 其作用是提前结束本次循 环,即跳过循环体中那些尚 未执行的语句,紧接着进行 下一次是否执行循环的判断。 表达式 1 语句 1 continue 表达式 2 语句 2 while 循环的下一语句 假 真 真 假 从键盘输入整数,显示出其中的正
11、整数, 若输入的是0,则退出。 #include void main( ) int x; do scanf(%d, if(x0) continue; printf(%dn,x); while(x!=0); 下面程序的作用是求连续的奇数和,当奇数 和刚好超过1000时停止计算,并按运行结果输出。程序 中有两空,请补充完整,使之能实现上述功能。 #include void main() int i,sum=0; for(i=1;i+) if(i%2=0) continue ; sum+=i; if(sum1000) break ; printf(1+3+5+%d=%dn,i,sum); 【例【例3
12、.36】利用格里高利公式求】利用格里高利公式求。 计算计算的公式为:的公式为: 直到最后一项的值小于直到最后一项的值小于10-6为止。为止。 【例【例3.36】的程序清单】的程序清单 【例【例3.37】的程序清单】的程序清单 【例【例3.37】程序】程序 【例【例3.38】编程打印楼梯,同时在楼梯上方打印两个 笑脸。用音符代表台阶,如图3-42所示。 笑脸和音符可用字符来表示,通过查询ASCII码 表得知,笑脸的ASCII值是1,音符的ASCII值是14。 【例【例3.38】 【例【例3.39】输入一行字符,分别统计出其中 英文字母、空格、数字和其它字符的个数。 分析: 对于输入的单个字符,要
13、学会判断是英文 字母(AZ或者az),是阿拉伯数 字字符(09)还是其它字符的技巧。 #include void main( ) char c; int letters=0,space=0,digit=0,others=0; printf(please input some characters:n); while(c=getchar()!=n) if(c=a else others+; printf(all in all:char=%d space=%d, digit=%d, others=%dn, letters,space,digit,others); 【例【例3.39】的程序清单】的程序清单 【例【例3.40】 输入整数x t=x*(x-1)+1 for(i=1;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 审计过程中的人力资源管理考核试卷
- 种子批发商企业社会责任报告与实施考核试卷
- 安全门禁售后运维
- 七年级下册教学设计与指导
- 畜牧兽医疫苗研究与开发考核试卷
- 初中剪纸艺术课程教案设计
- 一流的管理者:3不管、4不说、5不帮的管理智慧
- 2024-2030全球水飞蓟素原料药行业调研及趋势分析报告
- 2025年公用设备工程师之专业案例(暖通空调专业)强化训练试卷B卷附答案
- 幼儿教育个人简历
- 珠宝零售店合伙人退伙协议
- 南方区域并网发电厂两个细则完整版
- 2024年美国户外露营装备市场现状及上下游分析报告
- 冲压模具成本分析表(模板)
- 2024雇主品牌调研中国大陆区报告-任仕达-202406
- 神经电生理评估在康复医学的应用
- 第7课全球航路的开辟和欧洲早期殖民扩张(课件)-【中职专用】《世界历史》趣味课堂同步教学课件(高教版2023基础模块)
- MOOC 化学与社会-大连理工大学 中国大学慕课答案
- MOOC 国际交流学术英文写作-湖南大学 中国大学慕课答案
- JJG 692-2010无创自动测量血压计
- 焊接机器人操作工职业技能竞赛考试题库(浓缩500题)
评论
0/150
提交评论