初始C语言(分支和循环语句)-下 (猜数字游戏实现)

分支语句 if switch; 循环语句 while; for  ;do while ;goto语句

 1.for循环

当我们知道while循环后,但是为什么要知道一个for循环呢,首先让我们来看看for循环的语法:

for(表达式1;表达式2;表达式3

        循环语句;

* 表达式1为初始化部分,用于初始化循环变量的。

* 表达式2为条件判断部分,用于判断循环时候终止。

*  表达式3为调整部分,用于循环条件的调整。

来个练习题感受一下:“使用for循环 在屏幕上打印1-10的数字”

#include <stdio.h>

int main()
{
 int i = 0;
 //for(i=1/*初始化*/; i<=10/*判断部分*/; i++/*调整部分*/) 需要注意逻辑顺序别弄乱啦,铁铁们!
 for(i=1; i<=10; i++)
 {
 printf("%d ", i);
 }
 return 0;
}

那现在咱们对比一下for循环和while循环,感受一下

int i = 0; //实现相同的功能,使用while

i=1;//初始化部分

while(i<=10)//判断部分

{

       printf("hehe\n");

       i = i+1;//调整部分

}

//实现相同的功能,使用while

for(i=1; i<=10; i++)

{

     printf("hehe\n");

}

就是怎么说呢,用while循环时等后期查找修改就不够集中和方便了,总体来说,for循环的风格和使用频率都是最好的。

1.2 for循环中 break continue

//代码1
#include <stdio.h>
int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            break;
        printf("%d ", i);
    }
    return 0;
}
//代码2
#include <stdio.h>
int main()
{
    int i = 0;
    for (i = 1; i <= 10; i++)
    {
        if (i == 5)
            continue;
        printf("%d ", i);
    }
    return 0;
}

我们发现在for循环中也可以出现break和continue,他们的意义和在while循环中是一样的。 但是还是有些差异:但其实大同小异,在做题中就会慢慢的体会到。

在for语句的循环控制变量里建议for语句的循环控制变量的取值采用“前闭后开区间”写法。不可以在for 循环体内修改循环变量,防止 for 循环失去控制。

来一道作业题看看

#include <stdio.h>
int main()
{
 int i = 0;
 int k = 0;
 for(i =0,k=0; k=0; i++,k++)
        k++;
 return 0;
}

这个循环要循环多少次呢?

第一次看到题就知道首先表达式1( i = 0,k = 0;) 表达式2( k = 0; ) 表达式3( i++, k++ )然后 k++;

意思就是当i等于0,k等于0时,如果k等于0,则i循环,k循环(重点在于表达式2,因为k本身就是0那怎么办)

所以到k++那里就直接跳过了所以无输出

 

 2.do...while()循环

2.1 do语句的语法

do

        循环语句;

while(表达式);

 do的特点:循环至少执行一次,使用的场景有限,所以不是经常使用

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

  do while循环中的break和continue

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

3.goto语句

C语言中提供了可以随意滥用的 goto语句和标记跳转的标号。 从理论上 goto语句是没有必要的,实践中没有goto语句也可以很容易的写出代码。 但是某些场合下goto语句还是用得着的,最常见的用法就是终止程序在某些深度嵌套的结构的处理过 程。 例如:一次跳出两层或多层循环。 多层循环这种情况使用break是达不到目的的。它只能从最内层循环退出到上一层的循环。

4.经过学习循环我们可以简单的写一个小游戏,“ 猜数字游戏的实现

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void menu()
{
	printf("**********************************\n");
	printf("*********** 1.play     **********\n");
	printf("*********** 0.exit     **********\n");
	printf("**********************************\n");
}
//RAND_MAX--rand函数能返回随机数的最大值。
void game()
{
	int random_num = rand() % 100 + 1;
	int input = 0;
	while (1)
	{
		printf("请输入猜的数字>:");
		scanf("%d", &input);
		if (input > random_num)
		{
			printf("猜大了\n");
		}
		else if (input < random_num)
		{
			printf("猜小了\n");
		}
		else
		{
			printf("恭喜你,猜对了\n");
			break;
		}
	}
}
int main()
{
	int input = 0;
	srand((unsigned)time(NULL));
	do
	{
		menu();
		printf("请选择>:");
		scanf("%d", &input);
		switch (input)
		{
		case 1:
			game();
			break;
		case 0:
			break;
		default:
			printf("选择错误,请重新输入!\n");
			break;
		}
	} while (input);
	return 0;
}

  • 9
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Responsibility-Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值