实验一、数据类型和表达式
【实验目的】
1、熟悉并学习使用C++程序编译平台VC6.0;
2、掌握如何在编译平台下编辑、编译、连接和运行一个简单的C++程序;
3、掌握C++语言基础数据类型,熟悉变量及常量的定义和赋值方法;
4、学会使用C++算术运算符和算术表达式;
5、掌握C++程序的赋值和输入输出语句的使用方法;
6、掌握简单C++程序的编写和调试
【源程序】
1、从键盘上输入两个int型数,比较其大小,并输出显示其中较小的数;
#include<iostream>
usingnamespace std;
intmain()
{
int a,b;
cin>>a;
cin>>b;
int min(inta,int b);
cout<<min(a,b)<<endl;
return 0;
}
intmin(int a,int b)
{
return(a<b?a:b);
}
2、从键盘上输入一个int型数,一个浮点数,比较其大小,将输出其中较大的数;
#include<iostream>
usingnamespace std;
intmain()
{
int a;
float b;
cin>>a;
cin>>b;
floatmin(float (a),float b); 函数声明
cout<<min(a,b)<<endl;
return 0;
}
floatmin(float (a),float b)
{
return(a<b?a:b);
}
3、输入一摄氏温度,编程输出华氏温度。已知;华氏温度转换为摄氏温度的计算公式如下:
,其中, 表示华氏温度, 表示摄氏温度。
#include<iostream>
usingnamespace std;
intmain()
{
floatC,F;
cout<<"输入摄氏温度C:";
cin>>C;
F=C*9*1.0/5+32;
cout<<"输出华氏温度F="<< F<<endl;
return 0;
}
4、编程实现输入千米数,输出显示其英里数。已知:1英里=1.60934千米(用符号常量)
#include<iostream>
usingnamespace std;
intmain()
{
float C,F;
const floats=1.60934; 用到了符号常量
cout<<"输入千米数C:";
cin>>C;
F=s*C;
cout<<"输出英里数F="<< F<<endl;
return 0;
}
5、输入一个int型数,将它的低4位(右四位)都置为1;
#include<iostream>
usingnamespace std;
intmain()
{
int n,m;
cout<<"输入一个整数:";
cin>>n;
m=n/10000*10000+1111; 十进制下
cout<<m<<endl;
/* m=n|15;
printf("%x",m); */ 十六进制下用printf
return 0;
}
【错误及解决办法】
1、本次实验相对较为简单,第四个用到符号常量还不熟悉,主要的问题还是出现在第五个将它的低四位都置位1。把它转化为十进制,理解为最后四位都改为1,后来经过同学老师指点也可以用16进制,更为简便。
【实验总结】
在本次实验中主要让我们重新认识并掌握了C++数据类型和表答式的应用,而且熟练cin和cout的应用,让我们了解了C++的基本用法。cin相当于c语言中的scanf语句,是用来输入使用的。而cout语句相当于c语言中的printf语句,是用来输出时使用的。
2、第四小题如果改为宏定义的话则为 #define r 1.60934;
实验二、预处理和语句
【实验目的】
1、熟悉并掌握使用文件包含命令;
2、熟悉并学习使用条件编译命令;
3、掌握选择语句;
4、掌握循环语句;
【实验内容】
1、编写一个程序,输入某雇员的每周工作时间(以小时计)和每小时的工资数,计算并输出他的工资。若雇员周工作小时超过40 小时,则超过部分按原工资的1.5 倍的加班工资来计算。若雇员每周工作小时超过60 小时,则超过60 的部分按原工资的3 倍的加班工资来计算,而40 到50 小时的工资仍按照原工资的1.5 倍的加班工资来计算。
•要求有输入提示和输出提示,如要输入雇员的工作时间和每小时的工资值时,可以提示:“Please input employee’s work time and wage_per_hour:”输出时,提示:
“Theemployee’s wage :”;
【源程序】
#include<iostream>
usingnamespace std;
intmain()
{
intt,x;
doubley=0;
cout<<"Pleaseinput employee's work time:\n";
cin>>t;
cout<<"Pleaseinput employee's wage_per_hour:\n";
cin>>x;
if(t<=40)
y=x*t;
else{
if(t>=60)
y=40*x+20*1.5*x+(t-60)*3*x;
else
y=40*x+(t-40)*x*1.5; }
cout<<"Theemployee's wage :"<<y<<endl;
return 0;
}
2、编写一个程序,提示用户输入一个年份及这一年的第一天是星期几,输出每个月的第一天是星期几。例如,如果用户输入2005和6,表示2005年1月1日是星期六,程序应输出如下内容:
January1, 2005 is Saturday
…
December1, 2005 is Thursday
•用函数 int ComputeDay(int year, int day)计算星期;
•在main函数完成用户输入和输出工作;
【源程序】
#include<iostream>
using namespace std;
int i=0,n;
void ComputeDay(int year, intday)
{
int monthday[20]={0,31,28,31,30,31,30,31,31,30,31,30,31};
if(year%4==0&&year%100!=0||year%400==0) //判断是否闰年
monthday[2]=29;
int j,m=0;
i++;
for(j=0;j<i;j++)
{
m+=monthday[j];
n=(day+m)%7; //n的值即为星期几
m=0; //m重新初始化回去,然后i++,再次进入循环,前面得出的几个月的星期几不变,会覆盖
}
}
int main()
{
Char *monthname[]={"0","January","February","March","April","May","June","July","August","Sepetember","October","November","December"};
char*week[]={"Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"};//能被7整除则余数为0,故Sunday居首
int year,day,k;
cout<<"请输入一个年份及这一年的第一天是星期几:";
cin>>year>>day;
if (day <8 && day >0) //星期几只能为1到7的整数
for(k=0;k<12;k++)
{
ComputeDay(year,day);
cout<<*(monthname+i)<<" ,1, "<<year<<" is"<<*(week+n)<<endl;
}
else
cout<<"输入星期几有误,请重输"<<endl;
return 0;
}
3、编写贷款分期偿还程序。一笔贷款的月还款包含偿还本金和偿还利息。月利息可以通过月利率乘以余额(剩余本金)来计算,于是月偿还金额就等于月还款额减去月利息。
•要求用户输入贷款额、贷款年限和利率,程序输出分期还款的计划。
•如果输入贷款额度10000美元、期限1年和利率7%,程序应该输出:
LoadAmount:10000
Numberof Years:1
AnnualInterest Rate:7%
MonthlyPayment:865.26
TotalPayment:10381.21
Payment# Interest Principal Balance
1 58.33 806.93 9193.07
2 53.62 811.64 8381.43
…
11 10.0 855.26 860.27
12 5.01 860.25 0.01
【源程序】
#include<iostream>
#include<stdio.h>
#include<math.h>
usingnamespace std;
intmain()
{
doublemoney,year,rate;
cout<<"InputLoad Amount ,"<<"Number of Years,"<<"AnnualInterest Rate:"<<"\n";
cin>>money>>year>>rate;
cout<<"LoadAmount:"<<money<<"\n";
cout<<"Numberof Years:"<<year<<"\n";
cout<<"AnnualInterest Rate:"<<rate<<"\n";
doubleyue,x,k;
yue=rate/12; //每月利率
x=money*yue*pow(1+yue,12*year)/(pow(1+yue,12*year)-1);//月还款额
//每月还款金额=〔贷款本金×月利率×(1+月利率)^还款月数〕÷〔(1+月利率)^还款月数-1〕
k=x*12*year; //总还款额
cout<<"MonthlyPayment:"<<x<<"\n";
cout<<"TotalPayment:"<<k<<"\n";
cout<<"Payment# "<<"Interest "<<"Principal "<<"Principal "<<"\n";
for(inti=1;i<=12*year;i++)
{
doublem,n,s;
m=money*yue;//m是月利息
n=x-m;//n是月偿还金额,月偿还金额=月还款额-月利息。
s=money-n;//即是下一个月的本金
money=s;
printf("%d %.2f %.2f %.2f\n",i,m,n,s);
}
}
【错误及解决办法 实验总结】
第一题相对简单,条理清晰,主要是编辑方面的输入错误。第二题相对难些,我喜欢将主函数写在前面,就容易犯没有函数声明的错误,即//ComputeDay函数声明。另外数组的定义,特别是二维数组,月份星期还有天数怎样的顺序定义我也思考了很久,比如为了数字对应上月份cout<<*(monthname+i) <<" ,1,"<<year<<" is "<<*(week+n)<<endl;,所以我定义为monthname[][20]={"0","January","February","March",····而星期几不用这样定义。
至于第三题最主要的是数学公式的运用,先前自己的想法编的公式,始终不能得出正确结果,后来同学告诉了公式,程序需要的结果也就出来了,也百度了下公式,确实没接触过。