C语言的if语句与操作符

本文讲解了C语言中if语句、else、分支结构、嵌套条件、关系运算符、逻辑运算符以及闰年判断的使用方法,适合初学者理解基本的控制流程。
摘要由CSDN通过智能技术生成

1.if语句

1.1.if

语法形式

if (表达式)
    语句

如果表达式结果为真(非0),语句执行

                  结果为假(0),语句不执行

\\输入一个整数,判断是否为奇数
#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d",&num);
    if(num % 2 == 1)
        printf("%d是奇数\n",num);
    return 0;
}

1.2.else

语法形式

if (表达式)
    语句1;
else
    语句2;
#include <stdio.h>
int main()
{
    int num = 0;
    scanf("%d",&num);
    if (num % 2 == 0)
        printf("%d是偶数");
    else
        printf("%d是奇数");
    return 0;
}

1.3分支中包含多条语句

如果if或else后有多条语句,需要把多条语句用大括号放到一个代码块里

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d",&age);
    if (age >= 18)
    {
        printf("成年了\n");
        printf("可以玩游戏了\n");
    }
    else
    {
        printf("未成年\n");
        printf("好好学习\n");
    }
    return 0;
}

1.4嵌套语句

可在if或else中嵌套判断语句

判断输入的数字是正数,负数,还是零

include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    if (n == 0)
        printf("输入的值是0\n");
    else
    {
        if (n > 0)
            printf("输入的值是正数\n");
        else
            printf("输入的值是负数\n");
    }
    return 0;
}
    

可简化为 

include <stdio.h>
int main()
{
    int n = 0;
    scanf("%d",&n);
    if (n == 0)
        printf("输入的值是0\n");
    else if (n > 0)
            printf("输入的值是正数\n");
    else
            printf("输入的值是负数\n");
    return 0;
}
    

输⼊⼀个⼈的年龄 如果年龄<18岁,打印"少年"

如果年龄在18岁⾄44岁打印"⻘年"

如果年龄在45岁⾄59岁打印"中⽼年"

如果年龄在60岁⾄89岁打印"⽼年"

如果90岁及以上打印"⽼寿星"

#include <stdio.h>
int main()
{
    int age = 0;
    scanf("%d",&age);
    if (age <= 18)
        printf("少年\n");
    else
    {
        if (age <=44)
            printf("青年\n");
        else
        {
            if(age <= 59)
            printf("中老年\n");
            else
            {
                if (age <=89)
                    printf("老年\n");
                else
                    printf("老寿星\n");
            }
        }
    }
    return 0;
}

1.5 悬空else问题

如果有多个 if 和 else ,, else 总是跟最接近的 if 匹配

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 2;
 if(a == 1)
     if(b == 2)
         printf("hehe\n");
 else
 printf("haha\n");
 return 0;
}

以上结果为什么都不输出,因为下方else与最近的if匹配,而只有第一个if为真才能执行下一组ifelse语句,而第一个if为假,所以什么都不输出。

2. 关系操作符

C 语言中用于比较的表达式,称为 “关系表达式”,⾥⾯使⽤的运算符就称 为“关系运算符”,主要有下⾯6个

> ⼤于运算符

< ⼩于运算符

>= ⼤于等于运算符

<=⼩于等于运算符

== 相等运算符

!= 不相等运算符

关系表达式通常返回 0 或 1 ,表⽰真假。 C 语⾔中, 0 表⽰假,所有⾮零值表⽰真。⽐如20>12返回 1 , 12 > 20 返回 0 。 

#include <stdio.h>
int main()
{
	int a = 2;
	printf("%d", a == 3);

	return 0;
}

输出结果为0。

不要把=赋值和==相等用错

#include <stdio.h>
int main()
{
	int x = 0;
	if (x = 3)
		printf("hehe");

	return 0;

 结果为hehe,因为将x赋值为3,为真

为了规避这种错误,当我们拿变量与常量比较是否相等时,可以将变量写在右侧,使用=号时就会报错

#include <stdio.h>
int main()
{
	int x = 0;
	if (3 == x)
		printf("hehe");

	return 0;

 多个操作运算符不宜连用

#include <stdio.h>
int main()
{
	int a = 2;
	int b = 20;
	int c = 5;
	if (a < b < c)
		printf("hehe");
	else
		printf("haha");

	return 0;

结果为hehe,因为a<b为真,会判断为1,接着用1与c进行比较,结果为真

连用需要i < j && j < k

3.条件操作符(三目操作符)

形式:exp1 ? exp2 : exp3

条件操作符的计算逻辑是:如果 exp1 为真, exp2 计算,计算的结果是整个表达式的结果;如果 exp1 为假, exp3 计算,计算的结果是整个表达式的结果。

#include <stdio.h>
int main()
{
 int a = 0;
 int b = 0;
 scanf("%d %d", &a, &b);
 int m = a>b ? a : b;
 printf("%d\n", m);
 
 return 0;

4. 逻辑操作符:&& , || , !

(一个全局变量不初始化,它的值为零。一个局部变量不初始化,它的值为随机值)

逻辑运算符提供逻辑判断功能,⽤于构建更复杂的表达式,主要有下⾯三个运算符。

! :逻辑取反运算符(改变单个表达式的真假)

&& :与运算符,就是并且的意思(两侧的表达式都为真,则为真,否则为假)

|| :或运算符,就是或者的意思(两侧⾄少有⼀个表达式为真,则为真,否则为假)

 4.1 逻辑取反运算符 !

⽐如,我们有⼀个变量叫 flag ,如果flag为假,要做⼀个什么事情,就可以这样写代码:

#include <stdio.h>
int main()
{
     int flag = 0;
     if(!flag)
     {
         printf("do something\n");
     }
     return 0;
}

因为flag为假,所以!flag为真,执行

4.2 逻辑与运算符

&& 就是与运算符,也是并且的意思, && 是⼀个双⽬操作符,使⽤的⽅式是 a&&b , && 两边的表达式都是真的时候,整个表达式才为真,只要有⼀个是假,则整个表达式为假。

int month = 0;
    scanf("%d", &month);
    if(month >= 3 && month <= 5)
    {
         printf("春季\n");
    }

4.3 逻辑或运算符

|| 就是或运算符,也就是或者的意思, || 也是⼀个双⽬操作符,使⽤的⽅式是 a || b , || 两边的表达式只要有⼀个是真,整个表达式就是真,两边的表达式都为假的时候,才为假。

int month = 0;
    scanf("%d", &month);
    if(month == 12 || month==1 || month == 2)
    {
     printf("冬季\n");
    }

4.4 练习:闰年的判断

输⼊⼀个年份year,判断year是否是闰年

闰年判断的规则:

1. 能被4整除并且不能被100整除是闰年

2. 能被400整除是闰年 

int main()
{
 int year = 0;
 scanf("%d", &year);
 if(year%4==0 && year%100!=0)
     printf("是闰年\n");
 else if(year%400==0)
     printf("是闰年\n");
 
 return 0;
}

结果无法输出,因为进入了第一个if就不能再进入else

正确方法

int main()
{
 int year = 0;
 scanf("%d", &year);
 if((year%4==0 && year%100!=0) || (year%400==0))
     printf("是闰年\n");
 
 return 0;
} 

  • 42
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值