燕山大学-面向对象程序设计实验 - 实验1 C++基础

news2024/11/26 17:47:48
CSDN的各位uu们你们好,今天千泽燕山大学-面向对象程序设计实验 - 实验1 C++基础 相关内容,
接下来让我们一起进入c++的神奇小世界吧,相信看完你也能写出自己的实验报告!

实验一 C++基础

1.1 实验目的
1.了解并熟悉开发环境,学会调试程序;
2.熟悉C++中简单的标准输入输出函数的使用方法;
3.理解const修饰符的作用并学会应用;
4.理解内联函数的优缺点并学会其使用场合;
5.理解并学会函数重载;
6.理解并熟练掌握使用new和delete来分配内存;
7.理解并熟练掌握引用的使用方法。
1.2 实验内容
1.2.1 程序阅读
1.理解下面的程序并运行,然后回答问题。

#include <iostream.h>

int max_def(int x, int y)
{
	return (x>y?x:y);
}
int max_def(int x, int y, int z)
{
	int temp = 0;
	return (temp=(x>y?x:y))>z?temp:z;
}
double max_def(double x, double y)
{
	return (x>y?x:y);
}
int main()
{
	int x1 = 0;
	int x2 = 0;
	double d1 = 0.0;
	double d2 = 0.0;
	x1 = max_def(5,6);
	x2 = max_def(2,3,4);
	d1 = max_def(2.1,5.6);
	d2 = max_def(12.3,3.4,7.8);-----------------------------------------------------①
	cout<<"x1="<<x1<<endl;
	cout<<"x2="<<x2<<endl;
	cout<<"d1="<<d1<<endl;
	cout<<"d2="<<d2<<endl;--------------------------------------------------------return 1;
}

问题一:上述程序的输出结果是什么?
在这里插入图片描述

问题二:①处调用的是哪个函数?

int max_def(int x, int y, int z)
{
int temp = 0;
return (temp=(x>y?x:y))>z?temp:z;
}

问题三:②处的输出结果为什么是d2=12,而不是d2=12.3?
答:d2的值为函数int max_def(int x, int y, int z)得出的,返回值为int型,故取整,丢失小数点后内容。

2.理解下面的程序并运行,然后回答问题。

#include <iostream.h>

int main()
{
	int *p1 = new int; -----------------------------------------------------int *p2 = new int(0); -----------------------------------------------------char *p3 = new char[10]; -----------------------------------------------------return 1;
}

问题一:①、②、③处动态申请内存分别代表什么意思?
答:①处为给p1所在地址指向一个int型的内存空间,但不进行初始化。②处为给p2所在地址指向一个int型的内存空间,且初始化值为0。③处为给p3所在地址开始指向64个连续的char型内存空间,不进行初始化。
问题二:该程序存在什么不合理的地方?。
答:程序结束时没有将分配的空间释放,应该用delete函数释放内存

3.理解下面的程序并运行,然后回答问题。

#include <iostream.h>

void swap(int a, int b)
{
	int temp = a;
	a = b;
	b = temp;
}
void swap(int *a, int *b)
{
	int temp = *a;
	*a = *b;
	*b = temp;
}

int main()
{
	int i = 5;
	int j = 10;
	cout<<"Before swap: i="<<i<<",j="<<j<<endl;
	swap(i,j); -----------------------------------------------------①
	cout<<"After the first swap: i="<<i<<",j="<<j<<endl;
	swap(&i,&j); -----------------------------------------------------②
	cout<<"After the second swap: i="<<i<<",j="<<j<<endl;
	
	return 1;
}

问题一:输出结果是什么?

问题二:①处函数调用不能实现两个数的交换,而②可以,原因是什么?

答:①处调用的函数只是交换了局部变量 a和b,并没有改变i和j的值;②处调用的函数使用了引用形参,i和j的值随着此处调用的函数中a和b的对换而对换

问题三:②处调用的是哪个函数?
答:
void swap(int *a, int *b)
{
int temp = *a;
*a = *b;
*b = temp;
}

1.2.2 程序设计
1.定义两个重名函数,分别求出两点间平面距离和空间距离。

  #include<iostream>
 
#include<cmath>
 
using namespace std;
int dis(int x1,int y1,int x2,int y2){
 
    int ans=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 
    return ans;
 
}
 
double dis(double x1,double y1,double x2,double y2){
 
    double ans=sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
 
    return ans;
 
}
int main(){
 
    cout<<"请输入两个点的坐标,以空格分割"<<endl;
 
    double x1,y1,x2=0,y2=0;
 
    cin>>x1>>y1>>x2>>y2;
 
    cout<<"整型数距离:"<<dis(int(x1),int(y1),int(x2),int(y2))<<endl;
 
    cout<<"双精度距离:"<<dis(x1,y1,x2,y2)<<endl;
 
return 0;
 
}

运行结果:
在这里插入图片描述

2.设计一个函数:exch(),当调用exch (a,b,c)时,将a赋值给b,b赋值给c,c赋值给a,要求采用引用的方式来实现。

#include<iostream>
 
#include<cmath>
 
using namespace std;
 
void exchange(float &x,float &y,float &z){
 
    float tmp=x;
 
    x=z;
 
    z=y;
 
    y=tmp;
 
}
 
int main(){
 
    cout<<"请输入三个数,以空格分割:";
 
    float a,b,c;
 
    cin>>a>>b>>c;
 
    cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
 
    cout<<"调用exchange函数后:"<<endl;
 
    exchange(a,b,c);
 
    cout<<"a="<<a<<",b="<<b<<",c="<<c<<endl;
 
    return 0;  
 
}

运行结果:

在这里插入图片描述
1.3 思考题
1.自己设计一个程序,测试指向常量的指针,常指针,指向常量的常指针之间的区间。

  #include<iostream>
 
using namespace std;
 
int main(){
 
    int x=1;
 
    int y=2;
 
    int * const p1=&x;//指针本身是常量,不可变
 
    *p1=1;//指向内容可变
 
    cout<<*p1<<endl;
 
    const int * p2;//指针所指向的内容是常量,不可变
 
    p2=&x;//指针本身可变
 
    int const * p3;//指针所指向的内容是常量,不可变
 
    p3=&y;//指针本身可变
 
    cout<<*p2<<" "<<*p3<<endl;
 
    const int * const p4=&x;//指针本身和指向的内容两者都不可变
 
    cout<<*p4<<endl;
 
    return 0; 
}
 

在这里插入图片描述

2.编写一个函数,实现两个字符串变量的交换。

`#include<iostream>
 
#include<cmath>
 
#include<cstring>
 
#include<string>
 
using namespace std;
 
void swap(string &s1,string &s2){
 
    string tmp;
 
    tmp=s1;
 
    s1=s2;
 
    s2=tmp;
 
}
 
int main(){
 
    cout<<"请输入两个字符串,以空格分割:"<<endl;
 
    string s1,s2;
 
    cin>>s1>>s2;
 
    cout<<"交换后变量为:"<<endl;
 
    swap(s1,s2);
 
    cout<<s1<<" "<<s2<<endl;
 
    return 0;  
 
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/402948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

超过10000人学习的Fiddler抓包教程,只需一小时就可以精通!

如果还是有朋友不太明白的话&#xff0c;可以看看这套视频&#xff0c;有实战讲解 零基础玩转Fiddler抓包在测试领域应用实战&#xff01;一、Fiddler与其他抓包工具的区别 1、Firebug虽然可以抓包&#xff0c;但是对于分析http请求的详细信息&#xff0c;不够强大。模拟http请…

【Linux】信号的产生、保存、捕捉处理 (四种信号产生、核心存储、用户态与内核态、信号集及其操作函数)

文章目录1、什么是信号&#xff1f;2、信号的产生2.1 通过键盘产生信号2.2 通过系统调用产生信号2.3 硬件异常产生的信号2.4 由软件条件产生的信号2.5 进程的核心转储3、信号的保存4、信号的捕捉4.1 用户态和内核态4.2 用户态到内核态的切换4.3 信号捕捉过程5、信号集操作函数以…

Spring——Spring整合Mybatis(XML和注解两种方式)

框架整合spring的目的:把该框架常用的工具对象交给spring管理&#xff0c;要用时从IOC容器中取mybatis对象。 在spring中应该管理的对象是sqlsessionfactory对象&#xff0c;工厂只允许被创建一次&#xff0c;所以需要创建一个工具类&#xff0c;把创建工厂的代码放在里面&…

Qt不会操作?Qt原理不知道? | Qt详细讲解

文章目录Qt界面开发必备知识UI界面与控件类型介绍Qt设计器原理控件类型的介绍信号与槽机制处理常用控件创建与设置常见展示型控件创建与设置常见动作型控件创建与设置常见输入型控件创建与设置常见列表控件创建于设置Qt中对象树的介绍项目源码结构刨析.pro.hmain.cpp.cppQt界面…

JVM的几种GC

GC JVM在进行GC时&#xff0c;并不是对这三个区域统一回收。大部分时候&#xff0c;回收都是新生代~ 新生代GC&#xff08;minor GC&#xff09;&#xff1a; 指发生在新生代的垃圾回收动作&#xff0c;因为Java对象大多都具备朝生夕灭的特点&#xff0c;所以minor GC发生得非…

【问题排查】Linux虚拟机无法识别串口与ttyUSB

虚拟机串口连接失败问题 小哥的Linux系统是用虚拟机来装的&#xff0c;最近恰好需要用到串口和Linux进行通信&#xff0c;连接好硬件之后&#xff0c;发现虚拟机上找不到串口。 经查询才发现通过虚拟机启动的系统&#xff0c;正常情况下是无法使用串口进行通信的&#xff0c;需…

Ast2500增加用户自定义功能

备注&#xff1a;这里使用的AMI的开发环境MegaRAC进行AST2500软件开发&#xff0c;并非openlinux版本。1、添加上电后自动执行的任务在PDKAccess.c中列出了系统启动过程中的所有任务&#xff0c;若需要添加功能&#xff0c;在相应的任务中添加自定义线程。一般在两个任务里面添…

隐私计算将改变金融行业的游戏规则?

开放隐私计算 01背景2月底&#xff0c;相关部门印发《数字中国建设整体布局规划》提出&#xff0c;到2025年&#xff0c;基本形成横向打通、纵向贯通、协调有力的一体化推进格局&#xff0c;数字中国建设取得重要进展&#xff1b;到2035年&#xff0c;数字化发展水平进入世界前…

前端安全(自留)

目录XSS——跨站脚本常见解决CSRF ——跨站请求伪造常见解决XSS——跨站脚本 当目标站点在渲染html的过程中&#xff0c;遇到陌生的脚本指令执行。 攻击者通过在网站注入恶意脚本&#xff0c;使之在用户的浏览器上运行&#xff0c;从而盗取用户的信息如 cookie 等。 常见 解…

机械学习 - scikit-learn - 数据预处理 - 2

目录关于 scikit-learn 实现规范化的方法详解一、fit_transform 方法1. 最大最小归一化手动化与自动化代码对比演示 1&#xff1a;2. 均值归一化手动化代码演示&#xff1a;3. 小数定标归一化手动化代码演示&#xff1a;4. 零-均值标准化(均值移除)手动与自动化代码演示&#x…

优秀开源软件的类,都是怎么命名的?

日常编码中&#xff0c;代码的命名是个大的学问。能快速的看懂开源软件的代码结构和意图&#xff0c;也是一项必备的能力。 Java项目的代码结构&#xff0c;能够体现它的设计理念。Java采用长命名的方式来规范类的命名&#xff0c;能够自己表达它的主要意图。配合高级的 IDEA&…

什么是谐波

什么是谐波 目录 1. 问题的提出 2. “谐”字在中英文中的原意 2.1 “谐”字在汉语中的原义 2.2 “谐”字对应的英语词的原义 3.“harmonics(谐波)”概念是谁引入物理学中的&#xff1f; 4.“harmonics(谐波)”的数学解释 1. 问题的提出 “谐波”这个术语用于各种学科&am…

国外SEO升级攻略!一看就懂!

SEO是搜索引擎优化的缩写&#xff0c;它是指通过优化网站内容和结构&#xff0c;提升网站在搜索引擎中的排名&#xff0c;从而获得更多的有价值的流量。 而关键词研究和选择是SEO优化中最基础也是最关键的环节&#xff0c;它决定了网站将面向哪些用户、哪些关键词和词组将被优…

SWF (Simple Workflow Service)简介

Amazon Simple Workflow Service (Amazon SWF) 提供了给应用程序异步、分布式处理的流程工具。 SWF可以用在媒体处理、网站应用程序后端、商业流程、数据分析和一系列定义好的任务上。 举个例子&#xff0c;下图表明了一个电商网站的工作流程&#xff0c;其中涉及了程序执行的…

C#【汇总篇】语法糖汇总

文章目录0、语法糖简介1、自动属性2、参数默认值和命名参数3、类型实例化4、集合4.1 初始化List集合的值4.2 取List中的值5、隐式类型&#xff08;var&#xff09;6、扩展方法【更换测试实例】7、匿名类型&#xff08;Anonymous type&#xff09;【待补充】8、匿名方法&#xf…

使用 Microsoft Dataverse 简化的连接快速入门

重复昨天本地部署dynamics实例将其所有的包删除之后&#xff0c;再次重新下载回来。运行填写跟之前登陆插件一样的信息点击login 然后查看控制台&#xff0c;出现这样就说明第一个小示例就完成了。查看你的dy365平台下的 “我的活动”就可以看到刚刚通过后台代码创建的东西了。…

MyBatis学习笔记(十三) —— 分页插件

13、分页插件 SQL语句中添加 limit index,pageSize pageSize: 每页显示的条数 pageNum: 当前页的页码 index: 当前页的起始索引, index (pageNum 1) * pageSize count: 总记录数 totalPage: 总页数 totalPagecount/pageSize; if(count % pageSize !0 ){ totalPage 1; } page…

java多线程(二六)ReentrantReadWriteLock读写锁详解(2)

3、读写状态的设计 同步状态在重入锁的实现中是表示被同一个线程重复获取的次数&#xff0c;即一个整形变量来维护&#xff0c;但是之前的那个表示仅仅表示是否锁定&#xff0c;而不用区分是读锁还是写锁。而读写锁需要在同步状态&#xff08;一个整形变量&#xff09;上维护多…

树与二叉树(概念篇)

树与二叉树1 树的概念1.1 树的简单概念1.2 树的概念名词1.3 树的相关表示2 二叉树的概念2.1 二叉树的简单概念2.1.1 特殊二叉树2.2 二叉树的性质2.3 二叉树的存储结构1 树的概念 1.1 树的简单概念 树是一种非线性的数据结构&#xff0c;它是由n(n>0)个有限节点组成的一个具…

OpenCV入门(三)快速学会OpenCV2图像处理基础(一)

OpenCV入门&#xff08;三&#xff09;快速学会OpenCV2图像处理基础&#xff08;一&#xff09; 1.颜色变换cvtColor imgproc的模块名称是由image&#xff08;图像&#xff09;和process&#xff08;处理&#xff09;两个单词的缩写组合而成的&#xff0c;是重要的图像处理模…