![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![ExpandedBlockStart.gif](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
#include
<
stdio.h
>
#include < stdlib.h >
#include < math.h >
#include < dos.h >
#include " Windows.h "
const double SPLIT = 0.01 ;
const int COUNT = 200 ;
const double PI = 3.14159265 ;
const int INTERVAL = 300 ;
int _tmain()
{
DWORD busySpan[COUNT];
DWORD idleSpan[COUNT];
int half = INTERVAL / 2 ;
double radian = 0.0 ;
for ( int i = 0 ;i < COUNT;i ++ )
{
busySpan[i] = (DWORD)(half + (sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT;
}
DWORD startTime = 0 ;
int j = 0 ;
while ( true )
{
j = j % COUNT;
startTime = GetTickCount();
while ((GetTickCount() - startTime) <= busySpan[j]);
Sleep(idleSpan[j]);
j ++ ;
}
return 0 ;
}
#include < stdlib.h >
#include < math.h >
#include < dos.h >
#include " Windows.h "
const double SPLIT = 0.01 ;
const int COUNT = 200 ;
const double PI = 3.14159265 ;
const int INTERVAL = 300 ;
int _tmain()
{
DWORD busySpan[COUNT];
DWORD idleSpan[COUNT];
int half = INTERVAL / 2 ;
double radian = 0.0 ;
for ( int i = 0 ;i < COUNT;i ++ )
{
busySpan[i] = (DWORD)(half + (sin(PI * radian) * half));
idleSpan[i] = INTERVAL - busySpan[i];
radian += SPLIT;
}
DWORD startTime = 0 ;
int j = 0 ;
while ( true )
{
j = j % COUNT;
startTime = GetTickCount();
while ((GetTickCount() - startTime) <= busySpan[j]);
Sleep(idleSpan[j]);
j ++ ;
}
return 0 ;
}
为保测试结果更准确.请运行代码后,不要做其它操作.代码来源<<编程之美>>,效果如下图: