b-day1 C++ 基本语法

联合体

code

/* 联合体学习.cpp */
#include <iostream>
using namespace std;

// 定义一个联合体 myun
// 联合体内的所有成员共享同一块内存区域
union myun {
  // 联合体的第一个成员是一个结构体
  struct {
    int x; // 结构体中的第一个整型成员
    int y; // 结构体中的第二个整型成员
    int z; // 结构体中的第三个整型成员
  } u;
  int k; // 联合体的第二个成员是一个整型
} a;

int main() {
  a.u.x = 4; // 给结构体中的 x 成员赋值 4
  a.u.y = 5; // 给结构体中的 y 成员赋值 5
  a.u.z = 6; // 给结构体中的 z 成员赋值 6
  a.k = 0;   // 赋值给整型成员 k,这会覆盖掉结构体中的 x、y、z 的值,因为它们与 k 共享同一块内存

  // 打印输出:结构体成员 x、y、z 和整型成员 k 的值
  printf("%d %d %d %d\n", a.u.x, a.u.y, a.u.z, a.k);
  
  return 0;
}

解释

在这个程序中,输出结果 0 5 6 0 反映了联合体的内存共享特性。具体来说:

a.u.x 的值为 0,这是因为 a.k 被赋值 0,它覆盖了 a.u.x 所在的内存位置。
a.u.y 和 a.u.z 的值依然为 5 和 6,这些值是之前赋的值。
由于 a.k 和 a.u 共享内存,赋值给 a.k 会影响到 a.u.x,而不会影响 a.u.y 和 a.u.z。这表明 a.u.x 和 a.k 占用的是相同的内存位置,而 a.u.y 和 a.u.z 占用的是不同的内存位置。

打印

code

/* 打印练习.cpp */
#include <iostream>
using namespace std;

int main(int argc, char const *argv[]) {
  int i, j, k, f;

  // 打印上半部分的菱形
  for (i = 1; i <= 4; i++) {
    // 打印空格,使菱形居中
    for (j = 1; j <= 30; j++)
      cout << " ";
    
    // 打印左侧的空格
    for (k = 1; k <= 8 - 2 * i; k++)
      cout << " ";
    
    // 打印星号
    for (f = 1; f <= 2 * i; f++)
      cout << '*';
    
    // 换行
    cout << endl;
  }

  // 打印下半部分的菱形
  for (i = 1; i <= 3; i++) {
    // 打印空格,使菱形居中
    for (j = 1; j <= 30; j++)
      cout << " ";
    
    // 打印星号
    for (f = 1; f <= 7 - 2 * i; f++)
      cout << '*';
    
    // 换行
    cout << endl;
  }

  return 0;
}

解释

这个程序输出一个对称的菱形图案。程序分为两个部分:

上半部分的菱形:打印一个顶部宽度逐渐增加的菱形。
下半部分的菱形:打印一个底部宽度逐渐减小的菱形。

注释

/* 注释.cpp */
#include <iostream>

// 另一种注释方法
#if 0
asd
#endif

// 这段代码使用条件编译指令来注释掉一部分代码。
// `#if 0` 和 `#endif` 之间的代码将不会被编译,因为条件为 0(假)。

// 打开注释
// 条件编译指令
#if 1
  // `#if 1` 和 `#endif` 之间的代码将被编译,因为条件为 1(真)。
#endif

计算

code

/* 是否闰年.cpp */
#include <iostream>
using namespace std;

int main(int argc, char const *argv[]) {
  int year; // 存储输入的年份
  bool isLeapYear; // 用于表示该年份是否为闰年

  // 提示用户输入年份
  cout << "Enter the year: ";
  cin >> year; // 读取用户输入的年份

  // 判断是否为闰年
  isLeapYear = (((year % 4 == 0) && (year % 100 != 0)) || (year % 400 == 0));
  // 如果年份能被4整除但不能被100整除,或者能被400整除,则是闰年

  // 根据判断结果输出是否为闰年的信息
  if (isLeapYear) {
    cout << year << " is a leap year" << endl; // 输出闰年信息
  } else {
    cout << year << " is not a leap year" << endl; // 输出非闰年信息
  }
  
  return 0; // 返回0,表示程序正常结束
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值