c++实验报告Word文件下载.docx
- 文档编号:17658623
- 上传时间:2022-12-07
- 格式:DOCX
- 页数:34
- 大小:27.91KB
c++实验报告Word文件下载.docx
《c++实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++实验报告Word文件下载.docx(34页珍藏版)》请在冰豆网上搜索。
returny;
2.从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;
inta;
floatb;
if(a>
b)
cout<
a<
b<
3.输入一摄氏温度,编程输出华氏温度。
已知;
华氏温度转换为摄氏温度的计算公式如下:
其中,F表示华氏温度,C表示摄氏温度。
floata,b;
a;
b=a*1.8+32;
4.编程实现输入千米数,输出显示其英里数。
已知:
1英里=1.60934千米(用符号常量)
doublea,b,c=1.60934;
b=ac;
5.输入一个int型数,将它的低4位(右四位)都置为1;
if(1000<
=a<
10000)
b=1111;
=10000)
b=a10000;
b=b*10000+1111;
【实验总结】
本次实验是c++第一次实验,本来以为不怎么会,结果第一次的实验是比较简单的,自己就用了c的知识写了各个题的代码,中间也没怎么出问题。
相比于C语言,c++头文件不同了,然后输入输出也不同了,变成cin,cout与<
和>
符号结合。
本次实验总之学到了一些c++的新的专有语句。
实验二预处理和语句
1.熟悉并掌握使用文件包含命令;
2.熟悉并学习使用条件编译命令;
3.掌握选择语句;
4.掌握循环语句;
1.编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。
若雇员周工作小时超过40小时,则超过部分按原工资的1.5倍的加班工资来计算。
若雇员每周工作小时超过60小时,则超过60的部分按原工资的3倍的加班工资来计算,而40到50小时的工资仍按照原工资的1.5倍的加班工资来计算。
•要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示:
“Pleaseinputemployee’sworktimeandwage_per_()
{intt,w;
doublesalary;
cout<
"
Pleaseinputemployee’sworktimeandwageper>
t>
w;
if(t<
=40)
salary=t*w;
if(t<
=60&
&
40)
salary=(t-40)*1.5*w+w*40;
if(t>
60)
salary=(t-60)*3*w+20*1.5*w+40*w;
Theemployee'
swage:
salary<
2.编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。
例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:
January1,2005isSaturday
…
December1,2005isThursday
•用函数intComputeDay(intyear,intday)计算星期;
•在main函数完成用户输入和输出工作;
string>
stringstr[12]={"
January1,"
"
February"
March1,"
April1,"
May1,"
"
June1,"
July1,"
August1,"
September1,"
October1,"
November1,"
December1,"
};
intday[12]={};
intresult[12];
stringweek[7]={"
Sunday"
Monday"
Tuesday"
Wednesday"
"
Thursday"
Friday"
Saturday"
boolIsLeapYear(intyear)
return(year%4==0&
year%100!
=0)||(year%400==0);
intComputeDay(intyear,intdate)
intsum=0;
for(inti=0;
i<
=11;
i++){
sum+=day[i];
result[i]=((sum%7)+date)%7;
return0;
}
intyear;
intdate;
cin>
year>
date;
if(IsLeapYear(year))
day[2]+=1;
ComputeDay(year,date);
for(inti=0;
++i){
str[i]<
year<
is"
week[result[i]]<
3.编写贷款分期偿还程序。
一笔贷款的月还款包含偿还本金和偿还利息。
月利息可以通过月利率乘以余额(剩余本金)来计算,于是月偿还金额就等于月还款额减去月利息。
•要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。
•如果输入贷款额度10000美元、期限1年和利率7%,程序应该输出:
LoadAmount:
10000
NumberofYears:
1
AnnualInterestRate:
7%
MonthlyPayment:
865.26
TotalPayment:
10381.21
Payment#InterestPrincipalBalance
158.33806.939193.07
253.62811.648381.43
…
1110.0855.26860.27
125.01860.250.01
math.()
doublemoney,year,rate;
money>
rate;
LoadAmount:
money<
NumberofYears:
AnnualInterestRate:
rate<
doublea=rate12;
doubleb=money*a*pow(1+a,12*year)(pow(1+a,12*year)-1);
doublek=b*12*year;
MonthlyPayment:
Totalpayment:
k<
Payment#"
Interest"
Principal"
Balance"
for(inti=1;
i<
=12*year;
i++)
{
doublem,n,s;
m=money*a;
n=b-m;
s=money-n;
money=s;
printf("
%d%.2f%.2f%.2f\n"
i,m,n,s);
}
本次实验相对于第一次有了一些难度,不过也用到了一些c的处理方法,如第一题,就是用到了简单的if语句,第二题就稍微有些难度,因为是关于数字日期的问题,叫要考虑到闰年的方面,这就需要一系列代码来控制准确的日期与天数,只要这方面解决了,其他的用到调用一下,调整一下代码顺序即可。
我在写这个代码时,就是日期这方面弄得不是很清楚,导致写的比较慢,最还是请教同学和查阅资料后写出了代码。
第三题主要是一个贷率的公式,如果知道,然后参考书上的代码就可以写出代码。
本次实验主要知道了使用文件包含命令,使用条件编译命令等。
实验三指针和数组
1.掌握指针的概念、学会定义和使用指针变量;
2.学习使用指针数组和指向数组的指针;
1.一个班有5名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。
求某门课程的平均分;
实现要求:
•分别编写2个函数实现以上2个要求,第1个函数用数组名作参数,第2个函数用指针用参数,并在函数体内用指针对数组操作。
#include<
structStudent
stringno;
doublescore[5];
doubleave;
voidprint(Studentstu[],intn)
n;
cout<
stu[i].no<
for(intu=0;
u<
5;
u++)
{
cout<
第"
u+1<
科成绩:
stu[i].score[u]<
}
平均分:
stu[i].ave<
voidinput(Student*stu,intn)
请输入第"
i+1<
个学生资料:
cin>
(stu+i)->
no;
cin>
score[u];
voidgetAverage(Student*stu,intn)
intsum=0;
sum+=(stu+i)->
(stu+i)->
ave=sum5;
sum=0;
doubleAverage(Studentstu[],intindex,intn)
sum+=stu[i].score[index];
returnsumn;
voidmain()
constintN=5;
Studentstu[N];
input(stu,N);
getAverage(stu,N);
print(stu,N);
科的平均分:
Average(stu,i,N)<
2.编写一个程序,实现矩阵运算,具体要求如下:
•用函数addMatrix(inta[][COLUMN_SIZE],intb[][COLUMN_SIZE],intc[][COLUMN_SIZE],introwSize)实现矩阵相加运算;
•用函数multiplyMatrix(inta[][COLUMN_SIZE],intb[][COLUMN_SIZE],intc[][COLUMN_SIZE],introwSize)实现矩阵相乘运算;
•矩阵a和矩阵b的数据从键盘输入;
•输出矩阵相乘或相加结果即c矩阵的数据;
intaddMatrix(inta[100][100],intb[100][100],intx,inty)
inti,j;
intc[100][100];
for(i=0;
x;
{
for(j=0;
j<
y;
j++)
c[i][j]=a[i][j]+b[i][j];
c[i][j]<
;
intmultiplyMatrix(inta[100][100],intb[100][100],intx,inty)
{
inti,j,k;
i++)
{
{
c[i][j]=0;
for(k=0;
k++)
{
c[i][j]+=a[i][k]*b[k][j];
}
}
return0;
}
inta[100][100],b[100][100];
inti,j,x,y;
x>
输入矩阵a和矩阵b:
j++)
a[i][j];
b[i][j];
addMatrix(a,b,x,y);
multiplyMatrix(a,b,x,y);
本次实验题目较少,但做一道题目也不是那么快,主要是因为指针没学好,操作起来有一点困难,第一题首先用到了一个结构体,包好了学生的信息。
后面利用指针指向结构体里面的各个信息,利用指针把各个学生的信息输出。
期间利用到了函数的调用,循环语句等。
第二题是一个矩阵的运算,加减法还好,利用上学期学到的线性代数的知识可以很好的写出代码,但是做矩阵的乘除法就比较复杂了,自己想写出来,试了几遍都不行,最后XX查了一下,借鉴了一下,看懂之后才完成代码。
这次实验学习了使用指针数组和指向数组的指针。
把以前不懂得稍微弄懂了一点。
实验四函数和作用域
1.掌握函数的定义和说明方法;
2.掌握函数调用时的传值调用、传址调用和引用调用方法;
3.掌握函数重载的方法;
4.学习使用指向字符串的指针变量;
5.掌握作用域的种类和范围;
1.编写一个极坐标转换为直角坐标的程序,具体要求如下:
•在main函数中读入极坐标半径和相角;
•使用函数conver实现极坐标和直角坐标之间的转换;
•分别用传址调用和引用调用的方式调用conver函数;
math.;
pi=3.;
n=(b180)*pi;
x=a*cos(n);
y=a*sin(n);
直角坐标系:
("
x<
y<
)"
请输入极坐标:
conver(a,b);
2.编写一个程序,实现浮点类型数据和复数类型数据的相乘;
具体要求如下:
•用结构体定义复数类型数据;
•编写浮点类型数据乘法运算函数product;
•重载函数product实现复数类型数据相乘;
•在mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;
voidproduct(floatx,floata,floatb)
floatz,f;
z=x*a;
f=x*b;
乘积="
z<
+"
f<
i"
structfushu
floatre;
floatim;
}fu[2];
floatx,y;
请输入浮点数:
请输入复数:
fu[1].re>
fu[1].im>
fu[2].re>
fu[2].im;
product(x,fu[1].re,fu[1].im);
product(y,fu[2].re,fu[2].im);
3.编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。
情绪周期是一个正弦曲线,其振幅为1,周期为28天,在给定的一天内,一个人的情绪指数是,是他的年龄(以天计算)类似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。
•编写输入年月日计算天输的函数computeday;
•编写计算生理指数的函数compute_physiological_index;
•编写计算情绪指数的函数compute_emotional_index;
•编写计算智力指数的函数compute_mentality_index;
•在主程序中输入年月日,计算生物节指数并输出;
math.age;
floatcompute_physiological_index(intage)
floatp;
p=sin(((2*pi)23)*age);
returnp;
floatcompute_emotional_index(intage)
floate;
e=sin(((2*pi)28)*age);
returne;
floatcompute_mentality_index(intage)
floatm;
m=sin(((2*pi)28)*age);
returnm;
intyear,month,day,age;
floatp,e,m,s;
请输入一个人年月日的年龄:
month>
day;
age=computeday(year,month,day);
计算所得天数为:
age<
(以每年365天,每月30天计算)"
p=compute_physiological_index(age);
生理指数:
p<
e=compute_emotional_index(age);
情绪指数:
e<
m=compute_mentality_index(age);
智力指数:
m<
s=p+e+m;
生物节律指数:
s<
本次实验的知识点就很多了,一开始自己没看清题目,就开始编起代码来,过了好长一段时间,终于庆幸自己编好了,给老师验收的时候,却发现多没看清题目的要求,要求传址调用和引用调用。
我原以为我自己用的就是引用调用,可老师说也能不是,有点悲惨,所以下次做题目之前一定要看清题目再做。
结果后来老师还是让我过了,接下来的上课时间我自己就在那里研究这些要求了,最后不过还是得到了一些知识,学习到了函数调用时的传值调用、传址调用和引用调用方法,了解了函数重载的方法,作用域的种类和范围等。
问题:
1)传址调用把变量在内存中的地址传给函数(有地址信息可以轻易得出给地址上的值),这样在函数中修改地址上的值,会使主函数中的值也跟着改变,因为改变的是该地址上的值,而主函数也是通过地址访问的。
所以更改之后,主函数的值跟着变。
引用调用,也能改变主函数的的值,其做法也是获得该变量所在内存中的地址。
2)函数重载时需要函数参数的类型或个数必须至少一个不同,返回值可以相同可以不同
实验五类与对象
(一)
1.掌握类的概念以及定义类的方法;
2.学习简单面向对象程序的编写;
1.设计一个名为Fan的类,表示一个风扇,该类满足下述要求:
•具有描述风扇转速的成员speed;
•具有描述风扇是否开启的成员on;
•具有描述风扇半径的成员radius;
•具有描述风扇颜色的成员color
•以上所有成员的访问和更改函数;
•输出风扇所有信息的函数display;
•在main函数中创建2个Fan的对象,将第一个风扇的转
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 实验 报告