目录
3.3.2 do while循环中的break和continue
思维导图
1. 什么是语句?
C语句可分为以下五类:
1. 表达式语句 2. 函数调用语句 3. 控制语句 4. 复合语句 5. 空语句
不过这一次要介绍的是控制语句。
C语言有九种控制语句:
2. 分支语句(选择结构)
2.1 if语句
if 语句的语法结构:
注:当表达式判断为真,则执行语句。
在C语言中0表示假,非0表示真。
如果想要 if 执行多条语句:
2.1.1 悬空else
注意:else 是与离他最近的 if 匹配的,
此处并未进入第二个 if 语句中,所以编译器不打印任何东西。
2.1.2 if书写形式的对比
2.1.3 练习
巩固一个知识最好的办法就是练习,没有之一。
1. 判断一个书是否为奇数:
2. 输出1~100之间的奇数:
2.2 switch语句
switch语句常用于多分支的情况。
例:(选择输出每一个工作日)
如果使用 if...else if ...else if 的话,那太复杂了,我们需要不一样的语法形式:
2.2.1 在switch语句中的 break
假如我想输入1~5时,打印“工作日”,输入6~7时,打印休息日,该怎么实现呢?
2.2.2 default子句
那如果输入的值与所有case都不符合会怎么样?
这样编译器会跳过这条switch语句,如果你不想它被跳过,可以添加一条default子句。
2.2.3 练习
请问下面这段代码会输出什么呢?(可以停下来算一算)
过程分析及结果:
你算对了吗?
3. 循环语句
3.1 while循环
我们已经掌握了 if 语句,但是这语句只能执行一次。
而生活中同一件事我们可能要做很多次,这时候就要用到 while 循环。
例:我们用while循环打印数字1~10:
3.1.1 while语句中的break和continue、
有关break:
总结:使用break可以跳出循环。
有关continue:
总结:使用continue会跳回循环入口判断。
3.2 for循环
既然我们有了while循环,为啥还要有for循环呢?
例:用for循环打印数字1~10:
显而易见,for循环比while更好用,所以在C语言日常使用for循环更多。
3.2.2 break和continue在for循环中
break与continue在for循环中与while中的意义是相同的:
3.2.3 for语句的循环控制变量
注:不要在for循环内修改变量,容易导致for循环失去控制。
例:
3.2.4 一些for循环的变种
变种:
3.2.5 一道笔试题:
请问这个循环要循环多少次?
所以循环0次。
3.3 do...while()循环
3.3.1 do语句的语法:
3.3.2 do while循环中的break和continue
3.4 练习
小试牛刀,让你对循环语句了解更加透彻。
1. 计算n的阶乘:
2. 计算1!+2!+3!+......n! 的值:
3. 在一个有序数组中查找具体的某个数字n
方法一(逐个寻找):
如果数组中不存在这个数:
方法二(二分查找):
如果在一个很大的数组中查找时,比如一个数组有几百万个数字,那逐个查找的效率就很低了。
而使用二分查找,每次查找都能排除一半的数,效率就非常高了。
4. 编写代码,演示多个字符从两端移动,向中间汇聚。
#include<stdio.h>
#include<string.h>
#include<stdlib.h>//system函数调用的头文件
#include<windows.h>//Sleep函数调用的头文件
int main()
{
char arr1[] = "welcome to my blog!!!";
char arr2[] = "*********************";
int left = 0;
int right = strlen(arr1) - 1;
while (left <= right)
{
arr2[left] = arr1[left];
arr2[right] = arr1[right];
printf("%s", arr2);
Sleep(1000);//Sleep函数是实现睡眠,单位是毫秒(让程序暂停一会儿)
system("cls");//system是一个库函数,可以执行系统命令,cls是清空屏幕的一个命令
left++;
right--;
}
printf("%s", arr2);
return 0;
}
5. 编写代码实现,模拟用户登录情景,并且只能登录三次。
(只允许输入三次密码,如果密码正确则提示登录成功,如果三次均输入错误,则退出程序)
#include<stdio.h>
int main()
{
int i = 0;
char passward[20] = { 0 };//创建字符数组
int sign = 0;//标记
for (i = 0; i < 3; i++)
{
printf("请输入密码:");
scanf("%s", passward);//数组名本身算作地址,所以不用取地址
if (0 == strcmp(passward, "123456"))//假设密码是123456
{
printf("登陆成功\n");
sign = 1;
break;
}
else
{
printf("密码错误");
}
}
if (0 == sign)
{
printf("三次密码输入错误,程序退出");
}
return 0;
}
3.4.1 猜数字游戏实现
#define _CRT_SECURE_NO_WARNINGS 1
#include<time.h>
#include<stdio.h>
#include<stdlib.h>
void menu()
{
printf("**********************************\n");
printf("****** 开始游戏:1 退出游戏:0 ****\n");
printf("**********************************\n");
}
void game()
{
int ret = rand() % 100 + 1;//生成随机数1~100 (rand函数是专门用来生成随机数的)
//rand函数返回的是0~RAND_MAX(32767)之间的一个随机数
while (1)
{
printf("请输入数字:");
int num = 0;
scanf("%d", &num);
if (num < ret)
{
printf("猜小了\n");
}
else if (num > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了!\n");
break;
}
}
}
int main()//程序从主函数进入
{ //我们通过使用time函数生成随机数
int input = 0; //rand函数在使用之前,
srand((unsigned int)time(NULL));//要使用一个srand函数来设置随机数的生成器
do //srand函数在程序中只要调用一次就可以了,
{ //不需要频繁调用(所以将它放在主函数中)
menu();//给游戏设置一个精美的菜单
scanf("%d", &input);
switch (input)
{
case 1:
printf("猜数字游戏开始\n");
game();//猜数字游戏的具体实现
break;
case 0:
printf("游戏退出\n");
break;
default:
printf("输入错误\n");
break;
}
} while (input);
return 0;
}
4. goto语句
goto语句的语法形式:
使用goto语句能去到你想去到的地方,一般用于跳出多层循环。
注:goto语句只能在同一个函数中生效,不能跨函数使用。
例:用goto语句写一个关机程序:
//程序设计思路:
//程序执行起来就倒计时关机
//如果输入‘我是猪’就取消关机
//使用goto语句进行实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };//创建一个字符数组
system("shutdown -s -t 60");//这是Windows系统的一个命令,倒计时60s后关机
again:
printf("你的电脑将在60秒内关机,如果输入:‘我是猪’则停止关机\n");
scanf("%s", input);//接收用户输入的内容
if (strcmp(input, "我是猪") == 0)//当字符串进行比较时,不能直接写成“input == "我是猪"”
{ //要使用strcmp函数,再进行比较判断。
printf("真乖,这就把关机取消\n");
system("shutdown -a");//停止关机
}
else
{
printf("不识好歹,自讨苦吃。");
goto again;
}
return 0;
}
当然,也可以使用循环来实现:
//程序设计思路:
//程序执行起来就倒计时关机
//如果输入‘我是猪’就取消关机
//使用循环语句进行实现
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
char input[20] = { 0 };//创建一个字符数组
system("shutdown -s -t 60");//这是Windows系统的一个命令,倒计时60s后关机
while (1)
{
printf("你的电脑将在60秒内关机,如果输入:‘我是猪’则停止关机\n");
scanf("%s", input);//接收用户输入的内容
if (strcmp(input, "我是猪") == 0)//当字符串进行比较时,不能直接写成“input == "我是猪"”
{ //要使用strcmp函数,再进行比较判断。
printf("真乖,这就把关机取消\n");
system("shutdown -a");//停止关机
break;
}
else
{
printf("不识好歹,自讨苦吃。\n");
}
}
return 0;
}
所以平时建议少用goto语句,否则语句跳来跳去容易出错。
写在最后:
以上就是本篇文章的内容了,感谢你的阅读。
ps:你们是更喜欢看截图还是代码段?可以再评论区告诉我,我以后就会多用。
如果喜欢本文的话,欢迎点赞和评论,写下你的见解。
如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。
之后我还会输出更多高质量内容,欢迎收看。