一文搞定C控制语句:分支和跳转
小叙
- 随着循环的学习,我们可以用程序循环重复执行任务,要知道计算机最擅长做计算和循环了,为了解决更复杂的问题,C还提供了控制和组织程序的分支结构。还将学习逻辑运算符,使用逻辑运算符使得条件判断体系更加完善。一点点积累吧。
单分支 if 语句
语法:
if (关系表达式)
语句;
- 1
- 2
栗子:
if (i<8)
printf("小屁孩");//简单语句
- 1
- 2
if (i<8)
{
i+=18;
printf("\n");//复合语句
}
- 1
- 2
- 3
- 4
- 5
if 语句由复合语句构成时,整个 if 语句仍然被视为一条语句。
#include<stdio.h>
int main()
{
int a;
printf("请输入你的成绩\n");
while (scanf("%d",&a)<100)
{
if (a>0 && a<60)
printf("不及格\n");
if (a>=60 && a<80)
printf("良好\n");
if (a>=80 && a<=100)
printf("牛啊\n");
if(a==0)
printf("wc!!!\n");
return 0;
}/* code */
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
不难发现使用单分支还是有点不够意思,下面 if else解决你的烦恼。
二分支 if else 语句
if else 可以实现在两条语句之间进行选择
语法:
if (关系表达式)
语句1;
else
语句2;
- 1
- 2
- 3
- 4
如果条件为真,就去执行语句1,否则就去执行语句2
这里提醒自己一下
,C并没有要求代码一定要缩进
,但是好的缩进
的代码看着一目了然,维护也容易
,Python
就是严格要求缩进的语言,我觉得它是追求极致的简洁
,用缩进来省略掉花括号。可以理解一下
实例:
if(a>0)
printf("逗号");
a++;
else
printf("sg");
- 1
- 2
- 3
- 4
- 5
上面代码就会出错,因为if和else
之间只允许有一条语句
(可以是简单语句也可以是复合语句
)
修改:加上花括号就构成了一条复合语句
if(a>0)
{
printf("逗号");
a++;
}
else
printf("sg");
- 1
- 2
- 3
- 4
- 5
- 6
- 7
多分支 else if 语句
#include<stdio.h>
int main()
{
int i;
printf("请输入\n");
scanf("%d",&i);
if(i>0 && i<60)
printf("不及格\t");
else if (i>=60 && i<70)
printf("及格\t");
else if (i>=80 && i<100)
printf("得奖\t");
else if (i==100)
printf("李云龙向你竖起大拇指\t");
else
printf("wc\t");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
多层嵌套的 if 语句
#include<stdio.h>
int main(){
int i;
printf("请输入");
scanf("%d",&i);
if(i>3)
if(i<=8)
printf("xiao hai");
else
printf("da hai?");
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
逻辑运算符
&& //逻辑与(and)
|| //逻辑或(or)
! //逻辑非(no)
- 1
- 2
- 3
a && b //a和b都为真,整体才为真
a || b //a或b有一个为真,则整体就为真
! a>b //如果a>b是成立的,为真,那么,!a>b就为假
- 1
- 2
- 3
1>2 && 2>1 //假,只有左右同时为真才为真,一个为假就为假
1>2 || 2>1 //真,有一个为真就为真
!1>2 //真,因为1<2
- 1
- 2
- 3
这里有一个头文件
#include <ios646.h>
- 1
引入这个头文件后,可以使用and代替&&,or代替||,not代替!
练习输出&&时间 == 完美
条件运算符(三目运算符)
C提供了
条件表达式
作为表达if else
语句的一种便捷方式
语法:
a?b:c;
- 1
- 如果条件a为真那么执行b,否则执行c
- 需要3个运算对象,每个运算对象都是一个表达式
- 当然,任何事物都有优点缺点,月有阴晴圆缺。
- 那么优点就是简洁,缺点就是表达式不能是复合语句了,只能是一个表达式。
break 和 continue
一般来说,程序进入循环,在下一次循环测试之前会执行循环体中的所有语句。break 和 continue 语句可以根据循环体中的测试结果来忽略一部分的循环内容,甚至结束循环。
continue语句
- 在3种循环都可使用,执行到该语句时,就会跳过本次迭代的剩余部分,并开始下一轮的迭代
- 如果在嵌套循环内里使用,则只会影响包含该语句的内层循环
continue;
- 1
break语句
- 程序在执行到循环中的break语句时,会终止包含它的循环,并去执行下一阶段,
- break 语句位于嵌套循环内,它只会影响包含它的当前循环
break;
- 1
多重选择:switch 和 break
- if else if 可以实现多个选项中进行选择,但是,大多数情况下,使用switch语句更方便。
- switch 括号中的测试表达式的值应该是一个整数值(包括 char 类型)
- case标签必须是整数类型(包括char类型)的常量或整型常量表达式(表达式中只含整型常量)
- 不能用变量做case标签
- 如果没有break就会从匹配标签开始执行到switch末尾
- default就是都没有匹配成功的情况下执行default里的语句
构造:
#include<stdio.h>
int main(){
switch (expression)
{
case /* constant-expression */:
/* code */
break;
default:
break;
}
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
多重标签
switch (expression)
{
case 'a'/* constant-expression */:
case 'A'
/* code */
break;
default:
break;
}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如果expression是字母大写A或小写a都执行下面的code
goto 语句
goto语句建议“谨慎使用”或者说根本用不到
goto语句分为两部分:goto和标签名,标签🏷的命名遵循变量名的命名规则。比如:
goto part1;
……
part1: printf("出错了");
- 1
- 2
- 3
- 4
- 5
原则上,在C程序不需要用到 goto 语句。
C程序员可以接受一种 goto 的用法,出现问题时从一组嵌套循环中跳出(一条brea语句只能跳出一侧层循环)
字符输入输出函数 getchar() 和 putchar()
getchar()函数不带任何参数,它从输入队列中返回下一个字符。例如:
ch = getchar();
//与下面语句的效果相同
scanf("%c",&ch);
- 1
- 2
- 3
- 4
- 5
putchar()函数打印它的参数。例如:
putchar(ch);
//与下面语句的效果相同
printf("%c",ch);
- 1
- 2
- 3
- 4
- 5
- 6
这些函数只处理字符,所以它们比通用的scanf()和printf()更快,更简洁,且不需要转换说明,通常定义在stdio.h的头文件里
ctype.h 系列的字符函数
小结
- 重点掌握 C的 两大分支结构 if else 和 switch及嵌套,以及 break 和 continue的使用
- 一些运算符和库函数的记忆和使用
- goto 语句的了解及用法
天气什么的,就这样疯狂下去吧,我只是想,再一次的,见到她啊!
文章来源: blog.csdn.net,作者:周棋洛ყ ᥱ ᥉,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/m0_53321320/article/details/118540815
- 点赞
- 收藏
- 关注作者
评论(0)