C语言中 循环结构
【例5.8】编写程序,输出1000以内所有的完数。如果一个 整数的因子之和等于这个数本身,这个数就被称为完数。例 如:1、2、3是6的因子,并且6=1+2+3,所以6是完数。
第五章 循环控制结构
1
本章知识点:
–while语句的一般形式及应用 –for语句的一般形式及应用 –do...while语句的一般形式及应用 –多重循环结构的使用 • break语句和continue语句
2
5.1 while语句
语句的一般形式如下: while (表达式) 循环体语句
说明:while语句属于“当型” 循环。
【例5.5】编写程序,输出所有的水仙花数。水仙花数是 指一个3位数,其各位数字的立方和等于该数本身。例如: 153=13+53+33=153,所以153就是水仙花数。
int main() { int a,b,c,i; for(i=100;i<=999;i++) { a=i/100; b=i/10%10; c=i%10; if(i==a*a*a+b*b*b+c*c*c) printf("%d\n",i); } printf("\n");}
#include <stdio.h> int main() { int n,sum=0; for (n=1;n<=100;n++) sum=sum+n; printf("sum=%d\n",sum); return 0; }
12
【例5.4】设n=30,编写程序,计算并输出S(n)的值。 S(n)=(1*2)/(3*4)-(3*4)/(5*6)+(5*6)/(7*8)+„+(-1)(n1)*[(2n-1)*2n]/[(2n+1)*(2n+2)] +„ #include<stdio.h> #include<math.h> int main() { int n; float s=0; for(n=1;n<=30;n++) s=s+pow((-1),(n-1))*((2*n-1)*2*n)/((2*n+1)*(2*n+2)); printf("s(n)=%f",s); return 0; } 13
【例5.3】编写程序,输入一个字符序列,直至换行为止, 统计出大写字母、小写字母、数字、空格和其他字符的个数。
int main() { char ch; int a,b,c,d,e; a=b=c=d=e=0; while((ch=getchar())!='\n') { if(ch>='A'&&ch<='Z') a++; /*判断是否为大写字母*/ else if(ch>='a'&&ch<='z') b++; /*判断是否为小写字母*/ else if(ch>='0'&&ch<='9') c++; /*判断是否为数字*/ else if(ch==' ') d++; else e++; } printf("%d,%d,%d,%d,%d\n",a,b,c,d,e); return 0; }
假(0) 表达式 真(非0) 循环体语句
图5.1 while语句流程图
while (表达式) 循环体语句
• 说明: • (1)while是关键字。while后圆括号内的 表达式一般是关系表达式或逻辑表达式, 但也可以是C 语言中任意合法的表达式。 • (2)循环体语句可以是一条语句,也可以 是多条语句,如果循环体语句包含多条语 句,则需要用一对花括号“{}”把循环体语 句括起来,采用复合语句的形式。
16
5.3 do„while语句
for语句的一般形式如下: do 循环体语句 While{表达式}; 说明:do while语句属于“直到型”循环。
(1)do…while语句中“While{表达式};”后 面的分号是不能省略的,这一点是和while语 句不一样的。 (2)do…while语句是先执行循环体语句,后 判断表达式,因此无论条件是否成立,将至少 执行一次循环体。而while语句是先判断表达 式,后执行循环体语句,因此,如果表达式在 第一次判断时就不成立,则循环体一次也不执 行。
【例5.6】编写程序,实现对用户输入口令的校验。用户 输入的口令如果与预设口令不一致,则需要重新输入,直 到与预设口令一致为止。
int main() { char c; do { c=getchar(); }while(c!='A'); printf("校验成功\n"); return 0; }
【例5.7】 用公式
for(表达式1;表达式2;表达式3) 循环体语句
for(循环变量赋初值;循环条件;循环变量增值)
关于for语句的几点说明:
(1)循环体语句可以是简单语句也可以是使用一对花 括号括起来的复合语句。如果是一个语句,也可以和 for写在一行上,这样使程序看起来更加简洁;如果 循环体包含多条语句,最好是另起一行,采用一对花 括号括起来的复合语句形式,增加程序的可读性。 (2)表达式的省略。for语句中的三个表达式均可以省 略,但是两个分号不能省略。
23
三种循环的比较: (1)while 和do„while语句一般实现标志 式循环,即无法预知循环的次数,循环只是在 一定条件下进行;而for语句大多实现计数式 循环。 (2)一般来说,while 和do„while语句的循 环变量赋初值在循环语句之前,循环结束条件 是while后面圆括号内的表达式,循环体中包 含循环变量修改语句;一般for循环则是循环 三要素集于一行。因此,for循环语句功能更 强大,形式更简洁,使用更灵活。 (3)while和for是先测试循环条件,后执行 循环体语句,循环体可能一次也不执行。而 do…while语句是先执行循环体语句,后测试 循环条件,所以循环体至少被执行一次。
4
1
1 1 1 … 求π的近似值,直到 3 5 7
最后一项的绝对值小于10-6为止。
void main() { double n=1.0,d=1.0,pi=0.0; int sign=1; do { pi=pi+d; n=n+2; sign=-sign; /*改变数据项的符号*/ d=sign/n; /*求出数据项*/ } while (fabs(d)>=1.0e-6); pi=4.0*pi; printf("pi=%10.7lf\n",pi); }
15
【例5.11】判断m是否为素数。 程序分析:所谓素数,就是一个正整数,除了本身和1 以外并 没有任何其他因子。例如 2,3,5,7 就是素数。
int main() { int m,i,k,flag; scanf("%d",&m);
/*定义标志变量*/
}
flag=1; /*假设m是素数*/ for (i=2;i<m;i++) if(m%i==0) { flag=0; /*表示m不是素数*/ break; /*跳出循环*/ } if(flag==1) printf("%d is a prime number\n",m); else printf("%d is not a prime number\n",m); return 0;
【例5.1】 求前100个自然数的和 。
#include <stdio.h> int main() { int n,sum; n=1;sum=0; /*变量赋初值*/ while (n<=100) { sum=sum+n; /*累加求和*/ n++; /*修改基本数据项n*/ } printf(" sum=%d\n",sum); return 0; }
• 注意: (1)在计算机解决实际问题时,常常会用到类似本 程序的“穷举法”。“穷举法”解决的问题一般 具有这种特点:如果问题有解,一组或多组,必 定全在某个集合中;如果这个集合内无解,集合 外也肯定无解。这样,在解决问题时,就可以将 集合中的元素一一列举出来,验证是否为问题的 解。本题就是一一验证100~999之间所有的数, 最终找出答案。 (2)程序中在做是否相等关系判断( “i==a*a*a+b*b*b+c*c*c)使用到了关系运算符 “==”,而不是“=”,后者是赋值运算符,在c语 言中这两种运算符形式是不一样的,要注意区别 。
5
• 需要注意的几个问题:
(1)累加求和算法。这个程序采用的算法思想 称为累加求和,即:不断用新累加的值取代变 量的旧值,最终得到求和结果,变量sum也叫 “累加器”,初值一般为0。 (2)必须给变量赋初值。 (3)正确判断条件的边界值。 (4) 避免出现“死循环”。 (5)可能出现循环体不执行。 (6)while后面圆括号内的表达式一般为关系表 达式或逻辑表达式,但也可以是其它类型的表 达式,.
9
5.2 for语句
for语句的一般形式如下:
for(表达式1;表达式2;表达式3) 循环体语句
说明:for语句属于“计数”型循环。
表达式1 假(0) 表达式2
真(非0)
循环体语句
表达式3
for语句流程图
11
For语句最常用、最简单的形式
• for(循环变量赋初值;循环条件;循环变量增值)
【例5.1】 求前100个自然数的和 。
c语言三种循环结构
else if((P3&0x80)==0)//判断P3.7口的开关是否按上了。
P1=0xf7;//当P3.7口上的开关按上了,点亮接在P1.3口上的灯。
else P1=0xff;//当没有按键按下时,P1口上的全部灯都不亮。
}
while(1)
{
for(i=1;i<11;i++)
{
switch(i)
{
case 1: c=i*i;printf("%d\n",c);break;
case 2: c=i*i;printf("%d\n",c);break;
case 3: c=i*i;printf("%d\n",c);break;
case 4: c=i*i;printf("%d\n",c);break;
printf("%d\n",c);
else if(i==7)
printf("%d\n",c);
else if(i==8)
printf("%d\n",c);
else if(i==9)
printf("%d\n",c);
else if(i==9)
printf("%d\n",c);
}
}
}
void serial_init(void) //串口初始化函数
case 5: c=i*i;printf("%d\n",c);break;
case 6: c=i*i;printf("%d\n",c);break;
c语言常用的循环结构
c语言常用的循环结构1C语言循环结构C语言中拥有多种循环结构供我们使用,本篇文章将要介绍三种常用的循环结构:while循环、for循环、do-while循环。
1while循环while循环体的结构和逻辑表达式之间的关系是“当…时",它首先判断循环条件是否满足,如果满足就进入if语句块执行,然后执行完if语句块后继续判断循环条件是否满足,如果条件不满足while循环结束,程序执行else语句块或者后续语句。
例程:```x=0;while(x<10)//如果x小于10{x++;//x加1printf("x的值为:%d\n",x);}```2for循环for循环体的结构和逻辑表达式和for循环的三个部分,分别是初始化语句、循环条件语句和循环控制语句,当满足初始化条件时,执行for循环语句,每一次都会执行循环条件来判断for循环的退出条件,如果退出条件循环语句满足,for循环结束,执行后续语句。
例程:```for(int i=0;i<10;i++)//使用for循环循环10次{printf("i的值:%d\n",i);}```3do-while循环do-while循环体的结构和逻辑表达式之间的是“先做…再判断",它会先执行一次do-while循环,然后在根据逻辑表达式判断是否继续循环,如果满足执行条件继续循环,反之执行后续语句。
例程:```int x=0;do//循环开始{x++;//x的值增加printf("x的值为:%d\n",x);}while(x<10);//当x小于10时继续循环```以上就是C语言中常用的三种循环结构,由此可见在C语言中可以借助循环语句实现重复代码的执行,是程序开发中一大帮助。
c语言循环结构三种形式
c语言循环结构三种形式
c语言循环结构主要有三种形式:for, while和do-while循环。
for循环应用最为广泛,最开始就非常有效地在程序中实现循环,具有如下优点:
(1)for循环可以方便地设置初始值、循环条件和自增步长;
(2)可以轻松实现多次循环;
(3)for循环可以轻松实现多次跳转,提高代码效率。
while循环移植性很强,可以在各种编程环境中使用,其特点如下:
(1)while循环这种结构可以在完成迭代后进行求和、求交集等操作;
(2)while循环操作符号简单,只有while、break、continue;
(3)while循环可以满足常见的迭代需求,如逐行读取文件、拆分字符串以及连接字符串等。
do-while循环最大的优势在于可以保证循环至少执行一次,其优点如下:
(1)执行流程不会因外部影响而受到损害;
(2)循环条件位于循环末尾;
(3)可以简单实现多次迭代,可以根据条件来完成不同的功能。
总的来说,c语言的循环结构非常灵活,根据实际需求可以采用for、while或者do-while结构进行编程。
对于开发者来说,掌握这三种循环结构将可以帮助你更加方便有效地完成程序编写任务。
C语言程序设计:第5章 循环结构
12
do...while语句(cont...)
课堂练习: 1.输出1---n之间的数,其中n从键盘输入。
int main(void) {
//1.定义变量i和n //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:输出i的值 return 0; }
} 相当于 while(1) {
}
26
小结
❖for(i=m;i<n;i++)//循环次数:n-m次 ❖for(i=m;i<=n;i++)//循环次数:n-m+1次
27
循环语句的练习
课堂练习: 1.输出n---1之间的数,其中n>1且n从键盘输入。 2.计算1*2*3*...*n的值(n的阶乘n!), 其中n从键盘输入。 3.计算10- 1/2 - 1/3 -....1/n的值 以上练习分别以while、do...while、for语句实现
int main(void) {
//1.定义变量i,n,sum //2.输入n的值 //3.思考循环的开始条件:i从1开始 //4.思考循环的结束条件:i++,i > n //5.循环的条件:i<=n //6.循环要做的事情:累加i的值 //7.输出计算结果 return 0; }
24
for语句(cont...)
{
sum = sum + i;
if(sum > 100)break;
c语言中循环结构
c语言中循环结构循环结构在C语言中是一种非常重要的控制结构,它能够让程序重复执行某段代码,实现代码的复用和效率的提高。
循环结构主要有三种形式:while循环、do-while循环和for循环。
1. while循环while循环是一种先判断条件再执行的循环结构。
它的语法形式如下:```while (条件) {循环体语句;}```在循环开始之前,先判断条件是否成立,如果条件成立,则执行循环体语句;否则,跳过循环体语句,继续执行后面的代码。
循环体执行完毕后,再次判断条件是否成立,如果成立,则继续执行循环体语句,直到条件不成立为止。
2. do-while循环do-while循环和while循环类似,不同之处在于它是先执行循环体,再判断条件是否成立。
它的语法形式如下:```do {循环体语句;} while (条件);```在循环开始时,先执行循环体语句,然后判断条件是否成立,如果条件成立,则继续执行循环体语句,否则跳出循环。
3. for循环for循环是一种常用的循环结构,它的语法形式如下:```for (初始化表达式; 条件表达式; 更新表达式) {循环体语句;}```for循环的执行顺序是先执行初始化表达式,然后判断条件是否成立,如果条件成立,则执行循环体语句;执行完循环体语句后,再执行更新表达式,再次判断条件是否成立,以此类推。
当条件不成立时,跳出循环。
循环结构的应用非常广泛,可以用于处理各种重复性任务,比如计算数列的和、输出九九乘法表等。
下面以计算数列的和为例,演示这三种循环结构的使用。
我们来看一下使用while循环计算数列的和的代码:```#include <stdio.h>int main() {int n = 10; // 数列的长度int sum = 0; // 数列的和int i = 1; // 循环变量while (i <= n) {sum += i;i++;}printf("数列的和为:%d\n", sum);return 0;}```在这段代码中,我们使用while循环从1开始累加到n,得到数列的和。
C语言 循环结构
新编C语言程序设计教程
例5-15 求1!+2! + …… + 10!
新编C语言程序设计教程
例5-15 求1!+2! + …… + 10!
分析2:10个数相加,循环变量i从1到10,对于第i项mi 显然有mi=mi-1*i。
新编C语言程序设计教程
例5-16猴子吃桃。
有若干桃子,一只猴子第一天吃了一半多一个,第二天吃了 剩下的一半多一个,每天如此,第十天吃时只有一个桃子了。
新编C语言程序设计教程
1、2、4、7、8、11、13、14、 16、17、19、22、23
return
新编C语言程序设计教程
例5-11用循环输出如下图形
* * *
* * *
* * * * * * * * * 分析:图形共5行,循环变量i从1到5,每次输出一行。 对于第i行,需输出i个 *,可用循环变量j 从1到
输出C T
grade >= 60 FFra bibliotek输出D
输出E
新编C语言程序设计教程
例5-14
return
新编C语言程序设计教程
5.6 典型例题
例5-15 求1! + 2! + …… + 10! 分析1: 10个数相加,循环变量i从1到10,对于第i项
需计算i的阶乘。i的阶乘是从1到i的连乘,可以用另一个
循环计算。循环变量j从1到i。
新编C语言程序设计教程
清华大学出版社
周二强
zeq@
软件学院
计算机科学与工程系
配套视频: 博客:/stunt
第5章 循环结构
5.1 while循环结构
5.1.1 while循环结构分析
C语言中的循环结构
C语言中的循环结构循环结构是编程中常用的控制结构之一,它允许程序重复执行特定的代码块,直到满足某个条件为止。
在C语言中,有三种主要的循环结构:`for`循环、`while`循环和`do-while`循环。
首先,让我们来看一下`for`循环。
`for`循环是C语言中最常用的循环结构之一,它通常用于已知循环次数的情况。
`for`循环的语法如下:```for (初始化表达式; 条件表达式; 更新表达式) {// 循环体}```其中,初始化表达式用于初始化循环计数器,条件表达式用于判断循环是否继续执行,更新表达式用于更新循环计数器。
例如,下面的代码展示了一个简单的`for`循环,它会打印1到5的数字:```for (int i = 1; i <= 5; i++) {printf("%d\n", i);}```接下来,让我们来看一下`while`循环。
`while`循环用于在满足条件的情况下重复执行代码块,直到条件不再成立。
`while`循环的语法如下:while (条件表达式) {// 循环体}````while`循环会在每次循环开始前先检查条件表达式,如果条件为真,则执行循环体。
例如,下面的代码展示了一个简单的`while`循环,它会打印1到5的数字:```int i = 1;while (i <= 5) {printf("%d\n", i);i++;}```最后,让我们来看一下`do-while`循环。
`do-while`循环与`while`循环类似,不同之处在于`do-while`循环会先执行一次循环体,然后再检查条件是否成立。
`do-while`循环的语法如下:```do {// 循环体} while (条件表达式);`do-while`循环会先执行循环体,然后再检查条件表达式。
即使条件不成立,循环体至少会被执行一次。
例如,下面的代码展示了一个简单的`do-while`循环,它会打印1到5的数字:```int i = 1;do {printf("%d\n", i);i++;} while (i <= 5);```总的来说,循环结构在C语言中是非常重要的,它可以使程序更加灵活和高效。
c语言循环结构三种形式
c语言循环结构三种形式
循环结构是c语言程序设计中重要的一环,它是指将指定的语句重复执行多次的程序结构,循环结构有三种形式:for循环,while循环和do…while循环。
for循环是一种最常用的循环结构,其结构形式为:for(表达式1;表达式2;表达式3)语句;(注意:表达式1、2、3之间用分号隔开,表达式3要用分号结尾),每次循环都会按照表达式1、2、3的顺序执行,其中表达式1一般是初始化变量的值,表达式2则是作为循环条件(集限),表达式3则是更改变量的值。
while循环是另一种比较常用的循环结构,其结构形式为:while(表达式)语句,while循环的作用是当表达式值为真时则重复执行相应的语句,也就是说,只要表达式的值为真,语句就会一次被执行,最后当表达式值为假时,结束循环。
最后一种结构是do…while循环,其结构形式为:do句 while (表达式),不同于while循环,do…while循环会先执行语句,然后才判断表达式,也就是说,无论表达式的值是真还是假,语句都会被至少执行一次。
c语言程序设计中,for循环,while循环和do…while循环共同构成了循环结构的三种形式,它们均是c语言中重要的程序控制结构。
对于for循环,我们可以使用其来完成同一段代码的多次执行;而对于while循环,可以利用其来完成当表达式值为真时的重复执行;最后,对于do…while循环,可以利用其来完成将语句至
少执行一次的操作。
从上面可以看出,不论是c语言编程还是其他编程语言,都不可缺少循环结构,其中for循环,while循环和do…while循环是循环结构当中最为常用的三种形式,他们能够极大地提高程序员的编程效率,帮助我们完成一些复杂的程序编写工作。
c语言循环结构三种形式
c语言循环结构三种形式C语言是一种广泛使用的编程语言,它的强大的灵活性和高效的运行效率使它在信息技术领域非常流行。
C语言是一种面向过程的编程语言,它对执行循环操作提供了诸多优点。
在C语言中,有三种类型的循环结构,分别是for循环、while循环和do-while循环。
首先,for循环是C语言中最常见的循环结构,它的语法一般如下:for(初始化语句;制表达式;新语句){语句组}for循环有四个部分组成,初始化语句、控制表达式、更新语句和循环体。
在for循环开始执行之前,首先会执行初始化语句,它可以定义变量并初始化它们,然后进入循环判断控制表达式,如果控制表达式为真,则执行循环体,否则退出循环;控制表达式每次执行完更新语句后都会重新检查执行控制表达式,如果控制表达式仍然为真,则继续执行循环体,直到控制表达式不为真为止。
其次是while循环,它的语法格式如下:while(控制表达式){语句组}while循环的运行过程类似于for循环,但是while循环没有初始化语句,在循环体执行之前,要先运行控制表达式,如果控制表达式为真,则执行循环体;在执行完循环体后,while循环会自动执行控制表达式,如果控制表达式仍然为真,则继续执行循环体,直到控制表达式不为真为止。
最后一种循环结构是do-while循环,它的语法形式为:do{语句组}while(控制表达式)do-while循环与while循环的用法基本相同,唯一的区别是,在执行do-while循环前,先会执行一次循环体。
一旦执行完循环体,do-while循环会自动执行控制表达式,如果控制表达式为真,则继续执行循环体,直到控制表达式不为真为止。
通过上面的介绍,我们了解到C语言中有三种循环结构,即for循环、while循环和do-while循环,它们的用法比较简单,但是在实际编程中,要根据实际需求正确选择循环结构,才能有效地完成指定的任务。
C语言的循环结构非常重要,只有充分理解和掌握它们的用法,才能在实际工作中有效地应用它们。
C语言循环结构
06 循环控制语句
break语句
功能
在循环语句和switch语句中,break用于跳 出当前循环或switch结构,执行循环或 switch后面的代码。
使用场景
当满足某个条件时,需要立即终止循环的执行,可 以使用break语句。
注意事项
break只能跳出一层循环,如果有多层循环 嵌套,需要使用多个break才能跳出所有循 环。
斐波那契数列算法
斐波那契数列定义
斐波那契数列实现
斐波那契数列案例
斐波那契数列是一个经典的数列,它 的前两个数字是0和1,后面的每个数 字都是前两个数字的和。
使用循环结构,依次计算每个数字的 值,直到达到指定的数列长度。可以 使用两个变量来保存前两个数字的值 ,每次循环计算下一个数字的值,并 更新这两个变量的值。
循环结构作用
提高代码效率
通过重复执行代码,避免重复编写相同的代码段 ,提高程序的可读性和可维护性。
实现复杂功能
循环结构可用于实现各种复杂的功能,如排序、 查找、遍历等。
控制程序流程
循环结构可用于控制程序的执行流程,实现条件 判断、分支执行等。
常见循环类型
for循环
适用于已知循环次数的情况,可方便 地控制循环变量的初始值、增量和终 止条件。
}
```
05 循环嵌套
嵌套概念及作用
嵌套概念
在C语言中,一个循环体内可以包含 另一个完整的循环结构,称为循环的 嵌套。内嵌的循环可以完全包含在另 一个循环中,也可以部分包含。
嵌套作用
通过循环嵌套,可以实现更复杂的控 制流程,解决一些单层循环无法处理 的问题。例如,打印二维数组、进行 复杂的数学计算等。
使用for循环可以控制打印输出的行和列,从而打印出各种图案。
