當前位置:首頁 » 編程軟體 » C事件編程

C事件編程

發布時間: 2024-10-05 15:15:43

A. 如何用c語言實現:a,b,c三個事件,依次進行,每到a時就執行事件1,再到b,再執行事件1,再c,再事件1.

典型的狀態機結構,可以去網上找找有關的資料,大概的結構像這樣

enum { state_A, state_B, state_C } state = state_A;

while(1)
{
switch ( state )
{
case state_A:
if ( event_A ) // 這里也可以用switch
{
action_1(); // 在某狀態下發生某事件執行某個動作,並轉入下個狀態
state = state_B;
}
else if ( event_B )
{

}
else
{

}
break;
case state_B:
... ...
}

}

根據你的問題補充,可以這樣劃分狀態
准備輪詢1號機,等待1號機應答(已經輪詢1號機,但1號機未應答),准備輪詢2號機,等待2號機應答,准備輪詢3號機,等待3號機應答,
或者分成3個狀態加一個標志,
輪詢1號機,輪詢2號機,輪詢3號機,加一個有無應答標志,
其實這兩種分法沒有本質區別。
程序框架大概的樣子是這樣
switch ( state )
case 准備輪詢1號機:
發送輪詢1號機的命令
state = 等待1號機的應答;
break;
case 等待1號機的應答;
判斷1號機的應答狀態,可能是正確、錯誤、超時,分別處理,並設置狀態
正確:
state = 准備輪詢2號機
錯誤:
state = 准備輪詢1號機,重試
超時:
state = 准備輪詢1號機,重試,具體做什麼可以很靈活

B. c語言問題 一輛卡車違反交通規則,撞人後逃跑。 現場有三人目擊事件,但都沒有記住車號 .....

#include<stdio.h>
#include <math.h>
int main(){
int i,j,k,l;
for(i=0;i<10;i++){
j=i;
for(k=0;k<10;k++){
l=k;
if(i==k){
continue;
}else{
double nums=sqrt(i*1000+j*100+k*10+l);
if((int)nums==nums){
int plateNum=(i*1000+j*100+k*10+l);
printf("車牌號是:%d\n",plateNum);
break;
}else{
continue;
}
}
}
}
return 0;
}

熱點內容
網頁加密代碼 發布:2025-09-18 21:56:12 瀏覽:163
安卓targz解壓 發布:2025-09-18 21:45:58 瀏覽:800
怎麼設置手機屏幕密碼怎麼設置 發布:2025-09-18 21:44:18 瀏覽:817
直線插補演算法 發布:2025-09-18 21:22:49 瀏覽:654
矩陣內的演算法 發布:2025-09-18 20:55:07 瀏覽:572
android網路優化 發布:2025-09-18 20:53:19 瀏覽:218
看交換機配置哪些是默認的 發布:2025-09-18 20:46:59 瀏覽:620
在釘釘上如何獲取自己的密碼 發布:2025-09-18 20:46:12 瀏覽:855
pythonifthenelse 發布:2025-09-18 20:33:19 瀏覽:916
熱血傳奇腳本怎麼做 發布:2025-09-18 20:29:06 瀏覽:614