C++程序设计实践指导——第一章 简单编程 (1)

第一章 简单编程 (1)
1.1删除序列中相同的数
有16个数|1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10|,已按由小到大的顺序排好,存储 在数组a中。试建立一个类ARR,完成删除数组中相同的数,经删除后,数组a中的内容 为 |1,2,3,4,5,6,7,8,9,10

/*C++程序设计实践指导 
第一章 简单编程 
1.1删除序列中相同的数*/
/*有16个数|1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10|,已按由小到大的顺序排好,存储 在数组a中。试建立一个类ARR,完成删除数组中相同的数,经删除后,数组a中的内容 为 |1,2,3,4,5,6,7,8,9,10*/
#include<iostream>
#include<iomanip>
using namespace std;  //使用标准命名空间std 
class ARR{
	int m;        //数组元素实际个数 
	int a[100];  //存放原始数组及结果数组 
	public:
		ARR(int x[],int size){   //构造函数,用参数 size 初始化 m,用参数 x 初始化 a 
			m=size;
			for(int i=0;i<m;i++){
				a[i]=x[i];
			}
	    }
	    void delsame();  //完成数组 a中相同元素的删除工作 
	    void show(){     // 将数组以每行5个数的形式输出到屏幕上 
	    	cout<<setiosflags(ios::left);
	    	for(int i=0;i<m;i++){
	    		cout<<setw(3)<<a[i];
	    		if((i+1)%5==0)cout<<endl;
			}
				
			cout<<resetiosflags(ios::left);
			cout<<endl;
		}
};
void ARR::delsame(){   //在类的外部定义函数, //完成数组 a中相同元素的删除工作 
	int i,j;
	for(i=0;i<m-1;i++){
		if(a[i]==a[i+1]){   // 如果前后相邻的两个元素相同,用这两个元素后的元素覆盖... 
		                   //后面那个相同元素。 
			for(j=i+1;j<m-1;j++)a[j]=a[j+1];//依次向前覆盖,直到数组结束。 
            m--;//删除一个元素后,元素个数减 1 
			i--;//有可能出现连续多个相同的数,所以应继续判断当前元素 
		}
	}
}
int main(){
	int b[]={1,2,2,3,4,4,5,6,6,7,8,8,8,9,10,10};
	ARR v(b,sizeof(b)/sizeof(b[0]));/*定义一个ARR类的对象v,用b及数组元素的个数初始化该对象。*/ 
	v.show();//显示原数组 
	v.delsame();
	v.show();//显示结果数组 
	return 0;
} 

1.2 二维数组的操作运算
编写一个通用程序,求出二维数组(行数和列数必须相等)的非对角线元素之和,即 求两条对角线之外的元素之和。例如,数组值如下,其非对角线元素之和为8。
在这里插入图片描述
试建立一个类matrix,用于完成该功能。

#include<iostream>
using namespace std;
/**/
/*将以上以二维数组为数据结构的程序实现改写为以单向链表结构来表示矩阵,可定义数据结构体,如下所示:*/
struct linkNode
{
	int row;//存放二维数组的行号 
	int column;//存放二维数组的列号
	int data;//存放二维数组对应行号及列号中的数
	linkNode *next; //指向下一个结点的指针
};


class Matrix
{
public:
	Matrix(int x[][40],int k);//构造函数,用k初始化数据成员m,用数组X初始化数组a
	~Matrix() {};
	void process();//完成求和
	void show();//按二维方式输出数组,并输出求和结果
private:
	int m;//二维数组的行数和列数相等,即二维数组是m行m列的
	int sum;//存放非对角线元素之和
	int a[40][40];//用于存放二维数组
};

Matrix::Matrix(int x[][40], int k)
{
	m = k;
	sum = 0;
	for (int i = 0; i < m; i++)
	{
		for (int j = 0; j < m; j++)
		{
			a[i][j] = x[i]
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
C++程序设计 扫描版,谭浩强编著,清华大学出版社,2004年6月第一版。 注意:其他两卷在本网页下面我的其它资源里可以找到 内容简介 C++是近年来国内外广泛使用的现代计算机语言,它既支持面向过程的程序设计,也支持基于对象和面问对象的程序设计。国内许多高校已陆续开设了C++程序设计课程。但是由于C++涉及概念很多,语法比较复杂,内容十分广泛使不少人感到学习难度较大,难以人门。 本书作者深入调查了我国大学的程序设计课程的现状和发展趋势参阅了国内外数十种有关C++的教材,认真分析了学习者在学习过程中遇到的困难,研究了初学者的认识规律。在本书中做到准确定位,合理取舍内容,设计了读者易于学习的教材体系,并且以通俗易懂的语言化解了许多复杂的概念,大大减少了初学者学习C++的困难。 考虑到许多读者在学习C++前未学过其他语言本书把入门起点降低,读者不需要具备C语言的基础。本书包括14章,分为4 篇:基本知识面向过程的程序设计;基于对象的程序设计;面向对象的程序设计。本书内容全面,例题丰富,概念清晰,循序渐进,易于学习。 本书是依据ANSI C++标准进行介绍的,引导读者从开始就按标准C++的规定编程。本书配有两本辅导教材,即《C++程序设计题解与上机指导》 和《C++编程实践指导》。 本书是大学各专业学生学习C++的基础教材,也是适于初学者学习的教材。即使没有教师讲授,读者也能看懂本书的大都分内容

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值