C语言 if else 语句详细讲解

前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条、第三条……一直到最后一条语句。

但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用。这时候程序就需要做出判断,看用户是否是成年人,并给出提示。

if-else语句

在C语言中,使用if和else关键字进行判断。请先看下面的代码:

#include <stdio.h>
int main()
{
 int age;
 printf("请输入你的年龄:");
 scanf("%d", &age);
 if(age>=18){
 printf("恭喜,你已经成年,可以使用该软件!\n");
 }else{
 printf("抱歉,你还未成年,不宜使用该软件!\n");
 }
 return 0;
}

可能的运行结果:

请输入你的年龄:23
恭喜,你已经成年,可以使用该软件!

if else 语句的结构为:

if(表达式){
    语句块1
}else{
    语句块2
}

意思是:如果表达式的值为真,则执行语句块1,否则执行语句块2 。其执行过程可表示为下图:

所谓语句块(Statement Block),就是由{ }包围的一个或多个语句的集合。如果语句块中只有一个语句,也可以省略{ },例如:

if(age>=18) printf("恭喜,你已经成年,可以使用该软件!\n");
else printf("抱歉,你还未成年,不宜使用该软件!\n");

由于if else 语句可以根据不同的情况执行不同的代码,所以也叫分支结构或选择结构,上面的代码中,就有两个分支。

求两个数中的较大值:

#include <stdio.h>
int main()
{
 int a, b, max;
 printf("输入两个整数:");
 scanf("%d %d", &a, &b);
 if(a>b) max=a;
 else max=b;
 printf("%d和%d的较大值是:%d\n", a, b, max);
 return 0;
}

运行结果:

输入两个整数:34 28
34和28的较大值是:34

本例中借助变量max,用max来保存较大的值,最后将max输出。

if语句

我们可以只使用 if 语句。也就是说,if else不必同时出现。if 语句的基本形式为:

if(表达式){
    语句块
}

意思是:如果表达式的值为真,则执行其后的语句块,否则直接跳过。其过程可表示为下图:

只使用 if 语句来求两个数中的较大值:

#include <stdio.h>
int main()
{
 int a, b, max;
 printf("输入两个整数:");
 scanf("%d %d", &a, &b);
 max=b; // 假设b最大
 if(a>b) max=a; // 如果a>b,那么更改max的值
 printf("%d和%d的较大值是:%d\n", a, b, max);
 return 0;
}

运行结果:

输入两个整数:34 28
34和28的较大值是:34

本例程序中,输入两个数a、b。把b先赋予变量max,再用 if 语句判别max和b的大小,如max小于b,则把b赋予max。因此max中总是大数,最后输出max的值。

多个if else语句

if else语句也可以多个同时使用,构成多个分支,形式如下:

if(表达式1){
    语句块1
} else  if(表达式2){
    语句块2
}else  if(表达式3){
    语句块3
}else  if(表达式m){
    语句块m
}else{
     语句块n
}

意思是:依次判断表达式的值,当出现某个值为真时,则执行其对应的语句。然后跳到整个if语句之外继续执行程序。 如果所有的表达式均为假,则执行语句块n。然后继续执行后续程序。多个 if else 语句的执行过程如下图所示:

例如,判断输入的字符的类别:

#include <stdio.h>
int main(){
 char c;
 printf("Input a character:");
 c=getchar();
 if(c<32)
 printf("This is a control character\n");
 else if(c>='0'&&c<='9')
 printf("This is a digit\n");
 else if(c>='A'&&c<='Z')
 printf("This is a capital letter\n");
 else if(c>='a'&&c<='z')
 printf("This is a small letter\n");
 else
 printf("This is an other character\n");
 return 0;
}

运行结果:

Input a character:e
This is a small letter

本例要求判别键盘输入字符的类别。可以根据输入字符的ASCII码来判别类型。由ASCII码表可知ASCII值小于32的为控制字符。在“0”和“9”之间的为数字,在“A”和“Z”之间为大写字母, 在“a”和“z”之间为小写字母,其余则为其它字符。这是一个多分支选择的问题,用多个 if else 语句编程,判断输入字符ASCII码所在的范围,分别给出不同的输出。例如输入为“e”,输出显示它为小写字符。

在使用if语句时还应注意以下问题:

1) 在三种形式的if语句中,在 if 关键字之后均为表达式。 该表达式通常是逻辑表达式或关系表达式,但也可以是其它表达式,如赋值表达式等,甚至也可以是一个变量。例如:
    if(a=5) 语句;
    if(b) 语句;
都是允许的。只要表达式的值为非0,即为“真”。如在:
    if(a=5)…;
中表达式的值永远为非0,所以其后的语句总是要执行的,当然这种情况在程序中不一定会出现,但在语法上是合法的。

又如,有程序段:

if(a=b)
 printf("%d",a);
else
 printf("a=0");

本语句的语义是,把b值赋予a,如为非0则输出该值,否则输出“a=0”字符串。这种用法在程序中是经常出现的。

2) 在if语句中,条件判断表达式必须用括号括起来。

3) 语句块由{ }包围,但要注意的是在}之后不要再加分号;。例如:

if(a>b){
 a++;
 b++;
}else{
 a=0;
 b=10;
}

if语句的嵌套

if 语句也可以嵌套使用,例如:

#include <stdio.h>
int main(){
 int a,b;
 printf("Input two numbers:");
 scanf("%d %d",&a,&b);
 if(a!=b){
 if(a>b) printf("a>b\n");
 else printf("a<b\n");
 }else{
 printf("a=b\n");
 }
 return 0;
}

运行结果:

Input two numbers:12 68
a<b

if 语句嵌套时,要注意 if 和 else 的配对问题。C语言规定,else 总是与它前面最近的 if 配对,例如:

if(a!=b) // ①
if(a>b) printf("a>b\n"); // ②
else printf("a<b\n"); // ③

③和②配对,而不是和①配对。

以上就是对C语言if else知识的详解,希望能帮助学习C语言的朋友。

(0)

相关推荐

  • C语言 基本语法示例讲解

    C 基本语法 我们已经看过 C 程序的基本结构,这将有助于我们理解 C 语言的其他基本的构建块. C 的令牌(Tokens) C 程序由各种令牌组成,令牌可以是关键字.标识符.常量.字符串值,或者是一个符号.例如,下面的 C 语句包括五个令牌: printf("Hello, World! \n"); 这五个令牌分别是: printf ( "Hello, World! \n" ) ;  分号 ; 在 C 程序中,分号是语句结束符.也就是说,每个语句必须以分号结束.它表

  • C语言 while语句的用法详解

    在C语言中,共有三大常用的程序结构: 顺序结构:代码从前往后执行,没有任何"拐弯抹角": 选择结构:也叫分支结构,重点要掌握 if else.switch 以及条件运算符: 循环结构:重复执行同一段代码. 前面讲解了顺序结构和选择结构,本节开始讲解循环结构.所谓循环(Loop),就是重复地执行同一段代码,例如要计算 1+2+3+--+99+100 的值,就要重复进行99次加法运算. while循环 while循环的一般形式为:     while(表达式){         语句块  

  • C语言 数据类型详细介绍

    C 数据类型 在 C 语言中,数据类型指的是用于声明不同类型的变量或函数的一个广泛的系统.变量的类型决定了变量存储占用的空间,以及如何解释存储的位模式. C 中的类型可分为以下几种: 序号 类型与描述 1 基本类型: 它们是算术类型,包括两种类型:整数类型和浮点类型. 2 枚举类型: 它们也是算术类型,被用来定义在程序中只能赋予其一定的离散整数值的变量. 3 void 类型: 类型说明符 void 表明没有可用的值. 4 派生类型: 它们包括:指针类型.数组类型.结构类型.共用体类型和函数类型.

  • C语言switch 语句的用法详解

    C语言虽然没有限制 if else 能够处理的分支数量,但当分支过多时,用 if else 处理会不太方便,而且容易出现 if else 配对出错的情况.例如,输入一个整数,输出该整数对应的星期几的英文表示: #include <stdio.h> int main(){ int a; printf("Input integer number:"); scanf("%d",&a); if(a==1){ printf("Monday\n&q

  • 如何用C语言、Python实现栈及典型应用

    前言 栈是什么,你可以理解为一种先入后出的数据结构(First In Last Out),一种操作受限的线性表... C实现 借助与C语言中的void指针及函数指针,我们可以实现一个链式通用栈: /* stack.h */ #ifndef _STACK_H_ #define _STACK_H_ typedef struct stackNode { void *value; struct stackNode *next; } stackNode; typedef struct stack { st

  • C语言 变量详解及示例代码

    C 变量 变量其实只不过是程序可操作的存储区的名称.C 中每个变量都有特定的类型,类型决定了变量存储的大小和布局,该范围内的值都可以存储在内存中,运算符可应用于变量上. 变量的名称可以由字母.数字和下划线字符组成.它必须以字母或下划线开头.大写字母和小写字母是不同的,因为 C 是大小写敏感的.基于前一章讲解的基本类型,有以下几种基本的变量类型: 类型 描述 char 通常是一个八位字节(一个字节).这是一个整数类型. int 对机器而言,整数的最自然的大小. float 单精度浮点值. doub

  • C语言 存储类详解及示例代码

    C 存储类 存储类定义 C 程序中变量/函数的范围(可见性)和生命周期.这些说明符放置在它们所修饰的类型之前.下面列出 C 程序中可用的存储类: auto register static extern auto 存储类 auto 存储类是所有局部变量默认的存储类. { int mount; auto int month; } 上面的实例定义了两个带有相同存储类的变量,auto 只能用在函数内,即 auto 只能修饰局部变量. register 存储类 register 存储类用于定义存储在寄存器

  • 详解数据结构C语言实现之循环队列

    本文讲的是循环队列,首先我们必须明白下面几个问题 循环队列的基础知识 1.循环队列需要几个参数来确定 循环队列需要2个参数,front和rear 2.循环队列各个参数的含义 (1)队列初始化时,front和rear值都为零: (2)当队列不为空时,front指向队列的第一个元素,rear指向队列最后一个元素的下一个位置: (3)当队列为空时,front与rear的值相等,但不一定为零: 3.循环队列入队的伪算法 (1)把值存在rear所在的位置: (2)rear=(rear+1)%maxsize

  • C语言 常量详解及示例代码

    C 常量 常量是固定值,在程序执行期间不会改变.这些固定的值,又叫做字面量. 常量可以是任何的基本数据类型,比如整数常量.浮点常量.字符常量,或字符串字面值,也有枚举常量. 常量就像是常规的变量,只不过常量的值在定义后不能进行修改. 整数常量 整数常量可以是十进制.八进制或十六进制的常量.前缀指定基数:0x 或 0X 表示十六进制,0 表示八进制,不带前缀则默认表示十进制. 整数常量也可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long).

  • C语言 if else 语句详细讲解

    前面我们看到的代码都是顺序执行的,也就是先执行第一条语句,然后是第二条.第三条--一直到最后一条语句. 但是对于很多情况,顺序结构的代码是远远不够的,比如一个程序限制了只能成年人使用,儿童因为年龄不够,没有权限使用.这时候程序就需要做出判断,看用户是否是成年人,并给出提示. if-else语句 在C语言中,使用if和else关键字进行判断.请先看下面的代码: #include <stdio.h> int main() { int age; printf("请输入你的年龄:"

  • C语言之循环语句详细介绍

    目录 前言 while语句 do...while语句 for语句 结语 前言 C语言中的循环结构是程序中的一个基本结构. 循环结构可以使我们写很少的语句,让计算机反复执行某一过程. C语言提供了while语句,do......while语句和for语句,可以组成各种不同形式的循环结构. while语句 while语句又称当型循环控制语句 while(表达式) 语句 表达式式循环条件 ,语句是循环体 当表达式的值为真(非0)时,执行循环体语句,否则终止循环.其特点是先判断,再执行. 例如:计算1+

  • C语言结构体超详细讲解

    目录 前言 1.结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2.结构体成员的访问 2.1 点操作符访问 2.2 ->操作符访问 3.结构体传参 3.1 参数是结构体类型的变量 3.2 参数是结构体类型的变量的地址 3.3 结构体传参对比 总结 前言 本文开始学习结构体的知识点,主要内容包括: 结构体类型的声明 结构体初始化 结构体成员访问 结构体传参 1.结构体的声明 1.1 结构的基础知识 结构是一些值的集合,这些值称为成

  • C语言数组快速入门详细讲解

    目录 1.一维数组 a.一维数组的创建 b.一维数组的初始化 c.一维数组的使用 d.一维数组在内存中的存储 2.二维数组 a.二维数组的创建 b.二维数组的初始化 c.二维数组的使用 d.二维数组在内存中的存储 3.数组越界 4.数组作为函数参数 5.数组名 1.一维数组 数组的定义: 数组是一组相同类型元素的集合 a.一维数组的创建 数组的创建格式为: 数组的类型 数组名[ 常量表达式] : 关于数组创建易错点: b.一维数组的初始化 类似于给整型变量初始化的过程: int a=2; int

  • C语言目标文件的详细讲解

    目录 前言 目标文件分类 可重定位目标文件 分段的优点 符号和符号表 符号解析 重定位 可执行目标文件 总结 前言 一个 C 语言程序经编译器和汇编器生成可重定位目标文件,再经链接器生成可执行目标文件.那么目标文件中存放的是什么?我们的源代码在经编译以后又是怎么存储的? 文章为 <深入理解计算机系统>的读书笔记,更为详细的内容可以阅读原书. 目标文件分类 目标文件有三种形式: 可重定位目标文件包含二进制代码和数据,其形式可以在编译时与其他可重定位目标文件合并,创建一个可执行目标文件 可执行目标

  • C语言 struct结构体超详细讲解

    目录 一.本章重点 二.创建结构体 三.typedef与结构体的渊源 四.匿名结构体 五.结构体大小 六.结构体指针 七.其他 一.本章重点 创建结构体 typedef与结构体的渊源 匿名结构体 结构体大小 结构体指针 其他 二.创建结构体 先来个简单的结构体创建 这就是一个比较标准的结构体 struct people { int age; int id; char address[10]; char sex[5]; };//不要少了分号. 需要注意的是不要少了分号. 那么这样创建结构体呢? s

  • C语言超详细讲解循环与分支语句基础

    目录 写在开始 1. 分支语句 1.1 if语句 1.2 switch 2. 循环语句 2.1 while()语句 2.2 do while()语句 2.3 for 语句 for语句中表达式的省略 break在循环语句中的作用 continue 在循环语句中的应用 总结: 写在开始 在内容开始之前给大家介绍一下在计算机中如何表示真假 0表示假,非0表示真. 1. 分支语句 分支语句也叫做条件选择语句,主要分为if语句和switch语句. 1.1 if语句 if()…{} else if()…{}

  • C语言详细讲解循环语句的妙用

    目录 一.循环语句分析 二.do ... while 语句的循环方式 三.while 语句的循环方式 四.for 语句的循环方式 五.break和 continue 的区别 六.do 和 break 的妙用 七.小结 一.循环语句分析 循环语句的基本工作方式 通过条件表达式判定是否执行循环体 条件表达式遵循 if 语句表达式的原则 do,while,for的区别 do 语句先执行后判断,循环体至少执行一次 while 语句先判断后执行,循环体可能不执行 for 语句先判断后执行,相比 while

  • C语言详细讲解if语句与switch语句的用法

    目录 一.if 语句 二.switch 语句 三.错误提示 一.if 语句 格式: if(写条件){输出内容}条件为真运行这个. else {输出内容}否则输出这个. 代码: #include <stdio.h> int main(void) { int score; //定义一个变量 score printf("请输入你的分数:"); scanf("%d",&score); //键盘输入你想要的分数 if (score>700) //给出

  • C语言详细讲解while语句的用法

    目录 while语句格式 例题1 例题2 例题3 while语句格式 格式: while(表达式){    语句块} 1.先执行while(表达式),如条件为真执行语句块: 2.执行完语句块,继续执行表达式: 3.知道表达式为假.就退出循环,执行while后面的代码. 例题1 用while语句,输出0-9的值. 代码: #include <stdio.h> int main (void) { int i=0; //初始条件i=0; while(i<10) //while 循环 //whi

随机推荐