![](https://images.cnblogs.com/OutliningIndicators/ContractedBlock.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;
}
为保测试结果更准确.请运行代码后,不要做其它操作.代码来源<<编程之美>>,效果如下图: