天天看点

《C++程序设计》 Chapter 7:一维数组7.1 introduction NULL7.2 数组基本要素 NULL7.3 问题:乐透数 NULL7.4 问题:扑克牌7.5 给函数传数组7.6 防止数组参数变化7.7 从函数返回数组7.8 问题:数出每个字符出现的次数7.9 寻找数组7.10 冒泡排序7.11 C-string

文章目录

  • 7.1 introduction NULL
  • 7.2 数组基本要素 NULL
  • 7.3 问题:乐透数 NULL
  • 7.4 问题:扑克牌
  • 7.5 给函数传数组
  • 7.6 防止数组参数变化
  • 7.7 从函数返回数组
  • 7.8 问题:数出每个字符出现的次数
  • 7.9 寻找数组
  • 7.10 冒泡排序
  • 7.11 C-string
    • itoa失效时的替代品: `sprintf`

7.1 introduction NULL

7.2 数组基本要素 NULL

7.3 问题:乐透数 NULL

7.4 问题:扑克牌

  1. problem:

    Creat a program that will randomly select four cards from a deck of 52 cards.
  2. 效果:
    《C++程序设计》 Chapter 7:一维数组7.1 introduction NULL7.2 数组基本要素 NULL7.3 问题:乐透数 NULL7.4 问题:扑克牌7.5 给函数传数组7.6 防止数组参数变化7.7 从函数返回数组7.8 问题:数出每个字符出现的次数7.9 寻找数组7.10 冒泡排序7.11 C-string
  3. solution:

#include <iostream>
#include <ctime>
#include <string>
#include <cstdlib>

using namespace std;

int main(){
    const int numberOfCards = 52;
    int deck[numberOfCards];
    string suits[]={"Spades♠️","Heartst♥️","Diamondse♦️","Clubs♣️"};
    string ranks[]={"Ace","2","3","4","5","6","7","8","9","10","Jack","Queen","King"};
    
    for(int i=0;i<numberOfCards;i++){
        deck[i]=i;
    }
    
    srand(time(0));
    for(int i=0;i<numberOfCards;i++){
        int index = rand() % numberOfCards;
        int temp = deck[i];
        deck[i] = deck[index];
        deck[index] = temp;
    }
    
    for(int i=0;i<4;i++){
        string suit = suits[deck[i]/13];
        string rank = ranks[deck[i]%13];
        cout<<"Card number "<<deck[i]<<" : "<<rank<<" of "<<suit<<endl;
    }
    return 0;
}



           

7.5 给函数传数组

给函数传数组,不需要使用&关联,因为invoke的函数和原函数指的就是同一个array,但变量就不一样了,变量需要&。

7.6 防止数组参数变化

7.7 从函数返回数组

7.8 问题:数出每个字符出现的次数

7.9 寻找数组

7.10 冒泡排序

7.11 C-string

  1. 定义:以

    \0

    结尾的字符数组。
  2. C-string的输入:

    cin.getline(变量, size, '\n')

  3. 294页的Table 7.1 中给出了C-strings的函数
  4. 头文件

    cstring

  5. atoi, atof, itoa, atol

    都定义在

    cstdlib

  6. ⚠️特别提示:

字符数组(c-string)初始化时,数组大小一定要大于字符串长度+1,否则编译错误。

因为字符串数组最后有\0。

itoa失效时的替代品:

sprintf

  1. 头文件

    stdio.h

  2. 使用:
    《C++程序设计》 Chapter 7:一维数组7.1 introduction NULL7.2 数组基本要素 NULL7.3 问题:乐透数 NULL7.4 问题:扑克牌7.5 给函数传数组7.6 防止数组参数变化7.7 从函数返回数组7.8 问题:数出每个字符出现的次数7.9 寻找数组7.10 冒泡排序7.11 C-string
  3. sprintf格式的规格如下所示。[]中的部分是可选的。
%[指定参数][标识符][宽度][.精度]指示符
  1. [指定参数] 处理字符方向。负号时表示从后向前处理。
  2. [标识符] 填空字元。 0 的话表示空格填 0;空格是内定值,表示空格就放着。
  3. [宽度]字符总宽度。为最小宽度。
  4. [精度] 精确度。指在小数点后的浮点数位数。
  5. 转换字符

    %% 印出百分比符号,不转换。

    %c 字符输出到缓冲区,不转换。

    %d 整数转成十进位。

    %f 倍精确度数字转成浮点数。

    %o 整数转成八进位。

    %s 字符串输出到缓冲区,不转换。

    %x 整数转成小写十六进位。

    %X 整数转成大写十六进位。

  1. 更多信息参考链接
c++

继续阅读