do…while()循环,do语句的语法:
do
循环语句;
while(表达式);
例:
int main()
{
int i = 1;
do
{
printf("%d ", i);
i++;
} while (i <= 10); //最后的分号;不可缺少
return 0;
}
do…while中的break和continue:
int main()
{
int i = 1;
do
{
if (i == 5)
break; //break是跳出循环
printf("%d ", i);
i++;
} while (i <= 10);
return 0;
}
程序结果是:1234之后死循环(continue同样)
关于do..while循环的一个游戏制作:
写一个猜数字游戏,(1)自动产生一个1-100的随机数 (2)猜数字,猜对了“恭喜你,游戏结束”;猜错了会告诉猜大了猜小了(3)游戏可以一直玩,除非退出游戏。
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void menu()
{
printf(" 1.play \n");
printf(" 0.exit \n");
}
void game()
{
//猜数字游戏的实现:先生成随机数-->猜数字。rand函数返回了一个0-32767之间的数字,但是不够随机。
//所以添加srand(具体查看MSDN里的概念)
int ret = rand() %100+1; //%100的余数是0-99,然后+1.范围就是1-100
int guess = 0; //猜数字
while (1)
{
printf("猜数字");
scanf_s("%d", &guess);
if (guess < ret)
{
printf("猜小了\n");
}
else if (guess > ret)
{
printf("猜大了\n");
}
else
{
printf("猜对了\n");
break;
}
}
}
int main()
{
int input =0; //时间--time时间戳:相较于计算机的起始时间之间的差值换算成以秒为单位的一个数字
srand((unsigned int)time(NULL)); //不需要使用time函数里的参数,所以参数填null
do
{
menu(); //打印菜单
printf("请选择");
scanf_s("%d", &input);
switch (input)
{
case 1:
game();
break;
case 0:
printf("退出游戏\n");
break;
default:
printf("选择错误,重新选择\n");
break;
}
} while (input);
return 0;
}
//假定rand取得是1,3,5,7,9的随机值,那srand可以把初始值改成3开始,就会变成3,7,9......
//srand只是输出了固定的随机数开始地址
goto语句:
goto语句:
例子:
#include<stdio.h>
int main()
{
flag:
printf("hello");
printf("yummy");
goto flag;
return 0;
}
Goto语句最常见的用法:终止程序在某些深度嵌套的结构的处理过程,例如一次跳出两层或多层循环。这种情况使用break试是达不到目的的。它只能从最内层循环退出到上一层的循环。goto语句只能在一个函数范围内跳转,不能跨函数。
例子2:
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
//关机程序:只要运行起来,电脑就会在1分钟内关机,如果输入:我是美女,就取消关机
//电脑关机有一个关机命令提示符:shutdown -s -t 60
//-s是设置关机 -t设置时间关机 60是60s后关机
//shutdown -a就会取消关机(见附图)
//C语言提供了一个函数:system()--执行系统命令
int main()
{
char input[20] = { 0 }; //存放输入的信息
system("shutdown -s -t 60"); //system的头文件--stdlib.h
again:
printf("你的电脑即将关机,输入我是美女终止这一过程。");
scanf_s("%s", input); //%s:是接收字符串的。input字符名本身就是地址,所以不用再输入&取地址符号
if (strcmp(input,"我是美女")==0) //if (input == "我是美女")
{ //注意:两个字符串比较不能使用==的,应该使用strcmp() 的头文件--string.h 即:string compare
system("shutdown -a");
}
else
{
goto again;
}
return 0;
}
附图:
1.
2.
3.输入shutsown -s -t 60 后:
4.输入shutdown -a 后:
goto语句只能在一个函数范围内跳转,不能跨函数。
例: