用C和C++语言分别写了一个控制台下的电子时钟模拟程序,代码如下:
C++代码写法:
#include <iostream>
#include <iomanip>
#include <windows.h>
using namespace std;
class myClock
{
public:
myClock( int hour = 0, int minu = 0, int sec = 0 );
void run( );
private:
void show();
void tick();
int hour;
int minu;
int sec;
};
myClock::myClock( int hour, int minu, int sec ):hour(hour),minu(minu),sec(sec)
{
//Null
}
void myClock::show( )
{
system("cls");
cout.fill('0');
//printf("%02d:%02d:%02d \r", hour, minu, sec );
cout << setw(2) << hour << ":" << setw(2) << minu << ":" << setw(2) << sec << endl;
}
void myClock::tick( )
{
if( ++sec > 59 )
{
sec = 0;
++minu;
}
if( minu > 59 )
{
minu = 0;
++hour;
}
if( hour > 23 )
hour = 0;
}
void myClock::run( )
{
while(1)
{
show();
tick();
Sleep(1000);
}
}
int main(void)
{
myClock C(23,59,56);
C.run();
return 0;
}
C代码实现如下:
#include <stdio.h>
#include <windows.h>
struct myClock
{
int hour;
int minu;
int sec;
};
void show( struct myClock *c )
{
system("cls");
printf("%02d:%02d:%02d \r", c->hour, c->minu, c->sec );
}
void tick( struct myClock *c )
{
if( ++c->sec > 59 )
{
c->sec = 0;
++c->minu;
}
if( c->minu > 59 )
{
c->minu = 0;
++c->hour;
}
if( c->hour > 23 )
c->hour = 0;
}
void run( struct myClock *c )
{
while(1)
{
show(c);
tick(c);
Sleep(1000);
}
}
int main(void)
{
struct myClock C = { 23, 59, 56 };
run(&C);
return 0;
}
小插曲:在C++语言实现中我将控制分钟的变量写成了“min”,编译的时候死活通不过,在c中使用“cin”这个标志服不是好好的吗?我最后才弄明白:C++中有“min()”这个函数,如果直接中“min”做分钟的标志符,编译器会把它当成min函数来处理。
效果图: