break;}
}
}
运行结果及分析小结
实验二
一,实验目的
1.熟悉Visual studio 6.0集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.通过运行示例程序了解程序开发过程;
4,熟悉掌握缺省函数和重载函数的应用。
二,实验任务
2、函数重载和带缺省形参值函数练习:
看如下程序,为它添加适当的函数声明和定义,使之能正确运行通过。
要求用两种方法实现,并比较两种方法,说说函数重载和带缺省形参值函数各自的特点和使用范围。
另外注意在功能实现的过程中,对形参数据合法性的判断及处理,以及各函数之间的关系(注意递归函数的作用)。
/*******************************************************************
程序文件:
stime.cpp
程序功能:
关于时钟运行的描述
程序说明:
该程序通过对“时间”这种新的数据类型的说明和使用来展示C++对比C语言而言,在面向过程程序设计方面的些许改进。
同时也接触面向对象技术的一些概念如重载和多态性(非全部)。
********************************************************************/
//输入输出流声明包含头文件
#include
//时间结构体stime的声明
structstime
{
inthour;//小时
intmin;//分钟
intsec;//秒钟
};
//此处用户函数声明若干
//...(略,请补充)...
//主函数
voidmain()
{
stimet1={12,0,0};//C++中定义结构体变量可省略关键词struct
//定义一个时间变量t1,初始化为12点0分0秒
cout<<"t1:
"<//显示t1当前表示的时间
stimet2=add(t1,30);//变量的定义可以不出现在程序块开始的地方
//定义一个时间变量t2,用函数add返回值初始化为t1过30秒后所代表的时间
cout<<"t2:
"<t2=add(t2,15,10);
//t2设为t2原来的时间过10分15秒后所表示的时间(注意参数先后顺序)
t2=add(t2,10,15,2);//t2设为t2原来的时间过2小时15分10秒后所表示的时间
cout<<"t2:
"<t1=sub(t1,30,20,1);//t1设为t1原来的时间之前1小时20分30秒
cout<<"t1:
"<intn=sub(t2,t1);//求t1和t2之间相隔多少秒(t2-t1)
cout<<"Now,t2-t1="<?
<}
//此处用户函数定义若干
//...(略,请补充)...
三,题目分析及核心代码
分析:
此题注重要的是三个函数,分别是实现T1,T2在时间上的加法,以及T1,T2的时间差的求法。
对于对于实现t1,t2的时间上的加法,可以考虑用缺省函数,因为题目中要用到的add函数最多的时候是显现时分秒同时改变,所以该add函数定义四个变量,分别别是表示原时间的一个结构体量,以及三个能给时间做加法的整型变量。
对于各时间做减法时,因为题目一个是结构体之间的减法,一个是结构体中自身的加法,且需求的变量个数也不同,就可以用一个重载函数sub来实现时间的加法,具体函数定义如下:
核心代码:
/*函数重载和带缺省形参值函数练习:
看如下程序,为它添加适当的函数声明和定义,使之能正确运行通过。
要求用两种方法实现,并比较两种方法,说说函数重载和带缺省形参值函数各自的特点和使用范围。
另外注意在功能实现的过程中,对形参数据合法性的判断及处理,以及各函数之间的关系(注意递归函数的作用)。
/*******************************************************************
程序文件:
stime.cpp
程序功能:
关于时钟运行的描述
程序说明:
该程序通过对“时间”这种新的数据类型的说明和使用来展示C++对比C语言而言,在面向过程程序设计方面的些许改进。
同时也接触面向对象技术的一些概念如重载和多态性(非全部)。
********************************************************************/
//输入输出流声明包含头文件
#include
usingnamespacestd;
//时间结构体stime的声明
structstime
{
inthour;//小时
intmin;//分钟
intsec;//秒钟
};
//此处用户函数声明若干
stimeadd(stimet,intb=0,intc=0,intd=0)
{
stimet1;
t1.sec=t.sec+b;
if(t1.sec>60)
{c=c+1;
t1.sec=t1.sec-60;}
t1.min=t.min+c;
if(t1.min>60)
{d=d+1;
t1.min=t1.min-60;}
t1.hour=t.hour+d;
if(t1.hour>24)
t1.hour=t1.hour-24;
returnt1;
};
stimesub(stimet,inta,intb,intc)
{
stimet2;
if(t.sec{t2.sec=t.sec+60-a;
t.min=t.min-1;}
else
t2.sec=t.sec-a;
if(t.min
{t2.min=t.min+60-b;
t.hour=t.hour-1;}
else
t2.min=t.min-b;
if(t.hourt2.hour=t.hour+24-c;
else
t2.hour=t.hour-c;
returnt2;
};
intsub(stimet2,stimet1)
{
inta,b,c;
longintd;
if(t2.sec{a=t2.sec+60-t1.sec;
t2.min=t2.min-1;}
else
a=t2.sec-t1.sec;
if(t2.min{b=t2.min+60-t1.min;
t2.hour=t2.hour-1;}
else
b=t2.min-t1.min;
if(t2.hourc=t2.hour+24-t1.hour;
else
c=t2.hour-t1.hour;
d=c*60*60+b*60+a;
returnd;
};
//主函数
voidmain()
{
stimet1={12,0,0};//C++中定义结构体变量可省略关键词struct
//定义一个时间变量t1,初始化为12点0分0秒
cout<<"t1:
"<"<"<stimet2=add(t1,30);//变量的定义可以不出现在程序块开始的地方
//定义一个时间变量t2,用函数add返回值初始化为t1过30秒后所代表的时间
cout<<"t2:
"<"<"<//t2设为t2原来的时间过10分15秒后所表示的时间(注意参数先后顺序)
t2=add(t2,10,15,2);//t2设为t2原来的时间过2小时15分10秒后所表示的时间
cout<<"t2:
"<"<"<t1=sub(t1,30,20,1);//t1设为t1原来的时间之前1小时20分30秒
cout<<"t1:
"<"<"<cout<<"Now,t2-t1="<}
运行结果及分析小结
实验三
一,实验目的
1.熟悉Visual studio 6.0集成开发环境;
2.学习新建和打开控制台应用程序的方法;
3.通过运行示例程序了解程序开发过程;
二,实验任务:
张三、李四、王五三个棋迷,定期去文化宫下棋。
张三每五天来一次,李四每六天来一次,王五每九天来一次。
问每过多少天他们才能一起在文化宫下棋?
三,题目分析及核心代码
分析:
本题查找最小公倍数即可,取一个变量,当它与以三个数每个的余数都为0时(条件if),此时这个变量就是这三个数的最小公倍数。
但这个变量的初始只应该是这三个数的最大值,因为此题已告知三个数分别是多少,所以直接给该变量先赋初值。
当不满足条件if时,变量加1,直到满足时,输出该变量。
/*张三、李四、王五三个棋迷,定期去文化宫下棋。
张三每五天来一次,
李四每六天来一次,王五每九天来一次。
问每过多少天他们才能一起在文化宫下棋?
*/
#include
usingnamespacestd;
voidmain()
{
inti=5,j=6,k=9,t=9,m=1;
while(m)
{
if(t%5==0&&t%6==0&&t%9==0)
{cout<<"每过"<m=0;}
else
t++;
}
}
运行结果及分析小结