C语言流程控制

一、流程控制结构

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

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

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

二、选择结构-if

(一)if简单使用

1) 第一种结构:

a) 如果条件为真,就执行后面的语句,否则不执行。

if(条件)

{

语句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结构练习

问题:输入一个整数score代表分数,根据分数输出等级(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 int score;
 8
 9 //提示输入
10 printf("请输入分值:\n");
11
12 //接受输入
13 scanf("%d",&score);
14
15 //判断等级
16 if(score>=90&&score<=100)
17
18 printf("A\n");
19
20 else if(score>=80)
21
22 printf("B\n");
23
24 else if(score>=70)
25
26 printf("C\n");
27
28 else if(score>=60)
29
30 printf("D\n");
31
32 else
33
34 printf("E\n");
35
36 return 0;
37
38 }

三、选择结构-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 int score;
 8
 9 //提示输入
10 printf("请输入分值:\n");
11
12 //接受输入
13 scanf("%d",&score);
14
15 //判断等级
16 switch(score/10)
17 {
18
19 case 10:
20
21 case 9:
22
23 printf("A\n");
24
25 case 8:
26
27 printf("B\n");
28
29 break;
30
31 case 7:
32
33 printf("C\n");
34
35 break;
36
37 case 6:
38
39 printf("D\n");
40
41 break;
42
43 default:
44
45 printf("E\n");
46
47 break;
48
49 }
50
51 return 0;
52
53 }

【对比】if与switch:

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

2. 在有些情况下,if语句和switch语句可以互换

3. switch语句能完成的功能,if语句都可以完成

四、循环结构-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的值。

代码:

#include<stdio.h>

int main()
{

//定义变量保存用户输入的整数
int n;

while(n<=0)
{

//提示输入
printf("请输入一个正整数:\n");

//接受输入
scanf("%d",&n);

}

int sum=0;

int number=0; // 默认被加的数值

while(number<n)
{

number++;

sum=sum+number;

}

printf("计算结果为:%d\n",sum);

return 0;

}

五、循环结构-do while

Do

{

语句

}while(条件)

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

六、循环结构-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循环输出九九乘法表。// 先控制行数,在控制列数

代码:

#include <stdio.h>

int main()
{

    for (int i = 1; i <= 9; i++)
    {

        for(int j = 1; j <= i; j++)
        {

            printf("%dx%d=%d\t", i, j, i*j);

        }

        printf("\n");

    }

    return 0;

}
时间: 2024-08-10 23:22:23

C语言流程控制的相关文章

黑马程序员-------------C语言流程控制-选择结构

流程控制 c语言中有3中结构控制程序运行1> 顺序结构:默认的流程结构,按照书写的顺序执行每一条语句2> 选择结构:对给定的条件进行判断,在根据判断结果来决定来执行哪一段代码3> 循环结构:在给定条件成立的情况下,反复执行某一段代码 1.选择结构 if语句 1>if的第一种结构 if(条件){//条件成立就会执行下面语句 语句1: 语句2: ....... } 例子: #include <stdio.h> int main (){ //人数 int cout = 0;

Go语言流程控制

目录 顺序控制 分支控制 switch 循环控制 for break continue goto 在程序中,程序运行的流程控制决定程序是如何执行的,是我们必须掌握的,主要有三大流程控制语句. 顺序控制 分支控制 循环控制 顺序控制 程序从上到下逐行的执行,中间没有任何判断和跳转. 分支控制 让程序有选择的执行,分支控制有三种: (1)单分支 if 条件表达式 { //执行代码块 } (2)双分支 if 条件表达式 { //执行代码块 } else { //执行代码块 } (3)多分支 if 条件

Go语言--流程控制

流程控制是每种编程语言控制逻辑走向和执行次序的重要部分,流程控制可以说是一门语言的“经脉”. Go语言中最常用的流程控制有if和for,而switch和goto主要是为了简化代码.降低重复代码而生的结构,属于扩展类的流程控制. 1.If else(分支结构) Go语言中if条件判断的格式如下: if 表达式1 { 分支1 } else if 表达式2 { 分支2 } else{ 分支3 } 当表达式1的结果为true时,执行分支1,否则判断表达式2,如果满足则执行分支2,都不满足时,则执行分支3

黑马程序员——C语言——流程控制

流程控制内容主要由选择控制和循环控制组成. 一.选择控制 (一)if 选择结构 1.if(表达式) 语句1: 2.if(表达式) 语句1: else 语句2: 3.if(表达式) {  }  “{}”为作用域,里面可以放多个满足条件的语句 4.if-else if-else  只有一个表达式会被判断执行 代码举例: 1 int a = 6; 2 3 if (a++ > 10) // a == 7 4 { 5 printf("A\n"); 6 } 7 else if (a++ &g

07-C语言流程控制

一. 流程控制 l 顺序结构:默认的流程结构.按照书写顺序执行每一条语句. l 选择结构:对给定的条件进行判断,再根据判断结果来决定执行哪一段代码. l 循环结构:在给定条件成立的情况下,反复执行某一段代码. 二. 选择结构-if 1. 简单使用 l if (表达式)  语句1; u if(count>50)  开班;  上课; l if(表达式)  语句1;  else 语句2; u f(count>50)  开班;  else 不开班; l if(表达式)  {  } u if(count

C语言--流程控制

一.流程控制 1.顺序结构 *默认的流程结构,按照书写顺序执行每一条语句 2.选择结构 *对给定的条件进行判断,再根据判断结果来决定执行那一段代码 3.循环结构 *在给定条件成立的情况下,反复执行某一段代码 二.选择结构--if 1.使用方式 1> if(表达式) 语句1: * if(i>1)  恭喜你被黑马录取: 2> if(表达式) 语句1:else 语句2: * if(i>1) 恭喜你被黑马录取:else 希望你再接再厉: 3> if(表达式){} if(表达式){}

[C语言]流程控制, 复合赋值, 循环

---------------------------------------------------------------------------------------- //单一判断 if(a < 0) { printf("小于0"); } //else if(a < 0) { printf("小于0"); } else { printf("不小于0"); } //if嵌套 if(a < 0) { if(a < -

Go语言流程控制01--选择结构之if

package main import "fmt" /* 字符串比大小 比首字符在字符集中出现的序号,首字符相同则比较第二个字符,以此类推 go的编译器默认使用UTF8字符集 在UTF8字符集中数字出现的顺序为:0123456789 */ func main031() { fmt.Println("0">"9") fmt.Println("012">"011") fmt.Println(&quo

Go语言流程控制06--猜数字游戏

package main import ( "fmt" "math/rand" "time" ) /* ·随机生成一个三位数 ·让用户输入其猜想 ·反馈给用户:猜大了,猜小了,猜对了 ·如果没猜对就继续猜 ·如果猜对了就退出游戏 ·如果用户输入"-1"就直接退出游戏 */ func GetRandom() int { /*获得随机数*/ //n := rand.Intn(1000) //当前时间距离1970年0时所逝去的时间纳