女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用C語言構建高效的嵌入式程序

玩轉單片機與嵌入式 ? 來源:玩轉單片機與嵌入式 ? 2023-12-21 09:27 ? 次閱讀

1、引言

嵌入式工程師在編寫C語言程序時,需要注重效率和清晰的思路。本文將通過解析經典問題“猴子選大王”來展示如何用C語言思維方式構建高效、清晰的程序。

2、問題描述

考慮一群猴子,手拉手排成一個圓,從任意一只猴子開始從1開始報數,當遇到要排除的數時該猴子退出圈,從下一只猴子開始繼續從1報數,如此反復,最終剩下的猴子為大王。

3、程序構架

數據獲取

通過printf和scanf獲取猴子的總數、起始位置和要排除的數。注意處理異常情況,確保輸入合法性。

printf("input total num:");
scanf("%d", &n);
printf("from which num begin:");
scanf("%d", &k);
if(k > n || k == 0) {
    printf("please input the right begin num");
    return 1; 
}
printf("input the out num:");
scanf("%d", &m);
if(m > n || m == 0) { 
    printf("please input the right del num");
    return 2; 
}

數據運算

使用循環鏈表構建“猴子”的圓圈,靈活運用C語言指針操作。注意內存的動態分配和釋放。

typedef struct node {
    int data;
    struct node *next;
} linklist;


/* 創建循環鏈表,頭節點也存信息 */
linklist *head = (linklist*)malloc(sizeof(linklist));
linklist *p = head;
p->data = 1;
p->next = p;


/* 初始化循環鏈表 */
for (int i = 2; i <= n; i++) {
    linklist *s = (linklist*)malloc(sizeof(linklist));
    s->data = i;
    s->next = p->next;
    p->next = s;
    p = p->next;
}

提高程序運行速率

避免過度使用循環,更多地使用指針操作

/* 找到第 k 個節點 */
p = head;
for (int i = 1; i <= k; i++) {
    p = p->next;
}

4、邏輯實現

保存初始“猴子”圓圈參數

/* 保存節點總數 */
int total = n;
printf("
the out num:");
linklist *q = head;

猴子查數

猴子查數是關鍵,需要找到開始的“猴子”數、刪除該“猴子”、將刪除的循環鏈表首尾連接起來。

/* 只剩一個節點時停止循環 */
while (total != 1) {
    /* 報數過程,p指向要刪除的節點 */
    for (int i = 1; i < m; i++) {
        p = p->next;
    }


    /* 打印要刪除的節點序號 */
    printf("[%d] ", p->data);


    /* q 指向 p 節點的前驅 */
    while (q->next != p) {
        q = q->next;
    }


    /* 刪除 p 節點 */
    q->next = p->next;


    /* 保存被刪除節點指針 */
    linklist *s = p;


    /* p 指向被刪除節點的后繼 */
    p = p->next;


    /* 釋放被刪除的節點 */
    free(s);


    /* 節點個數減一 */
    total--;
}


/* 打印最后剩下的節點序號 */
printf("

the last num:[%d] 

", p->data);
free(p);

5、結論

通過以上程序實現,展示了用C語言思維方式構建高效、清晰的嵌入式程序的過程。重點在于數據獲取、數據運算和指針操作的靈活運用。這個例子雖然簡單,但在實際嵌入式開發中,這種思維方式將有助于處理更復雜的問題和提高程序的運行效率。 希望本文能夠幫助嵌入式工程師更好地理解和運用C語言,構建出更為優秀的嵌入式系統

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 嵌入式
    +關注

    關注

    5138

    文章

    19524

    瀏覽量

    314651
  • C語言
    +關注

    關注

    180

    文章

    7630

    瀏覽量

    140177
  • 程序
    +關注

    關注

    117

    文章

    3820

    瀏覽量

    82364

原文標題:用C語言構建高效、清晰思路的嵌入式程序:猴子選大王問題解析

文章出處:【微信號:玩轉單片機與嵌入式,微信公眾號:玩轉單片機與嵌入式】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦
    熱點推薦

    嵌入式c語言編程(由淺入深)

    本內容詳細介紹了嵌入式c語言編程的各項知識,包括嵌入式c語言編程,
    發表于 11-02 14:37 ?0次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>c</b><b class='flag-5'>語言</b>編程(由淺入深)

    嵌入式CC++語言精華文章集錦

    C/C++語言深層探索,包括嵌入式程序員需要知道的幾個問題,嵌入式系統編程修煉,基ARM的
    發表于 03-04 15:20 ?13次下載

    嵌入式C的主要特點以及嵌入式C與標準C異同沖區重用

    嵌入式C發展迅速, 而且成為最受歡迎的語言之一, 主要因為它具有強大的功能。嵌入式C加上一些匯
    發表于 05-29 14:24 ?3905次閱讀

    你不知道嵌入式工程師,耍起C語言的萬能“三板斧”!

    關鍵詞:嵌入式C語言 作為嵌入式工程師,寫一個效率高效,思路清晰的C
    發表于 04-22 15:59 ?1143次閱讀

    嵌入式系統C語言的特點及程序設計中代碼優化的技巧

    目前,在嵌入式系統開發中可使用的語言很多,其中 C語言應用得最廣泛。雖然 C
    的頭像 發表于 09-02 09:14 ?3209次閱讀

    嵌入式C語言-文件操

    嵌入式C語言-文件操(嵌入式開發需要什么證書)-嵌入式C
    發表于 07-30 11:56 ?15次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>-文件操<b class='flag-5'>用</b>

    嵌入式開發語言-C語言編程

    C語言編程概述環境在Windows上構建C語言的環境安裝在Mac上構建
    發表于 10-20 09:59 ?17次下載
    <b class='flag-5'>嵌入式</b>開發<b class='flag-5'>語言</b>-<b class='flag-5'>C</b><b class='flag-5'>語言</b>編程

    標準c語言嵌入式,嵌入式C語言C語言的區別

    嵌入式C語言C語言的區別:最常用的系統編程語言C
    發表于 10-20 14:06 ?6次下載
    標準<b class='flag-5'>c</b><b class='flag-5'>語言</b>與<b class='flag-5'>嵌入式</b>,<b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>與<b class='flag-5'>C</b><b class='flag-5'>語言</b>的區別

    嵌入式linux c語言,嵌入式LinuxC語言開發工具.pdf

    2 章 嵌入式Linux C 語言開發工具本章目標任何應用程序的開發都離不開編輯器、編譯器及調試器,嵌入式Linux 的
    發表于 11-01 17:38 ?12次下載
    <b class='flag-5'>嵌入式</b>linux <b class='flag-5'>c</b><b class='flag-5'>語言</b>,<b class='flag-5'>嵌入式</b>LinuxC<b class='flag-5'>語言</b>開發工具.pdf

    什么是嵌入式開發?為什么C語言作為開發語言

    內部做開發的,而操作系統所有的內核都是C語言所編寫的,所以說在嵌入式開發的過程中也選擇C語言,肯定是具有一定的優勢的。而且
    發表于 11-02 18:50 ?12次下載
    什么是<b class='flag-5'>嵌入式</b>開發?為什么<b class='flag-5'>用</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>作為開發<b class='flag-5'>語言</b>?

    C語言嵌入式培訓 嵌入式C語言程序設計基礎

      學習嵌入式的基礎語言C語言,因此先掌握C語言對于后續
    發表于 11-03 21:06 ?32次下載
    <b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>嵌入式</b>培訓  <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b><b class='flag-5'>程序</b>設計基礎

    嵌入式C++編程

    編程特性來構建嵌入式系統您將了解如何將您的系統與外部外圍設備以及使用驅動程序的有效方式集成指導您測試和優化代碼以獲得更好的性能并實現有用的設計模式將了解如何使用 Qt,這是用于構建
    發表于 11-04 10:36 ?10次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b>++編程

    嵌入式C語言知識總結

    1 嵌入式C語言總結從語法上來說C語言并不復雜, 但編寫優質可靠的嵌入式
    發表于 12-20 19:44 ?12次下載
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>知識總結

    如何寫出高效嵌入式C語言程序

    作為嵌入式工程師,怎么寫出效率高、思路清晰的C語言程序呢?
    發表于 08-18 10:42 ?393次閱讀

    嵌入式C語言的結構特點

    過程中,不論是基于寄存器開發還是基于庫開發,深入理解和掌握嵌入式C語言的函數、指針、結構體是學習STM32的關鍵。嵌入式C
    的頭像 發表于 11-24 16:16 ?984次閱讀
    <b class='flag-5'>嵌入式</b><b class='flag-5'>C</b><b class='flag-5'>語言</b>的結構特點