好文档 - 专业文书写作范文服务资料分享网站

6 第6章 数组、指针与字符串(一) 

天下 分享 时间: 加入收藏 我要投稿 点赞

主函数中初始化一个二维数组,表示—个矩阵,并将每个元素都输出,然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第—个元素中.返回主函数之后输出各行元素的和。

//例6_2 使用数组名作为函数参数.cpp(P193) #include using namespace std;

void rowSum(int a[][4], int nRow) {//计算二维数组A每行元素的值的和,nrow是行数

for (int i = 0; i < nRow; i++) { for(int j = 1; j < 4; j++) a[i][0] += a[i][j]; } }

int main() {//主函数

int table[3][4] = { {1, 2, 3, 4}, {2, 3, 4, 5}, {3, 4, 5, 6} };//声明并

初始化数组

for (int i = 0; i < 3; i++) {//输出数组元素 for (int j = 0; j < 4; j++)

cout << table[i][j] << \; cout << endl; }

rowSum(table, 3);//调用子函数,计算各行和

for (int i = 0; i < 3; i++) //输出计算结果

cout << \ << i << \ << table[i][0] << endl;

return 0; }

运行结果:

6.1.4 对象数组

对象数组的定义与访问 ● 定义对象数组

类名 数组名[元素个数]; ● 访问对象数组元素 通过下标访问 数组名[下标].成员名 对象数组初始化

● 数组中每一个元素对象被创建时,系统都会调用类构造函数初始化该对象。 ● 通过初始化列表赋值。

例:Point a[2]={Point(1,2),Point(3,4)};

● 如果没有为数组元素指定显式初始值,数组元素便使用默认值初始化(调用默认构造函数)。

数组元素所属类的构造函数

● 元素所属的类不声明构造函数,则采用默认构造函数。

● 各元素对象的初值要求为相同的值时,可以声明具有默认形参值的构造函数。 ● 各元素对象的初值要求为不同的值时,需要声明带形参的构造函数。 ● 当数组中每一个对象被删除时,系统都要调用一次析构函数。 例6-3 对象数组应用举例

//Point.h

#ifndef _POINT_H #define _POINT_H

class Point {//类的定义

public: //外部接口

Point();

Point(int x, int y); ~Point();

void move(int newX,int newY); int getX() const { return x; } int getY() const { return y; } static void showCount();//静态函数成员

private://私有数据成员

int x, y;

};

#endif //_POINT_H 防止头文件被加载两次或以上

//Point.cpp

#include #include \ using namespace std;

Point::Point() { x = y = 0;

cout << \ << endl; }

Point::Point(int x, int y) : x(x), y(y) { cout << \ << endl; }

Point::~Point() {

cout << \ << endl; }

void Point::move(int newX,int newY) {

cout << \ << newX << \ << newY << \ << endl;

x = newX; y = newY; }

//例6_3 对象数组应用举例.cpp(P194) #include \ #include using namespace std;

int main() {

cout << \ << endl; Point a[2];

for(int i = 0; i < 2; i++) a[i].move(i + 10, i + 20);

cout << \ << endl;

return 0; }

运行结果:

6.1.5 基于范围的for循环

int main() {

int array[3] = {1,2,3}; int *p;

for(p = array; p < array + sizeof(array) / sizeof(int); ++p) {

*p += 2;

std::cout << *p << std::endl; }

return 0; }

int main() {

int array[3] = {1,2,3}; for(int & e : array)

{

e += 2;

std::cout<

return 0; }

例6_4 利用Point类进行点的线性拟合

//例6_4 利用Point类进行点的线性拟合.cpp(P196) //Point.h

#ifndef _POINT_H #define _POINT_H

class Point {

//Point类的定义

public: //外部接口

Point(float x = 0, float y = 0) : x(x), y(y) { } float getX() const { return x; } float getY() const { return y; }

private: //私有数据成员 float x, y; };

#endif //_POINT_H

//例6_4 利用Point类进行点的线性拟合.cpp(P196) #include \ #include #include

using namespace std;

//直线线性拟合,points为各点,nPoint为点数

float lineFit(const Point points[], int nPoint) { float avgX = 0, avgY = 0;

float lxx = 0, lyy = 0, lxy = 0;

for(int i = 0; i < nPoint; i++) { //计算x、y的平均值

avgX += points[i].getX() / nPoint; avgY += points[i].getY() / nPoint;

6 第6章 数组、指针与字符串(一) 

主函数中初始化一个二维数组,表示—个矩阵,并将每个元素都输出,然后调用子函数,分别计算每一行的元素之和,将和直接存放在每行的第—个元素中.返回主函数之后输出各行元素的和。//例6_2使用数组名作为函数参数.cpp(P193)#includeusingnamespacestd;voidrowSum(inta[][4]
推荐度:
点击下载文档文档为doc格式
99u461vpas6x2111f20r4n7xz5ee5l00biq
领取福利

微信扫码领取福利

微信扫码分享