21点双人 c语言,第一篇代码 嗨翻C语言 二十一点扑克

求解各位:

嗨翻C语言 > 第一篇代码 >练习 二十一点扑克
问题:
1,为什么char card_name[3], 的[ ]要写3?
2,为什么要设立val=10和val=11为条件?

练习源代码:

#include<stdio.h>
#include<stdlib.h> 

int main()
{
    char card_name[3];
    puts("输入牌名:");
    scanf("%2s",card_name);
    int val=0;
    if(card_name[0]=='K'){
        val=10;
    }else if(card_name[0]=='Q'){
        val=10;
    }else if(card_name[0]=='J'){
        val=10;
    }else if(card_name[0]=='A'){
        val=11;
    }else{
        val=atoi(card_name);
    }
    
    if((val>2)&&(val<7))
     puts("计数增加");
     
    else if(val==10)
     puts("计数减少");
    
    return 0; 
 } 

之所以要多定义一个字符,是因为要一个字符作为结束符('\0')。

因为字符输入时会在字符串结尾处多加一个'\0'表示字符串结束.
所以设置字符数组长度时要比输入的至少多加一个字符.
你输入2个字符,数组长度就要至少是3