C语言循环结构(一)

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
21
练习:
#include <stdio.h> int main() { int a=1,b=2; for(;a<8;a++){b+=a;a+=2;} printf("%d,%d\n",a,b); return 0; }
10,14
22
练习:
#include <stdio.h> int main() { int c=0,k; for(k=1;k<3;k++) switch(k) { default:c+=k; case 2:c++;break; case 4:c+=2;break; } printf("%d\n",c); return 0; } 3
32
#include <stdio.h> int main() { int i,x; for(i=1,x=1;i<=50;i++ ) { if(x>=10) break; if(x%2==1) { x+=5; continue; } x=x-3; } printf("x=%d,i=%d",x,i); return 0; }
25
练习
求100以内即能被3又能被7整除 的整数之和。
26
程序:
#include <stdio.h> int main() { int i, sum = 0; for (i = 1; i<=100; i++) { if(i%3==0 && i%7==0) {sum+=i;} } printf("%d\n", sum); return 0; }
while() { ... if() break;
...
}
30
答案: s=1
s=3
s=6 s=10
s=15
31
continue语句
continue语句:跳过循环体下面未执行的语句,
接着执行循环下一次迭代。如:
while( ) {… if ( ) continue;
…}
结果?
前面例子中: if(i>5)break;换成 if(i==5)continue;
练 习
#include <stdio.h> s=0 int main() { int k=1,s=0; do{ if((k%2)!=0) continue; s+=k;k++; }while(k>10); printf("s=%d\n",s); return 0; }
12
while与do-while的区别(例)
29
break语句
break语句:break语句用于循环语句和switch语句, 作用是退出结束循环语句和switch 语句,如: 例: #include <stdio.h> int main() { int i,s=0; for(i=1;i<=10;i++) { s=s+i; if(i>5) break; printf("s=%d\n",s); } return 0; }
3
用循环结构语句实现:
#include <stdio.h> #include <math.h> int main() { char m='y'; float a , b , c , s , area; while(m=='y') { printf("Please enter 3 sides of a triangle:\n"); scanf("%f,%f,%f",&a , &b , &c); if ((a+b>c) &&( b+c>a) && (c+a>b)) { s = (a + b + c)/2; area = sqrt(s * (s - a) * ( s - b) * (s - c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c); printf("area=%7.2f\n",area); } else printf("数据错误"); printf("还要继续吗,请选择(y/n)"); scanf(" %c",&m); if (m=='y') continue; else break; } return 0; }
27
例:100内的奇数和
#include <stdio.h> int main() { int i, sum = 0;
for (i = 1; i <= 100; i+=2) { sum += i; } printf("%d\n", sum); return 0; }
28
break与continue语句
24
练习:
#include <stdio.h> int main() 0 1 1 2 3 { int f,f1,f2,i; f1=0;f2=1; printf("%d %d ",f1,f2); for(i=3;i<=5;i++) { f=f1+f2;printf("%d ",f); f1=f2;f2=f; } printf("\n"); return 0; }
#include<stdio.h> int main() { int x=11,sum=0; while(x<=10) {sum+=x; } printf("sum=%d\n",sum); return 0; } sum=0
#include<stdio.h> int main() { int x=11,sum=0; do {sum+=x; } while(x<=10); printf("sum=%d\n",sum); return 0; } sum=11
100
n 1
n
15
for语句
for (表达式1;表达式2;表达式3) 语句 表达式1 表达式2 语句 表达式3
假(0)
真(非0)
16
程序:
#include <stdio.h> int main() { int i, sum; for (sum = 0, i = 1; i <= 100; i++) { sum += i; } printf("%d\n", sum); return 0; }
23
#include <stdio.h> int main() c=4 { int c=0,k; for(k=1;k<3;k++) switch(k) { default:c+=k; case 1:c++;break; case 4:c+=2;break; } printf("c=%d\n",c); return 0;
35
练习
例:打印出所有的”水仙花数” (”水仙花数” 是一个3位数,其各位数字立方和等 于该数本身。如:153=13+53+33)
19
程序:
#include <stdio.h> int main() { int i = 1, sum = 0; for (; i <= 100;) { sum += i; i++; } printf("%d\n", sum); return 0; }
20
程序:
#include <stdio.h> int main() { int i, sum = 0; for (i = 100; i; i--) /* for (i = 100; i>0; i--) */ { sum += i; } printf("%d\n", sum); return 0; }
8
例:求
#include <stdio.h> int main() { int i, sum = 0; i = 1; do { sum += i; i++; } while (i <= 100); printf("%d\n", sum); return 0; }
100
n 1
n
9
do-while语句
4
循环语句
while语句 do-while语句 for语句
5
例:求
#include <stdio.h>
int main() { int i, sum = 0; i = 1; while (i <= 100) { sum += i; i++; } printf("%d\n", sum); return 0; }
13
while与do-while的区别
while语句先判断,后执行,循环体语句 可能一次也不执行; do-while语句先执行,后判断,至少执 行一次循环体语句。
14
例:求
#include <stdio.h> int main() { int i, sum = 0;
for (i = 1; i <= 100; i++) { sum += i; } printf("%d\n", sum); return 0; }
2
用选择结构if语句实现:
#include <stdio.h> #include <math.h> int main() { float a , b , c , s , area; printf("Please enter 3 sides of a triangle:\n"); scanf("%f,%f,%f",&a , &b , &c); if ((a+b>c) &&( b+c>a) && (c+a>b)) { s = (a + b + c)/2; area = sqrt(s * (s - a) * ( s - b) * (s - c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c); printf("area=%7.2f\n",area); } else printf("数据错误"); return 0;
【引例】 输入三角形的三边长,求三角形的面积。
分析:输入三角形的三边,用下述公式计算三角形的面积:
s(s - a)(s- b)(s - c)
其中:s=1/2(a+b+c)
#include <stdio.h> #include <math.h> int main() { float a , b , c , s , area; printf("Please enter 3 sides of a triangle:\n"); scanf("%f,%f,%f",&a , &b , &c); s = (a + b + c)/2; area = sqrt(s * (s - a) * ( s - b) * (s - c)); printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c); printf("area=%7.2f\n",area); return 0; }
n
n 1
100
6
while语句
while (表达式)循环体语句
表达式
假(0)
真(非0) 语句
7
练 习 #include <stdio.h> 1 2 int main() { int n=2,k=0; while(k++&&n++>2); printf("%d %d\n", k,n); return 0; }
do 循环体语句 while (表达式);
语句 真(非0) 表达式 假(0)
10
练 习
#include <stdio.h> int main() { int a=1,b=7; do {b=b/2;a+=b; }while(b>1); printf("%d\n",a); return 0; } 5
11
17
程序:
#include <stdio.h> int main() { int i, sum;
for (sum = 0, i = 1; i <= 100; sum+=i, i++) ;
printf("%d\n", sum); return 0; }

程序:
#include <stdio.h> int main() { int i = 1, sum = 0; for (; i <= 100;i++) { sum += i; } printf("%d\n", sum); return 0; }
写结果
x=10,i=6
33
例:求10!
#include <stdio.h> int main() { int i;long t=1; for(i=1;i<=10;i++) { t=t*i;} printf("10的阶乘是%ld",t); return 0; }
34
例:求1!+2!+……+10!
#include <stdio.h> int main() { int i;long t=1,s=0; for(i=1;i<=10;i++) { t=t*i; s+=t; } printf("1!+2!+……+10!的值是%ld\n",s); return 0; }
相关文档
最新文档