1、c+实验报告C+程序设计实验报告姓名:学号:班级:实验一 数据类型和表达式【实验目的】1、熟悉并学习使用C+程序编译平台VC6.0;2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的C+程序;3、掌握C+语言基础数据类型,熟悉变量及常量的定义和赋值方法;4、学会使用C+算术运算符和算术表达式;5、掌握C+程序的赋值和输入输出语句的使用方法;6、掌握简单C+程序的编写和调试【实验内容】1、 从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数;#includeusing namespace std;int main()int a,b;coutInput to a and b:ab
2、;if(ab)coutba)coutaendl;return 0;2、 从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;#includeusing namespace std;int main()int a;float b;coutInput to a and b:ab;if(a(int)b)coutaendl;if(a(int)b)coutbendl;return 0;3、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下:其中,表示华氏温度,表示摄氏温度。#includeusing namespace std;int main()float
3、 F,C;coutInput to C:C;F=9.0*C/5+32;coutFendl;return 0;4、 编程实现输入千米数,输出显示其英里数。已知:1英里=1.60934千米(用符号常量)#includeusing namespace std;#define N 1.60934int main()float k,m;coutInput to k:k;m=k/N;coutmendl;return 0;5、输入一个int型数,将它的低4位(右四位)都置为1;#includeusing namespace std;int main()int i,j;coutInput to i:i;if(
4、i=10000)j=(i/10000)*10000+1111;coutjendl;elsecouterror!和cout就可以进行简单的输入和输出。实验二 预处理和语句【实验目的】1、熟悉并掌握使用文件包含命令;2、熟悉并学习使用条件编译命令;3、掌握选择语句;4、掌握循环语句;【实验内容】1、编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员周工作小时超过40 小时,则超过部分按原工资的1.5 倍的加班工资来计算。若雇员每周工作小时超过60 小时,则超过60 的部分按原工资的3 倍的加班工资来计算,而40 到50 小时的工资仍按照原工资的1.5 倍
5、的加班工资来计算。要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示:“Please input employees work time and wage_per_hour:”输出时,提示:“The employees wage :”;#includeusing namespace std;int main()float a,b,c;coutPlease input employees work time and wage_per_hour:ab;if (a0&a40&a60)c=b*40+b*1.5*20+3*b*(a-60);coutThe employees w
6、age :cendl;return 0;2、编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:January 1, 2005 is SaturdayDecember 1, 2005 is Thursday用函数 int ComputeDay(int year, int day)计算星期;在main函数完成用户输入和输出工作;#include#includeusing namespace std;string str12=January 1, ,February 1,Marc
7、h 1, ,April 1, ,May 1, ,June 1, ,July 1, ,August 1, ,September 1, ,October 1, ,November 1, ,December 1, ;int day12=31,28,31,30,31,30,31,31,30,31,30,31;string week7=Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday;bool IsLeapYear(int year)return (year%4 = 0 & year%100 != 0) | (year % 400 = 0)
8、;int main()int year;int date;cinyeardate;if(IsLeapYear(year) day1 += 1;int sum=-3;for(int i=0; i12; +i) sum +=dayi; int result=(sum%7)+date)%7; if(i != 1) cout stri year is weekresultendl; else cout stri day1, year is weekresultendl;return 0;3、编写贷款分期偿还程序。一笔贷款的月还款包含偿还本金和偿还利息。月利息可以通过月利率乘以余额(剩余本金)来计算,于
9、是月偿还金额就等于月还款额减去月利息。要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。如果输入贷款额度10000美元、期限1年和利率7%,程序应该输出:Load Amount:10000Number of Years:1Annual Interest Rate:7%Monthly Payment:865.26Total Payment:10381.21Payment# Interest Principal Balance1 58.33 806.93 9193.072 53.62 811.64 8381.4311 10.0 855.26 860.2712 5.01 860.25 0.
10、01#includeusing namespace std;int main()int year,i;double rate;double mouthly_pay,total;double m,n,s,amout;coutLoad Amount:amout;coutNumber of Yearsyear;coutAnnual Interest Raterate;rate=rate/12;mouthly_pay=amout*rate*pow(1+rate,12*year)/(pow(1+rate,12*year)-1);total=mouthly_pay*12*year;coutMonthly
11、Payment:mouthly_payendl;coutTotal Payment:totalendl;coutPayment# Interest Principal Balanceendl;for(i=1;i=12*year;i+)m=amout*rate;n=mouthly_pay-m;s=amout-n;amout=s;printf(%d %.2f %.2f %.2fn,i,m,n,s);return 0;【实验总结】计算日期差时要考虑闰年和二月的特殊情况,开始编写时没有注意到。实验时在计算利率的时候不知道利率的计算方法,在找到利率计算公式后才继续编写程序。实验三 指针和数组【实验目的】
12、1、掌握指针的概念、学会定义和使用指针变量;2、学习使用指针数组和指向数组的指针;【实验内容】1、一个班有 5 名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。求某门课程的平均分;实现要求:分别编写2 个函数实现以上2 个要求,第1 个函数用数组名作参数,第2 个函数用指针用参数,并在函数体内用指针对数组操作。#include using namespace std; class stud public: int number; float a5; float av; ; void js(stud *x) int ta; x-av=0; for(
13、ta=0;taav+=x-ata; x-av=x-av/5; cout学号:; coutnumberendl; cout顺序输出学生各门成绩endl; for(ta=0;ta5;ta+) coutataendl; cout学生平均成绩:; coutavendl;int main() stud student5; stud *y; int i,j,k=0; float l=0; for(i=0;i5;i+) cout请输入学生的学号,各门成绩:studenti.number; for(j=0;jstudenti.aj; for(i=0;i5;i+) y=&studenti; js(y); cou
14、tk; for(i=0;i5;i+) l+=studenti.ak-1; l/=5; cout此课程平均分为:lendl; return 0; #includeusing namespace std;class stud public: int number; float a5; float av;void js(stud x) int n; x.av=0; for(n=0;n5;n+) x.av+=x.an; x.av=x.av/5; cout学号:; coutx.numberendl; cout顺序输出学生各门成绩endl; for(n=0;n5;n+) coutx.anendl; cou
15、t学生平均成绩:; coutx.avendl;int main() stud student5; int i,j,k=0; float l=0; for(i=0;i5;i+) cout请输入学生的学号,各门成绩:studenti.number; for(j=0;jstudenti.aj; for(i=0;i5;i+) js(studenti); coutk; for(i=0;i5;i+) l+=studenti.ak-1; l/=5; cout此课程平均分为:lendl; return 0;2、编写一个程序,实现矩阵运算,具体要求如下:用函数addMatrix( int aCOLUMN_SIZ
16、E, int bCOLUMN_SIZE, int cCOLUMN_SIZE, int rowSize)实现矩阵相加运算;用函数multiplyMatrix( int aCOLUMN_SIZE, int bCOLUMN_SIZE, int cCOLUMN_SIZE, int rowSize)实现矩阵相乘运算;矩阵a和矩阵b的数据从键盘输入;输出矩阵相乘或相加结果即c矩阵的数据;#include using namespace std; void addMatrix() int i,j; int a33,b33; int c33=0; cout请输入3*3的矩阵:endl; for(i=0;i3;
17、i+) for(j=0;jaij; cout请输入3*3的矩阵:endl; for(i=0;i3;i+) for(j=0;jbij; for(i=0;i3;i+) for(j=0;j3;j+) cij=aij+bij; cout矩阵相加的结果:endl; for(i=0;i3;i+) for(j=0;j3;j+) coutcijt; coutendl; void multiplyMatrix( ) int i,j,k; int a33,b33; int c33=0; cout请输入3*3的矩阵:endl; for(i=0;i3;i+) for(j=0;jaij; cout请输入3*3的矩阵:e
18、ndl; for(i=0;i3;i+) for(j=0;jbij; for(i=0;i3;i+) for(j=0;j3;j+) for(k=0;k3;k+) cij+=aik*bkj; cout矩阵相乘的结果:endl; for(i=0;i3;i+) for(j=0;j3;j+) coutcijt; coutendl; int main() int l; cout矩阵相加 1 矩阵想乘 2endl; coutl; if(l=1) addMatrix(); else multiplyMatrix(); return 0;【实验总结】在实验开始时不知道如何进行矩阵的计算,之后想到利用数组进行矩阵的
19、保存于计算。其他便没有什么问题了。实验四 函数和作用域【实验目的】1、掌握函数的定义和说明方法;2、掌握函数调用时的传值调用、传址调用和引用调用方法;3、掌握函数重载的方法;4、学习使用指向字符串的指针变量;5、掌握作用域的种类和范围;【实验内容】1、编写一个极坐标转换为直角坐标的程序,具体要求如下:在main函数中读入极坐标半径和相角;使用函数conver实现极坐标和直角坐标之间的转换;分别用传址调用和引用调用的方式调用conver函数;#include#includeusing namespace std;void cover(float a,float b) float x,y; b=b
20、/360*2*3.14; x=a*cos(b); y=a*sin(b); cout直角坐标是:(x,y)ab; cout极坐标是:(a,b)endl; cover(a,b); return 0;2、编写一个程序,实现浮点类型数据和复数类型数据的相乘;具体要求如下:用结构体定义复数类型数据;编写浮点类型数据乘法运算函数product;重载函数product实现复数类型数据相乘;在mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;#includeusing namespace std;void product(float a,float b) float z
21、; z=a*b; coutzendl;void product(float x,float y,float a,float b) float z,f; z=x*y+a*b; f=x*b+y*a; coutz+fiab; product(a,b); coutplease input a+b*ifu1.rfu1.ifu2.rfu2.i; product(fu1.r,fu2.r,fu1.i,fu2.i); return 0;3、编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。情绪周期是一个正弦曲线,其振幅为1,周期为28天,在给定的一天内,一个人的情绪指数是,是他的年龄(以天计算)类
22、似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。编写输入年月日计算天输的函数computeday;编写计算生理指数的函数compute_physiological_index;编写计算情绪指数的函数compute_emotional_index;编写计算智力指数的函数compute_mentality_index;在主程序中输入年月日,计算生物节指数并输出;#include#include#define pi 3.14using namespace std;int computeday(int y1,int m1,int d1,int y2,int m2,int d2)
23、int i,s=0; int a13=31,28,31,30,31,30,31,31,30,31,30,31; for(i=y1+1;i=y2;i+) if(i%4=0&i!=0)|(i=0) s+=366; else s+=365; if(y1%4=0&y1!=0)|(y1=0) a1+=1; for(i=0;i=m1-2;i+) s+=ai; s=s+d1; if(y2%4=0&y2!=0)|(y2=0) a1+=1; for(i=0;i=m2-2;i+) s+=ai; s+=d2; return s;float compute_physiological_index(int t) flo
24、at k,s; int j; j=t; k=j/23.0*2*pi; s=sin(k); return s;float compute_emotional_index(int t) float k,s; int j; j=t; k=j/28.0*2*pi; s=sin(k); return s;float compute_mentality_index(int t) float k,s; int j; j=t; k=j/33.0*2*pi; s=sin(k); return s;int main() int t,y1,m1,d1,y2,m2,d2; float s,s1,s2,s3; cout请输入出生年月日y
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1