5-1 循环结构程序设计
第4讲 C51基本结构程序设计(6)
(a)
例4.1: 输入两个整数,输出其中的大数。 void main( ) { int a,b,max; // 定义数据类型 printf(“\n input two numbers: ”);
//在屏幕上打印(显示)“input two numbers ”,提示用户输入两个数 字
scanf(“%d%d”,&a,&b); // 输入两个数字(如a=3,b=7) max=a; // 赋值(max=3) if (max<b) max=b; //判别大小,满足条件则,赋值(max=7) printf(“max=%d”,max); //打印输出: max=7 }
3.第三种形式为if-else-if形式
前二种形式的if语句一般都用于两个分支的情况。 当有多个分支选择时, 可采用if-else-if语句,其一般形式为: if(表达式1) 语句1; K=? else if(表达式2) K=0 K=1 …… K=n … 语句2; else if(表达式3) 语句3; A0 A1 An … else if(表达式m) 语句m; else ( c) 语句n; 其语义是:依次判断表达式的值,当出现某个值为真时, 则执行其对应 的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均 为假,则执行语句n 。然后继续执行后续程序。
1.
2.
另一种是循环次数未知,这时可根据给定 的问题条件来判断是否继续。
4.3.1 while语句
while语句的一般形式为: while(表达式) 语句; 其中表达式是循环条件,
语句为循环体。
while语句的语义是:计
算表达式的值,当值为真(非
0)时, 执行循环体语句。其 执行过程可用图 (a)表示。
C语言程序设计_05循环结构程序设计
5.2 DO…WHILE循环结构 5.2.1 DO…WHILE语句的格式 DO…WHILE语句的一般格式为: DO 语句 WHILE(表达式); DO…WHILE语句中的表达式表示循环的条件,可 以是任何表达式,常用的是关系表达式和逻辑表达 式。表达式必须加圆括号。语句是重复执行的部分, 称作循环体。
由亍循环体在表达式2乊后表达式3乊前执行所以把循环体语句放在表达式3的开头循环体语句不原来的i构成逗号表达式作为循环语句新的表达式3从而也就没有循环体语句了
第5章 循环结构程序设计
5.1 WHILE循环结构 5.2 DO…WHILE循环结构 5.3 FOR循环结构 5.4 与循环有关的控制语句 5.5 3种循环语句的比较 5.6 循环的嵌套 5.7 循环结构程序举例 本章小结
图5-6 FOR语句执行过 程
FOR语句的执行过程如图5-6所示。具体由以下几步 完成: (1)求表达式1。 (2)求表达式2,并判定其值为0或非0。若值为非0, 转步骤(3);否则结束FOR语句。 (3)执行语句,然后求表达式3。 (4)转向步骤(2)。 由FOR语句的执行流程可知,表达式1的作用是为循 环控制的有关变量赋初值,表达式2是循环控制条件, 表达式3用于修正有关变量,语句是重复执行部分。
【例5.7】输入20个数,求出其中的最大值与最小值。
5.3.3 FOR语句的各种变形 1.在FOR语句中省略表达式 FOR语句中的3个表达式可以部分或全部省略,下面 给出语句的4种基本变形。 (1)表达式1移至FOR语句前,但它后面的分号必 须保留。这时FOR语句的形式为: 表达式1; FOR(; 表达式2; 表达式3) 语句
(2)表达式3移至循环体语句之后,但它前面的分 号必须保留。FOR语句的形式为: FOR(表达式1; 表达式2;) { 语句; 表达式3; } 对于求P=5!的程序段,省略表达式3,将其放在循环 体中,则程序段写成:
python程序设计实验报告五:循环结构程序设计(综合性实验)
python程序设计实验报告五:循环结构程序设计(综合性实验)安徽⼯程⼤学Python程序设计实验报告班级物流192 姓名张⽻学号 3190505221 成绩⽇期 2020.4.23 指导⽼师修宇实验五综合运⽤三种基本结构进⾏程序设计(综合性实验)(⼆学时)【实验⽬的】(1)进⼀步掌握选择与循环结构程序设计的⽅法和技巧;(2)综合运⽤三种基本结构进⾏程序设计;【实验条件】PC机或者远程编程环境【实验内容】1、完成三个编程题。
(1)计算并输出指定范围内的素数素数⼜称质数。
指整数在⼀个⼤于1的⾃然数中,除了1和此整数⾃⾝外,没法被其他⾃然数整除的数。
换句话说,只有两个正因数(1和⾃⼰)的⾃然数即为素数。
⽐1⼤但不是素数的数称为合数。
1和0既⾮素数也⾮合数。
素数在数论中有着很重要的作⽤。
2300多年前,古希腊数学家欧⼏⾥得在《⼏何原本》⼀书中证明了素数有⽆穷多个,如2、3、5、7、11等等。
问题描述:编程实现输出指定范围内的素数,输⼊以逗号间隔,输出以空格间隔。
指定范围由⽤户输⼊指定。
(2)九九乘法表问题描述:请按照如下格式设计⼀个“九九乘法⼝诀表”,并打印出来。
编程要点及提⽰:1. 使⽤for循环或者while循环实现以上功能2. 代码量不超过10⾏3. 在⼀⾏中,每个等式之间使⽤制表符"\t"进⾏分隔;对于每⼀⾏等式之间使⽤print()打印空字符实现,即print("")(3)统计不同字符个数问题描述:⽤户从键盘输⼊⼀⾏字符。
请编写⼀个程序,统计并输出其中英⽂字符、数字符号、空格和其他字符的个数。
输⼊格式:输⼊⼀⾏字符输出:按照顺序输出字母,数字,空格,及其他字符的个数,个数以空格分隔如:【实验记录与分析】(请在填写实验记录与分析结果)1.计算并输出指定范围内的素数输⼊代码,输出结果及分析如下:易错点:1.程序⽆法同时处理两个输⼊数据,在输⼊未处理时。
2.本题中的else语句不能和第⼆个的if对齐。
[工学]第05章 循环结构程序设计 (2)
22
i=i+c
2019/2/17
例:#include<stdio.h> 例:#include<stdio.h> main( ) main( ) { int i=0; { int i=0; for(;i<10;i++) for(i=0;i<10;i++) putchar(‘a’+i); putchar(‘a’+i); } } 运行结果:abcdefghij
2019/2/17
21
(7)表达式2一般是关系表达式(如 for语句说明4 i<=100)或逻辑 表达式(如a<b&&x<y),但也可以是数值表达式 或字符表达式,只要其值为非零,就执行循环体。分 析下面两个例子: ①for ( i=0;(c=getchar( ))!=‘\n’;i+ =c); i=0 此 for语句的执行过程见图 ,它的作 用是不断输入字符,将它们的ASCII 取一个字 码相加,直到输入一个“换行”符为 符=>c 止。 F ② for( ;(c=getchar( ))!=‘ \ n’;) C≠换行符 printf(“%c”,c);
15
思考:该程序是什么功能?
2019/2/17
5.3 for语句
for循环语句是C语言中功能最强的循环语句,它有
多个变化形式,并且可以很方便的代替其它的循环语
16
句。 for语句的一般形式
for(表达式1;表达式2;表达式3)循环体语句
2019/2/17
17
for执行流程
①先计算初值表达式1,它主要 用于循环开始前设置变量初值; ②接着计算循环控制逻辑表达式 2,它控制循环条件,决定循环 次数; ③如果表达式2为真,则执行循 环体语句,否则结束for循环; ④求解表达式3,它主要是对循 环控制变量进行修改。 ⑤转步骤②执行。
单片机C51语言及程序设计
语句确定 存储类型2——指针变量所在的存储区类型,缺省时根据C51编译模式的
默认值确定 指针变量名——按C51变量名的规则选取
举例说明C51指针定义的用法 (SMALL编译模式下)
例1 char xdata a = ‘A’; char * ptr = &a;
static char m, n; //定义m和n为2个位于data区中的有符号字符型静态变量。
2. C51的指针
标准C语言指针的一般定义形式为: ➢ 定数义据了类一型个*指指向针由变“量数名据;类型”说明的变量的指针变 量; ➢ 被指向变量和指针变量位于C编译器默认的内存区域 中例。如: int a =’A’;
二、C51的标识符与关键字
• 标识符即特定的字符或字符串,用来给变量、函数、符号 常量、自定义类型等命名。用标识符给C语言程序中各种对 象命名时,要用字母、下划线和数字组成的字符序列,并 要求首字符是字母或下划线,不能是数字。字母的大小写 是有区别的。
• 通常下划线开头的标识符是编译系统专用的,因此在编写C 语言源程序时一般不使用以下划线开头的标识符,而将下 划线用作分段符。C51编译器规定标识符最长可达255个字 符,但只有前32个字符在编译时有效,因此标识符的长度 一般不要超过32个字符。
FF00
D5H
D0^4
RRSS11
D4H
D0^3
RRSS00
D3H
D0^2
OOVV
D2H
D0^1
FF11
D1H
D0^0
PP
D0H
两种位地址表达形式:绝对位地址、相对位地址
项目五 循环结构程序设计
图5-10 多循环的并列与嵌套
任务4 掌握循环结构程序设计实例
【例5-7】输出10~100之间的全部素数。所 谓素数n,是指除1和n之外,不能被2~(n-1) 之间的任何整数整除。 算法设计要点: (1)显然,只要设计出判断某数n是否是素 数的算法,外面再套一个for循环即可。
(2)判断某数n是否是素数的算法:根据素数 的定义,用2~(n-1)之间的每一个数去整除n, 如果都不能被整除,则表示该数是一个素数。 判断一个数是否能被另一个数整除,可通过判 断它们整除的余数是否为0来实现。
二、continue语句 continue语句的一般形式为: continue; continue只能用在循环语句中,它的功能是 结束本次循环,跳到循环体中下面尚未执行的语 句,接着进行下次是否执行循环的判定。
continue语句的功能:对于for循环,跳过循环 体其余语句,转向循环变量增量表达式的计算;对 于while和do-while循环,跳过循环体其余语句,但 转向循环继续条件的判定,也就是说continue语句 用在循环中时不会强制退出循环,但它会跳过循环 体中剩余的部分而转去循环的结尾部分,强制开始 下一轮循环。
普通高等教育“十二五”规划教材·计算机专业
C语言程序设计
主编 刘孟强 李思广
兴趣是最好的老师
知识有限创意无限 欢迎大家学习
C语言程序设计
项目五 循环结构程序设计
任务1 掌握循环结构语句
任务2 掌握break与continue语句
任务3 掌握多重循环
任务4 掌握循环结构程序设计实例
任务1 掌握循环结构语句
由于循环结构在现实生活中和数学运算中比 较常用,并且较之顺序结构和选择结构比较难, 所以要认真学习这一项目。
第5章 循环结构程序设计PPT课件
}
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环i=1w; hile (i<=100)
2、while语句的注意事项
{ sum=sum+i;
注意:
i++; }
(1) 循环体如果包含一个以上的语句,应该用花括弧括
起来,以复合语句形式出现
(2) 在循环体中应有使循环趋向于结束的语句。如果无
C语言程序设计
第5章 循环结构程序设计
§ 5.2 用while语句实现循环
1、while语句的一般形式
while语句用来实现“当型”循环结构 一般形式: while (表达式)
循环体语句
当表达式为非0值时,执行while 语句中的循环体语句 其特点是:
先判断表达式,后执行语句
C语言程序设计
第5章 循环结构程序设计
} 运行结果:
}
1↙ sum=55 再运行一次:
}说明:当while后面的表达式的第一次的
值为“真”时,两种循环得到的结果相
11↙ sum=0
同。否则,二者结果不相同
C语言程序设计
第5章 循环结构程序设计
§ 5.4 用for语句实现循环
1、for语句的一般形式
C语言中的for语句使用最为灵活,不仅可以用于 循环次数已经确定的情况,而且可以用于循环次数 不确定而只给出循环结束条件的情况,它完全可以 代替while语句
语句,转到第(5)步
(3) 求解表达式3
(4) 转第(2)步骤继续执行
(5) 循环结束,执行for语句下面的一个语句
C语言程序设计
第5章 循环结
执行表达式1
循环初始条件
C语言全国试题(五-循环结构程序设计)
填空题(全国二级C 2008C2-8)
若有定义:int k;,以下程 序段的输出结果是__#_#_2_#_#_4__。
for (k=2; k<6; k++,k++ ) printf (“##%d”,k);
选择题(全国二级C 2007Q1-22)
C 有以下程序,程序的运行结果是 。
#include <stdio.h>
{ int i;
for ( i=1 ; i<=40; i++)
{ if (i++%5==0)
if (++i%8==0)printf("%d ",i); }
printf("\n"); }
A) 5
B) 24
C) 32
D) 40
选择题(全国二级C 2005Q1-27)
设变量已正确定义,则以下能正确
计算f=n!的程序段是 D 。
有以下程序段,且变量已正确定义和赋值
for ( s=1.0,k=1;k<=n; k++ ) s=s+1.0/(k*(k+1));
printf(“s=%f\n\n”,s); 请填空,使下面程序段的功能与之完全相同
s=1.0; k=1; while ( ___k_<_=_n__ ) { s=s+1.0/(k*(k+1)); __k_+_+__ ; } printf(“s=%f\n\n”,s);
以下程序的功能是计算: s=1+12+123+1234+12345。请填空。 main( ) { int t=0, s=0, i; for(i=1; i<=5; i++)
C语言第5章循环结构程序设计1
(2)在循环体中应有使循环趋向于结束的语句。 比如上例中,循环结束的条件是“score>=0”, 那么当我们把这个班的成绩全部输入完后, 一定要输入一个负数,才能使程序往下执行。 (3)循环体语句有可能一次也不执行。比如说上 例中,当第一次输入的分数就为负数时,则 循环体一次也不执行。
§5.3 do …while语句
① ② ④ ③
for(i=1; i<100; i++) s=s+i; printf(″s=%d″, s); }
/*循环体语句*/
对于for循环,有一点非常重要,即条件测 试永远是在循环开始时进行,如果在循环开 始时条件为假,那么循环体语句就不会被执 行。如: int i=10; for (k=10;k!=i;k++) printf(″%d″,k); printf(″%d″,k);
2、循环控制变量必须在循环体内有所改变,才 能使while和do-while语句的循环控制条件表达 式的值不断改变,直至循环结束。否则会造 成死循环。例如: i=1; while(i<=100) putchar(′*′); i++; 这个循环永远不会结束,因为“i++;”语句 不属于循环体中的语句,循环控制变量i没有 在循环体内被改变。 程序应该作如下改变:
在使用while语句的时候,我们要注意以下 两个问题: (1)循环体如果包含一个以上的语句,应该用花 括号括起来,以复合语句的形式出现。如果 不加花括号,则while语句的范围只到while后 面的第一个分号处。比如上例中,while语句 中如无花括号,则while语句范围只到 “average+=score;”。
#include <stdio.h> main() {int i,n;long fac; Scanf(―%d‖,&n); i=1 while (i<=n) fac=fac*i; i++; } Printf(―%d!=%ld‖,n,fac); }
大一C语言教材《C语言程序设计》第5章 循环程序设计
复合赋值运算符
种类:+= -= *= /= %= 《= 》= &= 含义: 变量 op= 表达式 变量 = 变量
^= |= op 表达式
x%=3 x*=y+8 a+=3
x=x%3 x=x*(y+8) a=a+3
运算符和表达式
说明:
结合方向:自右向左 左侧必须是变量,不能是常量或表达式
例 int i; 例 3=x-2*y; i=2.56; //结果 i=2; a+b=3;
赋值转换规则:使赋值号右边表达式值自动 转换成其左边变量的类型
赋值表达式的值与变量值相等,且可嵌套g a=b=c=5 a=(b=5) a=5+(c=6) a=(b=4)+(c=6) a=(b=10)/(c=2) //表达式值为5,a,b,c值为5 // b=5;a=5 //表达式值11,c=6,a=11 //表达式值10,a=10,b=4,c=6 //表达式值5,a=5,b=10,c=2
例 -i++ i=3;
-(i++) printf(“%d”,-i++);
//-3
无论是作为前缀还是作为后缀运算符,对于变量本身来 说自增1或自减1都具有相同的效果,但作为表达式来说却有 着不同的值。
例
j=3; k=++j; j=3; k=j++; j=3; printf(“%d”,++j); j=3; printf(“%d”,j++); a=3;b=5;c=(++a)*b; a=3;b=5;c=(a++)*b;
5.循环结构
补充说明: 补充说明: (2) 如果表达式2省略,即不判断循环条件,循环无终 止地进行下去.也就是认为表达式2始终为真. 例如: 例如:for(i=1; ;i++) sum=sum+i; 表达式1是一个赋值表达式,表达式2空缺.它相当于: i=1; while(1) {sum=sum+1;i++;}
补充说明: 补充说明: (7) 表达式一般是关系表达式(如i<=100)或逻辑表达式 (如a<b && x<y),但也可以是数值表达式或字符表达 式,只要其值为非零,就执行循环体.
5.5 用for 语句实现循环
补充说明: 补充说明: ① for(i=0;(c=getchar())!=′\n′;i+=c); 在表达式2中先从终端接收一个字符赋给c,然后判 断此赋值表达式的值是否不等于′\n′(换行符),如 果不等于′\n′,就执行循环体.即不断输入字符, 将它们的ASC∏码相加,直到输入一个"换行"符为止. . 注意: 注意:此for语句的循环体为空语句,把本来要在循环 体内处理的内容放在表达式3中,作用是一样的.可见 for语句功能强,可以在表达式中完成本来应在循环体 内完成的操作.
5-5. 用for 语句实现循环
补充说明: 补充说明: (5) 3个表达式都可省略,如: 如 for(; ;) 语句 相当于 while(1) 语句 即不设初值,不判断条件(认为表达式2为真值), 循环变量不增值.无终止地执行循环体.
5-5. 用for 语句实现循环
补充说明: 补充说明: (6) 表达式1可以是设置循环变量初值的赋值表达式, 也可以是与循环变量无关的其他表达式.如: 如 for (sum=0;i<=100;i++) sum=sum+i; 表达式3也可以是与循环控制无关的任意表达式.
第五节 循环结构程序设计
运行结果为
pi=3.141592
注意:不要把n定义为整型变量,否则在执行“t=s/n;”时,得到t的值为0(原因是两个整数相除)。
例5.4求Fibonacci数列前40个数。这个数列有如下特点:第1、2个数为1、1。从第3个数开始,每个数是其前面两个数之和。即
F1=1 (n=1)
F2=1 (n=2)
#include <iomanip>
using namespace std;
int main( )
{int m,k,i,n=0;
bool prime;//定义布尔变量prime
for(m=101;m<=200;m=m+2) //判别m是否为素数,m由101变化到200,增量为2
{prime=true;//循环开始时设prime为真,即先认为m为素数
{int s=1;
double n=1,t=1,pi=0;
while((fabs(t))>1e-7)
{pi=pi+t;
n=n+2;
s=-s;
t=s/n;
}
pi=pi*4;
cout<<"pi="<<setiosflags(ios∷fixed)<<setprecision(6)<<pi<<endl;
return 0;
while语句的一般形式如下:
while (表达式)语句
其作用是:当指定的条件为真(表达式为非0)时,执行while语句中的内嵌语句。其流程图见图5.1。其特点是:先判断表达式,后执行语句。while循环称为当型循环。
图5.1
例5.1求1+2+3+…+100。
C语言程序设计循环结构程序设计
假
体现式
真
语句
假如体现式旳值一开始就为0,则语 句一次也不会被执行。
上一页
下一页
while语句举例
问题: 求学生旳平均成绩,以输入负数成绩为结束
算法分析:
1. 定义变量score存储学生成绩,定义s=0存储累加旳成绩,
定义n=0统计录入旳成绩数目。
2. 输入第一种学生旳score
3. 若score>=0,执行第4步,不然执行第7步
上一页
下一页
例: 求 1+2 +…+99
分析:用变量i从1到99循环, 把i旳值累加到变量s中,最 终输出s旳值。
程序如下:
#include<stdio.h> main( ) { int i,s=0;
for(i=1;i<=99;i++) s=s+i;
printf(“s=%d”,s); }
上一页
下一页
在某些情况下,for语句中旳体现式1、2、3都能够 省略,而改用其他旳方式来实现这些功能。我们还用 上面旳例子阐明for语句省略体现式旳情形。
上一页
下一页
1.省略体现式1: #include<stdio.h> main( ) { int i=1,s=0;
for(;i<=99;i++) s=s+i;
因为do-while语句至 少要被执行一次,特
别要注意n和s旳取值 问题!
s=s+score;
}while(score>=0);
if(n>1) printf (“ \n %f” ,(s-score)/(n-1));
else printf(“no student score!”);
循环结构程序设计
第5章 循环结构程序设计
5.1 循环语句 5.1.2 while语句 while语句用来实现“当型”循环结构。 while语句的一般形式如下: while(表达式) 语句 /*循环体*/ 功能:当表达式的值为真时,执行 while语句中的循环体。
表达式 真
假
语句
第5章 循环结构程序设计
5.1 循环语句 5.1.2 while语句 while语句用来实现“当型”循环结构。 while语句的一般形式如下: while(表达式) 语句 /*循环体*/ 功能:当表达式的值为真时,执行 while语句中的循环体。
例5.6 判断一个数m是否是素数。
开始 输入m
i=2
i<=m-1 假 真 m%i==0 真 假 i=i+1 真 假
#include <stdio.h> main() { int m,i; scanf("%d",&m); for(i=2;i<=m-1;i++) if(m%i==0) break; if(i<=m-1) printf("%d不是素数",m); else printf("%d是素数",m); }
第5章 循环结构程序设计
5.2 多重循环 在循环体语句中又包含有另一个完整的循环结构的 形式,称为循环的嵌套(又称双重循环)。如果内循环 体中又有嵌套的循环语句,则构成多重循环。 嵌套在循环体内的循环体称为内循环,外面的循环称为 外循环。 while、do…while、for三种循环都可以互相嵌套。
a=1
a<=9 真 b=1
假 b<=9 真 输出a×b=c b=b+1 a=a+1
第5章 循环结构程序设计
例5.8 例5.9 例5.10 例5.11 例5.12
– 三种循环的比较:
• 三种循环可用来处理同一问题,一般它们可以互相代替。 • do-while循环类似于while循环。do-while循环至少要执 行一次循环体,而while和for循环在进入循环体之前,首先 要判断循环条件,如果条件不成立,则循环体一次也不执 行就结束循环流程。 • while和do-while循环,在while后面指定循环条件。而 for循环可以在表达式3中包含促使循环结束的操作,甚至可 以将循环体中的操作全部放到表达式3中。 • 用while和do-while循环时,循环变量初始化的操作应在 while和do-while之前完成。而for语句可以在表达式1中实 现循环变量的初始化。 首页 上一页
5.2 实现循环结构的语句
• while语句
while语句用于构成“当型”循环结构。 形式: while (表达式 表达式) 表达式 {循环体语句 循环体语句 } 其流程如右图所示: 例5.1 例5.2
–
关于while循环结构的注意事项:
• while循环结构的特点是“先判断,后执行”。 • 若循环体中包含多个语句,则应以复合语句的形式出现。 • 循环体内要有促使循环结束的条件。否则会形成“死循 环”。 • 为使循环能正确开始运行,要做好循环前的准备工作。 首页 上一页
5.3 循环嵌套的概念及实现
循环的嵌套是指:在一个循环体内又包含了另一个完整的循 环结构。三种循环不仅可以自身嵌套,而且还可以互相嵌套。 例5.6 例5.7
– 使用循环的嵌套结构的注意事项
• 外层循环应“完全包含”内层循环,不能发生交叉。 • 嵌套的循环控制变量一般不应同名,以免造成混乱。 • 嵌套的循环要注意正确使用“缩进式”书写格式来明 确嵌套循环的层次关系,以增加程序的可读性。
《C语言程序设计》课件 《C语言程序设计》课件 第5章-循环结构程序设计
Page 28
参考代码
#include<stdio.h> void main() {
char ch; int char_num=0,int_num=0,other_num=0; while((ch=getchar())!=‘\n’) //回车键结束输入 {
if(ch>='A'&&ch<='Z'||ch>='a'&&ch<='z') char_num++;
printf("************\n ");
printf("************\n ");
printf("************\n ");
printf("************\n "); printf("************\n "); 等价 for(int i=1;i<=8;i++)
{ s=s+i;
i++; //表达式3移至循环体末尾
}
printf("s=%d",s);
}
<<C语言程序设计>>
Page 19
随堂练习
例 编程计算n的阶乘。
n!=1 2 3 ……〔n-1〕 n
思路:
类似于累加求和,每一次循环乘上一个数字,求和 将和初始化为0,这里应把积初始化为?
<<C语言程序设计>>
#include "stdio.h" void main( ) { int i,sum=0;
第五单元--循环结构程序设计
if (sum1<sum2)
printf(“偶数玩家赢!”);
else
if (sum1=sum2)
printf(“平局!”);
}
特别提示
while语句和do-while语句的区别: (1)在循环条件和循环体相同的情况下while后面的 表达式第一次的值为“真”时,两种循环得到的结果相 同。 (2)当while后面的表达式第一次的值为“假”时, while语句一次也不执行,而do-while 语句可以顺利执行 一次。
sum+=scr;
i++; }
ave=sum/n;
printf(“参赛队总成绩是评委打分平均分:%d”,ave);
}
特别提示
1. 循环变量要有初值。 2. 在循环体中,循环变量要有变化,并且使得循环条件
可以为假,跳出循环,避免“死循环”。 3. 打分和sum初值为0。
任务2:翻牌游戏——do-while语句的运用
问题引入
我们经常会对输入的多个数据应用相同的计算,使用循环 语句就解决了繁琐的重复问题。如果程序中有需要多次执行的 语句组,就进行循环结构程序设计。
循环结构是结构化程序设计的三种基本结构之一,循环语 句序列可重复执行,直到某条件不成立(或成立)结束,或完 成指定的次数。循环结构的编写由循环语句来完成,有时我们 还希望控制循环的进入和退出,所以还会使用一些循环控制语 句。本单元的五个典型任务讲解和分析了在C语言程序中循环结 构的程序设计方法。
相关知识
1.“直到型”循环do-while语句 do-while语句语法格式: do {循环语句组} while(表达式);
相关知识
2.do-while语句执行过程 先执行一次指定的循环体语句,然后判断表达式的值,当表达式
循环结构及其应用
【编程思路】
定义变量i表示圆的半径,使其从1递增到10。循环中计算并判断每个圆的面积 值是否大于100,不大于100时,输出圆面积,如果大于100,则使用break 跳出循环即可。
【程序代码】
#include "stdio.h"
#define PI 3.14159
main( )
{
int r;
float area;
{
sum=sum+i; /*累加*/
i++;
/*变为下一个加数*/
} printf("sum=%d\n",sum); /*输出计算结果*/
}
5.2.2 do-while语句
❖ do-while语句属于直到型循环,其一般形式为:
do {
循环体语句 }while (表达式);
❖ do-while语句的执行过程是:
printf("%d is a prime number\n”,m); /* m是素数 */
else printf("%d is not a prime number\n”,m); /* m不是素数 */
}
本例中用到了breakБайду номын сангаас句。在switch语句中我们已 经接触过break语句,它的功能是终止选择执行, 跳出switch语句,那么在循环结构中使用break 语句,其作用是终止循环的执行,即跳出循环语 句。
main( )
{
int n;
for (n=100;n<=200;n++)
{ if (n%3!=0) /*判断n是否能被3整除*/ printf("%d ”,n); /*不能整除时输出n的值 */
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京建筑工程学院
计算机教学与网络信息部计算机程序设计基础实验报告
实验5-1:实验名称循环结构程序设计(一) 实验地点大兴基础楼B座201
姓名张三专业土木工程班级土081 学号 2 日期2009.04.14 1.【实验目的】
(1)熟悉掌握使用while语句、do-while语句与for语句实现循环的方法
(2)掌握基本输入和输出,以及多组数据的常用方法
【实验要求】
(1)熟悉掌握使用while语句、do-while语句与for语句实现循环的方法
(2)掌握基本输入和输出多组数据的常用方法
【实验环境】
(1) Microsoft XP操作系统
(2) Microsoft VC++ 6.0
【实验内容】
1.输入入门(1)
/acmhome/problemdetail.do?&method=showdetail&id=
1076
题目描述:计算A+B
输入:输入数据有多组。
每组一行,为整数A,B。
以EOF做结束。
输出:输出A+B的值。
样例输入:
1 2
3 4
样例输出:
3
7
提示:
while(scanf("%d %d",&a,&b)!=EOF)
{
}
2.输出入门(2)
/acmhome/problemdetail.do?&method=showdetail&id=
1077
题目描述:计算A+B
输入:
输入第1行为一个整数n(1≤n≤10),代表测试的组数。
下面有n组测试数据,每组1行,为2个整数,为A, B。
输出:输出A+B的值。
样例输入:
2
1 2
3 4
样例输出:
3
7
提示:
scanf("%d",&n);
for(i=0;i<=n-1;i++) // 或者 while(n--)
{
…;
}
3.输入入门(3)
/acmhome/problemdetail.do?&method=showdetail&id=
1078
题目描述:计算A+B
输入:输入数据有多组。
每组一行,为两个整数A,B。
输入以0 0结束。
输出:输出A+B的值。
样例输入:
1 2
0 0
样例输出:
提示:
while(scanf("%d%d",&a,&b)&& a||b)
{
…;
}
4.输入入门
/acmhome/problemdetail.do?&method=showdetail&id=
1079
题目描述:计算A+B
输入:输入数据有多组。
每组一行,为两个整数A,B。
输入以0 0结束。
输出:输出A+B的值,每组数据之间保留一个空行。
样例输入:
1 2
3 4
0 0
样例输出:
3
7
提示:
while(scanf("%d%d",&a,&b)&& a||b)
{
if(q==1)
printf(“\n”);
q=1;
prinf(“%d\n”,a+b);
}
5.两个数比较(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1002
题目描述:求2个数中较大者。
输入:第一行为测试的数据组数N,接下来的N行分别是两个待比较的整数输出:输出N行,每一行的值为每组数中较大的整数。
样例输入:
15 10
样例输出:
2
15
提示:
scanf(“%d”,&n);
While(n--) // 或者for(i=1;i<=n;i++)
{
…;
}
6.求绝对值(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1369
题目描述:求实数的绝对值。
输入:输入数据有多组,每组占一行,每行包含一个实数。
输出:
对于每组输入数据,输出它的绝对值,要求每组数据输出一行,结果保留两位小数。
样例输入:
123
-234.00
样例输出:
123.00
234.00
提示:
While(scanf(“%f”,&f)!=EOF) // 或者While(scanf(“%f”,&f)==1) {
…;
}
7.蟠桃记(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1062
题目描述:
第n天准备吃的时候只剩下一个桃子。
这下可把神仙们心疼坏了,请帮忙计算一下,第一天开始吃的时候桃子一共有多少个桃子。
输入:
输入数据有多组,每组占一行,包含一个正整数n(1≤n≤30),表示只剩下一个桃子的时候是在第n天发生的。
输入以0结束。
输出:
对于每组输入数据,输出第一天开始吃的时候桃子的总数,每个测试实例占一行。
样例输入:
2
4
样例输出:
4
22
提示:
While(scanf(“%d”,&n)&&n) // 或者While(scanf(“%d”,&n),n)
{ // 或者While(scanf(“%d”,&n)&&n!=0) …;
}
8.求奇数的乘积(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1088
题目描述:给你n个整数,求他们中所有奇数的乘积。
输入:
输入数据包含多个测试实例,每个测试实例占一行,每行的第一个数为n,表示本组数据一共有n个,接着是n个整数,你可以假设每组数据必定至少存在一个奇数。
输出:输出每组数中的所有奇数的乘积,对于测试实例,输出一行。
样例输入:
3 1 2 3
4 2 3 4 5
样例输出:
3
提示:
while(scanf("%d",&n)!=EOF)
{
while(n--) // 或者 for(i=0;i<=n-1;i++)
{
…;
}
}
9.数值统计(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1370
题目描述:统计给定的n个数中,负数、零和正数的个数。
输入:
输入数据有多组,每组占一行,每行的第一个数是整数n(n<100),表示需要统计的数值的个数,然后是n个实数;如果n=0,则表示输入结束,该行不做处理。
输出:
对于每组输入数据,输出一行a,b和c,分别表示给定的数据中负数、零和正数的个数。
样例输入:
6 0 1 2 3 -1 0
5 1 2 3 4 0.5
样例输出:
1 2 3
0 0 5
提示:
while(scanf("%d",&n)&& n)
{
while(n--) // 或者 for(i=0;i<=n-1;i++)
{
…;
}
}
10.多项式求和(基本输入输出练习)
/acmhome/problemdetail.do?&method=showdetail&id=
1373
题目描述:
多项式的描述如下:
1 - 1/
2 + 1/
3 - 1/
4 + 1/
5 - 1/
6 + ...
现在请你求出该多项式的前n项的和。
输入:
输入数据由2行组成,首先是一个正整数m(m<100),表示测试实例的个数,第二行包含m个正整数,对于每一个整数(不妨设为n,n<=1000),求该多项式的前n项的和。
输出:
对于每个测试实例n,要求输出多项式前n项的和。
每个测试实例的输出占一行,结果保留2位小数。
样例输入:
2
1 2
样例输出:
1.00
0.50
【实验方法】
1.输入入门(1)
【源代码】
【运行结果】
【结论】
2.输出入门(2)
【源代码】
【运行结果】
【结论】
3.输入入门(3) 【源代码】
【运行结果】【结论】
4.输入入门【源代码】
【运行结果】【结论】
5.两个数比较【源代码】
【运行结果】【结论】
6.求绝对值【源代码】
【运行结果】
【结论】
7.蟠桃记
【源代码】
【运行结果】【结论】
8.求奇数的乘积【源代码】
【运行结果】【结论】
9.数值统计【源代码】
【运行结果】【结论】
10.多项式求和【源代码】
【运行结果】【结论】【成绩评定】。