C语言控制结构

 

C语言流程控制编程

1、流程控制结构ide

(1)顺序结构:按书写顺序执行每一条语句。性能

(2)选择结构:对给定的条件进行判断,根据判断结果决定执行哪一段代码。spa

(3)循环结构:在给定条件成立的状况下,反复执行某一段代码。code

2、选择结构-ifblog

(一)if简单使用seo

1) 第一种结构:作用域

a) 若是条件为真,就执行后面的语句,不然不执行。编译器

if(条件)it

{

语句1;

语句2;

····

}

2) 第二种结构:

a) 若是条件成立就执行语句1,不然执行语句2。

if(条件)

{

语句1;

}

else

{

语句2;

}

3) 第三种结构:

a) 先判断条件1,若成立则执行语句1,其它不执行;若条件1不成立,则检查条件2···,【注意】若是条件3成立,则说明前面的都不成立。全部的语句块只有一个会被执行。

if(条件1)

{

语句1;

}

else if(条件2)

{

语句2;

}

else (条件3)

{

语句3;

}

4) 第四种结构:

a) 在这种状况下,当条件成立,只执行语句1,语句2不属于次条件结构,但不推荐此种写法。

If(条件)

语句1;

语句2;

 

(二)if使用注意

 

①. 比较大小时,能够把常量值放在左边,变量值放在右边以免错误。由于if(a==0)也容易被写成if(a=0),而这种状况,编译器并不会报错,推荐使用if(0==a)这种写法。

②. 注意赋值运算符,不要把=写成是==。

③. If(条件)后面不要加分号,这表明是一个空语句,后面的代码块将成为一个独立的代码块。如if(条件);{.....}//须要多加注意

④. 注意做用域的问题,若是要在if后面定义新的变量,则必定要使用大括号。

if(10>6)

{

Int a;//a的做用域在代码块结束后失效

}

Printf(“a=%d”,a);//编译器报错,找不到标识符

 

if(10>6)

Int a; //这种状况下报错,a的做用域不明确

Printf(“a=%d”,a); //编译器报错,找不到标识符

 

⑤. If(0){...}随便挑一个数值也能够作条件

(三)If结构练习

问题:输入一个整数seore表明分数,根据分数输出等级(A-E)。

A 90-100  B80-89 C70-79 D60-69 E0-60

代码:

 1 #include<stdio.h>
 2 
 3 int main()  4 
 5 {  6 
 7 //定义变量存储分数值
 8 
 9 int score; 10 
11 //提示输入
12 
13 printf("请输入分值:\n"); 14 
15 //接受输入
16 
17 scanf("%d",&score); 18 
19 //判断等级
20 
21 if(score>=90&&score<=100) 22 
23 printf("A\n"); 24 
25 else if(score>=80) 26 
27 printf("B\n"); 28 
29 else if(score>=70) 30 
31 printf("C\n"); 32 
33 else if(score>=60) 34 
35 printf("D\n"); 36 
37 else
38 
39 printf("E\n"); 40 
41 return 0; 42 
43 }
View Code

 

3、选择结构-switch

(一)switch结构

Switch(值) //一般是变量

{

Case 数值1:

语句1;

Break;

Case 数值2:

语句2;

Break;

Case 数值3:

语句3;

Break;

Default :

语句4;

Break;

}

解说:该结构把数值与数值1进行比较,若相等,则执行后面的全部语句,直到碰见break语句跳出整个循环,若前面的条件都不知足,则最终会执行default后面的语句。若是不写break语句,则后面的语句会接连执行,直到遇到break语句或者是所有语句执行完毕,只要前面的条件成立,则后面的判断就直接被忽略。

(二)Switch使用注意

Char c=‘A’;

Switch(c)

{

Case ‘A’:

语句1;

Break;

Case  65://不能这样写,由于‘A’的ASCII值就是65,会报错

语句2;

Break;

Case 数值3:

Int a=10;

//a的做用域不明确报错,c语言检查变量的做用域根据{}决定,这里能够加{}

Break;

Default :

语句4;

Break;

 

}

注意:若是要在case后面的语句中定义变量,则必须使用大括号包住。

(三)switch结构练习

问题:输入一个整数seore表明分数,根据分数输出等级(A-E)。

A 90-100  B80-89 C70-79 D60-69 E0-60

代码:

 1 #include<stdio.h>
 2 
 3 int main()  4 
 5 {  6 
 7 //定义变量存储分数值
 8 
 9 int score; 10 
11 //提示输入
12 
13 printf("请输入分值:\n"); 14 
15 //接受输入
16 
17 scanf("%d",&score); 18 
19 //判断等级
20 
21 switch(score/10) 22 
23 { 24 
25 case 10: 26 
27 case 9: 28 
29 printf("A\n"); 30 
31 case 8: 32 
33 printf("B\n"); 34 
35 break; 36 
37 case 7: 38 
39 printf("C\n"); 40 
41 break; 42 
43 case 6: 44 
45 printf("D\n"); 46 
47 break; 48 
49 default: 50 
51 printf("E\n"); 52 
53 break; 54 
55 } 56 
57 return 0; 58 
59 }
View Code

【对比】if与switch:

1. If语句可以完成的功能,switch有时并不可以完成,如判断if(a>100)

2. 在有些状况下,if语句和switch语句能够互换

3. Switch语句能完成的功能,if语句均可以完成

 

4、循环结构-while

(一)简单使用

While(条件)

{

语句;

}

解说:先判断条件是否成立,成立则执行,执行完代码后再次判断条件是否成立(判断条件-》执行代码块-》判断条件-》执行代码块···)1.首先肯定循环执行的操做,2.在肯定约束条件,即须要循环多少次,3.定义一个变量来记录循环的次数。

提示:在while循环体内使用if...break(跳出整个循环)或if...continue语句(跳出本次循环,继续下一次循环判断)。

While结构的运行原理:

①. 若是一开始条件不成立,则永远不会执行循环体。

②. 若是条件成立,则执行一次循环体,执行完毕后再次判断条件是否成立。

③. Break:直接退出整个循环。

④. Continue:结束当前循环体,进行下一轮循环判断。

(二)使用注意

1) While(1){.....}是一个死循环

2) While(a<10);{...}在条件后面加逗号表示循环体是一个空语句,而非{}部分

3) While条件语句后推荐使用{},不然只有第一条语句时循环体

4) 最简单的死循环  while(1);//永远执行空语句,让程序崩溃

(三)While练习

问题:编程实现,提示输入一个正整数n,计算1+2+3+...n的值。

代码:

 1 #include<stdio.h>
 2 
 3 int main()  4 
 5 {  6 
 7 //定义变量保存用户输入的整数
 8 
 9 int n; 10 
11 while(n<=0) 12 
13 { 14 
15 //提示输入
16 
17 printf("请输入一个正整数:\n"); 18 
19 //接受输入
20 
21 scanf("%d",&n); 22 
23 } 24 
25 int sum=0; 26 
27 int number=0;//默认被加的数值
28 
29 while(number<n) 30 
31 { 32 
33 number++; 34 
35 sum=sum+number; 36 
37 } 38 
39 printf("计算结果为:%d\n",sum); 40 
41 return 0; 42 
43 }
View Code

 

5、循环结构-do while

Do

{

语句

}while(条件)

特色:do while循环至少会执行一次循环体

 

6、循环结构-for

(一)基本使用

for(语句1,条件,语句2)

{

循环体

}

语句1:通常为初始化语句

语句2:通常为增量语句(执行完循环体后再执行的语句)

For循环原理:

1) For循环一开始就会执行语句1(整个for循环只会执行一次)

2) 判断条件是否成立,若成立,则执行一次循环体,而后执行语句2,再次判断条件是否成立,若条件不成立则结束循环

3) 顺序为:(语句1-》判断条件-》循环体—》语句2-》判断条件-》循环体···)

【对比】for和while:

在性能上,for循环稍胜一筹,由于while循环只能使用外部的变量,而for循环能够对变量进行及时回收。

 

(二)for使用注意

①. 不要随便在for语句后面写上分号,如for();{....}

②. 定义变量的做用域不明确错误

for(int i=0;i<5;i++)

Int a=10; //编译器报错,变量做用域不明确

③. For语句中最简单的死循环for(;;);

④. 须要注意变量定义的做用域

Int a=10;

For(int i=0,int a=9;i<5;i++)

{

Int a=10;

Printf(“a=%d\n”,a);//这里打印的a的值是多少?

}

 

(三)For循环嵌套

用以输出特定格式的内容,如QQ好友列表等,提高可扩展性。

For(in i=0;i<5;i++)

{

//外面的循环控制行数

Printf(“好友列表%d\n”,i);

//内部的循环控制列数

For(int j=1;j<=6;j++)

{

Printf(“好友%d\n”,j);

}

}

(四)For练习

使用for循环输出九九乘法表。//先控制行数,在控制列数

代码:

 1 #include<stdio.h>
 2 
 3 int main()
 4 
 5 {
 6 
 7 for(int i=1;i<=9;i++)
 8 
 9 {
10 
11 for(int j=1;j<=i;j++)
12 
13 {
14 
15 printf("%dx%d=%d\t",i,j,i*j);
16 
17 }
18 
19 printf("\n");
20 
21 }
22 
23 return 0;
24 
25 }
View Code
相关文章
相关标签/搜索