C语言之初学者也能玩明白的分支与循环

 作者:你我皆为凡人

 博客主页:你我皆为凡人的博客

 名言警句:时间不会为任何人停留,而事物与人,无时不刻也在变化着。每一个人,也都在不停向前!

 觉得博主文章写的不错的话,希望大家三连(✌关注,✌点赞,✌评论),多多支持一下!!

C语言之初学者也能玩明白的分支与循环_第1张图片

 

文章目录

目录

文章目录

前言

 

一:分支语句(选择结构)

          if语句

                第一种if单分支表达:

                 第二种if,else双分支语句表达:

                  第三种if,if  else ,else多分支语句表达:​

          Switch语句(应用于多分支)

              ✨Switch基本表达形式

                ✨如果有时候需求改变一下呢?还可以这样

                ✨1-7可以满足,但是如果输入一个没有的值呢?

                ✨以上的default是什么呢?

二:循环语句

          while

                while基本语法

                  当while循环中与break与continue碰撞出来的火花

          for

                 for循环语法:

                  break与continue在for循环中碰撞出来的火花:

                 一些for循环的变种:

                 一道笔试题:

          do while

                 do语句语法:

                 do while循环中与break与continue碰撞出来的花火:

 三:练习题

                 计算 n的阶乘。

                 计算 1!+2!+3!+……+10!

                 在一个有序数组中查找具体的某个数字n。(讲解二分查找)

                 编写代码,演示多个字符从两端移动,向中间汇聚。

                 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。

   四:猜数字小游戏的实现以及goto语句的应用(关机小程序)

         goto语句的应用(尽量少的去使用)

 ✨goto语句适用场景(一个关机小程序)

总结


 


前言

本文讲解了C语言中关于分支语句中的if,Switch语句详细介绍,循环语句中的while循环,for循环,do while循环,以及一些练习题,还有最后根据分支与循环实现的猜数字小游戏以及goto语句实现的关机小程序,可以看完很好的去巩固本篇所学习的知识


提示:以下是本篇文章正文内容,下面案例可供参考

 

一:分支语句(选择结构)

 (分支语句也叫条件判断语句:if语句与Switch语句)

          if语句

                第一种if单分支表达:

C语言之初学者也能玩明白的分支与循环_第2张图片

                 第二种if,else双分支语句表达:

C语言之初学者也能玩明白的分支与循环_第3张图片

                  第三种if,if  else ,else多分支语句表达:C语言之初学者也能玩明白的分支与循环_第4张图片

          Switch语句(应用于多分支)

              ✨Switch基本表达形式

int main()
{
	int day = 0;
	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;

	}
	return 0;
}

                ✨如果有时候需求改变一下呢?还可以这样

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)//必须是整型表达式
	{
	case 1://必须整型常量表达式
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	}
	return 0;
}

                ✨1-7可以满足,但是如果输入一个没有的值呢?

int main()
{
	int day = 0;
	scanf("%d", &day);
	switch (day)//必须是整型表达式
	{
	case 1://必须整型常量表达式
	case 2:
	case 3:
	case 4:
	case 5:
		printf("工作日\n");
		break;
	case 6:
	case 7:
		printf("休息日\n");
		break;
	default://不匹配所有case标签的值时,走default
		printf("选择错误\n");
	}
	return 0;
}

                ✨以上的default是什么呢?

如上图,当所有的case条件都不满足时,你输入了一个不是case里的数字,就会执行default
在语句列表中增加一条default子句,把下面的标签
default:
写在任何一个 case 标签可以出现的位置。
当 switch 表达式的值并不匹配所有 case 标签的值时,这个 default 子句后面的语句就会执行。
所以,每个switch语句中只能出现一条default子句。
但是它可以出现在语句列表的任何位置,而且语句流会像执行一个case标签一样执行default子句。

二:循环语句

          while

                while基本语法

C语言之初学者也能玩明白的分支与循环_第5张图片

C语言之初学者也能玩明白的分支与循环_第6张图片

                  当while循环中与break与continue碰撞出来的火花

C语言之初学者也能玩明白的分支与循环_第7张图片

C语言之初学者也能玩明白的分支与循环_第8张图片

          for

                 for循环语法:

for(表达式1; 表达式2; 表达式3)
循环语句;
表达式1
表达式1为初始化部分,用于初始化循环变量的。
表达式2
表达式2为条件判断部分,用于判断循环时候终止。
表达式3
表达式3为调整部分,用于循环条件的调整。
int main()
{
	int i = 0;
	for (i = 1; i <= 10; i++)//初始化,判断终止条件,调整部分,让每次都变化
	{
		printf("%d ", i);
	}
	return 0;
}

                  break与continue在for循环中碰撞出来的火花:

C语言之初学者也能玩明白的分支与循环_第9张图片

C语言之初学者也能玩明白的分支与循环_第10张图片

                 一些for循环的变种:

C语言之初学者也能玩明白的分支与循环_第11张图片

C语言之初学者也能玩明白的分支与循环_第12张图片

                 一道笔试题:

//请问循环要循环多少次?
#include 
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)//注意,k=0是赋值,根本不会进去,所以循环0次
        k++;
 return 0; }

          do while

                 do语句语法:

do
    
    循环语句;
while(表达式);

 C语言之初学者也能玩明白的分支与循环_第13张图片

                 do while循环中与break与continue碰撞出来的花火:

C语言之初学者也能玩明白的分支与循环_第14张图片

C语言之初学者也能玩明白的分支与循环_第15张图片

 三:练习题

                 计算 n的阶乘。

//计算 n的阶乘
//1*2*3*...*n
int main()
{
	int i = 1;
	int n = 0;
	int ret = 1;
	scanf("%d", &n);
	for (i = 1; i <= n; i++)
	{
		ret *= i;
	}
	printf("%d", ret);
    return 0;
}

                 计算 1!+2!+3!+……+10!

//计算1!+2!+。。。10!
int main()
{
	int i = 1;
	int ret = 1;
	int sum = 0;
	for (i = 1; i <= 10; i++)
	{
		ret *= i;
		sum += ret;
	}
	printf("%d", sum);
	return 0;
}

                 在一个有序数组中查找具体的某个数字n。(讲解二分查找)

int main()
{
	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
	int k = 7;
	//在一个数组中找k
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	for (i = 0; i 
#include
int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	int i = 0;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int left = 0; //左边
	int right = sz - 1;//右边
	int k = 7;//要找的值
	while (left<=right)
	{
	//int mid = (right + left) / 2;
      int mid = left+(right-lift)/2;
			if (arr[mid] < k)
			{
				left = mid + 1;
			}
			else if (arr[mid] > k)
			{
				right = mid - 1;
			}
			else
			{
				printf("找到了,下标是%d", mid);
				break;
			}
	}
	if (left > right)
	{
		printf("找不到");
	}
	return 0;
}

                 编写代码,演示多个字符从两端移动,向中间汇聚。

#include
#include
int main()
{
	char arr1[] = "hello world!!!!";
	char arr2[] = "###############";
	int left = 0;
	int right = strlen(arr1) - 1;
	while (left<=right)
	{
		arr2[left] = arr1[left];
		arr2[right] = arr1[right];
		printf("%s\n", arr2);
		Sleep(1000);//1秒
		system("cls");//可以清空屏幕,系统命令
		left++;
		right--;
	}
	printf("%s", arr2);
	return 0;
}

                 编写代码实现,模拟用户登录情景,并且只能登录三次。(只允许输入三次密码,如果密码正确则提示登录成,如果三次均输入错误,则退出程序。

#include
#include
int main()
{
	char password[20] = { 0 };
	int i = 0;
	for (i = 0; i < 3; i++)
	{
		printf("请输入密码:");
		scanf("%s", password);
		if (strcmp(password, "abcdef") == 0)
		{
			printf("密码正确\n");
			break;
		}
		else
		{
			printf("密码错误\n");
		}
	}
	if (i == 3)
	{
		printf("三次密码都错误,退出程序");
	}
	return 0;
}

   四:猜数字小游戏的实现以及goto语句的应用(关机小程序)

//猜数字游戏实现
void memo()
{
	printf("###########################\n"); 
	printf("######### 1 play   ########\n");
	printf("######### 0 exit   ########\n");
	printf("###########################\n");


}
void play()
{
	//1,生成一个1-100的随机数
	int ret = rand() % 100 + 1;
	int guess = 0;
	//2,猜数字
	//3,判断猜大了还是猜小了
	while (1)
	{
		printf("请输入要猜的数字:");
		scanf("%d", &guess);
		if (guess < ret)
		{
			printf("猜小了\n");
		}
		else if (guess > ret)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		memo();
		printf("请确认\n");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			printf("玩游戏\n");
			play();
			break;
		case 0:
			printf("退出游戏\n");
			break;
		default:
			printf("选择错误,重新输入\n");
			break;
		}
	} while (input);
	return 0;
}

         goto语句的应用(尽量少的去使用)

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。

从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。

但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过

程。

例如:一次跳出两层或多层循环。

多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。所以这个时候使用goto语句可以返回到任何你想让它跳出去的地方

注意:只能在同一个函数内部使用,不可以跨函数跳转

 ✨goto语句适用场景(一个关机小程序)

int main()
{
	char input[20] = { 0 };
	system("shutdown -s -t 60");
again:
	printf("请注意,你的电脑在60秒内即将关机,请输入:我是猪,就取消关机\n");
	scanf("%s", &input);
	if (strcmp(input, "我是猪") == 0)
	{
		system("shutdown -a");
	}
	else
	{
		goto again;
	}
	return 0;
}

总结

本篇文章具体讲解了关于C语言中分支语句与循环语句有哪些,基础语句是什么,让大家可以根据图片来看清楚到底是什么作用,最后也给大家准备了几道关于分支与循环的一些编程题,让大家可以看完练习一下巩固知识,只针对初学者,一些大佬可以当着复习了,最后感谢大家观看凡人的文章,如果觉得凡人讲的还不错,希望多多支持,感谢观看!!!

C语言之初学者也能玩明白的分支与循环_第16张图片C语言之初学者也能玩明白的分支与循环_第17张图片 

 

 

 

 

你可能感兴趣的