c语言有深意的函数 c语言函数的意义

c语言好玩的函数有哪些?

桌面下雪程序:#includewindows.h

成都创新互联长期为上1000+客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为柘城企业提供专业的成都网站建设、网站建设,柘城网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

#includetime.h

#includestdlib.h

#includeiostream.hconst int SnowNumber=500; //雪点数量struct SnowNode

{

POINT postion; //雪点位置

int iColor; //先前的颜色

int iSpeed; //下落速度

int iMove; //下落距离

int iStick; //粘贴度

};SnowNode SnowNodes[SnowNumber]; //雪点数组

int hTimer=0;

int CrWind=0;

int CrStep=0; //当前循环步数(用于限速)

int ScreenWidth=0; //屏幕宽度

int ScreenHeight=0; //屏幕高度void GetScreenSize();

void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime);

void InitSnowNodes();

void MoveSnowNodes();int WINAPI WinMain(HINSTANCE hInstance,

HINSTANCE hPrevInstance,

LPSTR lpCmdLine,

int nCmdShow

)

{

MSG msg; //标准windows消息

LARGE_INTEGER Frequency; //高性能定时器频率

LARGE_INTEGER StartCt,EndCt;//高性能定时器计数

float ElapsedTime; //时间间隔

srand((unsigned)time(NULL));

GetScreenSize();

InitSnowNodes();

QueryPerformanceFrequency(Frequency);

hTimer=SetTimer(0,0,rand()%5*500,(TIMERPROC)TimerProc);

if(hTimer==0)

{

MessageBox(0,TEXT("创建定时器失败"),TEXT("提示"),MB_OK|MB_ICONINFORMATION);

return -1;

}

RegisterHotKey(0,0,MOD_CONTROL,(int)'L');

while(1)

{

QueryPerformanceCounter(StartCt); //执行运算前计数值

if(PeekMessage(msg,0,0,0,1))

{

switch(msg.message)

{

case WM_TIMER: TimerProc(0,0,0,0);

break; //预设风向改变时间已到

case WM_HOTKEY: KillTimer(0,hTimer);//删除随机风向定时 器

UnregisterHotKey(0,0);//删除退出热键

InvalidateRect(0,NULL,true);

exit(1);

break;

case WM_DISPLAYCHANGE:

GetScreenSize(); //重新取屏幕的尺寸

InitSnowNodes(); //初始化雪点的数组

break;

}

}

MoveSnowNodes();

QueryPerformanceCounter(EndCt);//执行运算后的计数值

ElapsedTime=(EndCt.QuadPart-StartCt.QuadPart)/Frequency.QuadPart;

if((ElapsedTime0.0005))

Sleep(2); //简单限速

else if(ElapsedTime0.0010)

Sleep(1);

else if(ElapsedTime0.0015)

Sleep(3);

}

//MessageBox(0,TEXT(“消息“),TEXT(“消息“),MB_OK|MB_ICONINFORMATION);

return 0;

}

void GetScreenSize()

{

ScreenWidth=GetSystemMetrics(SM_CXSCREEN);

ScreenHeight=GetSystemMetrics(SM_CYSCREEN);

return ;

}void CALLBACK TimerProc(HANDLE hWnd,UINT uMsg,UINT idEvent,DWORD dwTime)

{

// MessageBox(0,TEXT(“消息“),TEXT(“消息“),MB_OK|MB_ICONINFORMATION);

srand((unsigned)time(NULL));

if(hTimer==0)

{

MessageBox(0,TEXT("创建定时器失败"),TEXT("提示"),MB_OK|MB_ICONINFORMATION);

return ;

}

SetTimer(0,hTimer,((rand()%27+4)*500),(TIMERPROC)TimerProc); //// 重设下次风向改变时间

//修改风向

if(CrWind!=0)

CrWind=0;

else

CrWind=rand()%3-1;

return ;

}void InitSnowNodes()

{

HDC hScreenDC=0;

int j=0;

hScreenDC=CreateDC("DISPLAY",NULL,NULL,NULL);

if(hScreenDC==NULL)

{

MessageBox(0,"获取屏幕DC失败!","信息",MB_OK|MB_ICONERROR);

return ;

}

srand((unsigned)time(NULL));

for(j=0;jSnowNumber;j++)

{

SnowNodes[j].postion.x=rand()%ScreenWidth;

SnowNodes[j].postion.y=rand()%ScreenHeight;

SnowNodes[j].iColor=GetPixel(hScreenDC,SnowNodes[j].postion.x,SnowNodes[j].postion.y);

SnowNodes[j].iSpeed=(rand()%5+1); //每次下落距离(1-5)

SnowNodes[j].iStick=(30-rand()%SnowNodes[j].iSpeed); //粘贴度(几次循环作一次粘贴连判断

// cout〈〈SnowNodes[j].postion.x〈〈“ Y:“〈〈SnowNodes[j].postion.y〈〈endl;

}

DeleteDC(hScreenDC);

}void MoveSnowNodes()

{

// MessageBox(0,TEXT(“消息“),TEXT(“消息“),MB_OK|MB_ICONINFORMATION);

HDC hScreenDC=0;

srand((unsigned)time(NULL));

int x=0,y=0,i=0;

hScreenDC=CreateDC("DISPLAY",NULL,NULL,NULL);

if(hScreenDC==NULL)

{

MessageBox(0,"获取屏幕DC失败!","信息",MB_OK|MB_ICONERROR);

return ;

}

// TextOut(hScreenDC,0,0,“虽然大检查顺顺藤摸瓜克格勃呀加“,0);

for(i=0;iSnowNumber;i++)

{

//控制雪点下降速度

if((CrStep%SnowNodes[i].iSpeed)!=0)

continue;

//恢复上次被覆盖点

if((GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y))==0XFFFFFF)

SetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y,SnowNodes[i].iColor);

//根据几向作随机飘落

x=SnowNodes[i].postion.x+rand()%3+CrWind;

y=SnowNodes[i].postion.y+SnowNodes[i].iMove;

//积雪(停留)效果处理

if( ( (CrStep%SnowNodes[i].iStick)==0)

( (GetPixel(hScreenDC,x,y))!=(GetPixel(hScreenDC,x,y+1)))

( (GetPixel(hScreenDC,x-1,y))!=(GetPixel(hScreenDC,x-1,y+1)))

( (GetPixel(hScreenDC,x+1,y))!=GetPixel(hScreenDC,x+1,y+1))

)

{

//稍稍调整坐标

if(GetPixel(hScreenDC,x,y-1)==GetPixel(hScreenDC,x,y-2))

{

y--;

}

else

{

if(GetPixel(hScreenDC,x,y-1)==GetPixel(hScreenDC,x,y-2))

y++;

x+=CrWind;

}

//画三个雪花点

SetPixel(hScreenDC,x,y,0XFFFFFF);

SetPixel(hScreenDC,x+1,y+1,0XFFFFFF);

SetPixel(hScreenDC,x-1,y+1,0XFFFFFF);

//重生雪点

SnowNodes[i].postion.x=rand()%ScreenWidth;

SnowNodes[i].postion.y=rand()%10;

SnowNodes[i].iColor=GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y);

}

else

{

if( (x0) || (xScreenWidth) || (yScreenHeight))

{

SnowNodes[i].postion.x=(rand()%10);

SnowNodes[i].postion.y=(rand()%ScreenWidth);

SnowNodes[i].iColor=GetPixel(hScreenDC,SnowNodes[i].postion.x,SnowNodes[i].postion.y);

}

else

{

//保存颜色并绘制雪点

SnowNodes[i].iColor=GetPixel(hScreenDC,x,y);

SetPixel(hScreenDC,x,y,0XFFFFFF);

//此时保存新雪点位置

SnowNodes[i].postion.x=x;

SnowNodes[i].postion.y=y;

}

}

}

DeleteDC(hScreenDC);

CrStep++;

}

C语言有什么比较神奇的函数么

sound 不是标准函数,有个windows 的 Beep 函数可用:

#include stdio.h

#include stdlib.h

#include windows.h

main()

{

Beep(523,500); Beep(587,500); Beep(659,500);

Beep(698,500); Beep(784,500);

Sleep(500);

Beep(523,500); Beep(587,500); Beep(659,500);

Beep(698,500); Beep(784,500);

}

这个唱多来米发少,多来米发少。

------------------------

比较神奇的函数是: system(命令字符串);

命令字符串可以是字符串常量,也可以是变量,通过它你可以调用各式各样系统命令,或运行其它程序。

keybd_event()函数 也是比较神奇的windows 的函数,调用它可以代替做“按键盘”的工作 -- 按下程序指定的键,抬起程序指定的键。

C语言函数的含义

C语言的发展颇为有趣,它的原型ALGOL 60语言。那么大家知道C语言函数是什么吗?下面一起来看看!

函数(Function)是一段可以重复使用的代码,这是从整体上对函数的认识。

C语言本身带了很多库函数,并分门别类地放在了不同的头文件中,使用时只要引入对应的头文件即可。

除了C语言自带的.函数,我们也可以编写自己的函数,称为自定义函数(User-Defined Function)。自定义函数和库函数没有本质的区别,表现形式和使用方法一样,只是开发者不同而已。

这一章我们就来讲解如何编写和使用自己的函数。

参数

函数的一个明显特征就是使用时带括号( ),必要的话,括号中还要包含数据或变量,称为参数(Parameter)。参数是函数需要处理的数据,例如:

strlen(str1)用来计算字符串的长度,str1就是参数。

puts("C语言中文网")用来输出字符串,"C语言中文网"就是参数。

返回值

既然函数可以处理数据,那就有必要将处理结果告诉我们,所以很多函数都有返回值(Return Value)。所谓返回值,就是函数的执行结果。例如:

char str1[] = "C Language";

int len = strlen(str1);

strlen() 的处理结果是字符串 str1 的长度,是一个整数,我们通过 len 变量来接收。

函数返回值有固定的数据类型(int、char、float等),用来接收返回值的变量类型要一致。

C语言中的一些特殊函数

C语言里没有fmax()这个函数,它不能求出两个数中最大值,除非你自己定义这个函数。

如下:

int fmax(int a ,int b)

{

return ab?a:b;

}

函数power()是C语言里固有的库函数,可以直接使用。它主要用来求某个数的n次方。

如power(x,3)实际上就是求x*x*x.用该函数时前面得加math.h

C语言常用的函数有哪些

C语言库函数,常用库函数有:

1、scanf格式输入函数

2、printf格式输出函数

3、systemdos命令函数

4、sort排序

5、main主函数

6、fgets文件读取字符串函数

7、fputs文件写入字符串函数

8、fscanf文件格式读取函数

9、fprintf文件格式写入函数

10、fopen打开文件函数

11、getchar输入字符函数

12、putchar输出字符函数

13、malloc动态申请内存函数

14、free释放内存函数

15、abs求绝对值数学函数

16、sqrt求平方根数学函数

扩展资料

语言组成:

1、数据类型

C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。

2、常量与变量

常量其值不可改变,符号常量名通常用大写。

变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。

3、数组

如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。

4、指针

如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。

参考资料来源:百度百科-函数


文章题目:c语言有深意的函数 c语言函数的意义
本文地址:http://azwzsj.com/article/dosddcp.html