Hello!小伙伴们,又见面啦,柚子今天给大家分享一下C语言三大结构中的选择结构和循环结构。
一、选择结构
大多数稍微复杂一点的程序都会使用选择结构,其功能是根据所指定的条件,决定从预设的操作中选择一条操作语句。
1、分支语句
1.1 单分支结构语句(if)
if (表达式) if (表达式)
语句; or { 语句;}
【 注:这两者的区别就在于前者默认只会执行一条语句;后者则会执行“{ }”里所有的语句】
表达式为真执行语句,否则不执行
1.2 双分支结构语句(if--else)
if (表达式) if (表达式)
语句1; { 语句1;}
else else
语句2; or { 语句2;}
在只有两种情况问题的选择中会用到双分支
1.2.1 分支语句的嵌套 (if-- else if -- else if --else)
if (表达式1) if (表达式1)
语句1; { 语句1;}
else if ( 表达式2) else if ( 表达式2)
语句2; { 语句2;}
else else
语句3; or { 语句3;}
遇见比较复杂的问题时,可以选择 if 语句进行嵌套
1.3 多分支结构语句( switch )
switch (表达式){
case 1 : 语句1 ; break; ①(case常量表达式的值不能相同)
case 2 : 语句2 ; break; ②(语句n选1,以break结尾,跳出结构)
....... ③(case与default子句的顺序可以打乱)
case n : 语句n ; break;
default : 语句n+1 ; break; ④(default子句可以省略)
}
1.4 条件表达式
表达式1 ?表达式2 :表达式3 ;
举例:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
int a = 3;
int b = 4;
int max;
/*if (a > b)
{
max = a;
}
else
{
max = b;
}*/
max = (a > b) ? a : b;
printf("max = %d", max);
return 0;
}
【注释掉的 if 语句可以用 [ max=(a>b)? a:b ; ] 这样一个条件表达式代替】
二、循环结构 ( for while do-whlie )
1. for 语句
for ( 循环变量赋初值;循环条件;循环变量增量){ 语句 ;}
【注:虽然这三条语句可以省略,但是在没有完全掌握、运用到出神入化的地步还是不要省略啦】
2. while语句
while ( 表达式 ) (当表达式为真(非零)时执行循环)
{
语句;
}
3. do--while语句
do
{
语句;
} while(表达式); (一定要加“ ;”)
补充:while与do-while的区别:while只有在符合表达式的时候才会进入循环 ;而do--while是不管三七二十一先执行一次,所以,同等条件下,do-while会比while多执行一次。
下面用一段猜数字小游戏的代码来切身感受一下(if语句、switch语句、while循环和do-while循环吧!)
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void mnue()
{
printf("**************************\n");
printf("****** 猜数字小游戏 ******\n");
printf("******* 1、PLAY **********\n");
printf("******* 2、EXIT **********\n");
printf("**************************\n");
}
void game()
{
int sj = rand() % 100 + 1;//将随机数范围控制在100之内
int guess = 0;
int count = 5;
while (count)
{
count--;
printf("请输入您猜的数字:");
scanf("%d", &guess);
if (guess > sj)
{
printf("猜大了");
}
else if (guess < sj)
{
printf("猜小了");
}
else
{
printf("恭喜你猜对了!游戏结束");
break;
}
if (count == 0)
{
printf("很遗憾,您没有猜出来!\n");
printf("正确数字是:%d", sj);
}
}
}
int main()
{
int input = 0 ;
srand((unsigned int)time(NULL));//设置基准值
do
{
mnue();
printf("请输入您的选择:(1/0)%d\n", input);
scanf("%d", &input);
} while (input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("已退出游戏!");
break;
default:
printf("请重新输入(1/0)");
break;
}
return 0;
}