一.什么是语句
C语言中语句分为以下几种:
1.表达式语句
2.函数调用语句
3.控制语句
4.复合语句
5.空语句
主要介绍控制语句
控制语句用于控制程序的执行流程,以实现程序的各种结构方式(C语言支持的三种结构:顺序结构,选择结构,循环结构)都是由语法定义符组成,C语言有九种控制语句
分为三类:
1.条件判断语句(分支语句):if,switch
2.循环执行语句:do while,while,for
3.转向语句:break,goto,continue,return
二.分支语句
看一张图就很容易理解
2.1 if语句
语法结构:
第一种:
if(表达式)
语句;
第二种:
if(表达式)
语句1;
else
语句2;
第三种:
if(表达式)
语句1;
else if(表达式)
语句2;
else
语句3;
代码演示:
if
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if(a>90)
{
printf("有红包\n");
}
return 0;
}
if else
#include<stdio.h>
int main ()
{
int a = 0;
scanf("%d" , &a);
if(a > 60)
{
printf("红包\n");
}
else (a > 80)
{
printf("手机\n");
}
return 0;
}
if else if
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d" , &a);
if(a < 18)
{
printf("少年\n");
}
else if(a >= 18 && a < 30)
{
printf("青年"\n);
}
else if(a >=30 && a < 50)
{
printf("中年\n");
}
else if(a >= 50 && a < 70)
{
printf("老年\n");
}
else
{
printf("老寿星\n");
}
return 0;
}
这里要注意的是,C语言中0表示假,非0表示真。0的意思是编译器在执行的时候发现是0就停止运行,非0就正常运行。
2.2 else悬空问题
错误写法:
int main()
{
int a = 0;
int b = 2;
if (a == 1)
if (b == 2)
printf("你好\n");
else
printf("再见\n");
return 0;
}
这里大家会认为输出的是再见或者你好,实际上什么都不会打印。因为当a不等于1的时候程序不会往下执行去判断b,又因为else是悬空的会和最近的if匹配,所以程序直接结束了。
else是和最近的if匹配
正确写法:
#include<stdio.h>
int main ()
{
int a = 0;
int b = 2;
if(a == 1)
{
if(b == 2)
printf("你好\n");
}
else
{
printf("再见\n");
}
return 0;
}
2.3 if书写形式
第一种写法:
#include<stdio.h>
int main()
{
int a = 1;
scanf("%d" , &a);
if(a == 4)
{
printf("你好"\n);
}
return 0;
}
第二种写法:
#include<stdio.h>
int main()
{
int b = 0;
scanf("%d", &b);
if(5 == b)
{
printf("你好"\n);
}
return 0;
}
总结:第二中写法更好,因为有人不注意会把判断是否相等的符号==,写成赋值符号=,这种写法可以减少写错的几率。
2.4练习
1.判断奇偶数
首先因该思考的是什么是奇数什么是偶数,奇数就是不能被2整除的数,偶数就是能被2整除的数。
有了这个思路就可以写代码了
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 1)
{
printf("奇数\n");
}
else
{
printf("偶数\n");
}
return 0;
}
2.打印1-100之间的奇数
首先思考的是如何得到100个数,再去判断是不是奇数,要得到100个数可以写个for或者while循环
for
#include<stdio.h>
int main()
{
int a = 1;
for (a = 1; a < 100; a++)
{
if (a % 2 == 1)
{
printf("%d ", a);
}
}
return 0;
}
while
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 100)
{
if (i % 2 == 1)
printf("%d\n", i);
i++;
}
return 0;
}
2.5 switch语句
switch语句也是一种分支语句
语法形式:
switch(整型表达式)
{
语句项;
case 整型表达式;
语句;
}
实际应用:
#include<staio.h>
int main()
{
int a = 0;
scanf("%d", &a);
switch (a)
{
case 1:
printf("吃饭\n");
break;
case 2:
printf("睡觉\n");
break;
case 3:
printf("打游戏\n");
break;
case 4:
printf("锻炼\n");
break;
}
return 0;
}
注意:在是switch语句中,没有办法直接实现分支,要搭配break使用才能实现分支
说出n和m的值
int main()
{
int n = 1;
int m = 2;
switch (m)
{
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("%d %d\n", n, m);
return 0;
}
正确答案是n=3,m=4
三.循环语句
分为以下三种:
while
for
do while
3.1while循环语句
我们发现if语句只能执行一次,而现实生活中同一件事需要多次完成
C语言引入了:while循环语句,可以实现循环
语法:
while(表达式)
循环语句;
练习:用while语句在屏幕上打印10个数字
#include<stdio.h>
int main()
{
int i = 0;
while (i < 10)
{
printf("%d\n", i);
i++;
}
return 0;
}
3.2 while语句中的break和continue
break
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 7)
break;
printf("%d ", i);
i = i + 1;
}
return 0;
}
解释一下,当i等于7的时候程序就直接break结束了,不会在往下执行,最后的结果是1-6
其实在循环中遇到break,就会停止后面所有的循环,直接终止循环
所以while中的break是用于永久终止循环
continue
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
if (i == 7)
continue;
printf("%d ", i);
i = i + 1;
}
return 0;
}
解释一下,当i等于7的时候程序会无限重复执行代码的上一部分,下部分代码不会执行,最后的结果是1-6
continue是用于终止本次循环的,也就是continue后边的代码不会再执行,直接跳转到while语句判断部分
小知识点:getchar和putchar(很少用)
getchar是输入字符
puchar是输出字符
#include<stdio.h>
int main()
{
int ch = 0;
while ((ch == getchar()))
putchar(ch);
return 0;
}
可以用来清空缓冲区
#include<stdio.h>
int main()
{
char ch = '\0';
while ((ch == getchar()) != EOF)
{
if (ch < '0' || ch > '9')
continue;
putchar(ch);
}
return 0;
}
只打印数字字符,跳过其他字符。
循环语句还有下部分,点点关注和赞下集更精彩