if 语言
if 语句 其一
C语言被称为结构化的程序设计语言,包括顺序结构、选择结构(if switch)和循环结构(for while do while)。
因为今天要下雨,所以必须带伞。这就是一个简单的选择语句。例如:如果你的年龄大于18岁,那么输出成年。
#include<stdio.h>
int main()
{
int age = 20;
if (age > 18)
printf("成年\n");
return 0;
}
if 语句的格式如下
if (表达式)
语句;
if 语句会让程序执行如下处理:
判断表达式的值,如果结果不等于0(即逻辑为真),则执行相应的语句。
括号内对条件进行判断的表达式称为控制表达式。
test: 奇数的判断
通过判断输入的整数能否被2整除,如果可以请输出“输入的数是奇数”。
#include<stdio.h>
int main()
{
//初始化
int n = 0;
// 输入
scanf("%d", &n);
// 判断
if (n % 2)
//输出
printf("输入的数是奇数\n");
return 0;
}
if 语句 其二
执行选择语句:“如果你的年龄大于18岁,那么输出成年。”
当输入的年龄小于18岁时,不能输出任何信息,这样有可能会让使用者用起来不放心,因此,如果小于18岁,则输出“未成年”。
#include<stdio.h>
int main()
{
//初始化
int age = 20;
// 输入
scanf("%d", &age);
// 判断和输出
if (age >= 18)
printf("成年");
else
printf("未成年");
return 0;
}
if 语句的格式如下
if (表达式)
语句1;
else
语句2;
else是否则的意思。当表达式的值不等于0时,执行语句1;当表达式的值等于0时,执行语句2。
test: 奇数和偶数的判断
通过判断输入的整数能否被2整除,如果可以请输出“输入的数是奇数”;否则请输出“输入的数是偶数”。
#include<stdio.h>
int main()
{
//初始化
int n = 0;
// 输入
scanf("%d", &n);
// 判断
if (n % 2)
//输出
printf("输入的数是奇数\n");
else
printf("输入的数是偶数\n");
return 0;
}
复合语句(代码块)
eg.,计算所输入的两个整数中的较大数和较小数
#include<stdio.h>
int main()
{
//初始化
int num1, num2,max,min;
//输入
scanf("%d %d", &num1, &num2);
// 判断
if (num1 > num2)
{
max = num1;
min = num2;
}
else
{
max = num2;
min = num1;
}
// 输出
printf("较大的数是 %d\n",max);
printf("较小的数是 %d\n",min);
return 0;
}
if (num1 > num2)
{
语句3;
语句4;
}/语句块1
else
{
语句1;
语句2;
}//语句块2
形如语句块1和语句块2这样在大括号内并排上书写的语句被称为符合语句或者是程序块。在使用单一语句的位置,如果一定要使用多个语句,可以把他们组合成符合语句(代码块)来实现;否则可能会出现编译错误或达不到要求。
多分支语句
eg 对不同年龄阶段的称呼(左闭右开)
青少年(0~18),青年(18-28),中年(28-40),壮年(40-60),老年(60-100),老寿星(>=100)。代码如下
#include<stdio.h>
int main()
{
int age = 10;
// 输入
scanf("%d", &age);
//
if (age < 18)
printf("青少年\n");
else if (age >= 18 && age < 28)
printf("青年\n");
else if (age >= 28 && age < 40)
printf("中年\n");
else if (age >= 40 && age < 60)
printf("壮年\n");
else if (age >= 60 && age < 100)
printf("老年\n");
else
printf("老寿星");
return 0;
}
多分支语句的结构如下
if (表达式1)
语句1;
else if (表达式2)
语句2;
else
语句3;
当表达式1为真时执行语句1;当表达式2为真时执行语句2;当表达式1和表达式2都为0时执行语句3。
test 输出1-100之间的奇数
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 100)
{
if (i % 2 == 1)
printf("%d\n", i);
i++;
}
return 0;
}
switch 语句
if ……else if……else if……else……的形式太过于复杂,那我们就得有不一样的语法形式,这就是swich语句,它的语法格式如下
switch(整型表达式)
{
//语句项就是一些case语句:
//如下:
case 整型常量表达式:
语句;
}
switch 语句和 break语句
eg.,输出今天是星期几?
#include<stdio.h>
int main()
{
int day = 0;
//
scanf("%d", &day);
//
switch (day)
{
case 1:
printf("星期1");
break;
case 2:
printf("星期2");
break;
case 3:
printf("星期3");
break;
case 4:
printf("星期4");
break;
case 5:
printf("星期5");
break;
case 6:
printf("星期6");
break;
case 7:
printf("星期日");
break;
}
return 0;
}
如“case 1:”这样用来表示程序跳转的标识称为标签(label)。
标签的值必须是常量,不可以是变量。另外,不允许多个标签为同一个值。程序跳转到该标签后,会按照顺序执行其后的语句。
当程序执行到break语句时,会跳出将它包围起来的switch语句。
#include<stdio.h>
int main()
{
int day = 0;
//
scanf("%d", &day);
//
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
}
return 0;
}
-
编程好习惯
最后一个case的末尾加上break语句的话,就可以灵活的对case的增加或删除了。
注意通过单一表达式来控制的程序流程分支的时候,使用switch语句的效果通常要比使用if 语句的更好。
default子句
如果表达式的值和所有的case标签值都不匹配怎么办?
其实也没什么,结果就是所有的语句都被跳过而已。
程序并不会终止,也不会报错,因为这种情况在C语言下不认为是一个错误。
但是,如果你并不想忽略不匹配的所有标签的表达式的值应该怎么办呢?
你可以在语句块中增加一条default子句。代码如下:
#include<stdio.h>
int main()
{
int day = 0;
//
scanf("%d", &day);
//
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日");
break;
case 6:
case 7:
printf("休息日");
break;
default:
printf("选择错误\n");
break;
}
return 0;
}
注意default子句可以写在任何一个case标签出现的位置,但是每一个switch语句中只能出现一条default子句。
-
编程好习惯
每一个switch语句中都放一条default子句,甚至可以在后边再加一个break。