Code
2.6 custom data structure
In bookstore.cpp:
#include<iostream>
#include"my_sales_data.h"
#include<string>
int main()
{
my_sales_data data1, data2;
//read informations of data1 and data2
double price = 0;
std::cin >> data1.bookNo >> data1.units_sold >> price;
data1.revenue = data1.units_sold * price;
std::cin >> data2.bookNo >> data2.units_sold >> price;
data2.revenue = data2.units_sold * price;
//check the bookNo of data1 and data2. if same, write their sum
if (data1.bookNo == data2.bookNo)
{
unsigned sum_sold = 0;
double avg_price = 0.0;
sum_sold = data1.units_sold + data2.units_sold;
avg_price = (data1.revenue + data1.revenue) / sum_sold;
std::cout << data1.bookNo << " " << sum_sold << " " << avg_price << std::endl;
}
else
{
std::cerr << "could't sum, besuase the bookNo not same" << std::endl;
}
return 0;
}
In my_sales_data.h:
#ifndef MY_SALES_DATA_H
#define MY_SALES_DATA_H
#include<string>
struct my_sales_data
{
std::string bookNo;
unsigned units_sold = 0;
double revenue = 0.0;
};
#endif
Homework
Test 2.1
short, int, long, long long的区别:
short:它是一种短整数类型,通常占用2个字节(16位),范围是-32768到32767(有符号short)或0到65535(无符号short)。
int:这是默认的整数类型,通常占用4个字节(32位),范围是-2147483648到2147483647(有符号int)或0到4294967295(无符号int)。
long:这是长整数类型,通常占用4个字节(32位),其范围与int相同。在某些编译器中,long可能与int大小相同,但在其他编译器中,它可能会占用更多字节以提供更大的范围。
long long:这是cpp11新增的整数类型,通常占用8个字节(64位),范围是-9223372036854775808到9223372036854775807(有符号long long)或0到18446744073709551615(无符号long long)。
float和double的区别:
float:float类型通常占用4个字节(32位),用于表示单精度浮点数。它提供大约6-7位的有效数字,并且可以表示的范围较小。
double:double类型通常占用8个字节(64位),用于表示双精度浮点数。它提供约15-16位的有效数字,比float类型的精度更高,并且可以表示的范围更广。
Test 2.8
std::cout << "\62\115\n" ;
std::cout << "\62\t\115\n" ;
Test 2.34
#include<iostream>
int main()
{
int i = 0, &r = i;
// a是i的引用
auto a = r;
const int ci = i, & cr = ci;
// b是int
auto b = ci;
// c是int
auto c = cr;
// d是int*
auto d = &i;
// e是const int *
auto e = &ci;
// f是const int
const auto f = ci;
//g是ci的引用
auto &g = ci;
//a = 42, b = 42, c = 42, d = 42, e = 42, g = 42
std::cout << "a before assignment: " << a;
a = 42;
std::cout << " a after assignment: " << a << std::endl;
std::cout << "b before assignment: " << b;
b = 42;
std::cout << " b after assignment: " << b << std::endl;
std::cout << "c before assignment: " << c;
c = 42;
std::cout << " c after assignment: " << c << std::endl;
return 0;
}