C语言总结
- 第五、六章,程序流程设计
- C语句概述
- 选择型程序设计
- if语句(条件选择语句)
- if语句的三种形式:
- 语句嵌套
- switch语句(开关分支语句)
- 循环型程序设计
- C语言可实现循环的语句:
- goto语句
- while语句
- do~while语句
- for语句
- 循环的嵌套
- 辅助控制语句
- break语句
- continue语句
- 举例
第五、六章,程序流程设计
C语句概述
- C语句: 以“;”作分隔符,编译后产生机器指令。
- C语句分类:、
(1)、操作运算语句: 即表达式语句,表达式加分号构成。
- 赋值语句
- 函数调用语句
- 空语句:;
- 复合表达式语句:即逗号表达式语句
(2)、程序控制语句(9种):
(3)、复合语句: 用 {…}括起来的一组语句
- 一般形式:
{
[数据说明部分;]
执行语句部分;
}
说明:
- “}”后不加分号
- 语法上和单一语句相同
- 复合语句可嵌套
- 复合语句又称分程序
选择型程序设计
if语句(条件选择语句)
if语句的三种形式:
形式一:
- 格式:
- 执行过程:
形式二:
-
格式:
-
执行过程:
形式三:
- 格式:
- 执行过程:
语句嵌套
一般形式:
if ~ else 配对原则:缺省{ }时,else总是和它上面离它最近的未配对的if配对。
实现if ~ else 正确配对方法:加{ }
例 :if….else的配对
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15#include <stdio.h> main() { int x,a=1,b=3,c=5,d=4; if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7; printf(“x=%dn”,x); }
运行:x=2
规范的程序书写格式如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14#include <stdio.h> main() { int x,a=1,b=3,c=5,d=4; if(a<b) if(c<d) x=1; else if(a<c) if(b<d) x=2; else x=3; else x=6; else x=7; printf(“x=%dn”,x); }
流程图:
switch语句(开关分支语句)
一般形式:
执行过程:
说明:
- E1,E2,…En是常量表达式,且值必须互不相同
- 语句标号作用,必须用break跳出
- case后可包含多个可执行语句,且不必加{ }
- switch可嵌套
- 多个case可共用一组执行语句
示例: 以下程序当输入:2473 时,程序执行结果为何?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17#include <stdio.h> main() { int c; while((c=getchar())!=‘n’) switch(c-’2’) { case 0: case 1: putchar(c+4); case 2: putchar(c+4); break; case 3: putchar(c+3); default : putchar(c+2); break; } printf(“n”); } 输入:2473 回车确认 输出:668977
循环型程序设计
C语言可实现循环的语句:
- 用goto 和 if 构成循环
- while 语句
- do ~ while 语句
- for 语句
goto语句
goto语句一般格式:
功能: 无条件转移语句
说明:
(1)、不能用整数作标号
(2)、只能出现在goto所在函数内,且唯一
(3)、只能加在可执行语句前面
(4)、限制使用goto语句
while语句
一般形式:
执行流程:
特点: 先判断表达式,后执行循环体
说明:
(1)、循环体有可能一次也不执行
(2)、循环体可为任意类型语句
(3)、循环体如果包含一个以上的语句,应该以复合语句的形式出现
(4)、在循环体内应该有使循环趋向于结束的语句
(5)、下列情况,退出while循环
- 条件表达式不成立(为零)
- 循环体内遇break,return,goto
(6)、无限循环: while(1) 循环体;
示例:
1
2
3
4
5
6
7
8
9
10
11
12
13#include <stdio.h> main() { int i=0; while(i++<=1) printf(“*%dn",i); printf(“**%dn”,i); } 运行结果: *1 *2 **3
do~while语句
一般形式:
执行流程:
特点: 先执行循环体,后判断表达式
说明:
(1)、至少执行一次循环体
(2)、do~while可转化成while结构
例 while和do~while比较:
1
2
3
4
5
6
7
8
9
10
11#include <stdio.h> main() { int i,sum=0; scanf("%d",&i); do { sum+=i; i++; }while(i<=10); printf("%d",sum); }
1
2
3
4
5
6
7
8
9
10main() { int i,sum=0; scanf("%d",&i); while(i<=10) { sum+=i; i++; } printf("%d",sum); }
for语句
一般形式:
执行流程:
一般形式:
说明:
- for语句中expr1, expr2 ,expr3 类型任意,都可省略,但分号;不可省
- 无限循环: for( ;; )
- for语句可以转换成while结构
例:同一结果的多种表达方式
1
2
3
4
5
6
7#include<stdio.h> main( ) { int i=0; for(i=0;i<10;i++) putchar(‘a’+i); }
1
2
3
4
5
6
7#include<stdio.h> main( ) { int i=0; for(;i<10;i++) putchar(‘a’+i); }
1
2
3
4
5
6
7#include<stdio.h> main( ) { int i=0; for(;i<10;) putchar(‘a’+(i++)); }
1
2
3
4
5
6
7#include<stdio.h> main( ) { int i=0; for(;i<10;putchar(‘a’+i),i++) ; }
循环的嵌套
- 三种循环可互相嵌套,层数不限
- 外层循环可包含两个以上内循环,但不能相互交叉
- 嵌套循环的执行流程
1
2
3
4
5
6
7
8
9/*流程1*/ while() { …… while() { …… } …... }
1
2
3
4
5
6
7
8
9/*流程2*/ do { …… do { …… }while( ); …... }while( );
1
2
3
4
5
6
7
8
9/*流程3*/ while() { …… do { …… }while( ); ……. }
1
2
3
4
5
6
7
8
9
10
11
12
13
14/*流程4*/ for( ; ;) /*外循环*/ { …… do /*内循环*/ { …… }while(); …… while() /*内循环*/ { …… } …... }
- 嵌套循环的跳转
禁止:从外层跳入内层
跳入同层的另一循环向上跳转
示例:循环嵌套,输出九九表
1
2
3
4
5
6
7
8
9
10
11#include <stdio.h> main() { int i,j; for(i=1;i<10;i++) printf("%4d",i); printf("n---------------------------------------n"); for(i=1;i<10;i++) for(j=1;j<10;j++) printf((j==9)?"%4dn":"%4d",i*j); }
辅助控制语句
break语句
功能: 在循环语句和switch语句中,终止并跳出循环体或开关体。
说明:
(1)、break只能终止并跳出最近一层的结构
(2)、break不能用于循环语句和switch语句之外的任何其它语句之中
结构流程:
continue语句
功能: 结束本次循环,跳过循环体中尚未执行的语句,进行下一次是否执行循环体的判断。仅用于循环语句中。
结构流程:
举例
示例1:求输入的十个整数中正数的个数及其平均值
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15/*示例1*/ #include <stdio.h> main() { int i,num=0,a; float sum=0; for(i=0;i<10;i++) { scanf("%d",&a); if(a<=0) continue; num++; sum+=a; } printf("%d plus integer's sum :%6.0fn",num,sum); printf("Mean value:%6.2fn",sum/num); }
示例2:求Fibonacci数列:1,1,2,3,5,8,……的前40个数
1
2
3
4
5
6
7
8
9
10
11
12
13
14/*示例2*/ #include <stdio.h> main() { long int f1,f2; int i; f1=1; f2=1; for(i=1;i<=20;i++) { printf("%12ld %12ld ",f1,f2); if(i%2==0) printf("n"); f1=f1+f2; f2=f2+f1; } }
示例3:判断m是否素数
1
2
3
4
5
6
7
8
9
10
11
12
13/*示例3*/ #include <stdio.h> #include <math.h> main() { int m,i,k; scanf("%d",&m); k=sqrt(m); for(i=2;i<=k;i++) if(m%i==0) break; if(i>=k+1) printf("%d is a prime numbern",m); else printf("%d is not a prime numbern",m); }
示例4:打印100以内个位数为6且能被3整除的所有数。
1
2
3
4
5
6
7
8
9
10#include<stdio.h> main ( ) { int i,j; for (i=0; i<10; i++) { j=i*10+6; if (j%3!=0) continue; printf(“%d ”,j); } }
最后
以上就是高兴玉米最近收集整理的关于C语言总结(语句、程序设计、循环、嵌套)第五、六章,程序流程设计的全部内容,更多相关C语言总结(语句、程序设计、循环、嵌套)第五、六章内容请搜索靠谱客的其他文章。
发表评论 取消回复