2.1 分支与循环
语句语句
C中语句分以下五类:
- 表达式语句
- 函数调用语句
- 控制语句
- 复合语句
- 空语句
控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,C语言由九种控制语句。可以分为三类:
- 条件判断语句,也叫分支语句:if语句,switch语句;
- 循环执行语句:dowhile语句、while语句、for语句;
- 转向语句:break语句、goto语句、continue语句、return语句。
C语言是一种结构化的程序设计语言,生活中万事万物都可以分成三种结构:顺序、选择、循环
分支语句(选择结构)
- if
- switch
if语法结构
if(表达式)//括号中为真执行 语句; if(表达式) 语句1; else 语句2; 多分支 if(表达式) 语句1; else if 语句2; else 语句3
相关实例if
3==5为假
int main()
{
if(3==5) //条件为假,不执行
printf("hehe\n");
return 0;
}
输出多条语句需{ }
int age =20
int main()
{
if(age<18)
{
printf("未成年\n");//若要输出多条语句,多条语句应该使用{ }括住
printf("禁止观看\n");
}
else
printf("已经成年");
return 0;
}
年龄
int age = 10;
if(age<18)
{
printf("未成年\n");//若要输出多条语句,多条语句应该使用{ }括住
printf("禁止观看\n");
//else if(18<= age <28)//此处有错误,age=10进入,先执行判断18<=age,结果为假-0,再判断0<28,结果为真,结果错误打印了下方内容
else if(age>=18 && age<28);
printf("青年请入\n");
else if(age>=28 && age<58);
printf("中年请入\n");
else
printf("老年\n")
return 0;
}
if悬空
int a = 0;
int b =2;
{
if (a==1)
if(b==2)
printf("hh\n");
else
printf("jj\n");
return 0;
}
\\一个if对应一个else,上例首个if悬空,未有else对应,代码输出无结果
\\else与离它最近的if对应
良好书写习惯
int main()
{ int num = 3;
if(5 == num)//if( num ==5)容易漏写等号
printf("hhe\n");
return 0;
}
判断一个代码是否为奇数
int main()
{
int num=0;
scanf("%d\n",&num) ;
if ( (num%2) ==1)
printf("是奇数\n");
else
printf("是偶数\n");
return 0;
}
输出零到一百内的奇数
int main()
{
int i = 1;
while (i <= 100)
{ if (i % 2 == 1)
printf("%d\n", i);
i++;
}
return 0;
}
swtich语法结构
switch(整型表达式)
{
语句项目;
}
语句项目:
case 整型常量表达式
语句;
相关实例switch
星期几
int day = 0;
scanf("%d",&day);
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;
}
工作日or休息
int day = 0;
scanf("%d",&day);
switch(day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
default://若有人输入一到七以为的值
printf("请输入一到七以内的数字\n");
break;
}
小计算
int main()
{
int n = 1;
int m = 2;
switch (n)
{
case 1: m++;
case 2: n++;
case 3:
switch (n)
{
case 1: n++;
case 2: m++;n++;
break;
}
case 4:
m++;
break;
default:
break;
}
printf("m=%d,n=%d\n",m,m);
return 0;
}
循环语句
- while
- for
- do while
while语法结构
while(若为真执行)
{
循环语句;
}
相关实例while
括号中为1永远真,永循环
int main()
{
while(1)
printf("hehe\n");
return 0;
}
结果是不停打印hehe,以为括号中一直为真
遇break跳出循环
int main()
{
int i = 1;
while ( i<=10 )
{
if(5 == i)
break;
printf("%d\n",i);
i++;
}
return 0;
}
//结果打印1 2 3 4 ,第五次循环时候遇到break 跳出循环
//while循环中,break用于永久地终止循环
遇continue跳本循环(没跳出)
int main()
{
int i = 1;
while ( i<=10 )
{
if(5 == i)
continue;
printf("%d\n",i);
i++;
}
return 0;
}
//结果打印1 2 3 4 _ 下划线表示程序一直在运行,跳不出循环
//while循环中,continue的作用是直接跳过本次循环Continue后面的部分,直接去判断要不要进行下一次循环
//本程序中i=5时候,进入continue,后i等于5又进入if判断,再进行continue
遇continue跳本循环(跳出)
int main()
{
int i = 1;
while ( i<=10 )
{
i++;
if(5 == i)
continue;
printf("%d\n",i);
}
return 0;
}
输出2 3 4 6 7 8 9 10 11
for语法结构
for循环的语法是:
for (初始化; 循环条件; 更新)
{
代码块;
}
相关实例for
for循环中break跳出循环
int main()
{
int i = 0;
for(i=1;i<=10;i++)
{
if(i==5)
{
break;
}
printf("%d ",i);
}
return 0;
}
//结果为1 2 3 4
do...while...循环语法结构
do 循环语句; while(表达式); //循环体至少要执行一次
相关实例do while
int main()
{
int i=1;
do
{
i++;
if(i==5)
continue;
printf("%d\n",i);
}
while(i<=10);
return 0;
}
有关循环的一些项目跳转,从n!到猜数字小游戏,我觉得很有参考价值欸
go to 语句
C语言中提供了可以随意滥用的goto语句和标记跳转的标号。
从理论上说goto语句是没有必要的,实践中没有goto语句也可以写出代码。
但是某时候也是有用的,如常见程序在某些深度嵌套结构的处理过程。
例如:一次跳出多层循环。
多层循环这种情况使用break无法达成目标,break只可以从最内层循环退出到上一层循环。
int main()
{
again:
printf("haha\n");
printf("hehe\n");
goto again;
return 0;
}
//可以跳转,但是不可以跨函数跳转
真正适用场景:
for(...)
{
for(...)
{
for(...)
{
if(disaster)
goto error;
}
}
}
error:
if (disaster)
//1.电脑运行一分钟后关机
//2.若输入:我是猪,取消关机
#include <string.h>
#include <stdio.h>
int main()
{
char input[20]={0};
system("shutdown -s -t 60");
again:
printf("请注意你的电脑,将会在六十秒内关机,输入:我是猪,取消关机\n");
scanf("%s",&input);
if (strcmp(input,"我是猪") == 0)
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
//上方选择Release版本而非debug版本,在文件Release目录下寻找exe文件即可,可当作恶作剧文件发送
//1.电脑运行一分钟后关机
//2.若输入:我是猪,取消关机
#include <string.h>
#include <stdio.h>
int main()
{
char input[20]={0};
system("shutdown -s -t 60");
while(1)
{
printf("请注意你的电脑,将会在六十秒内关机,输入:我是猪,取消关机\n");
scanf("%s",&input);
if (strcmp(input,"我是猪") == 0)
{
system("shutdown -a");
break;
}
return 0;
}
//上方选择Release版本而非debug版本,在文件Release目录下寻找exe文件即可,可当作恶作剧文件发送
联想公司福利 1500人发布
查看18道真题和解析