黑马程序员--C语言自学笔记---04分支结构

本文介绍了一个简单的剪刀石头布游戏实现,使用C语言编写,并解释了if-else和switch-case语句的使用方法及注意事项。

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! -------

1.   一个xcode注释插件:VVDocumenter-xcode

2.   If分支结构

1)        if – else

2)        if-else if –else

3)        注意:if(1)int a=1;是错误的,改为if(1){int a=1;}是正确的;

4)        If和else要匹配

一个简单的而剪刀石头布小游戏:

#include <stdio.h>
#include <stdlib.h>
int main(int argc, const char * argv[]) {
 
    int human = -1,computer;//定义变量
while(human != 3){
 
        printf("请出拳:0.石头 1.剪刀 2.布 3.退出\n"); //提示用户出拳
        scanf("%d",&human);
 
        computer = arc4random_uniform(3);//电脑出拳用随机数产生
 
        if(human<0 || human>3) //判断输入的合法性
            printf("你出的是啥啊,我读书少别骗我!\n");
        else{   //判断输赢
                if ((human==0&&computer==1)||
                  (human ==1&&computer == 2)||
                  (human == 2 && computer == 0)) {
                    printf("恭喜你,你赢了!\n");
                }
                else if ((computer == 0 && human == 1)||
                       (computer == 1 && human == 2)||
                   (computer == 2 && human == 0)){
                    printf("很遗憾,你输了!\n");
                }
                else if(human == computer){
                    printf("还不错,打平了!\n");
                }
            }
    }
    printf("下次再玩吧!拜拜!\n");
    return 0;
}

运行截图


注意此程序中用到的一个随机函数arc4random_uniform(n),产生从0到n-1之间的一个随机数,记得导入头文件#include<stdlib.h>.

 

3.   case的穿透问题

是指在switch结构中,执行完某个case语句后没有使用break,程序继续向下执行其他case语句。在case语句中加上break便会消除此种现象。

switch(1){
case 1:
          printf("我是1\n"):
case 2:
          printf("我是2\n");
          break;

}
这样就会把两条输出语句都输出来。


4.   switch结构使用注意

1)        条件表达式必须为整型或者可以转换为整型的值

2)        case语句可以有多条语句,大括号可有可无。

3)        break语句用来结束switch语句,不适用时表现为穿透现象。

5.   case语句注意

1)        case格式为:case+空格+常量/常量表达式+冒号+语句块

2)        case后面不能为变量,只能为常量或者常量表达式

3)        default语句可以放在任意位置

4)        case的穿透为从上向下穿透,如果default语句在后面同样也会穿透

5)        如果default语句放在switch的最后面,可以不使用break,但放在前面必须有break

6)        case后面不能跟实数,即小数

7)        case后的语句块的第一句要想定义一个变量,必须加上大括号,否则定义会出问题

8)        编译器 bug问题:在case后面的语句块中非第一句定义变量时,其他的case语句也可以使用这个定义的变量。

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陌影~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值