很久没写C++程序了,现在模拟一下输出21点所有可能的Black Jack牌型
要求:使用数组存储所有Black Jack 牌型,然后输出(任意一张A + 10/J/Q/K即构成Black Jack牌型)
实现程序如下:
#include <iostream>
#include <string>
using namespace std;
int main(){
string A[4] = {"0x01","0x02","0x03","0x04"}; //分别表示黑桃A、红桃A、梅花A、方片A
string B[16] = {"0x0A","0x0B","0x0C","0x0D","0x1A","0x1B","0x1C","0x1D","0x2A","0x2B","0x2C","0x2D","0x3A","0x3B","0x3C","0x3D"}; //分别表示黑桃10 ... 方片K
string C[2][64];
int n = 0;
for(int j=0; j<4; j++){
for(int k=0; k<16; k++){
C[0][n] = A[j];
C[1][n] = B[k];
n++;
}
}
cout<<"所有可能的Black Jack牌型如下:"<<endl;
for(int i=0; i<64; i++){
if(i%4 == 0){
cout<<endl;
}
cout<<C[0][i]<<" "<<C[1][i]<<endl;
}
return 0;
}
总结:很久没写代码了,一开始就出错
例如:使用sizeof(A)去做循环
for(int i=0; i<sizeof(A); i++){//此写法错误,sizeof返回的是一个对象或类型所占的内存字节数
...
}
//如果一定要用sizeof函数,应该如下调用
for(int i=0; i<sizeof(A)/sizeof(A[0]); i++){//此写法也只限于A数组中每个元素占内存字节数相同时才不会出错
...
}