return0;
}
2、编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。
例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:
January1,2005isSaturday
…
December1,2005isThursday
•用函数intComputeDay(intyear,intday)计算星期;
•在main函数完成用户输入和输出工作;
#include
#include
usingnamespacestd;
stringstr[12]={"January1,","February1","March1,","April1,","May1,",
"June1,","July1,","August1,","September1,","October1,",
"November1,","December1,"};
intday[12]={31,28,31,30,31,30,31,31,30,31,30,31};
stringweek[7]={"Sunday","Monday","Tuesday","Wednesday",
"Thursday","Friday","Saturday"};
boolIsLeapYear(intyear)
{
return(year%4==0&&year%100!
=0)||(year%400==0);
}
intmain()
{
intyear;
intdate;
cin>>year>>date;
if(IsLeapYear(year))
day[1]+=1;
intsum=-3;
for(inti=0;i<12;++i){
sum+=day[i];
intresult=((sum%7)+date)%7;
if(i!
=1)
cout< else
cout<}
return0;
}
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
#include
usingnamespacestd;
intmain()
{
intyear,i;
doublerate;
doublemouthly_pay,total;
doublem,n,s,amout;
cout<<"LoadAmount:
"< cin>>amout;
cout<<"NumberofYears"< cin>>year;
cout<<"AnnualInterestRate"< cin>>rate;
rate=rate/12;
mouthly_pay=amout*rate*pow(1+rate,12*year)/(pow(1+rate,12*year)-1);
total=mouthly_pay*12*year;
cout<<"MonthlyPayment:
"< cout<<"TotalPayment:
"< cout<<"Payment# Interest Principal Balance"< for(i=1;i<=12*year;i++)
{
m=amout*rate;
n=mouthly_pay-m;
s=amout-n;
amout=s;
printf("%d %.2f %.2f %.2f\n",i,m,n,s);
}
return0;
}
【实验总结】
计算日期差时要考虑闰年和二月的特殊情况,开始编写时没有注意到。
实验时在计算利率的时候不知道利率的计算方法,在找到利率计算公式后才继续编写程序。
实验三指针和数组
【实验目的】
1、掌握指针的概念、学会定义和使用指针变量;
2、学习使用指针数组和指向数组的指针;
【实验内容】
1、一个班有5名学生,每个学生修了五门课,求每个学生的平均成绩,并输出每个学生的学号,每门课程的成绩及平均值。
求某门课程的平均分;
实现要求:
•分别编写2个函数实现以上2个要求,第1个函数用数组名作参数,第2个函数用指针用参数,并在函数体内用指针对数组操作。
#include
usingnamespacestd;
classstud
{
public:
intnumber;
floata[5];
floatav;
};
voidjs(stud*x)
{
intta;
x->av=0;
for(ta=0;ta<5;ta++)
x->av+=x->a[ta];
x->av=x->av/5;
cout<<"学号:
";
cout<number<cout<<"顺序输出学生各门成绩"<for(ta=0;ta<5;ta++)
cout<a[ta]<cout<<"学生平均成绩:
";
cout<av<}
intmain()
{
studstudent[5];
stud*y;
inti,j,k=0;
floatl=0;
for(i=0;i<5;i++)
{
cout<<"请输入学生的学号,各门成绩:
"<cin>>student[i].number;
for(j=0;j<5;j++)
cin>>student[i].a[j];
}
for(i=0;i<5;i++)
{
y=&student[i];
js(y);
}
cout<<"请输入要计算的课程编号:
";
cin>>k;
for(i=0;i<5;i++)
l+=student[i].a[k-1];
l/=5;
cout<<"此课程平均分为:
"<return0;
}
#include
usingnamespacestd;
classstud
{
public:
intnumber;
floata[5];
floatav;
};
voidjs(studx)
{
intn;
x.av=0;
for(n=0;n<5;n++)
x.av+=x.a[n];
x.av=x.av/5;
cout<<"学号:
";
cout<cout<<"顺序输出学生各门成绩"<for(n=0;n<5;n++)
cout<cout<<"学生平均成绩:
";
cout<}
intmain()
{
studstudent[5];
inti,j,k=0;
floatl=0;
for(i=0;i<5;i++)
{
cout<<"请输入学生的学号,各门成绩:
"<cin>>student[i].number;
for(j=0;j<5;j++)
cin>>student[i].a[j];
}
for(i=0;i<5;i++)
{
js(student[i]);
}
cout<<"请输入要计算的课程编号:
";
cin>>k;
for(i=0;i<5;i++)
l+=student[i].a[k-1];
l/=5;
cout<<"此课程平均分为:
"<return0;
}
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矩阵的数据;
#include
usingnamespacestd;
voidaddMatrix()
{inti,j;
inta[3][3],b[3][3];
intc[3][3]={0};
cout<<"请输入3*3的矩阵:
"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"请输入3*3的矩阵:
"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
c[i][j]=a[i][j]+b[i][j];
cout<<"矩阵相加的结果:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
}
voidmultiplyMatrix()
{
inti,j,k;
inta[3][3],b[3][3];
intc[3][3]={0};
cout<<"请输入3*3的矩阵:
"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>a[i][j];
cout<<"请输入3*3的矩阵:
"<for(i=0;i<3;i++)
for(j=0;j<3;j++)
cin>>b[i][j];
for(i=0;i<3;i++)
for(j=0;j<3;j++)
for(k=0;k<3;k++)
c[i][j]+=a[i][k]*b[k][j];
cout<<"矩阵相乘的结果:
"<for(i=0;i<3;i++)
{
for(j=0;j<3;j++)
cout<cout<}
}
intmain()
{
intl;
cout<<"矩阵相加1矩阵想乘2"<cout<<"请输入要计算的编号哦:
";
cin>>l;
if(l==1)
addMatrix();
else
multiplyMatrix();
return0;
}
【实验总结】
在实验开始时不知道如何进行矩阵的计算,之后想到利用数组进行矩阵的保存于计算。
其他便没有什么问题了。
实验四函数和作用域
【实验目的】
1、掌握函数的定义和说明方法;
2、掌握函数调用时的传值调用、传址调用和引用调用方法;
3、掌握函数重载的方法;
4、学习使用指向字符串的指针变量;
5、掌握作用域的种类和范围;
【实验内容】
1、编写一个极坐标转换为直角坐标的程序,具体要求如下:
•在main函数中读入极坐标半径和相角;
•使用函数conver实现极坐标和直角坐标之间的转换;
•分别用传址调用和引用调用的方式调用conver函数;
#include
#include
usingnamespacestd;
voidcover(floata,floatb)
{
floatx,y;
b=b/360*2*3.14;
x=a*cos(b);
y=a*sin(b);
cout<<"直角坐标是:
("<}
intmain()
{
floata,b;
cin>>a>>b;
cout<<"极坐标是:
("<cover(a,b);
return0;
}
2、编写一个程序,实现浮点类型数据和复数类型数据的相乘;具体要求如下:
•用结构体定义复数类型数据;
•编写浮点类型数据乘法运算函数product;
•重载函数product实现复数类型数据相乘;
•在mian函数中通过键盘输入一对浮点数和一对复数,分别对这两对数据进行相乘计算,并输出结果;
#include
usingnamespacestd;
voidproduct(floata,floatb)
{
floatz;
z=a*b;
cout<}
voidproduct(floatx,floaty,floata,floatb)
{
floatz,f;
z=x*y+a*b;
f=x*b+y*a;
cout<}
structfushu
{
floatr;
floati;
}fu[3];
intmain()
{
floata,b;
cin>>a>>b;
product(a,b);
cout<<"pleaseinputa+b*i"<cin>>fu[1].r>>fu[1].i>>fu[2].r>>fu[2].i;
product(fu[1].r,fu[2].r,fu[1].i,fu[2].i);
return0;
}
3、编写程序计算一个人的生物节律指数,它是生理、智力和情绪指数之和。
情绪周期
是一个正弦曲线,其振幅为1,周期为28天,在给定的一天内,一个人的情绪指数是
,
是他的年龄(以天计算)类似地,生理和智力周期也是正弦曲线,振幅为1,周期分别是23天和33天。
•编写输入年月日计算天输的函数computeday;
•编写计算生理指数的函数compute_physiological_index;
•编写计算情绪指数的函数compute_emotional_index;
•编写计算智力指数的函数compute_mentality_index;
•在主程序中输入年月日,计算生物节指数并输出;
#include
#include
#definepi3.14
usingnamespacestd;
intcomputeday(inty1,intm1,intd1,inty2,intm2,intd2)
{
inti,s=0;
inta[13]={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))
a[1]+=1;
for(i=0;i<=m1-2;i++)
s+=a[i];
s=s+d1;
if((y2%4==0&&y2!
=0)||(y2==0))
a[1]+=1;
for(i=0;i<=m2-2;i++)
s+=a[i];
s+=d2;
returns;
}
floatcompute_physiological_index(intt)
{
floatk,s;
intj;
j=t;
k=j/23.0*2*pi;
s=sin(k);
returns;
}
floatcompute_emotional_index(intt)
{
floatk,s;
intj;
j=t;
k=j/28.0*2*pi;
s=sin(k);
returns;
}
floatcompute_mentality_index(intt)
{
floatk,s;
intj;
j=t;
k=j/33.0*2*pi;
s=sin(k);
returns;
}
intmain()
{
intt,y1,m1,d1,y2,m2,d2;
floats,s1,s2,s3;
cout<<"请输入出生年月日"<cin>>y