083-C++

C++数据抽象


#include <iostream>
using namespace std;
 
class Adder{
   public:
      // 构造函数
      Adder(int i = 0)
      {
        total = i;
      }
      // 对外的接口
      void addNum(int number)
      {
          total += number;
      }
      // 对外的接口
      int getTotal()
      {
          return total;
      };
   private:
      // 对外隐藏的数据
      int total;
};
int main( )
{
   Adder a;
   
   a.addNum(10);
   a.addNum(20);
   a.addNum(30);
 
   cout << "Total " << a.getTotal() <<endl;
   return 0;
}


### L1-083 谁能进图书馆 C++ 实现及解析 #### 问题描述 给定两个人的年龄 `age1` 和 `age2`,判断两人是否能够进入图书馆。具体规则如下: - 如果两人的年龄都小于最小入场年龄,则输出 "zhang da zai lai ba" 并分别标记为 N; - 如果其中一人的年龄介于最小入场年龄和最小陪同年龄之间,则该人需有成年人陪同才能进入; - 如果两人都大于等于最小陪同年龄,则可以直接进入。 #### 解析与实现 为了处理上述逻辑,可以通过位运算来简化状态管理。定义一个变量 `state` 来记录每个人的年龄情况,并通过按位或操作更新这个状态。最后根据不同的状态组合输出相应的结果[^4]。 以下是完整的C++代码实现: ```cpp #include <iostream> using namespace std; int main() { int age1, age2; const int min_entry_age = 18; // 假设最小入场年龄为18岁 const int min_parent_age = 30; // 假设最小陪同年龄为30岁 cin >> age1 >> age2; unsigned char state = 0b0000; if (age1 < min_entry_age) state |= 0b0001; // 设置第0位表示第一个孩子未达最低年龄 else if (age1 < min_parent_age) state |= 0b0010; // 设置第1位置表示第一个孩子需要大人陪伴 else state |= 0b0011; // 设置前两位均置高表示第一个孩子可单独入馆 if (age2 < min_entry_age) state |= 0b0100; // 设置第2位表示第二个孩子未达最低年龄 else if (age2 < min_parent_age) state |= 0b1000; // 设置第3位置表示第二个孩子需要大人陪伴 else state |= 0b1100; // 设置中间两位均置高表示第二个孩子可单独入馆 switch (state) { case 0b0000: cout << age1 << "-N " << age2 << "-N\n"; cout << "zhang da zai lai ba\n"; break; case 0b0001: // 只有一个小孩不符合条件的情况... case 0b0100: cout << ((state & 0b0001) ? age1 : age2) << "-N "; cout << ((state & 0b0100) ? age2 : age1) << "-Y\n"; cout << "you ren xu yao dadai\n"; break; default: cout << age1 << "-Y " << age2 << "-Y\n"; cout << "duo kuai le!\n"; break; } return 0; } ``` 这段程序首先读取两个整数作为输入代表两个人的年龄,接着依据设定好的年龄段划分标准设置二进制标志位的状态值,再利用switch-case结构根据不同情形给出适当的信息反馈。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值