c語言有深意的函數(shù) c語言函數(shù)的意義

c語言好玩的函數(shù)有哪些?

桌面下雪程序:#includewindows.h

成都創(chuàng)新互聯(lián)長期為上1000+客戶提供的網站建設服務,團隊從業(yè)經驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網生態(tài)環(huán)境。為柘城企業(yè)提供專業(yè)的成都網站建設、網站建設,柘城網站改版等技術服務。擁有十多年豐富建站經驗和眾多成功案例,為您定制開發(fā)。

#includetime.h

#includestdlib.h

#includeiostream.hconst int SnowNumber=500; //雪點數(shù)量struct SnowNode

{

POINT postion; //雪點位置

int iColor; //先前的顏色

int iSpeed; //下落速度

int iMove; //下落距離

int iStick; //粘貼度

};SnowNode SnowNodes[SnowNumber]; //雪點數(shù)組

int hTimer=0;

int CrWind=0;

int CrStep=0; //當前循環(huán)步數(shù)(用于限速)

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;//高性能定時器計數(shù)

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("創(chuàng)建定時器失敗"),TEXT("提示"),MB_OK|MB_ICONINFORMATION);

return -1;

}

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

while(1)

{

QueryPerformanceCounter(StartCt); //執(zhí)行運算前計數(shù)值

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(); //初始化雪點的數(shù)組

break;

}

}

MoveSnowNodes();

QueryPerformanceCounter(EndCt);//執(zhí)行運算后的計數(shù)值

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("創(chuàng)建定時器失敗"),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); //粘貼度(幾次循環(huán)作一次粘貼連判斷

// 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);

//根據(jù)幾向作隨機飄落

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語言有什么比較神奇的函數(shù)么

sound 不是標準函數(shù),有個windows 的 Beep 函數(shù)可用:

#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);

}

這個唱多來米發(fā)少,多來米發(fā)少。

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

比較神奇的函數(shù)是: system(命令字符串);

命令字符串可以是字符串常量,也可以是變量,通過它你可以調用各式各樣系統(tǒng)命令,或運行其它程序。

keybd_event()函數(shù) 也是比較神奇的windows 的函數(shù),調用它可以代替做“按鍵盤”的工作 -- 按下程序指定的鍵,抬起程序指定的鍵。

C語言函數(shù)的含義

C語言的發(fā)展頗為有趣,它的原型ALGOL 60語言。那么大家知道C語言函數(shù)是什么嗎?下面一起來看看!

函數(shù)(Function)是一段可以重復使用的代碼,這是從整體上對函數(shù)的認識。

C語言本身帶了很多庫函數(shù),并分門別類地放在了不同的頭文件中,使用時只要引入對應的頭文件即可。

除了C語言自帶的.函數(shù),我們也可以編寫自己的函數(shù),稱為自定義函數(shù)(User-Defined Function)。自定義函數(shù)和庫函數(shù)沒有本質的區(qū)別,表現(xiàn)形式和使用方法一樣,只是開發(fā)者不同而已。

這一章我們就來講解如何編寫和使用自己的函數(shù)。

參數(shù)

函數(shù)的一個明顯特征就是使用時帶括號( ),必要的話,括號中還要包含數(shù)據(jù)或變量,稱為參數(shù)(Parameter)。參數(shù)是函數(shù)需要處理的數(shù)據(jù),例如:

strlen(str1)用來計算字符串的長度,str1就是參數(shù)。

puts("C語言中文網")用來輸出字符串,"C語言中文網"就是參數(shù)。

返回值

既然函數(shù)可以處理數(shù)據(jù),那就有必要將處理結果告訴我們,所以很多函數(shù)都有返回值(Return Value)。所謂返回值,就是函數(shù)的執(zhí)行結果。例如:

char str1[] = "C Language";

int len = strlen(str1);

strlen() 的處理結果是字符串 str1 的長度,是一個整數(shù),我們通過 len 變量來接收。

函數(shù)返回值有固定的數(shù)據(jù)類型(int、char、float等),用來接收返回值的變量類型要一致。

C語言中的一些特殊函數(shù)

C語言里沒有fmax()這個函數(shù),它不能求出兩個數(shù)中最大值,除非你自己定義這個函數(shù)。

如下:

int fmax(int a ,int b)

{

return ab?a:b;

}

函數(shù)power()是C語言里固有的庫函數(shù),可以直接使用。它主要用來求某個數(shù)的n次方。

如power(x,3)實際上就是求x*x*x.用該函數(shù)時前面得加math.h

C語言常用的函數(shù)有哪些

C語言庫函數(shù),常用庫函數(shù)有:

1、scanf格式輸入函數(shù)

2、printf格式輸出函數(shù)

3、systemdos命令函數(shù)

4、sort排序

5、main主函數(shù)

6、fgets文件讀取字符串函數(shù)

7、fputs文件寫入字符串函數(shù)

8、fscanf文件格式讀取函數(shù)

9、fprintf文件格式寫入函數(shù)

10、fopen打開文件函數(shù)

11、getchar輸入字符函數(shù)

12、putchar輸出字符函數(shù)

13、malloc動態(tài)申請內存函數(shù)

14、free釋放內存函數(shù)

15、abs求絕對值數(shù)學函數(shù)

16、sqrt求平方根數(shù)學函數(shù)

擴展資料

語言組成:

1、數(shù)據(jù)類型

C的數(shù)據(jù)類型包括:整型、字符型、實型或浮點型(單精度和雙精度)、枚舉類型、數(shù)組類型、結構體類型、共用體類型、指針類型和空類型。

2、常量與變量

常量其值不可改變,符號常量名通常用大寫。

變量是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數(shù)字或下劃線構成的序列,請注意第一個字符必須為字母或下劃線,否則為不合法的變量名。變量在編譯時為其分配相應存儲單元。

3、數(shù)組

如果一個變量名后面跟著一個有數(shù)字的中括號,這個聲明就是數(shù)組聲明。字符串也是一種數(shù)組。它們以ASCII的NULL作為數(shù)組的結束。要特別注意的是,方括內的索引值是從0算起的。

4、指針

如果一個變量聲明時在前面使用 * 號,表明這是個指針型變量。換句話說,該變量存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區(qū)別于其他同時代高級語言的主要特征之一。

參考資料來源:百度百科-函數(shù)

新聞標題:c語言有深意的函數(shù) c語言函數(shù)的意義
路徑分享:http://muchs.cn/article28/dosddcp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供服務器托管、網站建設網站營銷、ChatGPT、軟件開發(fā)、微信公眾號

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

h5響應式網站建設