當前位置:首頁 » 編程軟體 » 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-07-09 13:38:07 瀏覽:771
雙加密狗 發布:2025-07-09 13:26:51 瀏覽:471
1加5t買什麼配置合適 發布:2025-07-09 13:17:51 瀏覽:540
mssql分頁存儲過程 發布:2025-07-09 13:17:00 瀏覽:271
cpython模塊擴展 發布:2025-07-09 13:16:11 瀏覽:95
linux安裝mysql步驟 發布:2025-07-09 13:02:48 瀏覽:158
ant編譯flex 發布:2025-07-09 12:57:10 瀏覽:787
光洋編程中文 發布:2025-07-09 12:56:14 瀏覽:418
安卓的高德地圖哪個好 發布:2025-07-09 12:50:34 瀏覽:220
2008資料庫密鑰 發布:2025-07-09 12:42:23 瀏覽:969