tft每日頭條

 > 科技

 > c語言數據結構計算方法

c語言數據結構計算方法

科技 更新时间:2025-01-10 07:29:23

《C程序設計》第五版第3章标題為“最簡單的程序設計——順序程序設計”,為了讓初學者讀懂并且能編寫一個簡單的順序程序,必然要引出C語言的基礎數據結構和語法規則。通過之前跟第三版的章節對比分析來看,第五版的第3章綜合了第三版的第3章和第4章,對于初學者來說内容偏多,但是這些都是最基礎的東西,是C語言的敲門磚。

注意,請認真學習完《C程序設計(第五版)》第三章後再閱讀本文會有更大的收獲。

c語言數據結構計算方法(一起學C程序設計第三課)1

一起學《C程序設計》

用C語言實現算法

編程是為了解決問題,算法是編程的靈魂,實現算法的過程就是編程的過程。對于初學者來說,通常從下面幾個步驟來進行編程練習會更容易理解和上手。

理清思路

除非特别簡單比如“1 1=2”這類問題,我們幾乎不用思考就能得出答案,而在面對其他複雜問題的時候,就需要我們理清思路,先整理出一套解題“算法”來。

對于記性特别好,可以把解題過程以及其中的細節全部在腦海裡演練一遍而且不會出錯的人,這樣的基本算是天才;對于普通人來講,以筆者的經驗來看,把思路寫在紙上,然後進行修改、驗證、叠代、完善是最好的方法。

流程圖

理清好思路,再用流程圖來表述就是水到渠成的事情了。用流程圖來表述不僅能讓我們的算法更加直觀,還可能幫助我們發現一些思路上的“小bug”。“思路框”用“邏輯線”串聯起來的過程,也是它們相互印證、相互糾錯的過程。

這裡建議初學者要熟練使用基本的流程圖(順序、選擇、循環結構),這個在日後的工作中也是很重要的。

僞代碼

對着流程圖基本上就能把僞代碼寫個七七八八了。初學者不要覺得在正式編程之前做這一步略顯多餘,這一步驟的主要目的是讓你寫僞代碼的時候同時去思考正式代碼的實現方式,在熟練之後可以省略這一步驟,因為在你畫流程圖甚至理清思路的時候就如同“條件反射”一般,去想到某個節點要用到什麼函數、什麼數據類型去編程了。

C語言編程

激動的時刻來臨了,經曆多層次對“算法”的表述和刻畫,我們終于要用C語言來編寫程序并使之與靈魂算法相互交融。接下來就是我們第三課的核心内容——基礎的數據結構和語法規則,掌握了這些之後我們就可以編寫簡單的程序了。

常量和變量

常量,理解為“恒量”,不會變。比如數字“1”恒為“1”,字母“A”恒為“A”,加号“ ”恒為“ ”。

變量,理解為“可變量”,可以發生變化。雖然變量與常量相提并論,但是他們本質還是有區别的,變量指的是定義一個名稱并指向一個内存地址,變量的變化實質上對應的這個内存地址裡存儲的數據發生了變化。

常量和變量的使用基本類似,常量用“#define 常量名 常量;”來聲明;變量用“數據類型 變量名;”來聲明,或者“數據類型 變量名 賦值運算符 值/表達式;”來直接賦值。

基本數據類型

整型

對于初學者來說,整型數據很好理解,但是long/short、signed/unsigned組合一下六種類型——無疑會讓人心生畏懼;另外書上還講了整型數據在内存中的存儲形式,二進制、補碼、取反這些全新概念确實有點“攔路虎”的架勢。

筆者的建議是,整型數據的存儲形式暫時不必深究,知道有這回事就可以了;這六種整型數據的數值範圍不必死記硬背,去了解一下二進制數值轉換以及存儲長度自然就會推導出來了。

浮點型

建議和整型數據一樣,有些概念性的東西不必深究,先知其然,等我們編程的經驗越來越豐富,在做項目的過程中去知其所以然會更加的容易。

字符型

這裡我們會接觸到程序員一生都會打交道的兩個概念:ASCII、轉義字符。理解ASCII是初學者一個頭疼的問題,不妨這樣想:正常的整數和小數都有轉換成二進制的方式了,那麼正常使用的語言呢,把常用的拉丁字母和一些标點符号等規定成相應的數字,在計算機上交互也就更加便捷了。

運算符、表達式和語句

基礎運算符

初學者需掌握賦值運算符(=)、算術運算符(加減乘除/取餘/自增/自減)、比較運算符(大/小/等)、邏輯運算符(與/或/非)、條件(三元)運算符。

注意,三個及其以上的數據進行混合運算的時候要考慮到優先級的問題,比如乘除優先于加減。如何能保證數據安裝我們既定的規則去運算呢?有一個保險的方法就是加上“括号”這個更高的優先級,這樣就保證不會出問題了。

數據類型轉換

參與運算的數據類型不一緻時,則需要進行數據類型轉換,轉換過程由編譯器完成。複雜的數值運算基本上都會向雙精度數據類型轉換保證計算的精确性。

表達式

表達式與語句幾乎是一步之遙,結尾加一個“分号”即為表達式語句。初學者最開始接觸也是用得最多的兩種表達式:

算術表達式——數值、運算符組合而成。

賦值表達式——變量、賦值運算符、表達式組合而成。

語句

語句即指令,就是經過編譯後讓計算機執行的指令。可以單獨以“分号”為結尾形成一條語句,也可以組合一起用“{}”包起來形成複合語句,可以說語句是程序裡可以被執行的最小“單位”或“組合”。

C語言輸入和輸出

通常我們說的輸入和輸出指的是C語言标準庫裡的輸入與輸出,就是文件開頭“#include <stdio.h>”提供的。

這裡我們要掌握的是常用的幾種輸入和輸出格式化字符的含義,比如%d、%f、%s,以及格式符加字符的用法。這種格式化輸入輸出在每種編程語言裡都會用到,長時間不用容易忘記,所以也不用刻意去背記,工作中經常是現查現用。

書中有一道練習題比較有意思:把China譯成密碼,其實很簡單,就是把每個字符的ASCII值加4然後再輸出,我們用最直觀的方法實現如下:

#include<stdio.h> void main() { char c1, c2, c3, c4, c5; scanf_s("%c%c%c%c%c", &c1, 1, &c2, 1, &c3, 1, &c4, 1, &c5, 1); c1 = c1 4; c2 = c2 4; c3 = c3 4; c4 = c4 4; c5 = c5 4; printf("%c%c%c%c%c", c1, c2, c3, c4, c5); }

PS:使用scanf_s()替代書中的scanf()這個輸入函數。

總結

對于初學者來講,這些内容屬于理論知識,也是撬開C語言大門的基石,唯有多練習多運用才能熟練掌握,發現其中的樂趣。如果提不起興趣,可能會是另一種極端:覺得書本晦澀難懂,上課昏昏欲睡,考試隻能死記硬背。

此外,編程不僅僅是在編輯器裡寫代碼,包含了項目創建、代碼編寫、代碼編譯連接、調試運行等整個過程。過去學編程需要自己搭環境去編譯調試,有時候搞了一天就為了能弄個跑代碼的環境,現在則方便輕松多了,visual studio用起來很方便,自動配置好編譯運行的環境,還生産詳細的調試信息方便處追蹤bug,所以我們有必要好好的學習使用它,正所謂工欲善其事必先利其器。

第二章習算法的時候,書上講:程序=數據結構 算法,再從另外一個維度去思考:運行程序=輸入 執行 輸出,數據結構和算法都是為了得到“預期的輸出”,把輸入用合适的數據結構去承載,把執行的代碼語句編寫地更加契合算法,在一次次編程中去鍛煉我們的思想和認知,由易到難,由簡到繁,找到屬于你自己的“編程之道”。

往期文章

一起學《C程序設計》第二課——算法

一起學《C程序設計》第一課——C語言概述和學習前的準備、意識

C程序設計(譚浩強)——第五版和第三版對比

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved