C语言分支与循环语句(1)

目录

前言

分支语句

1. if语句

1.1 if

1.2 if...else...

1.3 嵌套 if...else...


前言

        C语言是一个结构化的程序设计语言,其中的“结构化”指的是C语言语句有三种结构,分别是:顺序结构分支结构循环结构,本节就来讲讲分支和循环结构。

分支语句

1. if语句

1.1 if

        C语言中,if 语句的语法形式为:

if(表达式)
    语句;

        它的运行逻辑是: 

表达式的值若为真,就执行 if 下面的语句;若为假,就不执行语句。

那么 ‘’ 和 ‘’ 指的是什么呢?其实,C语言中,只要不是0就为真,那么相反,0就为假。

例如:输入一个整数,判断是否为奇数:

#include<stdio.h>
int main()
{
    int num = 0;
    scanf("%d",&num);
    if(num % 2 == 1)
        printf("%d是奇数\n",num);
    return 0;
}

在上面的例子中,表达式 “num % 2 == 1” 的值如果为真,那么就打印;如果为假则不打印。

下面是运行结果: 

    

1.2 if...else...

        如果 if 表示一种情况,那么 else 就是与之相反的另一种情况。

        比如上面的例子,一个数要么是奇数要么是偶数(这里咱不谈 0 哈)。所以,如果16不是奇数,那它就是偶数。

        那偶数要怎么打印出来呢?就要用到 else :

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

运行以上代码结果如下:

这样的语句就是 if...else... 语句,其语法形式是:

if(表达式)
    语句1;
else
    语句2;

它的运行逻辑就是:

表达式的值若为真,就执行 if 下面的语句1;若为假,就执行 else 下面的语句2。

 来个小练习:交警叔叔在城市道路查超速,输入一个数代表车速,若车速大于等于60km/h,则视为超速;否则视为不超速。

#include<stdio.h>
int main()
{
    int speed = 0;
    scanf("%d", &speed);
    if (speed >= 60)
        printf("已超速!\n");
    else
        printf("未超速\n");

    return 0;
}

 执行以上代码的结果如下:

现在你应该能够写出来这样的代码了吧?那如果交警叔叔想要给警告,该怎么写呢?

#include<stdio.h>
int main()
{
    int speed = 0;
    scanf("%d", &speed);
    if (speed >= 60)
        printf("已超速!\n");
        printf("十分危险\n");
    else
        printf("未超速\n");
        printf("很安全哦");

    return 0;
}

如果此时运行你会发现编译器会报错

VS的报错信息是这样的:

Dev-C++的报错信息是这样的:

它们都在提示你:没有和 else 相匹配的 if 语句。

其实,C语言 if 和 else 语句都只能执行他们下方的一条语句,超过一条就管不了了。 

PS:如果你用的是VS的话,当你写完的时候VS的缩进就已经在提示你了:

为了解决这个问题,我们可以使用大括号 { } 把语句全部括起来。

实际上,使用大括号 { } 控制的多条语句称为 “程序块” 或者 “复合语句”

#include<stdio.h>
int main()
{
    int speed = 0;
    scanf("%d", &speed);
    if (speed >= 60)
    {
        printf("已超速!\n");
        printf("十分危险\n");
    }
    else
    {
        printf("未超速\n");
        printf("很安全哦\n");
    }

    return 0;
}

使用大括号 { } 控制多条语句不仅美观整洁,还能够养成良好的代码习惯~

以下是执行结果:

1.3 嵌套 if...else...

先来个小练习~

要求输入一个整数,判断输入的整数是0、正数还是负数。
#include<stdio.h>
int main()
{
    int num = 0;
    scanf("%d", &num);
    if (num == 0)
    {
        printf("输入的数字是0\n");
    }
    else if (num > 0)
    {
        printf("输入的数字是正数\n");
    }
    else
    {
        printf("输入的数字是负数\n");
    }

    return 0;
}

        我们可以看到,判断的条件增加到了三个:0、正数、负数。

        但是使用 if...else... 只能判断两个条件,因此诞生了 if...else... 语句的嵌套。

        与之前写的代码相比,这次代码明显多了 else if ( ) 这个东西,这个实际上可以拆开来看:

        else 和前面的 if 组成 if...else... ;而 if 和后面的 else 组成 if...else... ,由此构成了 if...else... 的嵌套语句。

        需要注意的是,当有多个 if 时,else 只会和最近的 if 相匹配,我们称之为“悬空else”。(此时才意识到随身带大括号 { } 的重要性。)
好的,你已经知道一种嵌套方式了,那么来试试手吧~
输入一个整数,如果是正数,再判断是奇数还是偶数,并输出;如果不是正数则输出:非正数。
#include<stdio.h>
int main()
{
	int num = 0;
	scanf("%d", &num);
	if (num > 0)
	{
		if (num % 2 == 0)
		{
			printf("%d是偶数\n", num);
		}
		else
		{
			printf("%d是奇数\n", num);
		}
	}
	else
	{
		printf("非奇数\n");
	}

	return 0;
}

        这是在一个 if 语句中嵌套 if...else... ,可以满足更加复杂的条件判断。

练习:

要求编写程序将一个百分制成绩转换为五分制成绩,

转换规则:‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‪‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‫‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‮‬‪‬‪‬‪‬‪‬‪‬‮‬‭‬‫‬

  • 大于等于90分为A;
  • 小于90且大于等于80为B;
  • 小于80且大于等于70为C;
  • 小于70且大于等于60为D;
  • 小于60为E。

参考代码:

#include <stdio.h>
int main()
{
	int score = 0;
	scanf("%d",&score);
	
	if(score < 60)
	{
		printf("E\n");
	}	
	else if(score < 70)
	{
		printf("D\n");
	}
    else if(score < 80)
    {
    	printf("C\n");
	}
	else if(score < 90)
	{
		printf("B\n");
	}
	else
	{
		printf("A\n");
	}
	
	return 0;
}

结语 

剩下的讲不完啦,下次再说~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值