C语言中的分支循环语句,并使用分支循环语句实现猜数字游戏

       一.C语言分支和循环语句的简介

         C语⾔是结构化的程序设计语⾔,这⾥的结构指的是顺序结构、选择结构、循环结构,C语⾔是能够实现这三种结构的,我们⽇常所⻅的事情都可以拆分为这三种结构或者这三种结构的组合。

1.顺序结构

        C语言中的代码执行的顺序就是按照顺序结构开始执行的。在C语言中从主函数开始执行。

2.选择结构

        选择结构在C语言中通过if语句和switch语句实现。具体是通过进行条件的判断进行选择。

3.循环结构

        循环结构在C语言中使用for,while,do while语句实现,在满足判断条件的情况下,使计算机反复循环做同一件事。

        二.详细介绍C语言中的分支循环语句

1. if语句

(1)if()

        if语句的语法形式如下:

        表达式成立(为真),则语句执行,表达式不成⽴(为假),则语句不执⾏。在C语⾔中,0为假,⾮0表⽰真,也就是表达式的结果如果是0,则语句不执⾏,表达式的结果如果不是0,则语句执⾏。

        if语句执行流程:

(2)if()...else...

        if...else语句的语法形式如下:

        如果表达式为真则执行语句1,如果表达式为假则执行语句2。语句1和语句2只能执行一个。

(3)分支中包含多条语句

        默认在 if else 语句中默认都只控制⼀条语句,若想执行多条语句在一个判断条件下,则加上大括号{},比如:

#include <stdio.h>

int main()
{
	int age = 0;
	scanf("%d", &age); //输入age的值
	if (age >= 18) //if后使用{}控制多条语句-这个块也叫:程序块,或者叫复合语句
	{
		printf("成年了\n");
		printf("可以变成社畜了\n");
	}
	else
	{
		printf("未成年\n");
		printf("还得学\n");
	}
	return 0;
}

(4)if()...else if()...else...

        if()...else if()...else语句则为在if...else...语句中嵌套if语句,构成多重判断。并且可以多重嵌套,else if()可以多次使用.语法形式如:

(5)悬空else问题

        如果有多个if和else,可以记住这样一条规则,else总是和最接近得if匹配。为了代码的可读性,最好还是将匹配的if和else写成同样的缩减。

2.switch语句

(1)switch语句

        除了 if 语句外,C语⾔还提供了 switch 语句来实现分⽀结构。switch 语句是⼀种特殊形式的 if...else 结构,⽤于判断条件有多个结果的情况。它把多重的 else if 改成更易⽤、可读性更好的形式。语法形式如下:

上⾯代码中,根据表达式 expression 不同的值,执⾏相应的 case 分⽀。如果找不到对应的值,就执⾏ default 分⽀。
        注:switch后的expression必须是整型表达式。case后的值,必须是整型常量表达式。比如一个输入任意一个整数值,计算除以3之后的余数:
#include <stdio.h>

int main()
{
	int n = 0;
	scanf("%d", &n);
	switch (n % 3)
	{
	case 0:
		printf("整除,余数为0\n");
		break;
	case 1:
		printf("余数是1\n");
		break;
	case 2:
		printf("余数是2\n");
		break;
	}
	return 0;
}

        上述代码中,case和后面的数字之间必须有空格,每个case语句中的代码执行完成后,需要加上break才能跳出这个switch语句,不然就会跟着顺序执行后面的语句。

(2)switch语句中的default

        在使⽤ switch 语句的时候,我们经常可能遇到⼀种情况,⽐如 switch 后的表达式中的值⽆法匹配代码中的 case 语句的时候,这时候要不就不做处理,要不就得在 switch 语句中加⼊default⼦句:

switch 后边的 expression 的结果不是 value1 ,也不是 value2 的时候,就会执⾏default ⼦句。
        在switch语句中,case子句和default子句没有顺序要求,只要你的顺序满足实际需求的就可以,不过通常把default子句放在最后处理。

3.while循环语句

        (1)while语句的执行流程

        首先上来就是执行判断表达式,表达式的值为0,循环直接结束;表达式的值不为0,则执行循环语句,语句执行完后再继续判断,是否进行下一次判断。

        (2)while循环的实践

在屏幕上打印1-10的值:

#include <stdio.h>
int main()
{
	int i = 1;
	while (i <= 10)
	{
		printf("%d ", i);
		i = i + 1;
	}
	return 0;
}

        注:在循环体中需要使其越来越接近循环跳出条件,不然程序会进入死循环,列如上述的i = i + 1。

4.for循环语句

(1)for循环语法形式

        for循环是三种循环中使用的最多的,语法形式如下:

        表达式1: ⽤于循环变量的初始化
        表达式2: ⽤于循环结束条件的判断
        表达式3: ⽤于循环变量的调整

(2)for循环的执行流程

        ⾸先执⾏ 表达式1 初始化循环变量,接下来就是执⾏表达式 2 的判断部分,表达式 2 的结果如果 ==0,则循环结束; 表达式2 的结果如果!=0则执⾏循环语句,循环语句执⾏完后,再去执⾏表 达式 3 ,调整循环变量,然后再去表达式 2 的地⽅执⾏判断, 表达式 2 的结果是否为0,决定循环是否继续。整个循环的过程中,表达式1初始化部分只被执⾏1次,剩下的就是表达式2、循环语句、表达式3在循环。

(3)for循环的实践

        在屏幕上打印1-10的值:

#include <stdio.h>

int main()
{
	int i = 1;
	for (i = 1; i <= 10; i++)
	{
		printf("%d ", i);
	}
	return 0;
}

        for和while循环在实现循环的过程中都有初始化、判断、调整3个部分,但是for循环相对集中,便于代码的维护,而如果代码较多的时候while循环的三个部分就比较分散,所以从形式上for循环更优一点。

5.do while 循环语句    

(1)语法形式

        do while循环是先进入循环体,执行循环语句,然后再执行while后的判断表达式,表达式为真,就会进行下一次,表达式为假,则不再继续循环。

(2)do while循环的执行流程

        do while循环语句中的循环体至少执行一次,这是它比较特殊的地方。 

6.用循环写一个猜数字游戏

(1)游戏要求

        1.电脑自动生成1-100的随机数

        2.玩家猜数字,猜数字的过程中,根据猜测数据的大小给出大了或者小了的反馈,直到猜对,游戏结束。

(2)参考代码

#include <stdio.h>
#include <stdlib.h>
#include <time.h>

void menu()
{
	printf("*****************\n");
	printf("*****1.play******\n");
	printf("*****0.exit******\n");
	printf("*****************\n");
}

void game()
{
	int r = rand() % 100 + 1; //利用rand函数生成随机数,对100取余数得到0-99的数字,加1则为1-
	int guess = 0;            //100的随机数
	while (1)
	{
		printf("请猜数字:");
		scanf("%d", &guess);
		if (guess < r)
		{
			printf("猜小了\n");
		}
		else if (guess > r)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}

int main()
{
	int input = 0;
	srand((unsigned int)time(NULL)); //用来初始化随机数的生成器,调用rand前先调用srand,
	do                               //time函数获得当前的时间作为srand函数的seed
	{
		menu(); //调用menu函数打印出游戏菜单
		printf("请选择:");
		scanf("%d", &input);
		switch (input) //当input == 0时直接退出游戏
		{
			case 1:
				game();
				break;
			case 0:
				printf("游戏结束\n");
				break;
			default:
				printf("选择错误,重新选择\n");
				break;
		}
	} while (input); //循环是为了玩了一局之后不退出游戏,当input == 0时直接退出循环,退出游戏
	return 0;
}

  • 26
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值