数据掌控大师:C++ 数据处理艺术与技巧

简介: 数据掌控大师:C++ 数据处理艺术与技巧

1.1 基本数据类型

1.1.1 整型数据

整型数据是用来表示整数的数据类型,C++提供了不同大小的整型数据类型,包括:


int: 表示存储范围较大的整数,通常为4个字节。

short: 表示存储范围较小的整数,通常为2个字节。

long: 表示存储范围较大的整数,通常为4个字节或8个字节。

long long: 表示存储范围更大的整数,通常为8个字节。

以下是一些整型数据的示例代码:

int a = 10;
short b = 5;
long c = 1000;
long long d = 1234567890;

1.1.2 实型数据

实型数据是用来表示浮点数的数据类型,C++提供了不同大小的实型数据类型,包括:


float: 单精度浮点数,通常为4个字节。

double: 双精度浮点数,通常为8个字节。

long double: 扩展精度浮点数,通常为10个字节或16个字节。

以下是一些实型数据的示例代码:

float x = 3.14;
double y = 2.71828;
long double z = 1.6180339887;

1.1.3 字符型数据

字符型数据用来表示单个字符,C++使用char类型来表示字符,通常为1个字节。


以下是一个字符型数据的示例代码:

char ch = 'A';

1.1.4 bool型数据

bool型数据用来表示真或假的值,C++使用bool类型来表示布尔值,只有两个取值:true和false。


以下是一个bool型数据的示例代码:

bool flag = true;

【例1-1】检测基本数据类型所占的字节数

#include <iostream>
using namespace std;
int main() 
{
    cout << "int: " << sizeof(int) << " bytes" << endl;
    cout << "short: " << sizeof(short) << " bytes" << endl;
    cout << "long: " << sizeof(long) << " bytes" << endl;
    cout << "long long: " << sizeof(long long) << " bytes" << endl;
    cout << "float: " << sizeof(float) << " bytes" << endl;
    cout << "double: " << sizeof(double) << " bytes" << endl;
    cout << "long double: " << sizeof(long double) << " bytes" << endl;
    cout << "char: " << sizeof(char) << " bytes" << endl;
    cout << "bool: " << sizeof(bool) << " bytes" << endl;
    return 0;
}

程序运行结果如下

int:4 bytes
short:2 bytes
long:4 bytes
long long: 8 bytes
float:4 bytes
double: 8 bytes
long double: 8 bytes
char:1 bytes
bool: 1 bytes

1.2 数据存储

1.2.1 标识符

标识符是用来命名变量、函数、类等的名称,C++的标识符由字母、数字和下划线组成,且以字母或下划线开头。


以下是一个标识符的示例代码:

int age = 18;

1.2.2 常量

常量是固定不变的值,可以使用常量来存储不需要修改的数据。

【例1-2】整型常量的表示

int number = 10;

【例1-3】带后缀的整型常量

int decimal = 10;
int octal = 012;  // 八进制常量,以0开头
int hex = 0x1A;  // 十六进制常量,以0x开头

【例1-4】实型常量的表示

float pi = 3.14;

【例1-5】带后缀的实型常量

float radius = 2.5f;  // 单精度浮点数常量,以f或F结尾
double height = 1.8;  // 双精度浮点数常量,默认为双精度

【例1-6】用转义字符输出字符

char ch = '\n';  // 换行符
cout << ch << endl;

【例1-7】输出字符串

string message = "Hello, world!";
cout << message << endl;

【例1-8】输出bool型常量

bool flag = true;
cout << flag << endl;

【例1-9】使用符号常量

const int MAX_NUM = 100;
int numbers[MAX_NUM];

1.2.3 变量

变量是用来存储数据的容器,可以通过给变量赋值来存储不同的数据。


【例1-10】变量的初始化与使用

int age = 18;  // 初始化变量
cout << "My age is " << age << endl;  // 使用变量

1.3 数据处理

1.3.1 算术运算符

【例 1-11】基本算术运算符


#include <iostream>
using namespace std;
int main() 
{
  int a = 10;
  int b = 5;
  int sum = a + b;
  int difference = a - b;
  int product = a * b;
  int quotient = a / b;
  int remainder = a % b;
  cout << "和: " << sum << endl;
  cout << "差为: " << difference << endl;
  cout << "乘积为: " << product << endl;
  cout << "商值为: " << quotient << endl;
  cout << "余数为: " << remainder << endl;
  return 0;
}

程序运行结果如下

和:15
差为:5
乘积为:50
商值为:2
余数为:0

【例 1-12】字符参与算术运算


字符类型可以参与算术运算,它们的ASCII码值在计算过程中被使用。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  char a = 'A';
  int b = 2;
  char c = a + b;
  cout << "c: " << c << endl;
  return 0;
}

程序运行结果如下

c:C

【例 1-13】自增和自减运算符的使用

自增运算符(++)用于增加变量的值,自减运算符(–)用于减少变量的值。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5;
  int b = ++a;
  int c = --a;
  cout << "b: " << b << endl;
  cout << "c: " << c << endl;
  return 0;
}

程序运行结果如下

b: 5
c: 6

【例 1-14】数据类型自动转换


C++中有自动类型转换的规则,当不同类型的表达式混合使用时,编译器会自动进行类型转换。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5;
  double b = 2.5;
  int sum = a + b;
  cout << "和为: " << sum << endl;
  return 0;
}

程序运行结果如下

和为: 7

【例 1-15】求三角形的面积


下面是一个求解三角形面积的示例:


#include <iostream>
using namespace std;
int main() 
{
  double base, height;          //定义三角形底和高的数据类型
  cout << "输入三角形的底: ";
  cin >> base;
  cout << "输入三角形的高: ";
  cin >> height;
  double area = 0.5 * base * height;   //三角形的面积计算公式
  cout << "三角形的面积为: " << area << endl;
  return 0;
}

程序运行结果如下

输入三角形的底:6
输入三角形的高:6
三角形的面积为:18

1.3.2 赋值运算符

除了“=”之外,C++还提供了10个复合赋值运算符+=、-=、*=、/=、%=、<<=、>>=、&=、|=和^=。复合赋值运算符是由赋值运算符之前再加一个双目运算符构成的,其中前5个是算术运算

符与赋值运算符复合而成,后5个是位运算符与赋值运算符复合而成。有关位运算的内容在后面

章节介绍。下面举例说明复合赋值运算符的含义。

a+=10  //手价于a=a+10
a-=10*b+20  //手价于a=a-(10*6+20)
ag=10*b+20  //等价于a=a% (10*b+20)

其他复合赋值运算符的含义与上面的类似,不再一一赘述。

【例 1-16】复合赋值运算符

#include <iostream>
using namespace std;
int main() 
{
  int a, b, c, d;
  a = 10;
  a += 20;        //a=a+20;30
  cout << a << endl;
  a -= 5;         //a=a-5;25
  cout << a << endl;
  a *= 5 + 5;     //a=a*(5+5);250
  cout << a << endl;
  a /= 5 - 3;     //a=a/(5-3);125
  cout << a << endl;
  a %= 5 + 3;     //a=a%(5+3);5
  cout << a << endl;
  return 0;
}

程序运行结果如下

30
25
250
125
5

1.3.3 关系运算符

【例 1-17】求关系表达式的值


关系运算符用于比较两个值,并返回一个布尔值(true或false)。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5;
  int b = 7;
  bool result = a > b;
  cout << "result: " << result << endl;
  return 0;
}

程序运行结果如下

result:0

1.3.4 逻辑运算符

【例 1-18】逻辑运算符应用实例


逻辑运算符用于组合多个关系表达式,并返回一个布尔值。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5;
  int b = 7;
  bool result = (a > 3) && (b < 10);
  cout << "result: " << result << endl;
  return 0;
}

程序运行结果如下

result:1

1.3.5 条件运算符

【例 1-19】求两个数中较大的值和较小的值


条件运算符(? :)是一个三元运算符,可以根据条件的真假选择不同的操作。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5;
  int b = 7;
  int max = (a > b) ? a : b;
  int min = (a < b) ? a : b;
  cout << "max: " << max << endl;
  cout << "min: " << min << endl;
  return 0;
}

程序运行结果如下

max:7
min:5

1.3.6 sizeof 运算符

sizeof运算符用于获取变量或数据类型的大小。下面是一个示例:

#include <iostream>
using namespace std;
int main() 
{
  int a;
  cout << "Size of int: " << sizeof(a) << " bytes" << endl;
  return 0;
}

程序运行结果如下

Size of int: 4 bytes

1.3.7 位运算符

位运算符用于对二进制数进行位操作。下面是一些常用的位运算符:


与运算(&)

或运算(|)

异或运算(^)

左移运算(<<)

右移运算(>>)

这里提供了一些位运算的实例代码:

#include <iostream>
using namespace std;
int main() 
{
  int a = 5; // 二进制表示: 0101
  int b = 3; // 二进制表示: 0011
  cout << "a & b: " << (a & b) << endl; // 与运算: 0001
  cout << "a | b: " << (a | b) << endl; // 或运算: 0111
  cout << "a ^ b: " << (a ^ b) << endl; // 异或运算: 0110
  cout << "a << 1: " << (a << 1) << endl; // 左移运算: 1010
  cout << "b >> 1: " << (b >> 1) << endl; // 右移运算: 0001
  return 0;
}

程序运行结果如下

a & b: 1
a | b: 7
a ^ b: 6
a << 1: 10
b >> 1: 1

1.4 综合实例

【例 1-20】输出一个三位数的个位数、十位数和百位数


下面是一个输出三位数个位数、十位数和百位数的示例:

#include <iostream>
using namespace std;
int main() 
{
  int num;
  cout << "输入一个三位数: ";
  cin >> num;
  int ones = num % 10;
  int tens = (num / 10) % 10;
  int hundreds = num / 100;
  cout << "个位数为: " << ones << endl;
  cout << "十位数为: " << tens << endl;
  cout << "百位数为: " << hundreds << endl;
  return 0;
}

程序运行结果如下


输入三位数:185
个位数为:1
十位数为:8
个位数为:5
相关文章
|
3月前
|
存储 C++
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
【C++】C++ 基于QT实现散列表学生管理系统(源码+数据+课程论文)【独一无二】
|
3月前
|
存储 算法 C++
C++ STL应用宝典:高效处理数据的艺术与实战技巧大揭秘!
【8月更文挑战第22天】C++ STL(标准模板库)是一组高效的数据结构与算法集合,极大提升编程效率与代码可读性。它包括容器、迭代器、算法等组件。例如,统计文本中单词频率可用`std::map`和`std::ifstream`实现;对数据排序及找极值则可通过`std::vector`结合`std::sort`、`std::min/max_element`完成;而快速查找字符串则适合使用`std::set`配合其内置的`find`方法。这些示例展示了STL的强大功能,有助于编写简洁高效的代码。
48 2
|
3月前
|
编译器 C++
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
virtual类的使用方法问题之C++类中的非静态数据成员是进行内存对齐的如何解决
|
3月前
|
存储 数据挖掘 C语言
【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】
【C/C++】C/C++车辆交通违章管理系统(源码+数据文件)【独一无二】
|
3月前
|
存储 安全 数据处理
【C++】C++ 超市会员卡管理系统(面向对象)(源码+数据)【独一无二】
【C++】C++ 超市会员卡管理系统(面向对象)(源码+数据)【独一无二】
|
4月前
|
存储 C++ 容器
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
开发与运维数组问题之C++标准库中提供数据容器作为数组的替代如何解决
54 5
|
4月前
|
设计模式 监控 Go
开发与运维C++问题之C++部分原有的数据发送能力如何解决
开发与运维C++问题之C++部分原有的数据发送能力如何解决
26 1
|
4月前
|
存储 数据格式 运维
开发与运维C++问题之更改数据模型为通用数据结构如何解决
开发与运维C++问题之更改数据模型为通用数据结构如何解决
28 1
|
3月前
|
存储 算法 C++
【C/C++】C/C++ KTV点歌系统设计与实现(源码+数据+报告)【独一无二】
【C/C++】C/C++ KTV点歌系统设计与实现(源码+数据+报告)【独一无二】
|
4月前
|
安全 算法 编译器
C++一分钟之-内存模型与数据竞争
【7月更文挑战第10天】了解C++11内存模型对多线程编程至关重要。它定义了线程间同步规则,包括顺序一致性、原子操作和内存屏障。数据竞争可能导致不确定行为,如脏读和丢失更新。可通过互斥量、原子操作和无锁编程避免竞争。示例展示了`std::mutex`和`std::atomic`的使用。掌握内存模型规则,有效防止数据竞争,确保多线程安全和性能。
57 0