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