7.for循环
7.1格式:
for(表达式1;表达式2;表达式3)
语句;
表达式1:初始化部分;
表达式2:判断部分;
表达式3:调整部分
e.g. for(int i = 1;i<10;i++)
8.do while循环
8.1格式:
do
{语句;}
while(表达式);
8.2执行流程:
先进入循环体,执行循环语句,然后再判断while的表达式。真,则进行下一次;反之不执行。
至少执行一次
9.break和continue语句
9.1while中的语句:
break永久终止循环
continue不进行这次语句但继续下次循环
(while中顺序:初始化→判断→执行语句)//调整语句在执行语句中,使用break/continue要注意语序
9.2for循环中的语句
break永久终止循环
continue不进行这次语句但继续下次循环
(for中顺序:初始化→判断→执行语句→调整)
e.g.例:求100-200之间的素数
11.goto语句
11.1
goto语句可以实现在同一个函数内跳转到设置好的标号处
11.2
格式:
……
goto [name];
……
[name]:
11.3
尽量少的使用goto语句,它会打乱程序的执行流程;但是goto可以更快的跳出多层循环(break只能跳出一层)
//system是一个库函数,用来执行系统命令,需要包含头文件<stdlib.h>
//strcmp函数用来判读那字符串。如果判断两个字符串的内容相同,则返回0.需要包含头文件<string.h>
#猜数字游戏
1-100
1.随机数生成
1.1rand()函数会生成一个随机数,随机数范围在0~RAND_MAX(32767),需要包含头文件<stdlib.h>
rand函数生成的函数叫伪随机数,不是真正的随机数,是通过某种算法生成的随机数,rand是针对一个叫“种子”的基准值运算生成的随机数。如果要让rand生成的随机数不一样,就要改变种子
1.2srand函数用来初始化随机数生成器,需要unsigned 整型
不需要频繁调用,一个程序调用一次即可
1.3在程序中,我们一般是使用程序的运行时间作为种子的,因为时间时刻在发生变化。使用需要<time.h>头文件
time函数会返回time_t,本质是32或64位的整型类型,如果只让time返回时间戳,可以:time(null);
1.4设置随机数范围
rand()%100 //余数肯定在1-100之间
以此类推,如果要生成a-b之间的随机数:
a+rand()%(b-a+1)
2.实例
#include <stdlib.h>
#include <time.h>
//函数
void menu()
{
printf("************************\n");
printf("****** 1. play *******\n");
printf("****** 0. exit *******\n");
printf("************************\n");
}
//猜数字游戏的实现
void game()
{
//1. 生成随机数(1~100)
int ret = rand()%100+1;//1~100
//n%100 余数的取值的范围 0~99
//2. 猜数字
int guess = 0;
int count = 5;
while (count)
{
printf("请猜数字:>");
scanf("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("恭喜你,猜对了\n");
break;
}
count--;
}
if (count == 0)
{
printf("猜失败了,正确的数字是:%d\n", ret);
}
}
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("退出游戏\n");
break;
default:
printf("选择错误\n");
break;
}
} while (input);
return 0;
}