近期刚好学习到分支和循环语句,C语言中,分支和循环语句是控制程序流程的重要工具。常用的分支语句包括if语句、switch语句,常用的循环语句包括for循环、while循环和do-while循环。
If语句
根据条件判断是否执行一段代码块。其基本语法为:
if(表达式)
{
语句1;
}
else
{
语句2;
}
如果条件成立,则执行代码块中的语句;否则,程序会跳过语句1并继续执行else中的语句2。
Switch语句
根据不同的条件执行不同的代码块。其基本语法为:
switch (expression)
{
case value1: statement
case value2: statement
default: statement
}
如果表达式的值与某个case后面的值匹配,则执行该case后面的代码块;否则,执行default代码块。
for循环
重复执行一段代码块一定次数。其基本语法为:
for(表达式1; 表达式2; 表达式3)
{
语句;
}
//表达式1 ⽤于循环变量的初始化
//表达式2 ⽤于循环结束条件的判断
//表达式3 ⽤于循环变量的调整
第一次循环时,执行初始化表达式;循环条件成立时,执行代码块;循环结束后,执行更新表达式。
while循环
当满足条件时重复执行一段代码块。其基本语法为:
while(表达式)
{
语句;
}
⾸先执⾏判断表达式,若表达式的值为0,循环直接结束;若表达式的值不为0,则执⾏循环语
句,语句执⾏完后再继续判断,是否进⾏下⼀次判断。总之只要表达式成立,就不断执行;当条件不成立时,跳出循环。
do-while循环
至少执行一次代码块,然后再检查条件是否成立。其基本语法为:
do
{
语句;
}while(表达式);
首先执行代码块,然后检查条件是否成立,如果成立,继续执行代码块;否则,跳出循环。
在使用这些语句时,需要注意以下几点:
1、语句的正确性:确保分支和循环语句的语法正确,避免出现错误。
2、条件的判断:分支和循环语句的条件需要仔细考虑,确保能够正确地控制程序的流程,要完全掌握好关系操作符,条件操作符以及逻辑操作符。
3、变量的作用域:分支和循环语句中使用的变量需要确保其作用域正确,避免出现未定义的行为。
4、嵌套使用:分支和循环语句可以嵌套使用,但需要注意控制程序的复杂度,避免出现逻辑错误或死循环等问题。
在使用循环语句时,需要提前终止循环时使用break和continue这两个关键字,break 的作⽤是⽤于永久的终⽌循环,只要 break 被执⾏,直接就会跳出循环,继续往后执⾏。continue 的作⽤是跳过本次循环 continue 后边的代码。需注意continue在for循环和while循环里面是有区别的,在while循环里稍不注意会造成程序死循环。
区分下面两个代码,i++条件控制语句不同位置就会出现不同的结果。
代码1:不能正常输出,打印到7以后不再继续打印,并且程序未退出,说明程序此时进入了死循环。
int main()
{
int i = 0;
while (i <= 10)
{
if (i == 8)
{
continue;
}
printf("%d ", i);
i++;
}
return 0;
}
代码2:能正常打印,程序也正常退出。
int main()
{
int i = 0;
while (i <= 10)
{
i++;
if (i == 8)
{
continue;
}
printf("%d ", i);
}
return 0;
}
所以使用continue关键字时要慎重小心,避免出现不必要的麻烦。
我的第一个小游戏
学习了分支和循环,可以写一个“猜数字游戏”继续巩固知识。毕竟学习就是一个向上的循环。游戏分为三个关卡,分别是猜1~100,100~500,500~1500之间的数。
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
void game();//声明函数,游戏的判断在这个函数中实现
void menu();//提示菜单
int time_rand(int x);//实现随机数生成的函数
void game()
{
int i = 0;
int g = 0;
int a = 0;
for (i = 1; i <=3; i++)
{
int r = time_rand(i);
int count = 0;
while (1)
{
scanf("%d", &g);
if (g > r)
{
printf("你猜大了!重新输入> ");
count++;
}
else if (g < r)
{
printf("你猜小了!重新输入> ");
count++;
}
else
{
printf("恭喜你猜中了!你共计猜了%d次\n", count);
if(count==1)
printf("你是天选之人!\n");
else if(count<=10)
printf("你是幸运星!\n");
else
printf("你的运气爆棚!\n");
count = 0;
printf("\n是否晋级?1-晋级,0-退出\n");
cxsr:
scanf("%d", &a);
if (a == 1)
{
break;
}
else if (a == 0)
break;
else
{
printf("输入错误,请重新输入:\n");
goto cxsr;
}
if (i == 3)
{
printf("恭喜你完成所有关卡!\n");
}
}
}
if (a == 0) break;
}
}
void menu()
{
printf(" 猜字游戏\n");
printf("*************************\n");
printf("****** 1. 开始游戏 *******\n");
printf("****** 0. 退出游戏 *******\n");
printf("*************************\n");
}
//⽣成a~b的随机数,公式:a + rand()%(b-a+1);
int time_rand(int x)
{
int r = 0;
if (x == 1)
{
r = rand() % 100 + 1;//1~100的随机数
printf("请输入1~100的数字:>");
}
else if (x == 2)
{
r = 100 + rand() % (500 - 100 + 1);//100~500的随机数
printf("请输入100~500的数字:>");
}
else if (x == 3)
{
r = 500 + rand() % (1500 - 500 + 1);//1500~500的随机数
printf("请输入500~1500的数字:>");
}
return r;
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//由时间戳来控制随机值的种子
menu();
do
{
scanf("%d", &input);
if (input == 1)
{
printf("开始游戏\n");
game();
menu();
}
else if (input == 0)
{
printf("游戏退出\n");
break;
}
else
{
printf("输入错误,请输入0和1选择\n");
menu();
}
} while (input);
}
小子的本次分享到此结束,望各位客官大佬指正!