一 if语句
二 switch语句
三 while循环语句
四 for循环语句
五 do-while循环句
六 循环嵌套
七 break和continue语句
一 if语句
if语句的格式
if(表达式)
语句
else
语句
例子:if....else语句判断是否是奇数
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a % 2 == 0)
printf("%d是偶数", a);
else
printf("%d是奇数", a);
return 0;
}
嵌套if
在if else语句中,else可以与另外一个if连用构成多重判断
if()
语句
else if()
语句
else
例如:输入一个整数判断是0还是正数或者负数
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
if (a == 0)
printf("输入的数字是0\n");
else if (a > 0)
printf("输入的数是正数");
else printf("输入的数是奇数");
return 0;
}
但是这样的if else语句容易让人产生误解可以用括号实行代码块的方式更利于理解代码
if()
{
}else if()
{
}else if()
{
}
....
例如:
#include <stdio.h>
int main()
{
int age;
scanf("%d", &age);
if (age < 18)
{
printf("未成年\n");
}
else if (age <= 30)
{
printf("少年\n");
}
else if (age <= 55)
{
printf("中年\n");
}else if (age <= 80)
{
printf("老年\n");
}
return 0;
}
注意:else只有他最近的if匹配 一定要注意这种情况else悬空问题
#include <stdio.h>
int main()
{
int a = 0, b = 2;
if (a == 1)
if (b == 2)
printf("哈哈\n");
else
printf("呵呵\n");
return 0;
}
结果是什么都不输出
这就是指针悬空问题,else是跟他最近的if匹配的,从else的照应位置而言应该输出“呵呵”但是结果什么都不输出,这种方式写代码容易出现bug建议if else通过代码块的方式输出,把语句用括号的方式括起来
例如:
#include <stdio.h>
int main()
{
int a = 0, b = 2;
if (a == 1)
{
if (b == 2)
printf("哈哈\n");
}
else
{
printf("呵呵\n");
}
return 0;
}
二 switch语句
switch语句是一种特殊的分支结构,相较于if else可读性更好的,可以判断多种情况
格式如下;
switch(expression)
{
case (表达式)语句 break
case (表达式)语句 break
....
default 语句
}
expression 必须是整形表达式 case后的表达式是整形常量
default是所有case都没有匹配的情况执行
#include<stdio.h>
int main()
{
int a;
scanf("%d",& a);
switch (a % 2)
{
case 0:
printf("输入的得数是0或偶数\n");
break;
case 1:
printf("输入的是奇数\n");
break;
}
return 0;
}
注意:case后面要加空格和数字隔开最后加 :
记得加break语句跳出循环不加break语句会执行所有的语句
练习:输入1到7打印对应的星期几
#include<stdio.h>
int main()
{
int day;
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;
default :
printf("输入的数字超出范围\n");
}
return 0;
}
default与case的选后顺序并没有要求,default可以放前面也可以放后面,通常是把default放最后面
三 while 循环语句
while(表达式)
语句;
while语句和if语句很类似但是有区别
while循环流程:
#include<stdio.h>
int main()
{
int a = 1;
if (a)
{
printf("haha\n");
}
return 0;
}
#include<stdio.h>
int main()
{
int a = 1;
while (a)
{
printf("haha\n");
}
return 0;
}
有结果可知while语句陷入死循环,if语句只执行一次
while语句先判断是否为0,不为0进入循环,循环结束再次判断是否为0,为零停止,否则继续直到表达式为零为止,上述代码并没有结束循环的标志
例子:打印1~10的数字
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int i = 1;
while (i <= 10)
{
printf("%d ", i);
i++;
}
return 0;
}
例子:输入一个整数,逆序打印出来
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
int main()
{
int a = 0;
scanf("%d", &a);
while (a)
{
printf("%d ", a % 10);
a /= 10;
}
return 0;
}
当输入一个整数时,a%10可以得出最后一位,1245%10=5 a/10可以舍弃最后一位数 1245/10=124 因为我们定义的a为整数类型返回124,直至循环a为0结束循环
四 for语句
格式
for(表达式1;表达式2;表达式3)
{
语句;
}
表达式1进行初始化,通过表达式2进行判断,满足进入循环,否则结束循环即 表达式2!=0
整个结果就是表达式1执行一次,剩下的由表达式2,循环语句,表达式3进行调整
#include <stdio.h>
int main()
{
int i;
for (i = 1;i <= 10;i++)
{
printf("%d ", i);
}
return 0;
}
练习 :1~100之间打印3的倍数和
#include<stdio.h>
int main()
{
int i;
int sum=0;
for (i = 1;i <= 100;i++)
{
if (i % 3 == 0)
{
sum += i;
}
}
printf("%d ", sum);
return 0;
}
五 do-while语句
语法格式
do
{
语句;
}while(表达式)
while和for语句是先判断再循环 do-while语句是先循环再判断 do-while语句循环体至少执行一次
例:打印1~10
#include<stdio.h>
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
输入一个正整数计算是几位数
#include<stdio.h>
int main()
{
int i = 0;
scanf("%d", &i);
int a = 0;
do
{
i =i / 10;
a++;
} while (i );
printf("%d ", a);
return 0;
}
六 循环嵌套
for语句while语句和if语句相结合更好的实现程序设计
例:打印100~200之间的素数
#include<stdio.h>
int main()
{
int i ;
for (i = 100;i <= 200;i++)//对100到200进行遍历
{
int j = 0;
int flag = 1;
for (j = 2;j < i;j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
printf("%d ", i);
}
return 0;
}
结语
这就是我对于C语言的循环分支结构的分享
如果这篇文章对您有帮助的话请点的赞吧~
如有错误请多多指正!
(以上所有代码都是在vs2022中实现的)