C++ Primer Plus 第四章

1.创建数组 typeName arrayName(arraySize)
2.不会检查数组下标是否有效
3.不能将一个数组赋值给一个数组
4.STL提供了vector,array两种数组,替代传统的
5.使用空白字符连接的两个字符串,会自动连接成为一个字符串
6.strlen()不计算字符串后的\0
7.cin使用空白字符(空格、制表符、换行符)来确定字符串的结束位置
8.cin.getline(arrayName,arraySize),会丢弃换行符;cin.get(arrayName,arraySize),换行符留在输入队列
9.输入有错误时,会设置失效位failbit,后面的输入会被阻止。使用cin.clear();可恢复输入
10.使用string ,包含<string>,string对象可以互相赋值,可以使用+连接两个string对象
11.C-风格字符串使用<cstring>,<string.h>头文件 strcpy,strcat,strncpy,strncat
12.元素字符串cout<<R"(AaBcCc\\\a\a\b\v\r"")",C++11才有
13.同一种结构可以使用 = 来互相赋值
14.C++的结构可以包含成员函数,只是一般用于类中
15.结构数组,初始化方式
{
{初始化1},{初始化2},...
}
16.句点运算符可以访问结构的成员
17.共用体(联合) union声明类似于结构,共享一块内存,常用于节省内存
18.枚举 enum,声明类似于结构,事实上是0 - n整数的别名,枚举量
enum enumName(变量1,变量2,...)
19.指针是一个变量,存储的是值的地址,而不是指本身
20.*为间接值或解除引用运算符
21.指针是复合类型,指针要初始化为一个确定的地址,没有则为NULL
22.使用new,在运行阶段非配未命名的内存,使用指针来访问。C有malloc()类似
23.使用delete释放new分配内存,可以对空指针使用delete
24.C++将数组名解析成地址,数组名是常量。对指针进行加减操作,指针移动n * sizeof(指针指向类型)
25.自动变量存储在栈中,后进先出LIFO策略,静态存储,在程序的整个生命周期存在;动态存储,管理在内存池,C++称为堆heap,自由存储空间free store
26.->间接成员运算符
27.使用vector,声明:vector<typeName> vt(n_elem) n_elem可以是整型变量或常量 使用运行时设置,使用堆
28.array<typeName,n_elem> arr 使用栈,编译阶段确定,长度固定,用于替代传统的数组方式
29.使用vector、array,可以使用成员函数at(下标),来访问数组的值
30.vector是动态数组的替代品;array是定长数组的替代品;

4.12 复习题 有答案,就不写了。

4.23编程练习
1.
#include <iostream>
#include <string>
using namespace std;
int main()
{
 string fname;
 cout<<"what is your first name?";
 getline(cin,fname);
 cout<<"what is your last name?";
 string lname;
 getline(cin,lname);
 cout<<"what letter grade do you deserve?";
 char ch;
 cin>>ch;
 cout<<"what is your age?";
 int a;
 cin>>a;
 cout<<"Name:"<<lname<<","<<fname<<endl
  <<"Grade:"<<ch<<endl
  <<"Age:"<<a<<endl;
 while(1);//让dos页面不关闭
 return 0;
}

2.不写了

3,4
#include <iostream>
#include <string>
using namespace std;
int main()
{
 string fname;//char fname[10];
 cout<<"Enter your first name:";
 getline(cin,fname);//cin.getline(fname,10);
 cout<<"Enter your last name:";
 string lname;//char lname[10];
 getline(cin,lname);//cin.getline(lname,10);
 cout<<"Here's the information in a single string:"<<lname<<", "<<fname<<endl;
 while(1);//让dos页面不关闭
 return 0;
}

5.
#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
 string brand;
 float weight;
 int calorie;
};

int main()
{
 CandyBar snack = {"Mocha Munch",2.3,350};
 string blank = " ";
 cout<<snack.brand<<blank<<snack.weight<<blank<<snack.calorie<<endl;
 while(1);//让dos页面不关闭
 return 0;
}

6.
#include <iostream>
#include <string>
using namespace std;

struct CandyBar
{
 string brand;
 float weight;
 int calorie;
};

int main()
{
 CandyBar arraysnack [3] ={
  {"Mocha Munch",2.3,350},
  {"xiao huang",2.3,350},
  {"xiao dan",2.3,350},
 };
 string blank = " ";
 for(int i = 0;i<3;i++){
 cout<<arraysnack[i].brand<<blank<<arraysnack[i].weight<<blank<<arraysnack[i].calorie<<endl;
 }
 while(1);//让dos页面不关闭
 return 0;
}
7-9 省略

10.
#include <iostream>
#include <string>
#include <array>
using namespace std;


int main()
{
 array<double,3> vt;
 int i;
 for (i = 0;i<3;i++)
 {
  cin>>vt[i];
 }
 cout<<"跑了 "<<i<<"平均成绩为:"<<(vt[0]+vt[1]+vt[2])/3<<endl;
 while(1);//让dos页面不关闭
 return 0;
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值