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

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

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

代码:

 #include<stdio.h>

 int main()

 {

 //定义变量存储分数值

 int score;

 //提示输入

 printf("请输入分值:\n");

 //接受输入

 scanf("%d",&score);

 //判断等级

 if(score>=&&score<=)

 printf("A\n");

 else if(score>=)

 printf("B\n");

 else if(score>=)

 printf("C\n");

 else if(score>=)

 printf("D\n");

 else

 printf("E\n");

 return ;

 }

三、选择结构-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

代码:

 #include<stdio.h>

 int main()

 {

 //定义变量存储分数值

 int score;

 //提示输入

 printf("请输入分值:\n");

 //接受输入

 scanf("%d",&score);

 //判断等级

 switch(score/)

 {

 case :

 case :

 printf("A\n");

 case :

 printf("B\n");

 break;

 case :

 printf("C\n");

 break;

 case :

 printf("D\n");

 break;

 default:

 printf("E\n");

 break;

 }

 return ;

 }

【对比】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<=)

 {

 //提示输入

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

 //接受输入

 scanf("%d",&n);

 }

 int sum=;

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

 while(number<n)

 {

 number++;

 sum=sum+number;

 }

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

 return ;

 }

五、循环结构-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=;i<=;i++)

 {

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

 {

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

 }

 printf("\n");

 }

 return ;

 }

C语言控制结构的更多相关文章

  1. 关于自学C语言开始时应该注意的问题分享—未完待续......

    ---恢复内容开始--- 自学C语言编程总结 第1章C语言概述 1.     如果用户将主函数的返回值类型定义为了void,则不需要返回任何值: 2.     C语言的基本结构包括主函数和程序体两部分 ...

  2. 【理论积累】C语言基础理论知识【第一版】

    第一个程序 #include <stdio.h> int main(){ printf("Hello World"); } 变量与常量 变量类型:整型[int].字符型 ...

  3. 【Shell编程】Shell基本语法

    Shell 语法   Shell程序设计作为一种脚本语言,在Linux系统中有广泛的应用,本文记录了关于Shell程序设计的基础语法知识和常用命令,方便查询,熟练使用shell也需要经常实践,这对于完 ...

  4. 《Linux基础知识及命令》系列分享专栏

    <Linux基础知识及命令>系列分享专栏 本专题详细为大家讲解了Linux入门基础知识,思路清晰,简单易懂.本专题非常适合刚刚学习Linux的小白来学习,通过学习该专题会让你由入门达到中级 ...

  5. TCL语言笔记:TCL中的控制结构命令

    一.引言 控制结构允许程序根据不同的状态.条件和参数来选择不同的处理和执行路径,从而使代码具有更强的灵活性.健壮性和可读性. Tcl 提供了 if.if/else.if/elseif.foreach. ...

  6. Go语言学习笔记(三) [控制结构、内建函数]

    日期:2014年7月21日   一.控制结构   1.Go中,只有几个控制结构,它没有do或者while循环,有for,灵活的switch语句和if,在switch中可以接受像for那样可选的初始化语 ...

  7. C语言程序设计(六) 循环控制结构

    第六章 循环控制结构 循环结构:需要重复执行的操作 被重复执行的语句序列称为循环体 计数控制的循环 条件控制的循环 当型循环结构 直到型循环结构 for while do-while while(循环 ...

  8. C语言程序设计(五) 选择控制结构

    第五章 选择控制结构 分治策略:任务分解细化 程序设计语言:为了让计算机执行由高级语言编写的程序指令,必须把这些指令从高级语言形式转换成计算机能理解的机器语言形式,这种转换是由编译器来完成的 算法:为 ...

  9. Python语言程序设计基础(4)—— 程序的控制结构

    PM2.5 pm = eval(input()) if pm>=75: print("空气存在污染") else : print("空气没有污染") pr ...

随机推荐

  1. springboot创建一个可执行的jar

    让我们通过创建一个完全自包含的可执行jar文件来结束我们的示例,该jar文件可以在生产环境运行.可执行jars(有时候被成为胖jars "fat jars")是包含你的编译后的类和 ...

  2. docker stack 部署nginx

    =============================================== 2018/7/29_第1次修改                       ccb_warlock == ...

  3. 常用RAID级别的介绍

    随时科技的进步,各种各样的技术也层出不穷,当然RAID的组合也一样,嘻嘻,下面跟大家一起来学习下常用的RAID RAID的全称廉价磁盘冗余阵列(Redundant Array of Inexpensi ...

  4. Fiddler 常用功能总结

    1.fiddler相关配置   2.如何抓包 移动端 ①保持手机和电脑处于同一网络中 ②设置手机的代理为电脑当前所处网络的IP,端口号为:8888,eg:10.12.1.64:8888. ③ 启动ap ...

  5. XSS绕过学习

    目录 1绕过单引号 2绕过 SCRIPT 过滤 3使用 IMG 源 4使用制表符 换行符和回车符 5使用空白符 6双引号配对的 bug 7绕过css过滤器 8不全面的过滤器 9转义字符 10编码   ...

  6. AxureRP8实战手册

    基础操作篇 本篇包含56种常见的基础操作,初学者应在掌握本篇内容后再进行实战案例篇的学习,以免产生学习障碍.同时,建议具备一定基础的读者学习本篇中相对生疏的内容,并加以掌握. 第1章 使用元件 本文目 ...

  7. zabbix】问题 Time zone for PHP is not set (configuration parameterdate.timezone)

    https://blog.csdn.net/jing875480512/article/details/79002404

  8. 002.NTP服务端搭建

    一 安装及准备 1.1 安装NTP [root@server ~]# yum -y install ntp #也可下载之后rpm安装,或者源码安装 1.2 NTP服务地址 http://www.ntp ...

  9. SpringBoot详细研究-04部署测试与监控

    这部分的内容实际就是devops的主要工作内容,当然一名合格的程序要也需要掌握这部分的知识. 热部署 简单来说,在开发时,修改了任何的代码,IDE将自动编译运行及发布:在发布时,当前发布不影响线上服务 ...

  10. odoo导入功能二开

    原来有的导入功能相信很多小伙伴对其功能不是很满意,不过没关系,我们可以二开啊,把它的功能改造成你想要的样子,接下来让我们看看怎么办吧 例如我想把员工导入功能中添加上用户同步注册功能 首先,我要找到原模 ...