第3章循环结构程序设计

合集下载

第3章 结构化程序设计

第3章  结构化程序设计

循环体
是 P2 否
图3.7直到型循环结构示意图 直到型循环结构示意图
3.3 表述算法
• 通常用自然语言、计算机语言(代码)、伪代码[1]、传统流程图、 通常用自然语言、计算机语言(代码)、伪代码 、传统流程图、 )、伪代码 N-S流程图、PAD图等不同的方法来描述算法。 流程图、 图等不同的方法来描述算法。 流程图 图等不同的方法来描述算法 • 在例 中,采用了自然语言来表示算法。自然语言就是人们日常使 在例3.1中 采用了自然语言来表示算法。 用的语言,可以是汉语、英语,或其他语言。 用的语言,可以是汉语、英语,或其他语言。用自然语言表示算法通 俗易懂,但文字冗长,容易出现歧义性。自然语言表示的含义往往不 俗易懂,但文字冗长,容易出现歧义性。 太严格,要根据上下文才能判断其正确含义。此外, 太严格,要根据上下文才能判断其正确含义。此外,用自然语言来描 述包含分支和循环的算法,很不方便。因此, 述包含分支和循环的算法,很不方便。因此,除了那些很简单的问题 以外,一般不用自然语言描述算法。 以外,一般不用自然语言描述算法。 • [1] 伪代码是介于自然语言与计算机语言之间的文字符号。一般借助 伪代码是介于自然语言与计算机语言之间的文字符号。 一种高级语言的控制结构,而中间的操作用自然语言描述。 一种高级语言的控制结构,而中间的操作用自然语言描述。
P1 是 循环体

• 图3.6当型循环结构示意图 当型循环结构示意图
(2)直到型循环的执行过程为: )直到型循环的执行过程为: • 先执行循环体一次,然后判断控制循环的条件。 先执行循环体一次,然后判断控制循环的条件。 • 条件 成立,则继续上述循环体,直到条件不成立时,结束循环。 条件P2成立,则继续上述循环体,直到条件不成立时,结束循环。 成立

Java程序设计教程第3章3.3 循环结构(一)

Java程序设计教程第3章3.3 循环结构(一)

循环条件
System.out.println("上午阅读教材!"); System.out.println("下午上机编程!\n"); System.out.print("合格了吗?(y/n):"); answer = input.next(); } System.out.println("完成学习任务!");
System.out.println(“第4遍写:好好学习,天S天y向ste上m!.o"u);t.println("第" +i+ "遍写: 好好学习,天天向上!");
……
i ++;
System.out.println(“第9999遍写:好好学} 习,天天向上!");
System.out.println(“第10000遍写:好好学习,天天向上!");
while (循环条件){ 循环操作
}
while循环先判断,再执行 不适合描述此故事
do { 循环操作
}while ( 循环条件 );
25/38
语法
先执行一遍循环操作
什么是do-while循环
do {
循环操作

} while ( 循环条件 );
分号不可少
符合条件,循环继续执行;否则,循环退出
循环操作
决定写一万遍“好好学习,天天向上!” ,怎么办?
3/38
为什么需要循环2-2
没有使用循环结构 使用while循环
System.out.println("第1遍写:好好学习i,nt天i 天= 1向; 上!");

循环结构程序设计练习题 内含答案

循环结构程序设计练习题  内含答案

第三单元循环结构练习题选择题:1、有以下程序执行后的输出结果是( D )。

main( ){ int i,s=0;for(i=1;i<10;i+=2) s+=i+1;printf("%d\n",s);}A.自然数1~9的累加和 B.自然数1~10的累加和C.自然数1~9中的奇数之和 D.自然数1~10中的偶数之和2、以下关于for语句的说法不正确的是( A )。

A. for循环只能用于循环次数已经确定的情况B. for循环是先判断表达式,后执行循环体语句C. for循环中,可以用break跳出循环体D. for循环体语句中,可以保含多条语句,但要用花括号括起来3、若i和k都是int类型变量,有以下for语句for(i=0,k=-1;k=1;k++) printf("*****\n");下面关于语句执行情况的叙述中正确的是( d )。

A.循环体执行两次B.循环体执行一次C.循环体一次也不执行D.构成无限循环4、以下程序程序的执行后的输出结果是( c )。

main(){int i,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i<3;i++) printf(“%d”,t[2-i][i]);}A.7 5 3B. 3 5 7C.3 6 9D.7 5 15、以下程序运行后的输出结果是( A )。

void fun(char*s){ while(*s){ if(*s%2==0) printf(“%c”,*s); s++;}}main(){ char a[]={“good”};fun(a);printf(“\n”);}注意:字母a的ASCⅡ码值为97A.dB.goC.godD.good6、已知 int t=0; while(t=1){...} 则以下叙述正确的是( B )。

A)循环控制表达式的值为0B)循环控制表达式的值为1C)循环控制表达式不合法D)以上说法都不对7、设有以下程序段 Bint x=0,s=0;while(!x!=0)s+=++x;printf("%d",s); 则A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次8、设i,j,k均为int型变量,则执行完下面的for语句后,k的值为( C )。

C语言_第3章

C语言_第3章
第3章 顺序结构程序设计
简单程序的流程一般分为顺序结构、选择结构和循环结 构。其中顺序结构是最基本的控制结构,其包含的语句 是按照书写的顺序执行,且每条语句都将被执行。
程序流程如图3.1所示, #include<stdio.h> 语句按书写顺序执行。 main( ) 先执行A,再执行B。 {int a=10,x=5,y=6;
三、复合语句
用一对花括号,把若干条语句括起来,
就形成了一条复合语句。形式如下:
{[内部数据描述语句]
其中定义的变量是
语句1; …… 语句n;}
复合语句结束的 “}”之后,不需
局部变量,仅在复 合语句中有效。
要再加分号。
花括号中的语句,可以是简单语句、空语句、复合 语句、流程控制语句,所有这些语句括在一起,在 语法上看成是一条语句,执行时顺序执行花括号中 的每条语句。复合语句多用于流程控制语句中。
printf(“\n%d,%d”,a+i,i++);}
四、格式输入函数 格式输入函数一般形式 scanf(“格式控制字符串”,地址列表); 功能:按指定的格式从键盘上把数据输入到指定的 变量之中 。 在scanf语句的格式控制字符串中,有两类字符: 普通字符:必须按原样输入,不能省略; 格式说明部分:由%引导的格式字符串组成。
scanf语句格式说明部分的一般格式为: %[*][width][F|N][h|L]type type是必须的,表示输入后转换的数据类型。
d(D) o(O) x(X) i(I) u(U)
c s f,e,g F,E,G n
%
十进制整数 八进制整数 十六进制整数 自动根据数头分辨十、八、十六进制 无符号十进制整数 单个字符 字符串 实数

第3章 循环程序设计

第3章 循环程序设计
分析:先求出531除以10的余数,得到1;将531除以10得到53; 再求53对10的余数,得到3,将53除以10,得到5。这样将1,3,5 全部分解出来。
执行步骤:设被除数m,余数n (1) n=m%10; (2) m=m/10; (3) 当m不为0时 ,重复(1) 直到m=0为止。 所有得到的n便为分解得到的数字,循环的条件为m!=0。
while循环的流程图如下图所示。
例3.1 应用while循环求1+2+….+100的和。
分析:定义变量s、i,变量s存放加法的和,变量i为计数器,设置s=0, i从1开始,每循环一次,执行s=s+i,然后i++,反复执行100次,流程 图如下图所示。当循环结束,输出结果。
代码如下:
///////////////////////////////////////////// ///////// 文件名 3-1.cpp ////////////////// /////////////////////////////////////////////
分析:循环变量i从a开始,在计算求和时,采用循环的方法,把i加到 sum,i++后,再把i加到sum,一直加到b,然后循环结束。程序设计 中首先把存放结果的变量sum置零,循环变量i初值为a,把i加到sum 中,每循环一次,i增1,其流程图如下图所示。
文件名 3-5.h
文件名 3-5.cpp
例3.6 用for语句来处理定积分的问题,定义用于定积分 的类intf,此类可以应用任何函数求定积分,只需要改写 double f(double x)函数即可。类中有两个私有数据double left,right;分别表示积分的下上限,积分函数sum中用for语 句,把一系列微梯形相加,最后得到积分值。本程序可以更改 函数f,求出任何函数的积分。

项目04 循环结构程序设计

项目04 循环结构程序设计

while语句和do„while语句。本章是程序设计的重点内容,
重点培养读者的逻辑思维能力和程序编写基本能力。要求读 者能理解循环结构的工作过程,并且能用循环语句解决
项目四
循环结构程序设计
实际问题,提高编程能力。
【学习目标】
(1) 掌握for语句、while语句和do„while语句的使用。 (2) 掌握break语句和continue语句的使用。 (3) 能够利用循环语句解决实际问题。
所有商品的总价格;收银员每扫描一次,也就是把该商品的
价格输入给x,然后把x的值转移加入到s盒子里,重复操作, 直到收银员按回车键,在这里用“0”代表回车;最后输出s 盒子中的值,就可得到所有商品的总价格。
第一部分
任 务 学 习
【解决方案】
#include<stdio.h> void main() { float x,s=0;
注:从上面的说明可以看出,C语言的for语句功能强大,
使用灵活,可以把循环体和一些与循环控制无关的操作也都 作为表达式出现,程序短小简洁。但是,如果过分使用
(3) 循环。这样的语句一直重复写到h满足题目要求为
止。 程序代码如下:
第一部分
任 务 学 习
#include<stdio.h> void main() { double h=0.1; int n=0; /*n用来累计对折次数*/ while(h<=8848180) { h=h*2;
n=n+1;
} printf("对折次数为:%d,此时厚度:%.2f\n",n-1,h/2);
第一部分
一、while语句 二、for语句
任 务 学 习

C语言 第三章 循环结构

C语言 第三章 循环结构

这种循环称为嵌套循环(或多重循环),大循环 中嵌套了小循环。其中大循环(外层循环)重复 了100次,每次累加一项item,而每次累加的 item由小循环(内层循环)计算得到,内层循环 重复i次,每次连乘一项。
P68ex4-6.cpp
23
11. 嵌套循环
在累加求和的外层for语句的循环体语句中,每次计算 i!之前,都重新置item的初值为1,以保证每次计算阶 乘都从1开始连乘。 如果把程序中的嵌套循环写成下列形式: item=1; for(i=1;i<=100;i++){ for(j=1;j<=i;j++) item=item*j; sum=sum+item; } 由于将item=1放在外层循环之前,除了计算1!时item从1 开始连乘,计算其他阶乘值都是用原item值乘以新的 阶乘值。如i=1时,item=1;i=2时,item=item*1*2; i=3时,item=item*1*2*3=1!*2!*(1*2*3),而非3!, 依次类推,i=100时,item=1!*2!*3!*……100!,最 24 后得出的累加和是1!+1!*2!+……+1!*2!*3!…*100!
见文件ch3ex3.cpp
12
5. do-while语句
for语句和while语句都是在循环前先判断条件, 只有条件满足才会进入循环,如果一开始条件 就不满足,则循环一次都不执行。 do-while语句与上述两种循环语句略有不同, 它先执行循环体,后判断循环条件。所以无论 循环条件的值如何,至少会执行一次循环体。 其一般形式为。
2. 3.
4.
从键盘输入一批学生的成绩(以负数为结束标志), 计算平均分,并统计不及格成绩的个数。H

高级程序语言设计第3章

高级程序语言设计第3章
#include <stdio.h>

#include "stdio.h" 1.格式输入输出(printf函数,scanf函数) (1)scanf函数 scanf函数用于输入指定类型的多个数据,函数的一般形式为:
scanf(“格式控制字符串”,地址列表);
一定要注意,地址列表中直接给变量名将会出错,因为这是非
返回本章目录
第3章 高级语言程序设计概述
l 指定数据所占字符数(宽度)
scanf("%3d%2d",&a,&b); 输入:12345678↙ 系统将把123赋值给a,把45赋值给b,而678则被丢掉。 l scanf函数中没有精度控制 scanf("%3.2f",&a); 将是非法的,即使输入12345↙,也不会将变量a赋值 为123.45; l 跳过某输入数据 scanf("%d %*d %d",&a,&b); 输入:11 22 33↙
{
char c1='H',c2='E',c3='L',c4='O'; /*定义字符变量并赋值*/
putchar(c1);
/*输出字符变量的值*/
putchar(c2);putchar(c3);putchar(c3);putchar(c4);
putchar('\t');
/*输出Tab制表键*/
putchar(87);
/*输出字符W,87是其ASCII编码值
*/ putchar('!'); putchar('\n');
/*输出字符*/ /*输出回车换行符*/

FORTRAN95第三章循环程序设计

FORTRAN95第三章循环程序设计

FORTRAN95第三章循环程序设计第三章的内容包括:1.DO循环:DO循环是FORTRAN中最基本的循环结构。

它允许我们指定循环变量的初始值、结束值和步长。

在每次循环迭代时,循环变量都会自动更新,并且在达到结束值时退出循环。

2.嵌套循环:FORTRAN也支持嵌套循环,这是在一个循环内部使用另一个循环。

嵌套循环使得我们能够处理更加复杂和具有分层结构的问题。

3.WHILE循环:FORTRAN还提供了类似于其他编程语言中的WHILE循环。

WHILE循环允许我们在循环前先检查一个条件,并且只要条件为真,就会继续执行循环体。

4.无限循环:有时候需要创建一个无限循环,即一个永远不会结束的循环。

在FORTRAN中,我们可以使用无条件的循环退出语句来跳出循环。

5.循环控制:在循环内部,我们可以使用控制语句来控制循环的执行方式。

这些控制语句包括CONTINUE、EXIT、CYCLE和END。

6.循环的应用:循环结构在许多数学和科学计算问题中都有广泛应用,如求和、求平均值、计算阶乘、寻找最大和最小值等。

循环程序设计是编程中非常重要的一部分,因为它可以帮助我们处理大数据集和执行复杂算法。

FORTRAN95提供了一系列强大的循环结构,使得我们能够更加灵活和高效地处理各种问题。

在循环程序设计中,重点应该放在优化循环的执行。

通过合理地选择循环变量的初始值、结束值和步长,以及使用合适的循环控制语句,可以使循环更加高效。

此外,避免在循环体内进行过多的计算和IO操作,可以减少循环的执行时间。

总之,循环程序设计是编程中一个基本但重要的概念。

FORTRAN95提供了丰富的循环结构和控制语句,使得我们能够更加高效地处理各种问题。

在实际应用中,我们应该根据具体问题的要求,合理选择和优化循环结构,以求得更好的性能和效果。

C语言各章节单元测试题及答案——循环结构程序设计

C语言各章节单元测试题及答案——循环结构程序设计

第3章循环结构程序设计3.1 典型考试题剖析3.1.1 选择题【例1】若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c 均已赋值(c大于0)s=a;for(b=1;b<=c;b++) s=s+1;则与上述程序段功能等价的赋值语句是_______。

A)s=a+b; B)s=a+c; C)s=s+c; D)s=b+c;✧考点:本例考查for循环。

✧分析:初始赋值时s=a,那么s的值一定与a有关,C、D答案中不含a所以排除掉。

只用清楚for循环的次数,不管b以前的值为多少,第一次循环时b=1,当b>c时循环结束,那么显然s要加c次1。

所以s的值为a与c的和。

✧答案:B【例2】设x和y均为int型变量,则执行下面的循环后,y值为。

for(y=1,x=1;y<=50;y++){if(x>=10) break;if(x%2==1){x+=5;continue;}x-=3;}A) 2 B) 4 C) 6 D) 8✧考点:本例考查for循环中break和continue的用法,以及区别。

✧分析:break用在循环中,只能退出一层循环。

尤其是在嵌套循环中,只能退出它所在的那一层循环。

不能期望用break从最内层循环一下子退出最外层循环(可以用goto实现)。

continue语句只能用在循环中,它的作用是跳过其后面的语句,直接将控制转移到下一轮循环条件的测试。

语句“if(x>=10) break;”中的break只有当x>=10时,才会执行,并且跳出for循环;语句“x+=5;continue;”是每次执行完一次跳过其后面的语句,直接将控制转移到下一轮循环条件的测试for(y=1,x=1;y<=50;y++)中。

✧答案:C【例3】以下程序中,while循环的循环次数是_______。

main(){ int i=0;while(i<10){ if(i<1) continue;if(i==5) break;i++;}......}A) 1 B) 10 C) 6 D) 死循环,不能确定次数✧考点:本例考查while循环的用法,以及continue和break的分别。

c语言程序设计第五版习题答案

c语言程序设计第五版习题答案

习题解析与答案第1章C语言概述一.简答题1.概述C语言的主要特点。

【解答】(1)语言简洁、紧凑,使用方便、灵活.(2)数据类型丰富,表达能力强。

(3)运算符多样。

C语言中的运算符包含的范围非常广泛。

(4)具有结构化的控制语句。

如if…else语句、while语句、do while语句、switch 语句、for语句.(5)允许直接访问物理地址.C语言中含有的位和指针运算,能够直接对内存地址进行访问操作.(6)所生成的目标代码质量高,可移植性好。

2.构成C语言程序的基本单位是什么?它由哪几部分组成?【解答】函数是构成C语言程序的基本单位。

一个完整的C程序一般由文件包含、宏定义、函数说明、变量和一个或若干个函数组成。

3.C语言程序的运行一般要经过哪几个步骤?【解答】(1)编辑;(2)编译;(3)连接,生成EXE文件;(4)执行。

二.运行程序写结果1.输入下面程序并运行。

main(){int a1,a2,x;a1=100;a2=50;x=a1—a2;printf(″x=%d\n″,x);}【解答】运行结果为:x=502.输入下面程序并运行。

main(){int a1,a2,x;a1=10;a2=20;x=a1*a2;printf(″a1=%d,a2=%d\n″,a1,a2);printf(″x=%d\n″,x);}【解答】运行结果为:a1=10,a2=20x=200三.编程题1.参照本章例题,编写一个C程序,用于显示如下信息:*************************I love C programs!*************************【分析与提示】①要有文件包含语句#include <stdio。

h〉。

C语言中没有数据的输入、输出等功能,数据的输入、输出都是通过调用系统提供的库函数scanf和printf等来实现的.这些函数的说明都包括在stdio.h文件中.②main是主函数的名称。

《C语言程序设计》教案第三章程序的控制结构—循环结构while和dowhile

《C语言程序设计》教案第三章程序的控制结构—循环结构while和dowhile

《C语言程序设计》课程教案表算法2:分析:设想用sum作为累加器,初值为0,利用sum+=i(i依次取值为1、2。

100)此分析需要解决的3个问题:1)sum=0,i=1;2)每执行一次sum+=i 后,i增1(i=i+1);3)判断如果i小于或等于100,重新执行步骤(2),否则停止计算main(){int i,s=0;i=1;while(i<=100)/*i<=100为循环条件*/{s=s+i;i++; /*改变i的值*/}printf(″s=%d″,s);}运行结果:s=5050说明:循环结构的三个术语:1、循环条件:循环结构中的条件表达式如while (i<=100)其中,i<100就是循环条件。

2、循环体:在每个循环周期均要执行一次的语句序列。

如while下用{ }括起来的语句序列。

3、循环控制变量:能够决定控制条件是真是假的量。

如while(i<=100)中的变量i要写出一个正确的循环结构,对控制变量要做三方面的工作:1、对循环控制变量赋初值。

2、将循环控制变量写入正确的控制条件。

3、对循环控制变量值的更新。

使用while语句需要注意以下几点:while语句的特点是先计算表达式的值,然后根据表达式的值决定是否执行循环体中的语句。

因此,如果表达式的值一开始就为“假”,那么循环体一次也不执行。

当循环体为多个语句组成,必须用{}括起来,形成复合语句。

在循环体中应有使循环趋于结束的语句,以避免“死循环”的发生。

下列情况,退出while循环条件表达式不成立(为零)循环体内遇break,gotowhile(s<=10){s=s+i*i;i++;}printf(“%d”,--i);}A) 4 B) 3 C) 5 D) 6对以下程序段,描述正确的是________________。

int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);A) 运行程序段后输出0 B) 运行程序段后输出1C) 程序段中的控制表达式是非法的D) 程序段循环无数次下面程序段的运行结果是[ ]。

实验三 循环结构程序设计(答案)

实验三  循环结构程序设计(答案)

实验教案}三、实验内容(按要求设计以下程序,并调试分析运行结果,此部分完成在实验报告上)1、设计程序sy3-1.c,要求打印小学九九乘法表。

算法分析:根据九九乘法表可知,该表共有9行,第i行有i个表达式,而且表达式中的操作数和行、列数相关,因此可以用嵌套的双重循环来实现,外循环控制行数(循环变量从1到9),内循环控制每行的表达式个数(循环变量从1变到i)。

参考答案:# include <stdio.h>void main(){int i,j;for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%-5d",j,i,i*j);printf("\n");}}运行结果:2、设计程序sy3-2.c,要求编程计算x n,其中x和n均由键盘输入2。

算法分析:要计算x的n次方,即是n次x相乘,其中x可以是整型或实型,而n必须是整型;另外要考虑结果的类型,若x和n比较大,一般的int型容易产生溢出。

参考答案:# include <stdio.h>void main(){int i,n;float x,p=1; /*累乘器要赋初值1*/printf("Input x,n: ");scanf("%f,%d",&x,&n); /*以逗号分隔输入的已知数据x和n的值*/for(i=1;i<=n;i++)p=p*x;printf("%g^%d=%g\n",x,n,p);}运行结果:3、设计程序sy3-3.c,已知祖父年龄70岁,长孙20岁,次孙15岁,幼孙5岁,问要过多少年,三个孙子的年龄之和同祖父的年龄相等,试用单重循环结构编程实现。

4、设计程序sy3-4.c,有一数列:2/1,3/2,5/3,8/5,…求出这个数列的前10项之和。

C语言程序设计教程03循环结构程序设计

C语言程序设计教程03循环结构程序设计

循环结构程序设计1、求1+4+7+……+100之和。

解:解法1:用while语句构造循环。

⑴编程思路:①首先定义变量,s用于存放累加和,i为循环变量。

②将变量s清零,并令变量i的初值为1。

③当i<=100时,循环执行第④步。

④将变量i的值累加到变量s中,并令变量i的值加3。

⑤输出求得的变量s的值。

⑵源程序:main(){int s,i;s=0;i=1;while(i<=100){s=s+i;i+=3;}printf("s=%d\n",s);}注意:①用于存放累加和的变量s必须清零,否则变量s的初值是一个随机数。

②用于实现累加运算的赋值表达式,赋值运算符两侧必须有一个相同的变量(如s=s+i),否则就不能实现累加。

③当循环体多于一条语句时,必须用花括号括起来构成一条复合语句,否则循环体只包括紧跟在while(或for)之后的一条语句。

解法2:用for语句构造循环。

⑴编程思路:同解法1。

⑵源程序:main(){int s,i;s=0;for(i=1;i<=100;i+=3)s=s+i;printf("s=%d\n",s);}注意:①for语句与while语句在功能上是完全等价的,for语句可以看作是由while语句变形而来的。

2、求1到100之间的奇数之和与偶数之和。

解:解法1:⑴编程思路:①首先定义变量,s1,s2分别用于存放奇数之和与偶数之和,i为循环变量。

②将变量s1,s2清零,并令变量i的初值为1。

③当i<=100时,循环执行第④步。

④若i的值为奇数,则将变量i的值累加到变量s1中;否则将变量i的值累加到变量s2中。

然后令变量i的值加1。

⑤输出求得的变量s1,s2的值。

⑵源程序:main(){int s1,s2,i;s1=s2=0;for(i=1;i<=100;i++){if(i%2==1)s1=s1+i; /*奇数之和*/elses2=s2+i; /*偶数之和*/}printf("s1=%d,s2=%d\n",s1,s2);}解法2:⑴编程思路:①首先定义变量,s1,s2分别用于存放奇数之和与偶数之和,i为循环变量。

C语言程序设计习题与参考答案

C语言程序设计习题与参考答案

习题与参考答案第1章 C语言程序设计基础思考与练习一、填空题1、C程序是由构成的,一个C程序中至少包含。

2、C程序的注释是由和所界定的文字信息组成的。

3、开发一个C程序要经过编辑、、和运行4个环节。

4、C语言中,头文件的扩展名是。

5、C语言源程序的扩展名;经过编译后,生成文件的后缀是;经过连接后,生成文件的扩展名是。

二、简答题1、简述C语言程序的运行步骤。

2、软件编程中的可读性原则一般包括那些内容?3、什么是算法?算法的特点有哪些?4、参照本章例题,编写一个C程序,输出以下内容。

**************************************************Hello,world!**************************************************5、写出算法。

已知圆的半径,求周长和面积。

第1章思考与练习参考答案一、填空题1、函数、一个主函数main()2、/*、*/3、编译、连接4、.h5、.c、.obj、.exe二、简答题1、简述C语言程序的运行步骤。

答:(1)编辑C程序源文件;(2)编译,将编辑好的源程序文件“*.c”,翻译成二进制目标代码文件“*.obj”;(3)连接,将编译生成的各个目标程序模块和系统或第三方提供的库函数“*.lib”连接在一起,生成可以脱离开发环境、直接在操作系统下运行的可执行文件“*.exe”;(4)运行程序。

如果运行出错,这说明程序处理的逻辑存在问题,需要再次回到编辑环境针对程序出现的逻辑错误进一步检查、修改源程序,重复编辑→编译→连接→运行的过程,直到取得预期结果为止。

2、软件编程中的可读性原则一般包括那些内容?答:1.编程规范概要(1)程序结构清晰,简单易懂,单个函数的程序行数不得超过100行。

(2)打算干什么,要简单,直截了当,代码精简,避免垃圾程序。

(3)尽量使用标准库函数和公共函数。

(4)不要随意定义全局变量,尽量使用局部变量。

计算机程序设计基础_精讲多练CC++_第3章

计算机程序设计基础_精讲多练CC++_第3章

// 累加求和
22
例 3-7:制作乘法表---多重循环结构(循环的嵌套)
#include <iostream> using namespace std; int main() { int i, j; for(i=1; i<10; i++) { for(j=1; j<=i; j++) cout << j <<"*"<< i <<"="<<i*j <<"\t"; cout << endl; } return 0; }

算法分析:

取一个百分成绩经过运算得到5级制成绩。构造什么 样的表达式呢?
“百分成绩/10 =” ?


共有5个分数档,选择分支大于2,因此用多路开关语 句switch。 计算结果应该是唯一的。转换后应从switch中break 出来。
15
#include <iostream> using namespace std; int main() { int grade; cout<<"请输入(百分制)分数:"; cin >>grade; switch (grade/10) // 根据转换值进行分支选择 { case 10: case 9: cout<<"优秀"<<endl; break; case 8: cout<<"良好"<<endl; break; case 7: cout<<"中等"<<endl; break; case 6: cout<<"及格"<<endl; break; default: cout<<"不及格"<<endl; } return 0; }
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章循环结构程序设计第1节For循环程序实例【问题描述】计算一副扑克牌的点数,其中牌A为1点,牌J、Q、K分别为11、12、13点,大、小王不算点。

【问题分析】根据题意,要计算一副扑克牌的点数,可以先求出一种花色牌的点数和,再乘以4即可。

进一步分析,求一种花色牌的点数和,即是求1~13的连续自然数之和。

我们用S表示所求数的和,用T表示加数,这样可以让T从1变化到13,每次让T不断加入到S中,就可以求出S的值,最后乘以4即可。

【算法设计】◆自然语言①置初值,即S=0,T=1;②使S=S+T,所求出的和仍放入S中;③使T增加1,即T=T+1;④如果T小于等于13,转第二步,否则转第五步;⑤输出计算结果。

◆程序流程图和结构化流程(N-S)图【程序设计】[程序清单]program ex3_1;vars,t:integer;begins:=0;{S置初值为0}for t:=1to13do{For循环语句}s:=s+t;writeln(‘total:’,s*4);end.[运行示例]total:364【知识拓展】1.在程序处理过程中,经常需要对某一条或一组语句重复执行多次,以最终完成某项任务,这就是循环。

对于重复次数已知,而不依赖循环中语句的结果,常用计数循环(for /to/do语句)。

2.for循环语句格式:格式一:for控制变量:=初值to终值do循环体语句;格式二:for控制变量:=初值downto终值do循环体语句;其中for、to、downto、do为保留字,do后面的语句称为循环体。

其中循环控制变量可以是整型、字符或布尔型,但不能为实型。

一般地,可以是顺序类型数据。

初值、终值表达式通常要与控制变量的类型相同。

在for语句中如果使用的是to,称为递增型计数循环语句,如果使用的是downto,称为递减型计数循环语句。

3.For语句的执行过程:①先将初值表达式的值计算出来并赋给循环控制变量。

②判断循环控制变量的值是否已“超过”终值(对于递增型循环来说,“超过”是指“大于”;对递减型循环来说,“超过”是指“小于”)。

如已超过,则跳到步骤⑥。

③如果未超过终值,则执行do后面的语句(称为循环体)。

④循环变量递增(或递减)。

⑤返回执行步骤②。

⑥循环结束,执行for循环下面的一个语句4.使用For语句的的注意事项:①循环控制变量必须为顺序类型。

例如,可以是整型、字符型、布尔型,不能为实型,如:for i=3.5to8.5do write(i)是错误的。

②循环控制变量的值递增或递减的规律是:若是递增型循环,则按Succ函数规律变化;若是递减型循环,则按Pred函数规律变化。

例如:for k:=’a’to’z’do write(k)将按顺序打印出26个小写英文字母“abcd…z”。

③循环体可以是一条基本语句,也可以是一条复合语句。

例如:for j:=1to n dobeginreadln(x);wreteln(x+1)end;循环语句的范围直到end才结束。

④循环控制变量不得在循环体内再被赋值。

例如:for x;=1to10dobeginx:=2*z+1;end;是错误的。

⑤循环控制变量的初值和终值一经确定,循环次数就确定不变了。

循环的次数可用如下公式计算:0若初值〉终值递增型循环的循环次数=Ord(终值)-Ord(初值)+1若初值≤终值0若初值〈终值递减型循环的循环次数=Ord(初值)-(终值)+1若初值≥终值【同步练习】1.宰相的麦子:相传古印度宰相达依尔,是国际象棋的发明者。

有一次,国王因为他的贡献要奖励他,问他想要什么。

达依尔说:“只要在国际象棋棋盘上(共64格)摆上这么些麦子就行了:第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍,摆满整个棋盘,我就感恩不尽了。

”国王一想,这还不容易。

于是令人扛来一袋麦子,可很快用完了,又扛来一袋,很快用完了……国王很奇怪,请你帮国王计算一下,要多少麦子。

(1立方米的麦子约为1.42×108粒)问题分析:对于编程类问题的描述,要特别注意正确、全面地理解题意,要学会从描述性语言中抽象出具体的数据,并建立数学模型。

在本题中根据“国际象棋棋盘上共有64格,第一格一粒,第二格两粒,……,后面一格的麦子总是前一格麦子数的两倍”的题意,我们可以建立数学模型:第一格为20,第二格为21,第三格为22,……第64格为263,设64格中应放麦子数为S,则可用下面的公式表示:S=20+21+22+23+……+2631立方米的麦子约为1.42×108粒,那么S粒麦子的体积T为:T=S/(1.42×108)立方米。

这样我们将问题转化为一般数学模型,再根据数学模型写出算法设计,再写出具体程序就水道渠成。

[程序清单]program p3_1_2(input,output);varn,s,t:integerbegins:=0;for n:=0to63dos:=s+2^n;t:=s/(1.42*10^8)writeln(‘s=’,s,)writeln(‘t=’,t);end.[运行示例]S=1.84467441E+19T=1.29906648E+112.阅读下面的程序,说明该程序的作用。

[程序清单]program p3_1_3(input,output);var a,b,c:integer{此处integer表示整型数据}begingwriteln(´请任意输入一个数:´);readln(b);for c:=1to5dobeginread(a);if a>b then b:=a;end;writeln(‘最后的值是:‘´,b:5);end.[运行示例]请任意输入一个数:6↙4↙7↙13↙8↙11↙最后的值是:13第2节当循环程序实例【问题描述】农场主的预算报告放暑假学校组织夏令营来到一个农场,农场主热情的接待了他们。

在参观时,同学们发现在农场的左上角圈出了一块地方,这儿阳光充足,通风也不错,但却什么也没有,觉得很奇怪。

农场主告诉大家因为农场四周由许多小朋友因没钱交学费而缀学,所以决定引进品种不错的雌雄一对小白兔,在这饲养。

小白兔需经过一个月才能长大,长大后每个月都生雌雄一对小白兔。

想等小白兔繁殖到1000对的时候,在分发给周围贫困的人,希望能帮助他们重新进入课堂。

现正在写一份预算报告,其中预计所需时间却却没算出来。

同学们现在就让我们来帮助这位好心的农场主算出时间。

【问题分析】这问题从表面来看好象没有什么规律,不妨设计一张表格来推算一下。

月份123456……兔子数(对)12481632……因为第一个月小白兔没长大,所以兔子数是1对。

到了第二个月小白兔长大了,生了一对小白兔,兔子数是2对。

第三个月小白兔也长大了,大白兔是2对,它们都生了一对小白兔,兔子数是4对……。

依此类推,发现除了第一个月,其它都是:前一个月的兔子数×2=本月兔子数。

我们发现这又是一个循环,直到兔子数为1000对的时候结束。

可是用for语句显然不行,因为我们不知道循环的次数。

下面我们用当型循环(while/do 语句)来编写程序。

农场主的预算可以描述如下:月份:=1;兔子数:=1;{预定义第一个月的兔子数是1对}while兔子数<1000do{当兔子数小于1000对时进入循环}begin月份:=月份+1;兔子数:=兔子数*2;end;【程序设计】[程序清单]program p4-1(input,output);varmonth,rabbit:integer;beginmonth:=1;rabbit:=1;while rabbit<1000dobeginmonth:=month+1;rabbit:=rabit*2;end;writeln(‘The months is:’,month);end.【知识拓展】1.while循环语句当型循环(while语句)是这样描述循环的:当指定条件成立时,重复执行指定的语句。

格式:while布尔表达式do语句;例如:k:=10;WHILE k>0DOBEGINWriteln(k);k:=k-1END;其中(1)WHIlE和DO是PASCAL保留关键字,是WHILE循环语句的组成部分。

(2)保留关键字DO后面的“语法”只能是一条语句,称为“循环体”;如果循环体中需要包含多个语句则应该如上例所示,采用一条复合语句。

2.WHILE循环的执行功能当执行到WHILE语句时(1)求出布尔表达式的值(2)若布尔表达式的值为真,则执行循环体内的语句;若为“假”,执行步骤4(3)重复步骤1和2(4)循环结束,执行循环后面的语句。

3【同步练习】1.周末小明遇到一个有趣的题目:找出四位整数abcd中满足下述关系的数:(ab+cd)(ab+cd)=abcd请你帮小明编写一个程序,找出满足条件的所有的数。

问题分析:这道题属于搜索问题,因为是四位整数,不难看出范围是从1000~9999,所求的数究竟在哪里,无法确定,只有在这个范围内从小到大一个一个进行搜索,对每一个数看它的高两位数与低两位数和的平方是否与该数相等。

ab和cd两个数可以在abcd中将高两位与低两位分离开来。

我们可以这样考虑,将abcd整除100,可得到高两位ab。

如:abcd=1234,1234div100=12。

有了ab,也就可用下面的式子把低两位cd分离出来:abcd-ab×100=abcd-ab00=cd如:1234-12×100=1234-1200=34同学们仔细想想,在求解的过程中,条件都是一样的,只是abcd这个数不同。

实际上是在反复做同一个步骤。

下面我们用当型循环来解这道题。

[程序清单]Program xuhuan(input,output);Var i,m,n,k:integer;BeginI:=1000;{给I赋值,即abcd假设一个数;}While I<=9999do{判断I(即abcd)的值是否超出范围,;如果超过则不执行循环Begin体中的语句,结束循环;}M:=I div100;{分离出ab和cd两个数,如果符合条件,就写出来;}N:=I-m*100;K:=(m+n)*(m+n);If k=I thenWriteln(‘符合条件的四位整数是:’,I);I:=I+1{I的值加1;}End;End.[运行示例]符合条件的四位整数是:2025符合条件的四位整数是:3025符合条件的四位整数是:98012.从n个数中挑选出最大的数。

问题分析:本题可以借助于古代比武的“打擂台”来比喻:先有任意一人站在擂台上,然后第二个人上来与它比武,胜者留在台上,如此反复进行下去,直到第n个人比完为止(要注意:一共比n-1次),这样最后留在台上的人肯定是最强者。

相关文档
最新文档