C语言中有分支语句分为if语句和switch语句。
if语句的例子:
#include <stdio.h>
// 将三个整数从大到小输出
int main()
{
int a = 0;
int b = 0;
int c = 0;
scanf("%d %d %d", &a, &b, &c);
if (a > b)
{
if (a > c)
{
if (b > c)
{
printf("%d %d %d\n", a, b, c);
}
else
{
printf("%d %d %d\n", a, c, b);
}
}
else
{
printf("%d %d %d\n", c, a, b);
}
}
else
{
if (b > c)
{
if (a > c)
{
printf("%d %d %d\n", b, a, c);
}
else
{
printf("%d %d %d\n", b, c, a);
}
}
else
{
printf("%d %d %d\n", c, b, a);
}
}
return 0;
}
switch语句的例子:
#include <stdio.h>
int main() {
int day;
// 提示用户输入一个数字
printf("请输入一个1到5之间的数字:");
scanf("%d", &day);
// 使用switch语句根据输入的数字显示星期几
switch (day) {
case 1:
printf("星期一\n");
break;
case 2:
printf("星期二\n");
break;
case 3:
printf("星期三\n");
break;
case 4:
printf("星期四\n");
break;
case 5:
printf("星期五\n");
break;
default:
printf("输入无效,请输入1到5之间的数字。\n");
break;
}
return 0;
}
在switch语句中每个case里都需要加break跳出switch语句否则将会执行该case之后的下一个case直到遇到break然后跳出switch语句。
在C语言中还有循环语句,while循环、do...while循环、for循环三个循环语句
while循环和do...while循环的区别是do...while循环循环体执行的次数一般情况下一定会比逻辑判断多一次。
while循环使用的过程中如果不将判断所用的变量迭代将会进行无限循环例如:
int main()
{
int a = 0;
while (a)
{
printf("hehe\n");
}
return 0;
}
所以在使用while循环的过程中要格外注意逻辑判断变量的迭代。
而for循环则将变量的定义初始化,变量的逻辑判断,变量的迭代放到一次让人更容易看清。
这是一个利用for循环打印100~200之间的素数的程序。
#include <stdio.h>
// 写一个代码:打印100~200之间的素数
#include <math.h>
int main()
{
for (int i = 101; i < 200; i+=2)
{
int flag = 1;
for (int j = 2; j <= sqrt(i); j++)
{
if (i % j == 0)
{
flag = 0;
break;
}
}
if (flag == 1)
{
printf("%d ", i);
}
}
return 0;
}
在了解玩这些循环之后我们可以试着自己写一个猜数字的游戏。游戏规则如下:
随机生成一个1~100之间的数字,在玩家猜大的情况下告诉玩家猜大了,猜小了同理。
这里先来说如何生成随机数:(头文件是stdlib.h)
在C语言中提供了rand()函数,它可以生成一个伪随机数。至于为什么是伪随机数是因为它在使用的过程中在一断代码中多次使用时数字确实时随机的,但是当代码运行第二次时rand()函数生成的数字于上次一样,具体大家可以自己去试一下这里不再过多讲述。
那么为了解决这个问题在C语言中还存在srand()函数。它可以设置随机数的种子,而rand()函数是通过随机数的种子进行随机的比如rand(1)与rand(2)生成的随机数就是不一样的。而srand()函数就可以设置rand()函数的随机数种子。那么我们需要一个一直在变化的数字提供给srand()函数。
众所周知时间是一直在变化的,所以我们可以将时间提供给srand()函数。在C语言中,有time()函数它的返回值是一个时间戳(这里不进行解释说明只需要会用且知道一点即可),其中的参数填写NULL即可,所以我们可以使用srand((unsigned int)time(NULL))设置rand()函数的随机数种子。
接下来是对于代码构思的简单提示:
首先游戏需要一个菜单,有了菜单之后我们需要输入数字来判断玩家是否想要玩游戏或者退出,这里可以使用if语句或者switch语句。并且在一局游戏结束后还需要判断玩家是否想继续玩下一局或者退出。这里可以使用循环来实现。下面附上代码(看代码前请先自己思考一下)
#include <stdio.h>
#include <stdlib.h>
void Menu()//打印菜单
{
printf("******************\n");
printf("******1.play******\n");
printf("******0.exit******\n");
printf("******************\n");
}
void game()//游戏
{
int ret = 0;
int guess = 0;
ret = rand() % 100 + 1;
while(1)
{
printf("请猜数字:");
scanf("%d",&guess);
if(guess > ret)
{
printf("猜大了\n");
}
else if(guess < ret)
{
printf("猜小了\n");
}
else
{
printf("恭喜你猜对了\n");
break;
}
}
}
int main()
{
//打印菜单
Menu();
srand((unsigned int)time(NULL));
int input = 1;
while (input)
{
scanf("%d", &input);
switch (input)
{
case 1:
{
printf("游戏开始\n");
game();
break;
}
case 0:
{
printf("游戏结束\n");
break;
}
default:
{
printf("输入错误\n");
break;
}
}
}
return 0;
}