想从新学C++,于是把那本<<C++大学教程>>从头来看。
运行第5章的洗牌例子,编译出了几个异常,如题,还有time.h这个头文件。
fatal error C1083: Cannot open include file: 'stdlib': No such file or directory
原来在C++里面要把stdlib改成cstdlib, time改成ctime。
结果在使用setW()方法的时候,又异常。原来要这样:std::setw(int);w要小写了。
把编译通过的源程序记录下来吧,方便以后回头看:
#include<iostream>
#include<iomanip>
#include<cstdlib>
#include<ctime>
using namespace std;
void shuffle(int [][13]);
void deal(const int [][13],const char *[],const char *[]);
int main(){
const char *suit[4] = {"Hearts","Diamonds","Clubs","Spades"};
const char *face[13] = {"Ace","Deuce","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King"};
int deck[4][13] = {0};
srand(time(0));
shuffle(deck);
deal(deck,face,suit);
return 0;
}
void shuffle(int wDeck[][13]){
int row,column;
for(int card = 1;card <= 52;card ++){
do{
row = rand() % 4;
column = rand() % 13;
}while(wDeck[row][column] != 0);
wDeck[row][column] = card;
}
}
void deal(const int wDeck[][13],const char *wFace[],const char *wSuit[]){
for(int card = 1;card <= 52;card ++){
for(int row = 0;row <= 3;row ++){
for(int column = 0;column <= 12;column ++){
if(wDeck[row][column] == card){
cout << std::setw(5) << setiosflags(ios::right)
<< wFace[column] << " of "
<< setw(8) << setiosflags(ios::left)
<< wSuit[row]
<< (card % 2 == 0 ? '/n':'/t');
}
}
}
}
}