文章目录
-
什么是语句?
-
分支语句(选择结构)
-
循环语句
-
goto语句
前言
一、什么是语句?
C
语句可分为以下五类:
1.
表达式语句
2.
函数调用语句
3.
控制语句
4.
复合语句
5.
空语句
控制语句
用于控制程序的执行流程,以实现程序的各种结构方式,它们由特定的语句定义符组成,
C
语
言有九种控制语句。
可分成以下三类:
1.
条件判断语句也叫分支语句:
if
语句、
switch
语句;
2.
循环执行语句:
do while
语句、
while
语句、
for
语句;
3.
转向语句:
break
语句、
goto
语句、
continue
语句、
return
语句。
二、分支语句(选择结构)
if语句
语法结构:if ( 表达式 )语句 ;if ( 表达式 )语句 1 ;else语句 2 ;// 多分支if ( 表达式 1 )语句 1 ;else if ( 表达式 2 )语句 2 ;else语句 3 ;
#include<stdio.h>
int main()
{
int age = 0;
scanf("%d", &age);
//if (age >= 18)
// printf("成年\n");
//else
// printf("未成年\n");
if (age < 18)
printf("青少年\n");
else if (age >= 18 && age < 30)
printf("青年\n");
else if (age >= 30 && age < 50)
printf("中年\n");
else if (age >= 50 && age < 80)
printf("中老年\n");
else if (age >= 80 && age < 100)
printf("老年\n");
else
printf("老寿星\n");
return 0;
}
如果条件成立,要执行多条语句,怎应该使用代码块。
#include <stdio.h>int main (){if ( 表达式 ){语句列表 1 ;}else{语句列表 2 ;}return 0 ;}
#include <stdio.h>
int main()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
{
printf("hehe\n");
}
}
else
{
printf("haha\n");
}
return 0;
}
if语句练习
#include<iostream>
//判断一个数是否是奇数
//int main()
//{
// int n = 0;
// scanf("%d", &n);
//
// if (n % 2 == 1)
// printf("奇数\n");
//
// return 0;
//}
//打印1~100之间的奇数
int main()
{
int i = 1;
while (i <= 100) {
if (i % 2 == 1)
printf("%d ", i);
i++;
}
return 0;
}
注意:
如果表达式的结果为真,则语句执行。
在C语言中如何表示真假?
0表示假,非0表示真。
这里的一对 { } 就是一个代码块。
else的匹配:else是和它离的最近的if匹配的。
switch语句
switch
语句也是一种分支语句。
常常用于多分支的情况。
if...else if ...else if 的形式太复杂,那我们就得有不一样的语法形式。这就是 switch 语句。switch ( 整型表达式 ){语句项;// 是一些 case 语句://如下:case 整形常量表达式 :语句 ;}
#include <stdio.h>
int 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;
}
/*
#include <stdio.h>
int main()
{
int day = 0;
switch (day)
{
case 1:
case 2:
case 3:
case 4:
case 5:
printf("weekday\n");
break;
case 6:
case 7:
printf("weekend\n");
break;
}
return 0;
}
*/
switch语句练习
#include <stdio.h>
int 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;
}
程序结果如图所示:
注意:
在switch语句中,我们没办法直接实现分支,搭配break使用才能实现真正的分支。
break语句 的实际效果是把语句列表划分为不同的分支部分。
default:写在任何一个 case 标签可以出现的位置。当switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。所以,每个switch语句中只能出现一条default子句。 但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。
三、循环语句
while循环
while ( 表达式 )循环语句 ;
打印1~10的数字
#include <stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i = i + 1;
}
return 0;
}
for循环
for ( 表达式 1 ; 表达式 2 ; 表达式 3 )循环语句 ;表达式 1表达式 1 为 初始化部分 ,用于初始化循环变量的。表达式 2表达式 2 为 条件判断部分 ,用于判断循环时候终止。表达式 3表达式 3 为 调整部分 ,用于循环条件的调整。
#include <stdio.h>
int main()
{
int i = 0;
//for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/)
for(i=1; i<=10; i++)
{
printf("%d ", i);
}
return 0;
}
//请问循环要循环多少次?
#include <stdio.h>
int main()
{
int i = 0;
int k = 0;
for(i =0,k=0; k=0; i++,k++)
k++;
return 0;
}
do-while循环
do
语句的语法:
do循环语句 ;while ( 表达式 );
#include <stdio.h>
int main()
{
int i = 10;
do
{
printf("%d\n", i);
}while(i<10);
return 0;
}
猜数字游戏
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
printf("**********************************\n");
printf("*********** 1.play **********\n");
printf("*********** 0.exit **********\n");
printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
//时间戳
srand(200);
//rand函数返回的随机数的范围是(0~32767)
//猜数字游戏的实现
int ret = rand();
printf("%d\n", ret);
//猜数字
int random_num = rand() % 100 + 1;
int input = 0;
while (1)
{
printf("请输入猜的数字>:");
scanf("%d", &input);
if (input > random_num)
{
printf("猜大了\n");
}
else if (input < random_num)
{
printf("猜小了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned)time(NULL));
do
{
menu();
printf("请选择>:");
scanf("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
break;
default:
printf("选择错误,请重新输入!\n");
break;
}
} while (input);
return 0;
}
注意:break在while循环中的作用: 其实在循环中只要遇到break,就停止后期的所有的循环,直接终止循环。 所以:while中的break是用于永久终止循环的。
continue在while循环中的作用就是:continue是用于终止本次循环的,也就是本次循环中continue后边的代码不会再执行, 而是直接跳转到while语句的判断部分。进行下一次循环的入口判断。
for循环的判断部分省略了,就意味着判断恒为真。
do-while循环循环体至少执行一次。
四、goto语句
C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过程。
goto语句适合的情景:
for (...)for (...){for (...){if ( disaster )goto error ;}}…error :if ( disaster )// 处理错误情况
利用goto语句写一个关机程序
#include <stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[10] = { 0 };
system("shutdown -s -t 60");
again:
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if (0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
使用while循环
#include <stdio.h>
#include <stdlib.h>
int main()
{
char input[10] = {0};
system("shutdown -s -t 60");
while(1)
{
printf("电脑将在1分钟内关机,如果输入:我是猪,就取消关机!\n请输入:>");
scanf("%s", input);
if(0 == strcmp(input, "我是猪"))
{
system("shutdown -a");
break;
}
}
return 0;
}