在C語言中,核心是指針,靈魂是算法,本篇用源碼解析十大基礎算法原理!

2020-11-26 騰訊網

算法是一個程序和軟體的靈魂,作為一名優秀的程式設計師,只有對一些基礎的算法有著全面的掌握,才會在設計程序和編寫代碼的過程中顯得得心應手。本文是近百個C語言算法系列的第二篇,包括了經典的Fibonacci數列、簡易計算器、回文檢查、質數檢查等算法。也許他們能在你的畢業設計或者面試中派上用場。

1、計算Fibonacci數列

Fibonacci數列又稱斐波那契數列,又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21。

C語言實現的代碼如下:

結果輸出:

也可以使用下面的原始碼:

結果輸出:

2、回文檢查

原始碼:

結果輸出:

3、質數檢查

註:1既不是質數也不是合數。

原始碼:

結果輸出:

4、列印金字塔和三角形

使用 * 建立三角形

原始碼:

如下圖所示使用數字列印半金字塔。

原始碼:

用 * 列印半金字塔

原始碼:

用 * 列印金字塔

原始碼:

用 * 列印倒金字塔

原始碼:

5、簡單的加減乘除計算器

原始碼:

Source code to create a simple calculator for addition, subtraction, multiplication and division using switch...case statement in C programming.

# include

int main

{

char o;

float num1,num2;

printf("Enter operator either + or - or * or divide : ");

scanf("%c",&o);

printf("Enter two operands: "); scanf("%f%f",&num1,&num2);

switch(o) {

case '+':

printf("%.1f + %.1f = %.1f",num1, num2, num1+num2);

break;

case '-':

printf("%.1f - %.1f = %.1f",num1, num2, num1-num2);

break;

case '*':

printf("%.1f * %.1f = %.1f",num1, num2, num1*num2);

break;

case '/':

printf("%.1f / %.1f = %.1f",num1, num2, num1/num2);

break;

default:

/* If operator is other than +, -, * or /, error message is shown */printf("Error! operator is not correct"); break;

}

return 0;

}

結果輸出:

6、檢查一個數能不能表示成兩個質數之和

原始碼:

結果輸出:

7、用遞歸的方式顛倒字符串

原始碼:

結果輸出:

8、實現二進位與十進位之間的相互轉換

1./*C programming source code to convert either binary

to decimal or decimal to binary according to data entered

by user. */

結果輸出:

9、使用多維數組實現兩個矩陣的相加

原始碼:

結果輸出:

10、矩陣轉置

原始碼:

結果輸出:

免責聲明:整理文章為傳播相關技術,版權歸原作者所有,如有侵權,請聯繫刪除

相關焦點

  • 第四篇:C語言中指針與字符串核心知識點梳理
    前面在講變量的時候,其中有一個特點就是變量的內存地址,即:變量在內存中實際的保存位置。這個內存地址如何獲取?它又有什麼意義?這就涉及到本文要講到的第一個核心概念:指針。重點包括:指針處理一維數組、動態內存分配等。C語言的基本數據類型中有一個char的關鍵詞,可以存儲單個的字符。那麼,像漢字以及由多個字符組成的內容,又該如何存儲呢?
  • 第一篇:C語言編程基礎語法
    本專欄系列分六篇,總結了C語言基礎知識的核心要點。教學視頻已上線,讀者可根據自身情況有選擇性地學習。01編程基礎C語言——貝爾實驗室、Dennis Ritchie一、程序基本結構函數主體中的每個語句都以分號結束; 格式特點:區分大小寫;無行號;程序呈鋸齒狀;可使用空格或空行二、編譯和執行高級語言需要由編譯/解釋程序轉換為機器代碼
  • 推薦算法系統/人臉識別/深度學習對話機器人高級實戰課
    這麼來說,雖然算法是核心,但離不開每個子系統的配合,另外就是不同算法可以嵌入到各個子系統中,算法可以貫穿到每個子系統。從開發人員角色上來講,推薦系統不僅僅只有算法工程師角色的人就能完成整個系統,需要各個角色的工程師相配合才行。
  • 基於蟻群算法求解函數的最大最小值的Matlab源碼「肥波貓」
    基於蟻群算法求解函數的最大最小值的Matlab源碼「肥波貓」上一篇基於遺傳算法求解函數的最大最小值的Matlab源碼「肥波貓」,本次用蟻群算法同樣可以解決。蟻群算法最早是由Marco Dorigo等人在1991年提出,他們在研究新型算法的過程中,發現蟻群在尋找食物時,通過分泌一種稱為信息素的生物激素交流覓食信息從而能快速的找到目標,據此提出了基於信息正反饋原理的蟻群算法。
  • 區塊鏈加密機制的不同算法及其原理解析
    在EKT中Token鏈是一個並行多鏈的結構,多鏈多共識,共享用戶基礎,這也意味著使用EKT公鏈,可以把Token鏈和Dapp鏈分離,並自由的選擇共識算法和加密算法。比特幣採用SHA256算法,該算法屬於SHA-2系列,在中本聰發明比特幣時(2008)被公認為最安全最先進的算法之一。除了生成地址中有一個環節使用了REPID-160算法,比特幣系統中但凡有需要做Hash運算的地方都是用SHA256。
  • 機器學習中決策樹的原理與算法 | 科普
    我們知道,在機器學習中有兩類十分重要的問題,一類是分類問題,一類是回歸問題。我們今天所要探討的就是在分類和回歸問題中所用到的一種非常基本的方法,叫決策樹。決策樹也是重要的標籤學習方法。這篇文章裡面的部分內容來自於 AI 慕課學院的《機器學習理論與實戰高級特訓班》課程筆記。
  • 單片機C語言實現求平方根算法
    C語言中要求平方根,可以在頭文件中加入#include <math.h>.然後調用sqrt(n);函數即可。但在單片機中調用此函數無疑會耗費大量資源和時間,是極不合適的。對於不帶乘除法指令的單片機,可採取以下兩種算法:算法3:本算法只採用移位、加減法、判斷和循環實現,因為它不需要浮點運算,也不需要乘除運算,因此可以很方便地運用到各種晶片上去。
  • 單片機常用的14個C語言算法
    算法的描述:是對要解決一個問題或要完成一項任務所採取的方法和步驟的描述,包括需要什麼數據(輸入什麼數據、輸出什麼結果)、採用什麼結構、使用什麼語句以及如何安排這些語句等。通常使用自然語言、結構化流程圖、偽代碼等來描述算法。
  • 最細緻的SVM算法核心思想解析
    決策邊界機器學習中監督學習的任務就是如何找出決策邊界。在訓練集中,有正負樣本,任何監督學習算法就是為了找出區分正負樣本的決策邊界。如下圖,決策邊界是平行於坐標軸y,是決策樹學出來的決策邊界。通過新的點在決策邊界的不同區域,將它預測為正或負類。不同的算法,就是為了確定不同的決策邊界長什麼樣。
  • 用AVR彙編語言實現AES及其優化
    摘要 AES是美國高級加密標準算法,將在未來幾十年裡代替DES在各個領域中得到廣泛應用。本文在研究分析AES加密算法原理的基礎上,著重說明算法的實現步驟,並結合AVR彙編語言完整地實現AES加密和解密。
  • 統治世界的十大算法
    軟體正在吃掉世界,而軟體的核心則是算法。算法千千萬萬,又有哪些算法屬於「皇冠上的珍珠」呢?Marcos Otero 給出了他的看法。什麼是算法?
  • 實數FFT算法的設計及其C語言實現
    目前國內有關數位訊號處理的教材在講解快速傅立葉變換(FFT)時,都是以複數FFT為重點,實數FFT算法都是一筆帶過,書中給出的具體實現程序多為BASIC或FORTRAN程序並且多數不能真正運行。
  • 真正統治世界的十大算法
    不久前的某一天,我在瀏覽Reddit發現了一篇有趣的文章《統治世界的十大算法》,作者George Dvorsky在那篇文章中試圖解釋算法之於當今世界的重要性,以及哪些算法對人類文明最為重要。
  • C語言陷阱與技巧31節,都說void*指針是「萬能指針」,它萬能在哪
    在C語言程序開發中,一些比較成熟的庫函數常常會被使用。畢竟,如果手邊就有不錯的「輪子」可以用,沒有程式設計師願意再花費精力憑空造一個輪子出來。對於 void 型指針,之前的分析似乎就不再適用了。因為 void 類型是一個特殊的類型,常被稱作「空類型」,C語言中沒有 void 類型的變量,所以在遇到 void 指針時,編譯器根本不知道如何解釋接下來的內存,甚至編譯器都不知道接下來多少內存屬於它。
  • 利用彙編語言實現DES加密算法
    DES算法是一種數據加密算法。自從1977年公布以來,一直是國際上的商用保密通信和計算機通信的最常用的加密標準。DES算法的實現一般用高級語言。
  • C語言中的「不透明」指針是什麼,它有什麼用呢?
    雖說指針是C語言中比較複雜的語法,但是確實非常好用,因此我寫過不少文章討論C語言中的指針,相信對初學者理解指針有一定的幫助。事實上,的確有讀者私信我說看了這些文章,「總算不再畏懼指針了」。不過他同時也問了一個問題:C語言有「不透明指針(opaque pointer)」嗎?
  • 終於還是要講到這一篇——RSA算法原理
    RSA原理其實沒有想像的那麼難。對於這篇文章,有數論的基礎更好,沒有的話只要不糾結具體的數學定理如何證明,應該也可以看懂。一、數學準備首先要準備一下如下數學概念和原理。1.質數:只能分解成1和它自身乘積的,大於1的自然數。2.互質:最大公因數是1的多個自然數之間就是互質關係。注意,互質的整數不一定都是質數。
  • 如何用免費GPU學習AI算法?這篇算法資源大集錦別錯過
    上一次寫了篇薅GPU百度AI Studio計算資源的文章,收到很多AI算法初學者私信,問我能不能補充一些AI Studio的學習資源。有求必應向來是我的風格,於是我加入了AI Studio和飛槳(PaddlePaddle)開發者QQ群,為大家收集了一些資源,涵蓋了從入門到高階的各種常用算法和代碼。
  • 28335DSP的FFT算法時間
    經過多次傳輸,當採樣數據達到一定數量時,產生DMA中斷,算法就在該中斷函數內完成。整個方案的大致框架如下圖:算法每次更新的數據量為90點,而算法處理的數據長度為128點,這是因為計算過程中需要數據重疊。數據採樣頻率約為54kHz,DMA中斷間隔即90點數據採樣的時間約為1.6ms,所以算法時間要小於1.6ms才能保證實時性。
  • 基於MATLAB的中值濾波算法實現
    ,能有效平滑噪聲,且能有效保護圖像的邊緣信息,所以被廣泛用於數字圖像處理的邊緣提取,其基本原理是把數字圖像或數字序列中的一點的值用該點鄰域內所有的點排序後的中值來代替。中值濾波對椒鹽噪聲有良好的濾除作用,特別是在濾除噪聲的同時,能夠保護信號的邊緣,使之不被模糊。這些優良特性是線性濾波方法所不具有的。而且,中值濾波的算法比較簡單,也易於用硬體實現。這篇我們先用MATLAB來實現中值濾波。