C语言——第六章循环控制
C语言循环控制
![C语言循环控制](https://img.taocdn.com/s3/m/3635c062d4d8d15abf234e1c.png)
41
• 表达式1、3省略,但不能省略分号。但要将在for语 句前赋初值,并将表达式3包含到循环体中。此时相当 于while循环。
例如: … i=1; for(; i<=100 ; ) {… i++; }
42
• 表达式2省略,但不能省略分号。但要在循环体中控 制循环的结束。
/*Testing*/
{
y=y*x;
count++;
/*Incrementing*/
}
/* End of Loop*/
printf("\nx=%f; n=%d; x to power n=%f\n",x,n,y);
}
ቤተ መጻሕፍቲ ባይዱ20
while 循环控制语句:例
例:编程计算1+2+22+23+...+264
void main() {
答案: (D)
(A) n = 0
(B) while构成无限循环
(C) n = 1
(D) n = -1
23
课堂练习:while 语句
◆ 3. 下面程序执行的结果是( )。 void main( ) {
int n = 1 ; while ( n = 1 ) n = n - 1; printf(“n = %d\n”, n) ; }
初始值:i=1,sum=0;
i++; }
循环条件:i<=100
}
循环控制:i++;
将内嵌语句用大
括号括起来形成
复合语句。 15
C语言第六章C控制语句:循环
![C语言第六章C控制语句:循环](https://img.taocdn.com/s3/m/ef3d60077cd184254b353536.png)
for循环
再看一次 while循环
#include <stdio.h> int main(void) {
int n = 0;
//初始化部分
while (n < 3)
// 判断部分
{
printf("n is %d\n", n);
// 循环部分
n++;
int row; char ch;
for (row = 0; row < ROWS; row++)
/* 外部循环 */
{
for (ch = 'A'; ch < ('A' + CHARS); ch++) / * 内部循环*/
printf("%c", ch);
printf("\n");
}
return 0; }
除了++和--,你一定需要更多
scores +=20 dimes -= 2 bunnies *=2 time /=2.73 reduce %=3
scores=score+20 dimes = dimes-2 bunnies=bunnies *2 time = time/2.73 reduce=reduce%3
使用哪种循环?
可以根据自己的爱好选择。
说到流行的编程风格,在涉及到初始化和更新变量时,使用for循环是恰当的,而在其他的条件下,while 循环更好一些。
比如while经常使用于下边的情况: while(scanf("%d",&num)==1)
C第6章循环控制
![C第6章循环控制](https://img.taocdn.com/s3/m/4f1668567ed5360cba1aa8114431b90d6c85898e.png)
2 13 89 610 4181 28657 196418 1346269 9227465 63245986
3 21 144 987 6765 46368 317811 2178309 14930352 102334155
2022/12/21
第6章 循环控制
34
例6.5. 求100~200的素数.
表达式1、表达式3可以是逗号表达式,以使循环 变量值在修改时可以对其它变量赋值。
如
for (sum=0,i=1;i<=100;i++,i++)
相当于: sum=0;
for (i=1;i<=100;i=i+2)
2022/12/21
第6章 循环控制
20
表达式2可以是关系表达式,也可以是数值表达式 或字符表达式。只要值0.即执行循环体.
第6章 循环控制
16
思考:同FOR语句控制的循环的差异 (count)<-循环次数 循环体
(count)<-(count)-1
(count)=0?
2022/12/21
第6章 循环控制
17
表达式3亦可省略,但在循环体中须有语句修改循环变量; 以使表达式2在某一时刻为0而正常结束循环。
例: for (sum=0,i=1;i<=100;) { sum=sum+i; i++; }
C有三种循环语句,均可以相互嵌套:
while ( )
for (; ;)
{…
{…
while ( )
while ( ) { }
{…
do
} } 均为正确的嵌套。
{ } while ( ); … }
工学第6章循环控制课件
![工学第6章循环控制课件](https://img.taocdn.com/s3/m/3aaa9db75ff7ba0d4a7302768e9951e79b8969c0.png)
❖ while 语句 ❖ do-while 语句 ❖ for 语句
Page 2
C语言 程序设计
第6章 循环控制
第6章 循环控制
举例 求1—100之间所有整数的和
开始
当
型
0→sum
循
1→i
环
否
i<=100
是
sum+i→sum
i+1→i
printf("\n");
}
}
Page 20
C语言 程序设计
第6章 循环控制
6.6 循环结构程序设计举例
举例:累加、连乘算法
❖累加算法之累加通式:
累加和变量=累加和变量+累加项
❖连乘算法之连乘通式:
连乘积变量=连乘积变量*连乘项
算法举例:
❖求和、求平均
❖求π的近似值
❖求n!
❖求1!+2!+ … +n!
C语言 程序设计
举例
第6章 循环控制
从键盘上输入若干个整数,求总和及平均值,输入-1结束
#include <stdio.h>
void main( )
{ int x, i=0; float sum=0, aver;
scanf("%d",&x);
while ( x!=-1 )
{sum+=x;
或 for (; x!=-1;)
格式:do 语句 while (表达式) ;
语句 循环体
循环体 直到条件成立时
典型的 直到型 循环
表达式 假(0) 真(非0)
C语言第六章 循环控制
![C语言第六章 循环控制](https://img.taocdn.com/s3/m/271e84eb19e8b8f67c1cb99d.png)
三,3 种循环结构的异同点
1.均为表达式2的值为真(非0)时执行循环体,为假(0值) .均为表达式 的值为真 的值为真( )时执行循环体,为假( 值 时结束循环,循环体可以是单个语句,空语句或复合语句( 时结束循环, 循环体可以是单个语句 , 空语句或复合语句( 顺序 结构,分支结构或另一循环结构 循环嵌套 循环嵌套) 结构,分支结构或另一循环结构—循环嵌套). 2. For循环,while循环是先判断后执行,可能循环体可能一次 循环, 循环是先判断后执行, 循环 循环是先判断后执行 也不执行; 循环是先执行后判断, 也不执行;而do/while循环是先执行后判断,循环体至少执行一次. 循环是先执行后判断 循环体至少执行一次. 3. For循环为记数型循环, 能自动修改循环条件中变量的值 ; 循环为记数型循环,能自动修改循环条件中变量的值; 循环为记数型循环 while或 do/while为条件型循环 , 再循环体中 , 至少有一个语句直 或 为条件型循环, 为条件型循环 再循环体中, 接或间接修改循环条件中的变量的值,以便于循环能正常退出. 接或间接修改循环条件中的变量的值,以便于循环能正常退出.
/* 求 pi 的近似值 while 循环 */ #include "math.h" main () { float s,i,p; s=1; i=3; p=-1; while (fabs(1/i)>=1e-5) { s=s+1/i*p; i=i+2; p=-p;} printf("pi=%f\n",s*4); }
while 循环
表达式2 表达式 ? 真 循环体 假
先求表达式2的值,当结果为非 , 先求表达式 的值,当结果为非0,执行 的值 循环体,再求表达式2的值 重复上述操作, 循环体,再求表达式 的值, 重复上述操作, 的值 直到求得的表达式2的 值为0结束循环 结束循环. 直到求得的表达式 的 值为 结束循环.
C语言程序设计-第六章循环控制练习题【附答案】
![C语言程序设计-第六章循环控制练习题【附答案】](https://img.taocdn.com/s3/m/d4fdaafce109581b6bd97f19227916888486b980.png)
第六章 循环控制第六章 循环控制6.1 选择题【题6.1】设有程序段int k=10;while(k=0) k=k-1;则下面描述中正确的是 。
A)while循环执行10次B)循环是无限循环C)循环体语句一次也不执行D)循环体语句执行一次【题6.2】设有以下程序段int x=0,s=0;while(!x!=0) s+=++x;printf(“%d”,s);则 。
A)运行程序段后输出0B)运行程序段后输出1C)程序段中的控制表达式是非法的D)程序段执行无限次【题6.3】语句while(!E);中的表达式!E等价于 。
A)E==0B)E!=1C)E!=0D)E==1【题6.4】下面程序段的运行结果是 。
a=1; b=2; c=2;while(a<b<c) {t=a; a=b; b=t; c--;}printf(“%d,%d,%d”,a,b,c);A)1,2,0B)2,1,0C)1,2,1D)2,1,1【题6.5】下面程序段的运行结果是 。
x=y=0;while(x<15) y++,x+=++y;printf(“%d,%d”,y,x);A)20,7B)6,12C)20,8D)8,20【题6.6】下面程序段的运行结果是 。
int n=0;while(n++<=2); printf(“%d”,n);A)2B)3C)4D)有语法错【题6.7】设有程序段t=0;while(printf(“*”)){t++;if(t<3) break;}则下面描述正确的是 。
A)其中循环控制表达式与0等价B)其中循环控制表达式与‘0’等价C)其中循环控制表达式是不合法的D)以上说法都不对【题6.8】下面程序的功能是将从键盘输入的一对数,由小到大排序输出。
当输入一对相等数时结束循环,请选择填空。
#include <stdio.h>main(){int a,b,t;scanf(“%d %d”,&a,&b);while(【1】){if(a>b){t=a; a=b; b=t;}printf(“%d,%d”\n”,a,b);scanf(“%d %d”,&a,&b);}}【1】 A)!a=b B)a!=b C)a==b D)a=b【题6.9】下面程序的功能是将从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者,请选择填空。
C语言设计课件:第6章 循环控制
![C语言设计课件:第6章 循环控制](https://img.taocdn.com/s3/m/e650ebbff12d2af90342e665.png)
6.5 for语句
for 语句较前两种循环语句更简洁、更灵活, 特别是处理循环次数确定的问题。
for语句的语法格式为: for(表达式1;表达式2;表达式3)
循环体语句
其中,表达式1为赋初值表达式 表达式2为条件表达式 表达式3为循环变量增值表达式
例:求n! (n=10) int main( ) { int n,k,s=1;
scanf(“%d”,&n); i=1; s=0; do { s+=i; /*累加*/
i+=2; } while(i<=n); /*必须使用分号*/ printf(“s=%d”,s); }
课堂实践
1、从键盘上输入若干整数,求其中正偶 数之和。以-1作为输入结束标志。
#include "stdio.h" int main() {
scanf("%d", &n);while (n>0)
do
{ s+=n%10;
{ s+=n%10; n/=10;
n/=10;
}
}
while(n>0); printf("\n sum=%d", s);
printf("\n sum=%redt",ursn); 0;
return 0; }
}
课堂实践3
输入一个整数,求该数是几位数,按顺 序输出它的每一位数字(以空格分隔); 按逆序输出它的每一位数字(以空格分隔 )。
例:求s=1+3+5+…n (n为奇数且n>=1)
6.4 do…while语句
do_while语句的特点是“先执行循环体,后 判断循环条件”,当条件成立时继续执行循环 体,条件不成立时结束循环。
第6章C语言循环控制
![第6章C语言循环控制](https://img.taocdn.com/s3/m/99190111fc4ffe473368ab84.png)
main() { int i,sum=0; i=1; while(i<=100) { sum=sum+i; i++; } printf("%d\n",sum); return 1; }
6.3 do-while语句
一般形式为: do
循环体语句 while (表达式); 先执行一次循环体语句(若有多条,则必须用{}括起来),然后达式的值等于0为止。如:
main() { int i,sum=0; i=1; do { sum=sum+i; i++; } while(i<=100); printf("%d\n",sum); return 1; }
6.4 for语句
一般形式为: for(表达式1;表达式2;表达式3) 语句 它的执行过程如下:
6.5 循环的嵌套
三种循环(while循环、do-while循环和for循环)可以互相嵌套:如 (1)while() (3)for(;;) (5)for(;;) { { { while() for(;;) while() {} {…} {} } } (2)do (4)while() } { { (6)do do do { {…} {…} for(;;) while(); while(); {} } } while(); } while();
2. continue语句 一般形式为: continue; 作用是结束本次循环,即跳过循环体中下面尚未执行的语句,接 着进行下一次是否执行循环的判断。只能用于循环体中(goto构 成的循环除外)。 如:main()
第六章 循环控制
![第六章 循环控制](https://img.taocdn.com/s3/m/42310ff64693daef5ef73da4.png)
语法: 语法 break ; 功能:终止包含该语句的最内 功能 层循环。 · 不能用于循环语句和switch语 句之外的任何其他语句。 main( ) { int n; for(n=1;n<=10;n++) { if(n%3= =0) break ; printf(“%6d”,n); } }
while( ) { do { ··· } while( ); } while循环体嵌套 循环体嵌套 循环体 do_while循环 循环 do { for( ; ; ) { ··· } }while( ); do_while循环体嵌套for循环 循环体嵌套 循环 循环体嵌套
19
break和continue语句 6.8 break和continue语句
(4)for 语句的循环体还可为另一个循环语句 例如:
for(i=1;i<=2;i++) for(j=1;j<=2;j++) { printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
for(i=1;i<=2;i++) { for(j=1;j<=2;j++) printf(“%3d”,i+j); printf(“\n”); } output: 2 3 3 4
while(表达式)语句 (表达式) 执行过程: 执行过程: 0 表达式 非0 语句
∑n
n =1
i=1
否 i<=100? 是 sum=sum+i i=i+1
先判断循环条件, 先判断循环条件,后执行循环 体语句
4
main()
C语言第6章 循环控制结构
![C语言第6章 循环控制结构](https://img.taocdn.com/s3/m/24515ffff78a6529657d539b.png)
n!
直到最后一项的绝对值小于1e-5
累加项的前后项之间无关
寻找累加项的计算通式
fac = fac * n; term = 1.0 / fac; e = e + term; e初值为1.0
累加项的前后项之间有关
利用前项计算后项
term = term / n; e = e + term; e,term初值为1.0
14/95
start
i ← 0, sum ← 0
false
i< 5
true
input n
sum ← sum + n
i++
output sum
C语言程序设计
end
第6章 循环控制结构
for循环语句
循环次数已知,计数控制 int i, sum, n; sum = 0; for (i=0; i<5; i++) {
第6章 循环控制结构
例5.4 只猜一次
magic = rand()%100 + 1; /*模拟计算机想一个[1,100]之间的数magic*/
怎样模拟计算机 想一个数呢?
产生[a,a+b-1] 之间的随机数
magic = rand()%b + a;
C语言程序设计
35/95
#include <stdlib.h>
#include <stdio.h>
main()
{
int magic; int guess;
/*计算机"想"的数*/ /*人猜的数*/
end
第6章 循环控制结构
n1
2
n2
c语言(第六章循环控制)
![c语言(第六章循环控制)](https://img.taocdn.com/s3/m/5faf49cfa1c7aa00b52acbd5.png)
}
§6.4 do-while语句
§一般形式: do 语句 while (表达式) ; §特点:
“直到型”循环结构。 先执行一次“语句”,后判“表达式”,当 “表达式”非0,再执行“语句”,直到“表 达式”为0,循环结束。
语句 非0
语 句
直到P为假
5. 表达式2也可以省略,此时,系统不再判断循 环条件,认为表达式2的值始终为真。即循环 条件始终成立。循环将出现死循环,程序设 计者必须设法保证循环能正常结束。
例、sum=0; for(i=1; ;i++) sum+=i; 或:sum=0; i=1; for( ; ; ) sum+=i; i=1; sum=0; for( ; ; ) { sum+=i; i++; if (i>100) break; }
i=1,sum=0 i<=100 真 sum=sum+i i=i+1 假
[例6.4]任意输入两个正整数,求它们的最 n, r, a, b; printf (“input m, n:”); scanf (“%ld%ld”, &m, &n); if (m>n) {a = m; b = n;} else {a = n; b = m;} r = a%b; while (r != 0) { a = b; b = r ; r = a%b ;} printf(“the greatest common divisor of %ld and %ld is
“表达式2”,循环条件(i<=100)。
for (i=1;i<=100;i++) sum = sum + i;
c语言 第6章循环控制
![c语言 第6章循环控制](https://img.taocdn.com/s3/m/bab7de2c0722192e4536f6a9.png)
为1? 分析: 素数是不能被其他整数整除的数, 即如果m是素数,则必然不存在 结束循环,即转到for 循环的下一个语句, i、t(1<I,t<m)使的m=i*t成立 break总是作if的内嵌语 i的取值范围可以缩小到2~k=√m 句 因此判断m是否为素数的算法是: 1、依次用2~k之间的数整除m,如果 找到某个整数i能整除m,则m肯定不 是素数。 2、如果找不到i,则m是素数。
C语言程序设计
continue语句
功能:结束本次循环,跳过循环体中尚未执行的语句,
进行下一次是否执行循环体的判断-提前循环 仅用于循环语句中 例:把100-200之间不能被3整除的数输出
本次循环结束 循环体的剩余语句被忽略 执行表达式3,进入下一循环 continue总是作if的内嵌语句
此法更佳 if(n%3)printf(“%d”,n);
C语言程序设计
while语句实现当型循环
一般形式:
执行流程:
while 假(0) 表达式 循环体 如: k=1; while ( k<=100) {s=s+k;k++;} 循环控制 表达式 循环控制 变量
while(表达式) 循环体语句;
表达式
循环体
真(非0)
循环体
C语言程序设计
注意: 若循环体包含一条以上的语句,应以复合语句 形式出现 循环前,必须给循环控制变量赋初值 循环体中,必须有改变循环控制变量值的语句 循环体可以为空
表达式2省略时,不判断循环条件,将成为“死循
环”,需要在循环体中引入break语句以退出循环 表达式3省略时,循环体内应有使循环条件改变的 语句 如:for(k=1;k<=3;) {s=s+k; k++;}
C语言 循环控制
![C语言 循环控制](https://img.taocdn.com/s3/m/48d665df5a8102d277a22f99.png)
21
第四节 程序举例(重点)
例6.8 数学问题 例6.9 判断某一个数是否是素数 例6-10 打印出以下图案。 附加: 求最大公约数和最小公倍数
22
高职教材
程序举例(重点)
C
例6.8 计算求和表达式:1-1/3+1/5-1/7+…的 近似值,直到最后一项的绝对值小于10-6为止。
for(i=2;i<=n-1;i++)
if(n%i= =0) {flag=0; break;}
if(flag= =1)
printf(“%d is a prime\n”,n);
else
printf(“%d is not a prime\n”,n);
}
C
30
高职教材
附加:求最大公约数和最小公倍数
C
• 给定任意二个正整数a,b求其最大公约 数?
制
前语句
循环体 yes
条件 No 后一语句
8
高职教材
C
例6-2 :用do while求1+2+3...+100
语
第 六
言章
程
序循
设环
计控
制
main() { int i,sum=0;
i=1; do {
sum+=i; i++; } while(i<=100); printf(“sum=%d\n”,sum);
32
高职教材
最大公约数的特点和思路
C
• 最大公约数小于或等于这二个数 中的最小者
• 同时整除这二个数。
语
第 六
言章
• •
先求得二个数a,b中的最小数 如果这个最小数能整除a和b,则
C语言课件:5_第六章 循环控制
![C语言课件:5_第六章 循环控制](https://img.taocdn.com/s3/m/c297d216f011f18583d049649b6648d7c1c70801.png)
3. 循环控制变量:在循环条件中控制测试条件为 真或为假的变量。
如:上例while语句中使用的变量 i 。
注意:
⑴循环条件中的表达式一般是逻辑表达式或关系 表达式,也可以是算术表达式(非0为真,0为 假)。一般表达式中应含有循环控制变量。
while (3)
如果循环体可能一次也不执行时,用while语句。
(循环体至少执行一次) /*只有当用户键入q或Q,才结 束循环*/ char c; do { c=getchar();
printf(“%c”,c); }while(c!=‘q’&&c!=‘Q’);
(循环体可能一次不执行) /*只有不是q或Q的字符才被打 印*/ char c; c=getchar(); while (c!=‘q’&&c!=‘Q’); { printf(“%c”,c);
goto 语句为无条件转向语句,其作用为: 使程序的执行无条件地转移到指定处。
一般形式: goto 语句标号;
执行过程:执行语句时,程序转移到以标号 (定名规则与变量相同)为前缀的语句处继续 执行。
如:向前跳 goto label; …… …… label:语句;
向后跳 label:语句; …… …… goto label;
切记:不要从循环体外跳到循环体内!
二、用goto语句和 if 语句构成循环
例:计算10!并输出结果。
void main() { int i=1, sum=1; loop: if (i<=10)
{ sum=sum*i; i++; goto loop;
} printf(“10!=%d\n”,sum); }
计算机程序设计c语言第06章循环控制课件
![计算机程序设计c语言第06章循环控制课件](https://img.taocdn.com/s3/m/7997aa3d5a8102d276a22ffa.png)
printf(“\n”); }
举例:
试找出满足下列条件的所有三位数 ① 其百位数不大于2 ② 将个位与百位对换,得到的三位数是原三位数的两 倍多 分析:
(1)三重循环,循环控制变量分 别表示百位数、十位数和个 位数 (3)n=100*i+10*j+k m=100*k+10*j+i (2)百位数i取值1~2 十位数j取值0~9
28
{ n=100*i+10*j+k; m=100*k+10*j+i;
if (m>=2*n&&m<3*n) {s++; printf(“%d ”,n);
2014-11-16
if (s%10==0) printf(“\n”); } }
七、几种循环语句的比较
while和do-while语句的表达式只有一个,for语句有 三个。 while 和for先判断循环条件后执行循环体,do-while 语句先执行循环体后判断循环条件。 while语句多用于循环次数不定的情况
几种循环的比较
break语句和countinue语句
2014-11-16
一、概述
循环就是在满足一定条件时重复执行一段程序 实现循环的语句有四种: 1. goto语句和if语句构成循环 2. while语句 3. do-while语句 4. for语句
3
(不提倡)
(当型循环——先判断后执行) (直到型循环——先执行后判断)
24
2014-11-16
六、循环的嵌套
一个循环体内包含着另一个完整的循环结构 内嵌的循环结构中又可以嵌套循环,从而构成多 重循环 三种循环可以互相嵌套
C语言 第6章 循环控制
![C语言 第6章 循环控制](https://img.taocdn.com/s3/m/e668ae0a79563c1ec5da71d6.png)
可看成: 可看成: for(循环变量赋初值;循环条件;循环变量增值)语句; 循环变量赋初值; 循环变量赋初值 循环条件;循环变量增值)语句;
●
说明: 说明:
循环更简洁, (1)显然 循环更简洁,更灵活; )显然for循环更简洁 更灵活; (2)循环体可以是复合语句; )循环体可以是复合语句; 语句中的三个表达式均可以是逗号表达式, (3)for语句中的三个表达式均可以是逗号表达式,故可 ) 语句中的三个表达式均可以是逗号表达式 同时对多个变量赋初值及修改. 同时对多个变量赋初值及修改.如: for(i=0, j=1; j<n && i<n; i++, j++) … 语句中三个表达式可省: (4)for语句中三个表达式可省: ) 语句中三个表达式可省
– (1)循环体可以用复合语句; )循环体可以用复合语句; – (2)循环控制变量在执行 前必须赋初值; 前必须赋初值; )循环控制变量在执行do前必须赋初值
– (3)循环体内应有改变循环控制变量的语句; )循环体内应有改变循环控制变量的语句; – (4)do-while 循环的特点是先执行后判断,故循环 循环的特点是先执行后判断 先执行后判断, )
●
i←1, sum=0 小于等于100 当i小于等于 小于等于 sum=sum+i i=i+1 输出sum 输出
程序如下: 程序如下: main() { int i=1, sum=0; while (i<=100) { sum+=i; i++; } printf("%d",sum); }
说明: 说明:
说明: 说明:
内循环必须完全包含在外循环中,不能交叉; ⑴ 内循环必须完全包含在外循环中,不能交叉; 并列循环允许使用相同的循环变量, ⑵ 并列循环允许使用相同的循环变量,嵌套循环不允许
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
goto语句:
用法示范如下:
语句1;
语句2;
A:语句3;
……
语句n;
goto A;(当运行到该语句时,回到A处,从语句3开始继续运行)
可以使用if语句与goto语句组合,形成循环,如:if(条件)goto 标记;
goto语句中的标识符由字母数字下划线组成,第一个字符必须为字母或下划线,不能完全使用整数
注意:goto语句会导致语法结构混乱,一般不建议使用!!!!!!
while循环:
用法示范如下:
while(表达式)或 while(表达式)
语句;{语句块}
当表达式非0时,执行后续的语句或语句块。
do…while循环:
用法示例如下:
do
循环体语句
while(表达式);
判断条件与while循环相同,不同处在于该循环方法会先执行一遍循环体。
for语句循环实现:
用法示例如下:
for(循环变量赋初值语句;循环条件语句;循环变量修改语句)
语句;
循环变量赋初值语句可省略,可在for语句前进行循环变量赋初值,但其后的分号不能省略。
循环条件语句也可省略,省略后默认循环条件始终为真,循环会一直进行。
循环变量修改语句也可省略,但必须有语句保证循环能正常结束。
break语句和continue语句:
break可以从switch语句中跳出,也可以从循环内跳出循环体,结束循环并执行之后的语句。
(只能用于switch与循环体)
continue语句用于跳出本次循环,判断是否进行下一次循环。
输出100~200中不能被3整除的数:
#include<stdio.h>
void main()
{
int i;
i=100;
while(i<=200)
{
if(i%3!=0)
printf("%d不能被3整除\n",i);
i++;
}
}
输出斐波那契(Fibonacci)数列:
#include<stdio.h>
void main()
{
int i,n,k;
long a,b,c;
a=1;
b=1;
k=2;
printf("请输入要输入的Fibonacci数列数量:"); scanf("%d",&n);
printf("%10d",a);
printf("%10d",b);
for(i=1;i<=n-2;i++)
{ c=a+b;
a=b;
b=c;
k++;
printf("%10d",c);
if(k==4)
{ printf("\n");
k=0;
}}}
判断是否为素数的程序:
(较简单,留下核心部分)
k=sqrt(m);
while(i<=k)
{
if(m%i==0)
break;
i++;}
printf("%d是素数",m);
例6.10,书本代码,有问题:
为何程序中转换后的字母不是立即输出,即一次循环输出一个字母,而是在按下回车后一次性输出?
这里涉及到一个stdio缓冲的问题。
即在运行至getchar时,进行输入,如果不敲击回车,所有的字母保存在缓冲区中,并不像程序输入,所以程序其实一直停留在while((c=getchar())!='\n')处,在敲击回车后,程
序开始循环,之后每次运行到c=getchar()语句,会自动从缓冲区中读入一个字母。
(个人理解)。