栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

[c语言]分支和循环(猜数字游戏)

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

[c语言]分支和循环(猜数字游戏)

文章目录
  • 分支
    • if分支语句
    • switch 分支语句
  • 循环
    • while
    • for
    • do...while
  • 猜数字游戏

分支 if分支语句

if(表达式)
语句;
else
语句2;

if(表达式)
{
语句1;
}
else if(表达式)
{
语句2;
}
else
{
语句3;
}
表达式为真,执行语句
c语言中,0为假,非0为真
else和最近的if 相匹配

switch 分支语句

常用于多分支

switch(整型表达式)
{
case (整型常量表达式) :
语句;
break;//跳出
default://默认,所有case不能匹配的跳到这
}

break 非常重要,没有break语句会一直向下执行

#include
	int main()
	{
		int month = 0;
		scanf("%d", &month);
		switch (month)
		{
		case 1:
			printf("一月");
			break;
		case 2:
			printf("二月");
			break;
		case 3:
			printf("三月");
			break;
		case 4:
		case 5:
		case 6:
		case 7:
		case 8:
		case 9:
		case 10:
		case 11:
		case 12:
			printf("其他");
			break;
		default:
			printf("输入错误!");
			break;
		}
		
		return 0;
	}



循环 while

while(表达式)
{
循环语句;
}
表达式为真,执行循环语句
否则不执行
break:在while循环中,break用于永久的终止循环
continue:在while循环中,continue用于跳出本次循环,直接去判断部分看是否进入下一次循环

#include
int main()
{
	char password[20] = {0};
printf("请输入密码<");
    scanf("%s", password);
	//getchar()清理缓冲区中的'n'
	//getchar();
	
	//清理缓冲区中的多个字符
	int tem = 0;
	while (tem=getchar() != 'n')
	{
		;
	}
	printf("请确认密码:Y/Nn");
	if (getchar() == 'Y')
		printf("密码正确");
	else
		printf("密码不正确");

	return 0;

}

从键盘输入到缓冲区,getchar从缓冲区中读取字符,在输入密码12345后回车,缓冲区中:12345n,所以需清除缓冲区中的n ,用getchar读取n,此时缓冲区是空的,不影响下一个字符的读取,否则无法读取到键盘输入的Y/N
如果输入的密码是12345 abcd,此时缓冲区:12345 abcdn ,不能用getchar 读取到多个字符,但用一个while语句使得多个字符被读取,清除了缓冲区

for
(初始化;   判断  ; 调整语句)

for(表达式1;表达式2;表达式3)
{
循环体;
}
先执行表达式1进行初始化,再执行表达式2进行判断,如果为真,执行循环体,最后再执行表达式3;一直循环,直到表达式2为假结束。


在for循环中,break永久终止循环
continue中止本次循环,跳转到调整部分

do…while

do
{
循环语句;
}while(表达式);
先执行,再判断,如果为真,继续执行循环,直到表达式不成立为止。
特点:至少循环一次

猜数字游戏

1.自动产生一个1—100的随机数
2.猜数字:猜对了,恭喜你,游戏结束;
猜错了,会告诉你,猜大了还是猜小了,再继续猜,直到猜对
3.游戏可以一直玩,除非退出游戏

#include
 void menu() {
	printf("*******************n");
	printf("****  1.play  *****n");
	printf("****  0.exit  *****n");
	printf("*******************n");
}
 void game() {
	 //1.生成随机数
	 int red = rand()%100+1;
	 //2.猜数字
	 printf("请猜数字n");
	 while (1)
	 {
		 int guess = 0;
		 scanf("%d", &guess);
		 if (guess > red)
			 printf("猜大了");
		 else if (guess < red)
			 printf("猜小了");
		 else
		 {
			 printf("恭喜你,猜对了");
			 break;
		 }
	 }
 }
int main()
{
	int input = 0;
	srand((unsigned int) time (NULL));//时间戳转换随机数
	do
	{
		menu();
		printf("请选择>>");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			printf("退出游戏");
			break;
		default:
			printf("输入错误,请重新输入");
			break;
		}
	} while (input);
	return 0;
}

运行结果

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/290080.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号