當前位置:首頁 » 編程軟體 » 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;
}

熱點內容
虛幻4腳本 發布:2024-10-05 16:46:29 瀏覽:205
c可以用來編譯系統軟體嗎 發布:2024-10-05 16:22:26 瀏覽:19
U盤和存儲器 發布:2024-10-05 16:22:04 瀏覽:898
cmdc語言 發布:2024-10-05 15:58:32 瀏覽:553
伺服器怎麼弄公網ip 發布:2024-10-05 15:57:02 瀏覽:642
設備配置在什麼地方 發布:2024-10-05 15:44:59 瀏覽:251
matlab外部介面編程 發布:2024-10-05 15:36:58 瀏覽:366
C事件編程 發布:2024-10-05 15:15:43 瀏覽:642
一台伺服器出現兩IP 發布:2024-10-05 15:10:05 瀏覽:928
md5加密演算法c 發布:2024-10-05 15:05:40 瀏覽:763