1.几个分支
(1)if
if()//括号里条件,0为假,非0为真,和用&&,且用||
{
//执行的内容,超过一个要加大括号
}
else if//取不到上面的条件就会到else,else 后可直接加if嵌套
{
}
要注意悬浮else的情况,else会找离自己最近的if组合,该加大括号加大括号
(2)switch
int 1=0;
switch(i)//括号内整形
{
case 1: //可能的结果,比如i=1运行以下代码
{
//代码
break; //可使用break来跳出switch分支
}
case 2:
{
//代码
}
default://走不了前面case给的内容就会走defult,一般default可有可无
{
//代码
}
}
2.几个循环
(1)while循环
#include<stdio.h>
while(1) //括号里是条件,其中1是真,0是假,放1会无限循环,0会脱离循环
{ //大括号里一般放要循环的内容
printf("hehe"); //比如打印“hehe”
}
(2)do -while循环
do
{
//大括号里是要循环的内容
}
while() //小括号里是判断条件,0会停止循环,1会无限循环
(3)for循环
int i=0;
for (i=0;i<10;i++)//括号里分别是初始化值,判断条件,每轮循环的最后一操作,注意使用‘;’分隔不是逗号
{
//循环内容
}
3.break,goto
break一般只能用来跳出一层循环,或退出switch。而goto用法更为广泛,一般分支和循环都能使用
while(1)
{
if()
goto away; //用goto创造一扇“门”
}
away:
//比如这种,如果上方if条件符合可以直接传送到下面的away,跳出了循环
4.猜数字小游戏
(1)先可以制作个菜单
void menu()//定义无返回值的函数,之后可以在主函数中使用
{
printf("猜数字(1-100)\n");
printf("***********\n");
printf("**1.play***\n");
printf("**0.exit***\n");
printf("***********\n");
}
(2)把主函数的框架搭好
int main()
{
int input = 0;
do
{
menu(); //调用我们的菜单
scanf("%d", &input);//根据菜单输入一个数值
switch (input)
{
case 1:
printf("游戏开始\n");//扣1开始游戏
break;
case 0:
break;//扣0退出游戏
default:
printf("输入错误请重新输入\n");//扣的不是0也不是1,直接回循环重扣
break;
}
} while (input);//正好利用while括号中为0退出循环
printf("已退出游戏\n");
return 0;
}
(3)搭建游戏
void game()
{
int r = rand() % 100 + 1;//利用rand函数生成假随机数,用取余数的方式给随机数范围限定
int guess = 0;
while (1)
{
printf("请输入:");//输入猜的数字
scanf("%d", &guess);
if (guess > r)
printf("猜大了\n");
else if (guess< r)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;//猜对了就跳出循环
}
}
}
(4)
但我们要让每次玩数值都随机,但不能在玩的过程中随机,所以把srand函数放在主函数中来
#include<stdio.h>
#include<time.h>
void menu()
{
printf("猜数字(1-100)\n");
printf("***********\n");
printf("**1.play***\n");
printf("**0.exit***\n");
printf("***********\n");
}
void game()
{
int r = rand() % 100 + 1;
int guess = 0;
while (1)
{
printf("请输入:");
scanf("%d", &guess);
if (guess > r)
printf("猜大了\n");
else if (guess< r)
{
printf("猜小了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));//放入主函数中每次游玩都能重新刷新随机数
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
{
printf("游戏开始");
game();
break;
}
case 0:
break;
default:
printf("输入错误请重新输入");
break;
}
} while (input);
printf("已退出游戏");
return 0;
}
(5)给朋友上点强度(设置个猜错一次就开始倒计时关机,每猜错一次减10s)
void game()
{
int r = rand() % 100 + 1;
int guess = 0;
int shutdownTime = 120; // 首先初始化关机时间为120秒
while (shutdownTime > 0)
{
printf("请输入:");
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
if (shutdownTime > 0)
{
system("shutdown -a");//首先取消一次关机预约时间,因为不能重复设定
char command[50];//定义command字符组
sprintf(command, "shutdown -s -t %d", shutdownTime);//利用sprintf函数格式化关机时间
system(command); // 更新关机时间
}
else
{
printf("时间用完,游戏结束\n");
break; // 时间用完结束游戏
}
}
else if (guess < r)
{
printf("猜小了\n");//重复上面的操作
if (shutdownTime > 0)
{
system("shutdown -a");
char command[50];
sprintf(command, "shutdown -s -t %d", shutdownTime);
system(command); // 更新关机时间
}
else
{
printf("时间用完,游戏结束\n");
break; // 时间用完结束游戏
}
}
else
{
printf("猜对了\n");
system("shutdown -a"); //猜对了就取消关机吧(滑稽)
break;
}
shutdownTime -= 10; // 每次猜错减少10秒
}
}
(5)最后来个完整代码(可不断再优化,并不是终稿,发挥想象力吧)
#include<stdlib.h>
#include<stdio.h>
#include<time.h>
void menu()
{
printf("猜数字(1-100)\n");
printf("***********\n");
printf("**1.play***\n");
printf("**0.exit***\n");
printf("***********\n");
}
void game()
{
int r = rand() % 100 + 1;
int guess = 0;
int shutdownTime = 120; // 初始关机时间120秒
while (shutdownTime > 0)
{
printf("请输入:");
scanf("%d", &guess);
if (guess > r)
{
printf("猜大了\n");
if (shutdownTime > 0)
{
system("shutdown -a");
char command[50];
sprintf(command, "shutdown -s -t %d", shutdownTime);
system(command); // 更新关机时间
}
else
{
printf("时间用完,游戏结束\n");
break; // 时间用完结束游戏
}
}
else if (guess < r)
{
printf("猜小了\n");
if (shutdownTime > 0)
{
system("shutdown -a");
char command[50];
sprintf(command, "shutdown -s -t %d", shutdownTime);
system(command); // 更新关机时间
}
else
{
printf("时间用完,游戏结束\n");
break; // 时间用完结束游戏
}
}
else
{
printf("猜对了\n");
system("shutdown -a"); // 取消关机
break;
}
shutdownTime -= 10; // 每次猜错减少10秒
}
}
int main()
{
int input = 0;
srand((unsigned int)time(NULL));
do
{
menu();
scanf("%d", &input);
switch (input)
{
case 1:
printf("游戏开始\n");
game();
break;
case 0:
break;
default:
printf("输入错误请重新输入\n");
break;
}
} while (input);
printf("已退出游戏\n");
return 0;
}