- 分支
- if分支语句
- switch 分支语句
- 循环
- while
- for
- do...while
- 猜数字游戏
if(表达式)
语句;
else
语句2;
if(表达式)
{
语句1;
}
else if(表达式)
{
语句2;
}
else
{
语句3;
}
表达式为真,执行语句
c语言中,0为假,非0为真
else和最近的if 相匹配
常用于多分支
switch(整型表达式)
{
case (整型常量表达式) :
语句;
break;//跳出
default://默认,所有case不能匹配的跳到这
}
break 非常重要,没有break语句会一直向下执行
#includeint main() { int month = 0; scanf("%d", &month); switch (month) { case 1: printf("一月"); break; case 2: printf("二月"); break; case 3: printf("三月"); break; case 4: case 5: case 6: case 7: case 8: case 9: case 10: case 11: case 12: printf("其他"); break; default: printf("输入错误!"); break; } return 0; }
while(表达式)
{
循环语句;
}
表达式为真,执行循环语句
否则不执行
break:在while循环中,break用于永久的终止循环
continue:在while循环中,continue用于跳出本次循环,直接去判断部分看是否进入下一次循环
#includeint main() { char password[20] = {0}; printf("请输入密码<"); scanf("%s", password); //getchar()清理缓冲区中的'n' //getchar(); //清理缓冲区中的多个字符 int tem = 0; while (tem=getchar() != 'n') { ; } printf("请确认密码:Y/Nn"); if (getchar() == 'Y') printf("密码正确"); else printf("密码不正确"); return 0; }
从键盘输入到缓冲区,getchar从缓冲区中读取字符,在输入密码12345后回车,缓冲区中:12345n,所以需清除缓冲区中的n ,用getchar读取n,此时缓冲区是空的,不影响下一个字符的读取,否则无法读取到键盘输入的Y/N
如果输入的密码是12345 abcd,此时缓冲区:12345 abcdn ,不能用getchar 读取到多个字符,但用一个while语句使得多个字符被读取,清除了缓冲区
(初始化; 判断 ; 调整语句)
for(表达式1;表达式2;表达式3)
{
循环体;
}
先执行表达式1进行初始化,再执行表达式2进行判断,如果为真,执行循环体,最后再执行表达式3;一直循环,直到表达式2为假结束。
在for循环中,break永久终止循环
continue中止本次循环,跳转到调整部分
do
{
循环语句;
}while(表达式);
先执行,再判断,如果为真,继续执行循环,直到表达式不成立为止。
特点:至少循环一次
1.自动产生一个1—100的随机数
2.猜数字:猜对了,恭喜你,游戏结束;
猜错了,会告诉你,猜大了还是猜小了,再继续猜,直到猜对
3.游戏可以一直玩,除非退出游戏
#includevoid menu() { printf("*******************n"); printf("**** 1.play *****n"); printf("**** 0.exit *****n"); printf("*******************n"); } void game() { //1.生成随机数 int red = rand()%100+1; //2.猜数字 printf("请猜数字n"); while (1) { int guess = 0; scanf("%d", &guess); if (guess > red) printf("猜大了"); else if (guess < red) printf("猜小了"); else { printf("恭喜你,猜对了"); break; } } } 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("退出游戏"); break; default: printf("输入错误,请重新输入"); break; } } while (input); return 0; }
运行结果


![[c语言]分支和循环(猜数字游戏) [c语言]分支和循环(猜数字游戏)](http://www.mshxw.com/aiimages/31/290080.png)
