IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 数据结构与算法 -> C++复习题 -> 正文阅读

[数据结构与算法]C++复习题

一、上机题

1.求100内的自然数中奇数之和。

// 解法一

#include<iostream>
using namespace std;
 int main(){
 	int sum=0,i;
 	for(i=1;i<100;i++) {
 		if(i%2 != 0)  sum+=i;
	 }
	 cout<<sum<<endl;
 }

//2500

//解法2

 #include<iostream>
using namespace std;
 int main(){
 	int sum=0,i;
 	for(i=1;i<100;i=i+2) {
 	 sum+=i;
	 }
	 cout<<sum<<endl;
 }

2.求输入两个正整数的最大公约数和最小公倍数

 #include<iostream>
 using namespace std;
 int main(){
 	int m,n,t,r,a,b,y;
 	cin>>m>>n;
 	a=m;
 	b=n;
 	if(m<n) {
 		t=m;
 		m=n;
 		n=t;
	 }
	 while(n!=0){
	 	y=m%n;
	 	m=n;
	 	n=y;
	 }
	 r=a*b/m;
	 cout<<"最大公约数是"<<m<<endl;
	 cout<<"最小公倍数"<<r<<endl;
 }

3.熟悉类的定义和对象的定义。 P126

 #include <iostream>
 using namespace std;
 class Date{
 	public:
 		void SetDate(int y,int m,int d){
 			year=y;month=m;day=d;
		 }
		 int IsLeapYear(){
		 	return year%4==0&&year%100!=0||year%400==0;
		 }
		 int Print(){
		 	cout<<year<<'/'<<month<<'/'<<day<<endl;
		 }
		 private:
		 	int year,month,day;
 };
 int main(){
 	Date d1,d2,*pd=&d2;
 	d1.SetDate(2005,6,24);
 	pd->SetDate(2000,2,8);
 	cout<<d1.IsLeapYear()<<','<<d2.IsLeapYear()<<endl;
 	d1.Print();
 	d2.Print();
 }

/*
0,1
2005/6/24
2000/2/8
*/

4.熟悉类的构造函数和析构函数的使用。 P128

#include <iostream>
 using namespace std;
 class Date1{
 	//说明部分
 	public:
 		Date1(int,int,int);
 		Date1(){
 			cout<<"Default constructor called.\n";
		 }
		 ~Date1(){
		 	cout <<"Dsetructor called.\t"<<day<<endl;
		 }
		 void print();
	private:
		int year,month,day;
 };
 	//实现部分
 	Date1::Date1(int y,int m, int d){
 		year=y;
 		month=m;
 		day=d;
 		cout<<"Constructor callde.\n";
	 }
	 
	 void Date1::print(){
	 	cout << year <<'/'<<month<<'/'<<day<<endl;
	 }
	 
	 int main(){
	 	static Date1 d1;
	 	Date1 d2(2005,6,25);
	 	cout<<"d1 is";
	 	d1.print();
	 	cout<<"d2 is";
	 	d2.print();
	 }
/*
Default constructor called.
Constructor callde.
d1 is0/0/0
d2 is2005/6/25
Dsetructor called.      25
Dsetructor called.      0

*/

5. 熟悉函数重载的使用。 P131页

 #include <iostream>
 using namespace std;
 
 class AB{
 	public:
 		AB(int i,int j){
 			a=i,b=j;
		 }
		 AB(int i){
		 	a=i;b=i*i;
		 }
		 
		 int Add(int x,int y);
		 int Add(int x);
		 int Add();
		 int aout(){
		 	return a;
		 }
		 int bout(){
		 	return b;
		 }
		 private:
		 	int a,b;
 };
 int AB::Add(int x,int y){
 	a=x;b=y;
	return a+b;
 }
 int AB::Add(int x){
 	a=b=x;
 	return a+b;
 }
 int AB::Add(){
	return a+b;
}

int  main(){
	AB a(5,8),b(7);
	cout<<"a="<<a.aout()<<','<<a.bout()<<endl;
	cout<<'b='<<b.aout()<<','<<b.bout()<<endl;
	int i=a.Add();
	int j=a.Add(4);
	int k=a.Add(3,9);
	cout<<i<<endl<<j<<endl<<k<<endl;
}
/*
a=5,8
b=7,49
13
8
12
*/

7.熟悉对象指针的使用。 P152

 #include<iostream>
 using namespace std;
 class A{
 	public:
 		A(int i,int j){
 			x=i;y=j;
		 }
		A(){
			x=y=0;
		}
		void Setxy(int i,int j){
			x=i;y=j;
		}
		void Copy(A *pa);
		void Print(){
			cout <<x<<','<<y<<endl;
		}
	
		
	private: 
		int x,y;
}; 
	void A::Copy(A *pa){
		x=pa->x;y=pa->y;
	}
	void fun(A a1,A *pb){
		a1.Setxy(10,15);
		pb->Setxy(20,25);
	}
	int main(){
		A a(5,8),b;
		b.Copy(&a);
		fun(a,&b);
		a.Print();
		b.Print();
	}
/*
5,8
20,25
*/

8.熟悉对象数组的使用。 P158

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

class Student{
	char name[20];
	long int stuno;
	int score;
	public :
		Student(char name1[]="",long int no=0,int sco=0){
			strcpy(name,name1);
			stuno =no;
			score =sco;
		}
		
	void Setscore(int n){
		score=n;
	}
	
	void Print(){
		cout<<stuno<<'\t'<<name<<'\t'<<score<<endl;
	}
};	

int main(){
	Student stu[5]={ Student("Ma",5019001,94),
	Student("Hu",5019002,95),
	Student("Li",5019003,88)};
	stu[3]=Student("Zhu",5019004,85);
	stu[4]=Student("Lu",5019005,90);
	stu[1].Setscore(98);
	for(int i(0);i<5;i++){
		stu[i].Print();
	}
}

/*
5019001 Ma      94
5019002 Hu      98
5019003 Li      88
5019004 Zhu     85
5019005 Lu      90
*/

二、课后题

2-1 已知:int a=3,b=5;编程计算下列两个代数式的值,并比较它们是否相等。(a+b)2和a2+2ab+b^2

#include <iostream>
using namespace std;
int main(){
	int t,n,a=3,b=5;
	t=(a+b)*(a+b);
	n=a*a+2*a*b+b*b;
	cout<<"t="<<t<<endl;
	cout<<"n="<<n<<endl;
	cout<<(t==n)<<endl;
} 

2-2已知:int x=5;编程求下列代数式的值。f(x)=3x3+2x2+5x+2

#include <iostream>
using namespace std;
int main(){
	int x=5,f;
	f=3*x*x*x+2*x*x+5*x+2;
	cout<<f<<endl;
}


/*
452
*/

2-3 从键盘上输入两个 double 型数,编程输出其中最小者

#include <iostream>
using namespace std;
int main(){
	double a,b;
	cin>>a>>b;
	if(a<=b) cout<<a<<endl;
	else cout <<b<<endl;
}

2-4 华氏温度转换成摄氏温度的计算公式如下:C=(F?32)*5/9其中,C 表示摄氏温度,F 表示华氏温度。从键盘上输入一摄氏温度,编程输出对应的华氏温度。

#include <iostream>
using namespace std;
int main(){
	double C,F;
	cin>>C;
	F=9.0/5.0*C+32.0;
	cout <<F<<endl;
}

2-5 从键盘上输入 5 个浮点数,输出它们的和以及平均值。

#include <iostream>
using namespace std;
int main(){
	double a,b,c,d,e,f,av;
	cin>>a>>b>>c>>d>>e;
	 f=a+b+c+d+e;
	av=f/5.0;
	cout<<f<<','<<av<<endl;
	
}

2-6 将字符串"12345",逆向输出为"54321"。

解一:

#include <iostream>
using namespace std;
int main(){
	char a[]="12345";
	int i=4;
	for(i=4;i>=0;i--){
		cout<<a[i];
	}
}

解二:

#include <iostream.h>
void main()
{
char a[]="12345";
cout<<a[4]<<a[3]<<a[2]<<a[1]<<a[0]<<endl;
} 

3-1 求100内的自然数中奇数之和。

// 解法一

#include<iostream>
using namespace std;
 int main(){
 	int sum=0,i;
 	for(i=1;i<100;i++) {
 		if(i%2 != 0)  sum+=i;
	 }
	 cout<<sum<<endl;
 }

//2500

//解法2

 #include<iostream>
using namespace std;
 int main(){
 	int sum=0,i;
 	for(i=1;i<100;i=i+2) {
 	 sum+=i;
	 }
	 cout<<sum<<endl;
 }

3-2 求输入两个正整数的最大公约数和最小公倍数

 #include<iostream>
 using namespace std;
 int main(){
 	int m,n,t,r,a,b,y;
 	cin>>m>>n;
 	a=m;
 	b=n;
 	if(m<n) {
 		t=m;
 		m=n;
 		n=t;
	 }
	 while(n!=0){
	 	y=m%n;
	 	m=n;
	 	n=y;
	 }
	 r=a*b/m;
	 cout<<"最大公约数是"<<m<<endl;
	 cout<<"最小公倍数"<<r<<endl;
 }

3-3 求下列分数序列前 15 项之和。2/1,3/2,5/3,8/5,13/8,…

#include <iostream>
using namespace std;
int main(){
	int a;
	double sum=0,i=2,j=1,t;
	for(a=1;a<15;a++){
		sum+=i/j;
		t=i;
		i+=j;
		j=t;
	}
	cout<<sum<<endl;
}
  数据结构与算法 最新文章
【力扣106】 从中序与后续遍历序列构造二叉
leetcode 322 零钱兑换
哈希的应用:海量数据处理
动态规划|最短Hamilton路径
华为机试_HJ41 称砝码【中等】【menset】【
【C与数据结构】——寒假提高每日练习Day1
基础算法——堆排序
2023王道数据结构线性表--单链表课后习题部
LeetCode 之 反转链表的一部分
【题解】lintcode必刷50题<有效的括号序列
上一篇文章      下一篇文章      查看所有文章
加:2021-11-14 21:58:23  更:2021-11-14 21:59:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 1:05:11-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码