C语言学习-分支与循环语句(2)

简介: C语言学习-分支与循环语句(2)

思维导图

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
#include
#include//system函数调用的头文件
#include//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
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
#include
#include
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
#include
#include
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
#include
#include
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:你们是更喜欢看截图还是代码段?可以再评论区告诉我,我以后就会多用。


如果喜欢本文的话,欢迎点赞和评论,写下你的见解。


如果想和我一起学习编程,不妨点个关注,我们一起学习,一同成长。


之后我还会输出更多高质量内容,欢迎收看。


相关文章
|
4月前
|
C语言
初识C语言2——分支语句和循环语句
初识C语言2——分支语句和循环语句
94 5
|
1月前
|
C语言
【C语言程序设计——循环程序设计】枚举法换硬币(头歌实践教学平台习题)【合集】
本文档介绍了编程任务的详细内容,旨在运用枚举法求解硬币等额 - 循环控制语句(`for`、`while`)及跳转语句(`break`、`continue`)的使用。 - 循环嵌套语句的基本概念和应用,如双重`for`循环、`while`嵌套等。 3. **编程要求**:根据提示在指定区域内补充代码。 4. **测试说明**:平台将对编写的代码进行测试,并给出预期输出结果。 5. **通关代码**:提供完整的代码示例,帮助理解并完成任务。 6. **测试结果**:展示代码运行后的实际输出,验证正确性。 文档结构清晰,逐步引导读者掌握循环结构与嵌套的应用,最终实现硬币兑换的程序设计。
51 19
|
1月前
|
算法 C语言
【C语言程序设计——循环程序设计】求解最大公约数(头歌实践教学平台习题)【合集】
采用欧几里得算法(EuclideanAlgorithm)求解两个正整数的最大公约数。的最大公约数,然后检查最大公约数是否大于1。如果是,就返回1,表示。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。作为新的参数传递进去。这个递归过程会不断进行,直到。有除1以外的公约数;变为0,此时就找到了最大公约数。开始你的任务吧,祝你成功!是否为0,如果是,那么。就是最大公约数,直接返回。
77 18
|
1月前
|
Serverless C语言
【C语言程序设计——循环程序设计】利用循环求数值 x 的平方根(头歌实践教学平台习题)【合集】
根据提示在右侧编辑器Begin--End之间的区域内补充必要的代码,求解出数值x的平方根;运用迭代公式,编写一个循环程序,求解出数值x的平方根。注意:不能直接用平方根公式/函数求解本题!开始你的任务吧,祝你成功!​ 相关知识 求平方根的迭代公式 绝对值函数fabs() 循环语句 一、求平方根的迭代公式 1.原理 在C语言中,求一个数的平方根可以使用牛顿迭代法。对于方程(为要求平方根的数),设是的第n次近似值,牛顿迭代公式为。 其基本思想是从一个初始近似值开始,通过不断迭代这个公式,使得越来越接近。
57 18
|
1月前
|
C语言
【C语言程序设计——循环程序设计】统计海军鸣放礼炮声数量(头歌实践教学平台习题)【合集】
有A、B、C三艘军舰同时开始鸣放礼炮各21响。已知A舰每隔5秒1次,B舰每隔6秒放1次,C舰每隔7秒放1次。编程计算观众总共听到几次礼炮声。根据提示,在右侧编辑器Begin--End之间的区域内补充必要的代码。开始你的任务吧,祝你成功!
52 13
|
1月前
|
存储 C语言
【C语言程序设计——循环程序设计】利用数列的累加和求 sinx(头歌实践教学平台习题)【合集】
项的累加和,一般会使用循环结构,在每次循环中计算出当前项的值(可能基于通项公式或者递推关系),然后累加到一个用于存储累加和的变量中。在C语言中推导数列中的某一项,通常需要依据数列给定的通项公式或者前后项之间的递推关系来实现。例如,对于一个简单的等差数列,其通项公式为。的级数,其每一项之间存在特定的递推关系(后项的分子是其前项的分子乘上。,计算sinx的值,直到最后一项的绝对值小于。为项数),就可以通过代码来计算出指定项的值。对于更复杂的数列,像题目中涉及的用于近似计算。开始你的任务吧,祝你成功!
51 6
|
1月前
|
C语言
【C语言程序设计——循环程序设计】鸡兔同笼问题(头歌实践教学平台习题)【合集】
本教程介绍了循环控制和跳转语句的使用,包括 `for`、`while` 和 `do-while` 循环,以及 `break` 和 `continue` 语句。通过示例代码详细讲解了这些语句的应用场景,并展示了如何使用循环嵌套解决复杂问题,如计算最大公因数和模拟游戏关卡选择。最后,通过鸡兔同笼问题演示了穷举法编程的实际应用。文中还提供了编程要求、测试说明及通关代码,帮助读者掌握相关知识并完成任务。 任务描述:根据给定条件,编写程序计算鸡和兔的数量。鸡有1个头2只脚,兔子有1个头4只脚。
57 5
|
4月前
|
C语言
【c语言】分支语句
C语言通过三种基本结构——顺序、选择和循环,构建复杂的程序逻辑。本文主要介绍了C语言的选择结构,即if-else语句及其变体,包括简单的if语句、if-else组合、else if多分支判断、嵌套if以及解决悬空else问题的方法。此外,还详细讲解了逻辑运算符和关系运算符的使用,以及如何利用条件操作符简化逻辑判断。最后,文章对比了if-else与switch语句在实现多分支逻辑时的应用,并解释了switch语句中的break和default关键字的作用。
54 8
|
4月前
|
C语言
【c语言】循环语句
循环结构是C语言中用于简化重复操作的重要工具,主要包括while循环、do-while循环和for循环。while循环是最基本的形式,通过不断检查条件来决定是否继续执行循环体。do-while循环则先执行循环体,再检查条件,至少执行一次。for循环逻辑更复杂,但使用频率最高,适合初始化、条件判断和更新变量的集中管理。此外,循环中还可以使用break和continue语句来控制循环的提前终止或跳过当前迭代。最后,循环可以嵌套使用,解决更复杂的问题,如查找特定范围内的素数。
70 6
|
4月前
|
C语言
教你快速理解学习C语言的循环与分支
教你快速理解学习C语言的循环与分支
27 0

热门文章

最新文章

相关实验场景

更多