C语言的分支与循环结构(二)

Hello 大家好 我是一名大一的计算机菜鸟 通过这个平台分享自己的学习路程以及学习心得 今天我想和大家分享的是C语言的分支与循环结构。

上一篇文章我提到了C语言中的分支语句,分别是if语句switch语句,我们来稍微回顾一下这两种分支语句。

1.if语句:

一种以判断式子真假的方法来进行分支的语句,分别通过if,else if,else作为分支的起始

比如:输入10个数字,输出其中大于50的数字。

           就可以用到if语句来进行对大于50的数字的筛选。

for (i = 0; i < 10; i++)
{
    scanf("%d", &arr[i]);
    if (arr[i] > 50)
    {
        printf("%d ", arr[i]);
    }
}

2.switch语句:

与if语句的效果类似,但通常情况下比使用if,else if要更加清晰简洁。

 运用switch语句也可以让功能更加灵活,并且看起来思路清晰明了。

比如:输入一个成绩,判断它的级别:

                   A级为90-100,B级为80-89,C级为70-79,

                   D级为60-69,E级为0-59。

int a;
scanf_s("%d",&a);
int n = a / 10;
    switch(n)
    {
    case 9:printf("级别为A");
        break;
    case 8:printf("级别为B");
        break;
    case 7:printf("级别为C");
        break;
    case 6:printf("级别为D");
        break;
    case 5:
    case 4:
    case 3:
    case 2:
    case 1:
    case 0:printf("级别为E");
        break;
    }

对于像我这样的初学者来说,switch语句非常的友好,并且看起来清晰明了!

好了 那么我们已经回顾过上一篇文章讲解过的两种分支语句了 接下来我要跟大家分享一下C语言中的四种循环语句:

一、for() 循环

如图所示,for循环的运用少不了break和continue的协助,for循环的功能广泛,对一些多量数据的运算以及使用符号输出各种规则图形时比较常用。

具体的使用流程用代码的形式可以表示为

for(表达式1;表达式2;表达式3)
{
    代码...
}

看起来比较通俗易懂,但其实对三个表达式有着较为严格的要求。

表达式1代表for循环的初始,表达式2代表for循环的末尾,表达式3最为重要,它代表让循环进行的式子。如果说创造一个整型数字i,用它来构成十次循环的表达式123,那么就可以写作:

for(i=0;i<10;i++)
{
    代码...
}

那么知道了for循环的基础用法,让我们来做一个例题练练手吧!

例题:对1~100求和

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

由for进行100次循环相加,求出sum的值。

二、while() 循环

while语句和for语句非常相像

while(表达式)
{
    代码...
}

最大的区别就是,while的括号中只有一个表达式,也就是说最重要的让循环进行的表达式就放进了代码中,还是用整型i来做示范

int i=0;
while(i<10)
{
    代码...
    i++;
}

经典例题:求100~999之间的水仙花数

水仙花数是三位正整数,它每位数字的立方和与这个三位数本身相等。

例如:对于三位数370,370=3*3*3+7*7*7+0*0*0,那么370就是水仙花数。

#include <stdio.h>
int main()
{
	int a;
	int b;
	int c;
	int i = 100;
	printf("100-999之间的水仙花数有:\n");
	while (i <= 999)
	{
		a = i / 100;
		b = i / 10 % 10; 
		c = i % 10; 
		int sum = a * a * a + b * b * b + c * c * c;
		if (sum == i) 
		{
			printf("%d ", i); 
		}
		i++;
	}
	return 0;
}

运行结果为:

100-999之间的水仙花数有:
153 370 371 407

三、do...while() 循环

与while循环比较相似,也是要将进行循环的表达式放入代码中。但与while不同的地方在于,do...while()语句是先进行,再判断,而while()语句是先判断,再进行。比如在一些必要情况下,do...while()语句就比while()语句更加方便。

与刚才进行同样的题目

#include <stdio.h>
int main()
{
	int a;
	int b;
	int c;
	int i = 100;
	printf("100-999之间的水仙花数有:\n");
	do
	{
		a = i / 100;
		b = i / 10 % 10; 
		c = i % 10; 
		int sum = a * a * a + b * b * b + c * c * c;
		if (sum == i) 
		{
			printf("%d ", i); 
		}
		i++;
	}while (i <= 999);
	return 0;
}

运行结果也是一样的。

四、goto 循环

这是一个较为简单的循环语句,在一些特定情况需要跳转到其他位置时可以使用goto循环。

goto循环的使用方法是:

标签(自定义):
	
goto 标签;

好了 那么介绍完了四种循环语句以及两种分支语句,让我们来做一个小小的游戏吧!

五、游戏 猜数字!

游戏介绍:游戏开始后,随机创造出一个0-100的数字,而我们拥有五次机会去进行猜数字,如果次数耗尽我们将无法再猜数字,如果猜中数字,则游戏胜利。

1.创造一个游戏选择面板
int hand()
{
	printf("**************************\n");
	printf("*****     1.play     *****\n");
	printf("*****     0.quit     *****\n");
	printf("**************************\n");
	printf("请输入>:");
	return 0;
}
2.创造一个随机数
#include <time.h>
int main()
{
srand((unsigned int)time(NULL));
int m = rand() % 101;
}
3.创造游戏

do
{
	if (min == 0)
	{
		printf("你没有机会了!!!");
		break;
	}
	if (a == 1)
	{
		printf("你还有%d次机会\n", min);
		printf("请输入数字>:");
		scanf("%d", &b);
		min--;
		if (b < m)
		{
			printf("猜小了\n");
		}
		else if (b > m)
		{
			printf("猜大了\n");
		}
		else
		{
			printf("猜对了!\n");
			break;
		}
	}
	else if (a == 0)
	{
		printf("退出游戏\n");
		break;
	}
	else
	{
		printf("输入错误,请重新输入>:\n");
		goto again;
	}
	}while (a);

4.游戏完整代码:

#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int hand()
{
	printf("**************************\n");
	printf("*****     1.play     *****\n");
	printf("*****     0.quit     *****\n");
	printf("**************************\n");
	printf("请输入>:");
	return 0;
}
int main()
{
	hand();
	int a;
	int b;
	int min = 5;
	srand((unsigned int)time(NULL));
	int m = rand() % 101;
again:
	scanf("%d", &a);
	do
	{
		if (min == 0)
		{
			printf("你没有机会了!!!");
			break;
		}
		if (a == 1)
		{
			printf("你还有%d次机会\n", min);
			printf("请输入数字>:");
			scanf("%d", &b);
			min--;
			if (b < m)
			{
				printf("猜小了\n");
			}
			else if (b > m)
			{
				printf("猜大了\n");
			}
			else
			{
				printf("猜对了!\n");
				break;
			}
		}
		else if (a == 0)
		{
			printf("退出游戏\n");
			break;
		}
		else
		{
			printf("输入错误,请重新输入>:\n");
			goto again;
		}
		}while (a);
		return 0;
	}

运行样例:

怎么样,通过自己学到的知识来编译出一个小小的游戏,是不是也获得了学习带来的快乐和成就感呢?我要分享的关于分支语句和循环语句的知识就到这里啦,我们下次再见!!!

  • 27
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值