C语言详细分析讲解流程控制语句用法

目录
  • 一、分支语句
    • 1.if语句
    • 2.switch语句
  • 二、循环语句
    • 1.for语句
    • 2.break和continue语句
    • 3.循环嵌套
    • 4.while和do…while语句

一、分支语句

1.if语句

  • 流程控制语句可以让程序中的语句不再从上到下逐条执行
  • 分支是一种流程控制语句,可以把程序中某些语句忽略掉不去执行
  • if关键字可以用来编写分支语句,只有当表达式为真时,才会执行对应语句
  • 如果多个分支的逻辑表达式之间存在互斥关系,则可以采用else关键字把他们合并成一个分支语句
  • 一个分支语句中的多个逻辑表达式之间如果具有互补关系,则可以把最后一个逻辑表达式省略

例如:从终端获取一个数字,判断 正数,负数,零

#include<stdio.h>
int main(){
		int num = 0;
		printf("请输入一个整数:");
		scanf("%d",&num);
		if(num >= 0){
			printf("正数\n");
		}
		else if (num < 0){
			printf("负数\n");
		}
		else {
			printf("零\n");
		}
		return 0;
}

2.switch语句

  • 如果有一组数字,数字的个数有限,每个数字对应一组专门的处理语句。这种情况的分支可以采用下面的语法实实现:

例:在控制台获取4个数字0,1,2,3,对应输出四个季节

#include <stdio.h>
int main(){
		int season = 0;
		printf("请输入一个代表季节的数字:");
		scanf("%d",&season);
		switch(season){
			case 0:
				printf("春天\n");
				break;
			case 1:
				printf("夏天\n");
				break;
			case 2:
				printf("秋天\n");
				break;
			case 3:
				printf("冬天\n");
				break;
			default:   // 如果上述情况都不匹配,执行该语句
				printf("所有情况都不匹配,请检查输入是否为正整数!");
				break;
		}
		return 0;
}
  • switch后面的()里面不一定是一个变量,也可以是一个公式,如果例题需求改为:输入的数字对4取余,对应四个季节,那么可以改为 switch(season % 4)
  • default为case情况都不匹配的情况,才执行

二、循环语句

循环语句可以让一组语句多次反复执行

1.for语句

for( exp1 ; exp2 ; exp3 ) 其中 exp1为变量初始值赋值语句,exp2为循环变量与终值的关系,exp3为循环变量怎么从初值变为终值。exp之间通过分号 ; 隔开

对于下例中的num++,即每次运行完后,num = num +1 ,更多关于自增自减的内容请参考《探讨++i与i++哪个效率更高》

例:在屏幕循环打印12345五个数字

#include <stdio.h>
int main(){
		int num = 0;
		for(num =1;num <= 5;num++){
			printf("%d\n",num);
		}
		return 0;
}

2.break和continue语句

break语句随时终止循环的执行

continue语句可以把档次大括号中后面的语句跳过

无论break还是continue,都只对直接包含它的循环语句产生影响

具体区别请参考C语言中break与continue的用法和区别详解

3.循环嵌套

  • 循环嵌套结构可以用来解决复杂的循环问题
  • 首先把复杂问题分组,为每组找到一个代表数字。
  • 要求所有组的代表数字是规律变化的。
  • 循环嵌套由两个循环构成,其中一个包含另一个。外循环负责描述组代表数字的变换过程,内循环负责完成某组内的所有处理任务。
  • 循环嵌套结构中内循环的开始数字和结束数字很可能需要根据外循环的循环。

例:采用for循环嵌套打印九九乘法表

#include <stdio.h>
int main()
{
        for (int i = 1; i < 9; i++)
        {
                for (int j = 1; j <= i; j++)
                {
                        printf("%d*%d=%-4d", i, j,i*j);
                }
                printf("\n");
        }
        return 0;
}

4.while和do…while语句

  • while关键字也可以用来编写循环
  • for关键字编写的循环和while关键字编写的循环可以互相替代
  • 当编写循环时不容易算出循环的执行次数时就可以考虑采用while关键字
  • while(逻辑表达式){ 反复执行的语句组 }
  • while关键字也可以编写空语句和死循环
  • 采用do…while语句也可以实现循环,格式如下:
  • do{ 语句 } while (逻辑表达式);
  • 使用do…while语句可以保证大括号内部的语句至少执行依次

例:使用while循环输出12345五个数字

#include<stdio.h>
int main(){
		int num = 1;
		while(num <= 5){
			printf("%d\n",num);
			num++;
		}
		return 0;
}

例 do…while演示

#include<stdio.h>
int main(){
		int num = 1;
		do{
			printf("芜湖~,我执行成功啦!\n");
			num++;
		}while(num < 1);
		return 0;
}

输出结果如下:num = 1不满足while里面num < 1的条件,但是do会先执行{ }里面的内容,所以打印成功。

如果改成while形式,打印不成功:

到此这篇关于C语言详细分析讲解流程控制语句用法的文章就介绍到这了,更多相关C语言流程控制内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C语言中常见的几种流程控制语句

    目录 1.goto语句 2.if语句 3.switch语句 4.while循环 5.do...while循环 6.for循环 break和continue 总结 1.goto语句 goto语句是一种无条件转移语句,goto 语句的使用格式为: goto  语句标号; 其中语句标号是一个有效的标识符,这个标识符加上一个 ":" 一起出现在函数内某处,执行goto语句后,程序将跳转到该标号处并执行其后的语句: 另外语句标号必须与goto语句同处于一个函数中,但可以不在一个循环层中:通常go

  • C语言流程控制之switch语句详解

    switch语句结构 switch(表达式) { case 判断值1; 语句组1: break; case 判断值2: 语句组2: break; case 判断值3: 语句组3: break; -- case 判断值n: 语句组n: break; default: 语句组n+1: break; } 表达式是选择条件,可以是单个变量也可以是组合的表达式,其最终的结果必须是一整数值,{}内的所有内容是switch语句的主体,内含多个case分支,判断值必须是一常量,case分支根据判断值标识条件选择

  • C语言详细分析讲解流程控制语句用法

    目录 一.分支语句 1.if语句 2.switch语句 二.循环语句 1.for语句 2.break和continue语句 3.循环嵌套 4.while和do…while语句 一.分支语句 1.if语句 流程控制语句可以让程序中的语句不再从上到下逐条执行 分支是一种流程控制语句,可以把程序中某些语句忽略掉不去执行 if关键字可以用来编写分支语句,只有当表达式为真时,才会执行对应语句 如果多个分支的逻辑表达式之间存在互斥关系,则可以采用else关键字把他们合并成一个分支语句 一个分支语句中的多个逻

  • C语言详细分析讲解关键字enum与sizeof及typedef的用法

    目录 一.枚举类型的使用方法 二.sizeof 关键字的用法 三.typedef 的意义 四.小结 一.枚举类型的使用方法 enum 是 C 语言中的一种自定义类型 enum 值是可以根据需要自定义的整型值 第一个定义的 enum 值默认为 0 默认情况下的 enum 值是在前一个定义值的基础上加 1 enum 类型的变量只能取定义时的离散值 enum 中定义的值是C语言中真正意义上的常量 在工程中 enum 多用于定义整型常量 下面看一段 enum 的使用代码吧: #include<stdio

  • C语言详细分析讲解关键字const与volatile的用法

    目录 一.const 只读变量 二.const 全局变量的分歧 三.const 的本质 四.const 修饰函数参数和返回值 五.volatile 解析 六.小结 一.const 只读变量 const 修饰的变量是只读的,本质还是变量 const 修饰的局部变量在栈上分配空间 const 修饰的全局变量在全局数据区分配空间 const 只在编译期有用,在运行期无用 const 修饰的变量不是真的常量,它只是告诉编译器该变量不能出现在赋值符号的左边. 二.const 全局变量的分歧 在现代C语言编

  • C语言详细分析讲解struct与union使用方法

    目录 一.struct 的小秘密 二.结构体与柔性数组 三.C语言中的 union 四.小结 一.struct 的小秘密 C语言中的 struct 可以看作变量的集合 struct 的问题:空结构体占用多大内存?下面编写程序看一下吧: #include <stdio.h> struct TS { }; int main() { struct TS t1; struct TS t2; printf("sizeof(struct TS) = %d\n", sizeof(stru

  • C语言详细分析讲解多文件的程序设计

    目录 一.多文件与编译器链接 二.多文件之间的相互访问 三.关于#include 四.头文件使用的一些原则 五.再论全局变量 六.注意事项 七.实验程序 八.小结 一.多文件与编译器链接 如下图所示,.o 为目标文件,链接器将不同的目标文件装配组合在一起形成一个可执行文件. 二.多文件之间的相互访问 每个文件可以定义功能接口(可被其它文件访问的函数或数据) 源文件:代码实现文件,后缀为.c 头文件:源文件的接口定义文件,后缀为.h 当需要使用其它文件提供的功能时,包含对应的头文件 语法: #in

  • C语言详细分析讲解关键字goto与void的作用

    目录 一.关于goto 二.void 的意义 三.小结 一.关于goto 高手潜规则:禁用 goto 项目经验:程序质量与 goto 的出现次数成反比 最后的判决:将 goto 打入冷宫 下面看一段 goto 副作用分析的代码: #include <stdio.h> #include <malloc.h> void func(int n) { int* p = NULL; if( n < 0 ) { goto STATUS; } p = (int*)malloc(sizeof

  • C语言详细分析讲解内存管理malloc realloc free calloc函数的使用

    目录 C语言内存管理 一.动态空间申请 二.动态空间的扩容 三.释放内存 C语言内存管理 malloc && realloc && free && calloc c语言中为了进行动态内存管理,<stdlib.h>中提供了几个函数帮助进行内存管理. 我们知道,C语言中是没有C++中的容器或者说是python中list,set这些高级的数据结构的,我们一旦申请了一段内存空间以后这一段空间就归你了,比如我们举个例子,我们申请一个数组 int nums[

  • Java超详细分析讲解final关键字的用法

    目录 基本介绍 final细节01 final细节02 基本介绍 final 可以修饰类.属性.方法和局部变量. 在某些情况下,程序员可能有以下需求,就会使用到final: Base Sub 类 1)当不希望类被继承时,可以用final修饰. 2)当不希望父类的某个方法被子类覆盖/重写(override)时,可以用final关键字 修饰.[案例演示:访问修饰符 final 返回类型方法名] 3)当不希望类的的某个属性的值被修改,可以用final修饰.[案例演示: public final dou

  • C++详细分析讲解函数参数的扩展

    目录 一.函数参数的默认值 二.函数占位参数 三.小结 一.函数参数的默认值 C++ 中可以在函数声明时为参数提供一个默认值 当函数调用时没有提供参数的值,则使用默认值 参数的默认值必须在函数声明中指定 下面看一段代码: #include <stdio.h> int mul(int x = 0); int main(int argc, char *argv[]) { printf("%d\n", mul()); printf("%d\n", mul(-1

  • C语言详细i讲解qsort函数的使用

    目录 qsort 1.int型 2.float型 3.struct型 qsort 功能:Performs a quick sort.(快速排序) 参数:void qsort( void *base, size_t num, size_t width, int (*cmp )(const void *e1, const void *e2 ) ); 头文件:#include <stdlib.h> 用法: 第一个参数待排数组的首元素地址 第二个参数待排数据个数 第三个待排数据中每个参数的大小——单位

随机推荐