C语言分支语句-总结笔记-创新互联
C语言是结构化的编程语言。C语言对生活中的事情进行抽象,总结为顺序、判断、循环关系。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:域名注册、网页空间、营销软件、网站建设、科尔沁网站维护、网站推广。概述:
判断(分支)语句:
- if
- switch
循环语句:
- while
- for
- do while
go to
1.什么是语句C语言的语句可以分为一下几类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
本次介绍的是控制语句。
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言有三种结构:顺序结构、选择结构、循环结构)
可以分为三类:
- 条件判断语句(分支语句):if语句、switch语句;
- 循环语句:do while语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句
下面我们将逐一介绍
2.分支语句(选择结构) 2.1 if语句在你面前有两个选择或者多个选择时。example:周一、三、五选择吃火锅,二四六选择吃盖饭,周日随缘。那么这个例子就需要进行选择,在C语言中可以使用if语句实现。
//语法结构
//单个if
if (表达式)
语句;
//if与else
if (表达式)
语句;
else
语句二;
//多个选择时,可以用else if
if (表达式)
语句一;
else if (表达式)
语句二;
else
语句三;
- 对于单if语句,如果if语句后面的表达式成立,则执行if下面的代码。
- 对于else if语句,如果 if 语句的表达式成立则执行 if 下面的代码,否则执行 else 后面的语句。
- 对于多个选择。自上而下按顺序判断,如果有满足 if 或 else if 的表达式时,执行相应的语句。if 和 else if 语句没有满足条件的,则执行else的语句
- else 或 else if 与最近的 if配套,不能只看缩进关系。每个判断后,语句如果包含多个(多行),应使用 { }代码块.
代码演示:
//one
#includeint main()
{int age = 0;
scanf("%d", &age);
if (age< 18)
{printf("未成年人\n");
printf("禁止吸烟\n");
}
return 0;
}
//two
#includeint main()
{int age = 0;
scanf("%d",&age);
if (age<18)
printf("未成年");
else
printf("已成年");
return 0;
}
//three
#includeint main()
{
int age = 0;
scanf("%d",&age);
if (age< 18)
printf("未成年");
else if (age>=18 && age<=30)
printf("青年");
else if (age>30 && age<=50)
printf("中年");
else
printf("老年");
return 0;
}
以上年龄划分仅为演示代码。
总结:
- 如果语言表达式为真,则语句执行。
- C语言中用 0 表示假,用非 0 表示真。
如果条件成立,要执行多条语句,要使用代码块,上面代码 one 中就是使用了代码块。一对 { } 就是一个代码块。
#includeint main()
{if(表达式)
{语句列表1;
}
else
{语句列表2;
}
return 0;
}
2.1.1 悬空else看以下代码:
#includeint main()
{
int a = 0;
int b = 2;
if (a==1)
if (b==1)
printf("I am so happy today");
else
printf("I am so sad today");
return 0;
}
那么上面的代码输出是什么呢?
答案是没有输出。因为 else 是与最近的 if 配套的,不能只看缩进,else 与 (b==1) 这层 if 搭配。由于判断 a=1 的 if 条件已经不成立了,所以根本不会运行 表达式一后面的执行语句。
改正
//适当的使用 { } 可以是代码的逻辑更清晰
//要有良好的写代码的习惯和让人舒服的风格
#includeint main()
{
int a = 0;
int b = 2;
if (a == 1)
{
if (b == 2)
printf("I am so happy today");
else
printf("I am so sad today");
}
return 0;
}
2.1.2 if风格对比//代码1
if (condition)
{
return x;
}
return y;
//代码2
if (condition)
{
return x;
}
else
{
return y;
}
其实上面两个代码的作用是一样的,代码二逻辑更为清晰。像我一样的初学者,建议代码二。
//代码三
int main()
{
int num = 1;
if (5 == num)
{
printf("I am happy");
}
return 0;
}
if 的判断语句这样写的话,如果出现少些一个等号这样的错误,会直接报错导致程序运行不了,防止条件判断语句变为 赋值语句,程序能运行但是有 bug。
2.1.3小练习//判断一个数是否为奇数,是的话就输出。
int main()
{
int num = 0;
scanf("%d",&num);
if (num %2 == 1)
printf("%d\n",num);
return 0;
}
//打印0~100之间的奇数
//这里会用到循环,主要看if
int main()
{
int main()
{
int i = 0;
while (i<= 100)
{
if (i % 2 == 1)
{
printf("%d\n",i);
}
i++;
}
return 0;
}
2.2 switch语句switch语句也是分支语句的一种。常常用于多分支的结构。
比如:按照输入的数字输出对应的星期几,那么我们也可以用 7个 if 语句判断实现。但是代码冗杂,这是哦我们可以使用 switch 语句。
switch (整形表达式)
{语句项;
}
语句项是什么?
//语句项是一些case语句
case 整型常量表达式:
语句;
通过代码来看一下:
#includeint main()
{
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
printf("星期一\n");
case 2:
printf("星期二\n");
case 3:
printf("星期三\n");
case 4:
printf("星期四\n");
case 5:
printf("星期五\n");
case 6:
printf("星期六\n");
case 7:
printf("星期天\n");
}
return 0;
}
那么结果是什么呢?
如果输入6,会发现输出 星期六 星期天。
why?
是因switch语句的执行顺序是判断成功自上而下一次执行。也就是说输入 6 的时候。case 6 成立输出星期六,但是没有终止,因此会输出星期天。
以上情况可以用break解决
#includeint main()
{
int day = 0;
switch(day)
{
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
case 6:
printf("星期六\n");
break;
case 7:
printf("星期天\n");
break;
}
return 0;
}
那么如果我们现在要求:输入1~5输出“工作日”,输入6或7输出“休息日”。
代码:
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 ;
}
break语句 的实际效果是把语句列表划分为不同的分支部分。
2.2.x default子句如果我们输入的条件与case都不一致怎么办?
答:使用default子句,当case子句的条件都不满足的时候,便会执行 default 子句。
#includeint main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1:
m++;
case 2:
n++;
case 3:
switch (n)
{//switch允许嵌套使用
case 1:
n++;
case 2:
m++;
n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m = %d, n = %d\n", m, n);
return 0;
}
//输出
m = 5 n = 3
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧
名称栏目:C语言分支语句-总结笔记-创新互联
文章来源:http://ybzwz.com/article/ddihho.html