C++语言程序设计(第六单元随堂笔记数组)

清华大学C++语言程序设计(第六单元随堂笔记数组)

数组

概念:数组是具有一定顺序关系的若干对象的集合体,组成数组的对象称为该数组的元素。

数组的声明

数据类型 标识符 [常量表达式1] [常量表达式2]········;

记一个错误解决的方法:

解决VS编译错误MSB375,MSB3754,MSB3755,MSB4036

解决VS编译错误MSB375,MSB3754,MSB3755,MSB4036

例6-1数组的定义和使用

#include<iostream>
using namespace std;
int main() {
	int a[10], b[10]; //定义两个数组
	for (int i = 0; i < 10; i++) {   //将a[i]数组进行i*2-1的计算,并且把他倒序赋值个b数组
		a[i] = i * 2 - 1;
		b[10 - i - 1] = a[i];
	}
	//以下是C++11 里面的for的新写法,表示依次取出字符串数组result中的元素
	for (const auto &e : a) {  //将数组的每个元素都循环下来
		cout << e << " ";
	}

}

在这里插入图片描述

数组的存储和初始化

数组作为函数的参数

数组元素和数组名都可以作为函数的参数以实现函数间数据的传递和共享。

##使用数组名传递数据时候,传递的是地址。##

使用数组名作为函数参数

#include<iostream>
using namespace std;
int sum(int list[], int num) {
//这个实测函数中不能使用c++11新特性中将整个列表循环下来(可能是因为我太菜)
	if (num == 0) {
		return list[0];
	}
	else {

		return sum(list, num - 1) + list[num];
	}
}
int main() {
	int list[5] = { 1,2,3,4,5 };
	cout<<sum(list, 5);
}

对象数组

定义一个储存一系列点的数组

#include<iostream>
using namespace std;
class Point {
public:
	Point(int x1, int y1) {
		x = x1;
		y = y1;
	}
	~Point() { 
		
		cout << x <<","<< y<<"已经被删除"<<endl; };  //析构函数无论写不写都需要
	int getx(Point &p1) {
		return p1.x;
	}
	int gety(Point &p1) {
		return p1.y;
	}
	void showpoint() {
		cout << "("<<x<<","<<y << ")";
	}
private:
	int x;
	int y;
};
int main() {
	Point p_List[2] = { Point(1,2),Point(2,4) };
	int num = 0;
	for (auto &e : p_List) {
		p_List[num].showpoint();
		num++;
		e.showpoint();
	}

	
}

在这里插入图片描述

数组综合实例

#include<iostream>
#include<math.h>
using namespace std;
class Point {
public:
	Point(float x1, float y1) {
		x = x1;
		y = y1;
	}
	float getx() {
		return x;
	}
	float gety() {
		return y;
	}

private:
	float x;
	float y;
};
class line {
public:
	line(Point list_p[],int num) {
		
		float sum1 = 0;
		float sum2 = 0;
		for (int i = 0; i < num; i++) {
			sum1 += list_p[i].getx();
			sum2 += list_p[i].gety();
		}
		ave_x = sum1 / num;
		ave_y = sum2 / num;
		double l_xy = 0;
		double l_xx = 0;
		double l_yy = 0;
		for (int i = 0; i < num; i++) {
			l_xy += (list_p[i].getx() - ave_x)*(list_p[i].gety() - ave_y);
			l_xx += (list_p[i].getx() - ave_x)*(list_p[i].getx() - ave_x);
			l_yy += (list_p[i].gety() - ave_y)*(list_p[i].gety() - ave_y);
		}
		a = l_xy / l_xx;
		b = ave_y - a*ave_x;
		lineFitvalue = l_xy / (sqrt(l_xx*l_yy));

	}
	void show() {
		cout << "直线方程为:y=" << a << "*x+" << b << endl;
		cout << "相关系数为:" << lineFitvalue << endl;;
	}
	float geta() { return a; }
	float getb() { return b; }
	float getave_x() { return ave_x; }
	float getave_y() { return ave_y; }
private:
	float a;
	float b;
	float ave_x;
	float ave_y;
	float lineFitvalue;
	
};
int main() {
	Point list_p[10] = {
		Point(6,10),
		Point(14,20),
		Point(26,30),
		Point(33,40),
		Point(46,50),
		Point(54,60),
		Point(67,70),
		Point(75,80),
		Point(84,90),
		Point(100,100)
	};
	line linez(list_p, 10);
	linez.show();
}

运行结果:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值