1.c语言的条件判断语句,也成为分支语句,例如:if语句,switch语句;
循环语句则有:for语句,while语句,do while语句;
2.分支语句
(1)if语句:
结构如下:
if(表达式)
{
语句;
}
if(表达式)
{
语句;
}
else
{
语句;
}
if(表达式)
{
语句;
}
else if(表达式)
{
语句;
}
else
{
语句;
}
具体体现如下:
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年");
}
return 0;
}
int main()
{
int age = 0;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else
{
printf("成年\n");
}
return 0;
}
int main()
{
int age = 0;
scanf("%d", &age);
if (age <= 18)
{
printf("少年\n");
}
else if (age <= 30)
{
printf("青年\n");
}
else if (age <= 50)
{
printf("壮年\n");
}
else if (age <= 80)
{
printf("老年\n");
}
else
{
printf("长命百岁\n");
}
return 0;
}
但是else的配给机制是与它最近的if匹配,所以我们在书写时务必注意格式,将else与最近的if放在同一水平线处,避免混淆;
(2)switch语句
switch语言也是一种分支语言,常用于多分支情况:
int main()
{
int num = 0;
scanf("%d", &num);//switch语句里必须是整形
switch (num % 3)
{
case 0:
printf("余数是0\n");
case 1:
printf("余数是1\n");
case 2:
printf("余数是2\n");
}
return 0;
}
一味的使用if...else if...else if... 语句太过于繁琐,所以使用switch语句会方便许多。
例如下图格式:
switch (表达式)
{
case 0:
(语句);
case 1:
(语句);
case 2:
(语句);
}
注意:switch语句中,case整形表达式后接冒号:,语句后接分号;
(2.1) break的使用
int main()
{
int num = 0;
scanf("%d", &num);//switch语句里必须是整形
switch (num % 3)
{
case 0:
printf("余数是0\n");
break;
case 1:
printf("余数是1\n");
break;
case 2:
printf("余数是2\n");
break;
}
return 0;
}
有时只想输出那一个值,却不料同时把代码后边的值一起输出了,这时候使用break,代码运行到break后直接跳出循环,就不会在运行后面的代码了!
switch语句的简便操作:有时几个case语句后所衔接的内容相同,例如:
int main()
{
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");
case 7:
printf("休息日\n");
break;
return 0;
}
}
这样的操作着实繁琐,所以我们可以换一种方法使用它:
int main()
{
int day = 0;
scanf("%d", &day);
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("工作日\n");
break;
case 6:
case 7:
printf("休息日\n");
break;
}
return 0;
}
这种方法大大节约了时间,但是只有当case语句后面的内容相同重复时才最好使用。
(2.2)default的使用
如果表达的值与所有case语句的内容都不符合,此时程序并不会被终止,也不会报错,因为这在C语言中并不被认为是一个错误。但是,倘若你不想忽略不匹配case语句的表达式的值时,你可以在语句列表中加入一条dafault子句。
default:可以放在任意一个case语句可以出现的位置。
当switch语句中所有case语句的内容都无法输出时,default语句便会执行。故,每条switch语句都只能出现一条default语句。
如下:
int main()
{
int age = 0;
scanf("%d", &age);
if (age <= 18)
{
printf("少年\n");
}
else if (age <= 30)
{
printf("青年\n");
}
else if (age <= 50)
{
printf("壮年\n");
}
else if (age <= 80)
{
printf("老年\n");
}
else
{
printf("长命百岁\n");
}
return 0;
}
在每条switch语句中加入default语句是一个好习惯,我们甚至可以在后边加上一个break。
3.循环语句
(3.1)while循环
我们已经学会了if语句,但如果条件不满足,if语句只会执行一次。但生活中我们可能需要重复的去完成某件事,此时使用while语句可以实现循环!
while语法结构
while(表达式)
{
循环语句;
}
比如去实现在屏幕上打印1~10的数字:
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
(3.1.1)while语句中continue和break的使用
continue介绍:
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
continue;//跳过本次循环后面的代码,回到开头进入循环的位置
printf("%d ", i);
i++;
}
return 0;
}
语句运行到continue时会直接跳过后边语句的运行,重新跳转到while语句的判断部分,进行下一次循环的判断
break介绍:
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 5)
break;
printf("%d ", i);
i++;
}
return 0;
}
代码运行到break时会直接停止后期所有的循环,直接跳出循环,来到return 0 处。
故break在while语句中是用于永久终止循环的。
scanf实现多组输入:
int main()
{
int i = 0;
while (scanf("%d", &i) != EOF)
{
循环语句;
}
}
这样可以实现多组输入,想结束输入按CTRL+z结束。
(3.2) for循环
已经有了一个while循环了,为什么我们还有一个for循环呢?
//for 的结构
for (表达式1; 表达式2; 表达式3)
{
循环语句;
}
表达式1:为初始化部分,用来初始化循环标量。
表达式2:为条件判断部分,用来判断循环时的终止。
表达式3:为调整部分,用于循环条件的调整。
使用for循环在屏幕上打印1~10的数字:
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
printf("%d ", i);
}
return 0;
}
相比while语句:
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
可以看出while循环中依然存在循环的三个必须条件,但是由于while语句的风格问题使得这三个部分分隔较远,如果后续要修改更正就不够便利。而for循环的三个表达式集中在一起,方便查找,故for循环的使用频率最高。
(3.2.1)for循环中break和continue的使用
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
break;//直接跳出循环
printf("%d ", i);
}
return 0;
}
int main()
{
int i = 0;
for (i = 1; i <= 10; i++)
{
if (i == 5)
continue;//i== 5 时 重新回到for循环处的判断部分,不输出5,进行下一次循环
printf("%d ", i);
}
return 0;
}
(3.3)do...while.()循环
do语句的语法:
do
{
循环语句;
} while (表达式);
do...while语句使用如下:
int main()
{
int i = 0;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
因为使用场景的限制,所以使用次数很少。
(3.3.1)do...while循环中的break和continue
break:
int main()
{
int i = 1;
do
{
if (i == 5)
break;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
continue:
int main()
{
int i = 1;
do
{
if (i == 5)
continue;
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
break直接退出循环到return 0 处;
continue则是返回重新开始循环,故一直在i==5 处反复循环但不打印。
4.goto语句
goto语句是把双刃剑,大部分情况下一般都不会使用goto语句,但某些情况下,例如:程序在某些深度嵌套的结构中,此时使用goto语句能直接终止。
goto语句
int main()
{
printf("hehe\n");
goto end;
printf("haha\n");
end:
printf("跳过haha的打印,直接来到这里\n");
return 0;
}
以上就是全部内容了。