cpp: pointer

 指针读二维数组

1
2
3
4
5
6
7
8
9
int arr[3][4] = { {14,2,3,14},{14,5,6,7} ,{18,9,10,11} };
int* p;
p = arr[0];
for (int i = 0; i < sizeof(arr) / sizeof(int); i++)
{
    cout <<"\t"<< &arr[i] << endl;
    //p = arr[i];
    cout << *p++ << endl;
}

  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
int* t;
t = &arr[0][0];
for (int kk = 0; kk < 3; kk++)
{
 
    for (int Column = 0; Column < (sizeof(arr[kk]) / sizeof(arr[0][kk])); Column++)
    {
        cout << *t++ << endl;
    }
}
int(*pp)[4]; //Column 4
int i, j;
for (i = 0; i < 3; i++)
{
    pp = &arr[i];
    cout << "Row" << i << ":";
    for (j = 0; j < 4; j++)
        cout << "\t" << *(*pp + j);
    cout << endl;
}
 
std::vector<int> v {3, -4, 2, -8, 15, 267};
 
auto print = [](const int& n) { std::cout << n << ' '; };
 
std::cout << "before:\t";
std::for_each(v.cbegin(), v.cend(), print);
std::cout << '\n';
 
// increment elements in-place
std::for_each(v.begin(), v.end(), [](int& n) { n++; });
 
std::cout << "after:\t";
std::for_each(v.cbegin(), v.cend(), print);
std::cout << '\n';
 
struct Sum
{
    void operator()(int n) { sum += n; }
    int sum{ 0 };
};
 
// invoke Sum::operator() for each element
Sum s = std::for_each(v.cbegin(), v.cend(), Sum());
std::cout << "sum:\t" << s.sum << '\n';

  

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/// <summary>
/// 整数转二进制
/// </summary>
/// <param name="n">整数</param>
/// <param name="len">显示几位,如5位</param>
/// <returns></returns>
string  GeovinDu::DecimalToBinary(int n, int len) {
    string ss = "";
    int binaryNumber[100], num = n;
    int i = 0;
    while (n > 0) {
        binaryNumber[i] = n % 2;
        n = n / 2;
        i++;
    }
    //cout << "Binary form of " << num << " is ";
    std::string new_string = "";
    for (int j = i - 1; j >= 0; j--)
        ss = ss + to_string(binaryNumber[j]);
    if (ss.length() < len)
        new_string = std::string(len - ss.length(), '0') + ss;
    else
        new_string = ss;
    return new_string;
}

  

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
/// <summary>
  /// 获取二进制字符串含“1”字符占位的序号集合(从零开始的连续序号)
  /// </summary>
  /// <param name="str">二进制字符串集合</param>
  /// <param name="len">第几位</param>
  /// <returns></returns>
  vector<int> GeovinDu::getOneInt(vector <string> str,int len)
  {
 
      vector<int> nn;
      int k = 0;
      for (string ss : str)
      {
          
          if (ss.substr(len, 1) == "1")
          {
              nn.push_back(k);
          }
          k++;
      }
      return nn;
  }
 
  /// <summary>
  /// 读心术
  /// </summary>
  void GeovinDu::displayReadHeart()
  {
      int number = 0;
      char input;
      cout << "***" << endl;
      int num[32];
      for(int i=0;i<=31;i++)
      {
          num[i] = i;
          
      }
      vector<string> strnum;
      for (int i = 0; i <= 31; i++)
      {
          string ssd = bitset<5>(num[i]).to_string();
          strnum.push_back(DecimalToBinary(num[i],5));         
      }
      int i = 0;
      for (string s : strnum)
      {
          cout <<i<<":"<< s << endl;
          i++;
      }
      vector<int> nn;
      nn = getOneInt(strnum, 0);
      string str = "";
      for (int d : nn)
      {
         // cout << d << endl;
          str = ""+str + to_string(d)+"  ";
      }
 
      cout << "猜出心中所想数" << endl;
      cout << str << endl;
      cout << "请你选好之后,输入Y即可正式进入猜数游戏" << endl;
      cin >> input;
      if (input == 'Y' || input == 'y')
      {
          number = 16;
      }
      nn = getOneInt(strnum, 1);
      str = "";
      for (int d : nn)
      {
         // cout << d << endl;
          str = "" + str + to_string(d) + " ";
      }
      cout << str << endl;
      cout << "1请你回答是否有猜中数YES和NO,输入Y或N即可" << endl;
      cin >> input;
      if (input == 'Y' || input == 'y')
      {
          number += 8;
      }
      nn = getOneInt(strnum, 2);
      str = "";
      for (int d : nn)
      {
          // cout << d << endl;
          str = "" + str + to_string(d) + " ";
      }
      cout << str << endl;
      cout << "2请你回答是否有猜中数YES和NO,输入Y或N即可" << endl;
      cin >> input;
      if (input == 'Y' || input == 'y')
      {
          number += 4;
      }
      nn = getOneInt(strnum, 3);
      str = "";
      for (int d : nn)
      {
          // cout << d << endl;
          str = "" + str + to_string(d) + " ";
      }
      cout << str << endl;
      cout << "3请你回答是否有猜中数YES和NO,输入Y或N即可" << endl;
      cin >> input;
      if (input == 'Y' || input == 'y')
      {
          number += 2;
      }
      nn = getOneInt(strnum, 4);
      str = "";
      for (int d : nn)
      {
          // cout << d << endl;
          str = "" + str + to_string(d) + " ";
      }
      cout << str << endl;
      cout << "4请你回答是否有猜中数YES和NO,输入Y或N即可" << endl;
      cin >> input;
      if (input == 'Y' || input == 'y')
      {
          number += 1;
      }
 
      cout << "猜中你想的数:" << number << endl;
 
  }

  

 

 

 

 

 

 

posted @   ®Geovin Du Dream Park™  阅读(8)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示