當前位置:首頁 » 編程語言 » c語言中時尚和形象的用法
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中時尚和形象的用法

發布時間: 2022-09-21 19:46:47

c語言中front和rear是什麼意思

front和rear的意思是:
1、要求front指向隊頭,rear指向隊尾,那麼初始化front=0,rear究竟是0還是n-1,不妨假設rear=0,那麼很明顯此時已經有一個元素入隊了,在a[0]的位置,此時front=rear=0,與初始為空矛盾.所以rear=(0-1)%n=n-1.
2、循環隊列為充分利用向量空間,克服"假溢出"現象的方法是:將向量空間想像為一個首尾相接的圓環,並稱這種向量為循環向量。
3、存儲在其中的隊列稱為循環隊列(CircularQueue)。這種循環隊列可以以單鏈表的方式來在實際編程應用中來實現。
在數學中,向量(也稱為歐幾里得向量、幾何向量、矢量),指具有大小(magnitude)和方向的量。它可以形象化地表示為帶箭頭的線段。箭頭所指:代表向量的方向;線段長度:代表向量的大小。與向量對應的量叫做數量(物理學中稱標量),數量(或標量)只有大小,沒有方向。
系統作為隊列用的存儲區還沒有滿,但隊列卻發生了溢出,我們把這種現象稱為"假溢出"。設順序存儲隊列用一維數組q[m]表示,其中m為隊列中元素個數,隊列中元素在向量中的下標從0到m-1。設隊頭指針為front,隊尾指針是rear,約定front指向隊頭元素的前一位置,rear指向隊尾元素。當front等於-1時隊空,rear等於m-1時為隊滿。由於隊列的性質(「刪除」在隊頭而「插入」在隊尾),所以當隊尾指針rear等於m-1時,若front不等於-1,則隊列中仍有空閑單元,所以隊列並不是真滿。這時若再有入隊操作,會造成假「溢出」。

② C語言編程問題

C語言介紹
C語言基本是每個編程人員必學的一面語言,很好掌握,是理解編程的關鍵。很多編程語言基於其編寫或者基於此語言的衍生品編寫。
C語言是人機交互的一個基礎語言之一,雖然是之一,單一般其實就是唯一。

偶爾用匯編
其他非C的我沒見過,理論上是存在的。沒有C之前大家用的,有了C之後估計就少了。
有了計算機操作基礎,可以學習編程了,推薦從C語言開始學習,使用這本書進行學習《C程序設計語言》,此書是C語言的作者編寫就知道是多麼的權威了,同時此書有英文版本《C程序設計語言(英文版)》,建議都買了學習,畢竟作為計算機學生,英文不好是不行的,很多國外的先進的東西都是英文的。另外也有一遍習題解答,也同時買了。裡面的題目都做一遍,編程水平不會差。如果想繼續提高C語言的水平,可以看看其他相關圖書,比如《C指針》等一堆。

參考圖書:C語言的圖書比較多,一般國外的都是精品,國內的基本就算了。一本書很難學好,多讀些圖書吧。下面也只是冰山一角。還有很多就不一一列舉。基本當當四星以上的都可以買了看看。

參考視頻學習網站:
1 玩轉 C語言 基礎課堂
2 C語言/C++學習指南 (語法篇) 入門到精通(打算開發Windows看看,Linux的參考)。
3 C語言也能開發網站(高級課程,而且比較高級,長個見識看看)。
4 計算機專業的課程體系,裡面有個C語言程序設計。

參考資料:
1 http://www.cprogramming.com/里有個c-tutorial。
2 高質量C++/C編程指南 林銳 博士

學的更好點的,可以參考github上的C項目代碼看看。比較出名的推薦幾個:
1 https://github.com/antirez/redis
2 https://github.com/nginx/nginx
可以上網搜索GCC: The Complete Reference等內容查看學習。

上面的內容,如果都學好了,基本算入門,您可以自己學習了,師父領進門,修行靠個人了。

C語言的靈魂-指針

指針
一個變數存放一個變數的地址(A point is a variable that contains the address of a variable)
指針的指針
指針函數
函數指針

很難學,但是希望你學好!
很難學,但是希望你學好!
很難學,但是希望你學好!

如何檢驗學習效果?
神一樣的指針:
int *p;
一個指向整型數據的指針。

int **p;
一個指針的指針,它指向的指針指向一個整型數據。**p 是 int 類型,所以 *p 是int *類型,即*p是一個指向int的指針,所以p是一個指向int的指針的指針。

int *p[10];
一個有10個指針的數組,該指針指向整型數據。p[10] 的類型是 int *,所以 用type 替換 int *,也就是 type p[10],即p中每個元素都是type類型。

int (*p)[10];
一個指向有十個整型數據數組的指針。()是為了當一個整體看待,所以用val替換(*p),上式變為int val[10],所以*p 相當於數組名(即數組的首地址),所以p是一個指向數組(該數組包含10個Int數字)的指針。

int * p(int);
就一個函數(不是函數指針),該函數有一個整型參數,返回值為一個指向整型的指針

int (*p[10])(int);
一個有十個指針的數組,該數組中的指針指向一個函數,該函數有一個整型參數並返回一個整型數。根據p[10]是一個函數指針,所以p中每個元素都是一個函數指針。

int (*p)(int);
定義了一個參數為int,返回值為int的函數指針,函數指針名是p。如果初始化了 p , 則可以通過 p( int ) 調用函數。

代碼流程
整個流程要清楚
編碼
編譯
執行
打包
安裝

另外就是看開源項目源碼,是否能夠完全看懂並修改。
比如Nginx,Redis等

在我們課程系列的操作系統有個GeekOS實驗,也可以檢驗。
GeekOS是不錯的檢驗項目,強烈推薦在校學生仔細研究學習。

這個項目我在讀碩士時候做過,2周時間,只能看到項目2,一共7個,都做下來就很了不起了,可以做一個學期,慢慢做。裡面有部分匯編代碼,匯編也學下。

工作中的實際使用情況

基本不用!
用到的基本是著名的,比如Nginx,Redis等。
自己修改代碼的情況不多
基本是C++或者Java,或其他

不過也有很多公司需要根據自身的情況調整某些開源項目代碼的,所以可以看看開源代碼,或者說認真學習研究一個。在這類公司也有需求。

如果你是嵌入式等行業的就例外了。

總結
好好學,值得你好好學和你的付出。
個人覺得大學生怎麼花功夫在此語言上都不為過。
考研用/軟考用/很多高級語言的基礎/…...
只是為了工作的例外,你可以只學Java,Js等當簡單的碼農。

掌握了這個,理解其他的都容易些。

致敬:
C語言作者之一Dennis M.Ritchie(丹尼斯·里奇)

丹尼斯·里奇,C語言之父,UNIX之父。
丹尼斯·里奇與肯·湯普遜兩人發展了C語言,同時發展了Unix操作系統。
在電腦工業史上佔有重要的席位。

歡迎加入程序員的世界,添物科技為您服務。

③ C語言主要用在哪些方面

1、上層開發
其實用 C 語言做上層應用程序開發和寫界面不是明智的選擇,比如 Windows 上面,畫個窗口,寫個消息處理函數,麻煩的要死。
做上層應用程序開發,其實大家都在用:
Windows: C++,MFC/QT
Android: Java
IOS: ObjecTIve-c / swift
Linux: C\C++,GTK+/ QT(Linux 圖形界面應用程序)
2、底層開發
C 語言主要的用途還是底層編程,例如系統軟體:編譯器,JVM,驅動,操作系統內核,還有各種嵌入式軟體,固件。
下面列舉了C語言一些常見的領域。
(1)應用軟體。Linux操作系統中的應用軟體都是使用C語言編寫的,因此這樣的應用軟體安全性非常高。
(2)對性能要求嚴格的領域。一般對性能有嚴格要求的地方都是用C語言編寫的,比如網路程序的底層和網路伺服器端底層、地圖查詢等。
(3)系統軟體和圖形處理。C語言具有很強的繪圖能力和可移植性,並且具備很強的數據處理能力,可以用來編寫系統軟體、製作動畫、繪制二維圖形和三維圖形等。
(4)數字計算。相對於其他編程語言,C語言是數字計算能力超強的高級語言。
(5)嵌入式設備開發。手機、PDA等時尚消費類電子產品相信大家都不陌生,其內部的應用軟體、游戲等很多都是採用C語言進行嵌入式開發的。
(6)游戲軟體開發。游戲大家更不陌生,很多人就是由玩游戲而熟悉了計算機。利用C語言可以開發很多游戲,比如推箱子、貪吃蛇等。
學習C語言,就來北京尚學堂!

④ c語言怎麼用

教你學習的方法吧
新手如何學習C語言
第一:一些概念。
C語言是一門程序設計語言,有一些標准,比較重要的是ANSI C(好像是C89)和C99。
數據結構包括邏輯結構和物理結構。邏輯結構是數據元素集合和定義在集合上的關系。物理結構是邏輯結構在計算機中的實現。
LCC、VC、TC、GCC都是C語言編譯器,一般包括集成開發環境,編譯器和鏈接器及輔助工具
我們書寫的是C源程序,源程序通過編譯器編譯為中間文件,中間文件經鏈接器鏈接生成可執行文件。不同操作系統可執行文件不同。中間文件也有幾個標准,微軟使用的和Linux下通用的有差異。
第二:學習什麼。
個人認為程序設計學習的重點放在數據結構的學習上,但是這種學習要有一個平台,比如C語言。
學習C語言首先要掌握基本語法,常量、變數、類型、及順序結構、分支結構和循環結構的意義及用法。進一步學習構造類型如指針、結構、函數的意義和用法。
C語言提供一些標准函數以減輕程序設計工作量,這些函數我們自己也可以實現。即使不依靠函數庫,只有編譯器,理論上就足夠了。事實上,提供的標准函數效率都很高,使用很頻繁,沒有自己實現的必要,所以掌握常用函數是非常必要的,但是要注意函數的適用范圍。
繼續學習因人而異,應該可以獨立選擇了。
第三:如何學習。
強調多實踐,C語言的學習要經常上機,多寫程序才能逐步提高。

⑤ C語言怎麼學

首先說一說進入計算機專業的目的,我個人是因為十分喜歡IT業,很喜歡折騰電腦,所以在填報志願是毫不猶豫的在報了的所有的學校都填寫的計算機專業,夢想著進入計算機專業後能遇見很多高手,能交到幾個知己,誰之進來後卻大失所望。計算機專業的學生有很多以前對計算機不怎麼了解,而且還有部分人進大學前連計算機摸都沒摸過,對計算機很熟悉的很少,高手更是鳳毛麟角,大多數人是服從了父母之命,顯而易見,目前社會最熱的行業是IT業,工資最高的也是IT業,抱著這個因素,大多數考生的父母都讓自己的孩子進入了計算機專業,而大多數學生也天真的認為從計算機專業畢業後就能夠像電視里演的大多數白領一樣每天只用坐在辦公室里和同事們聊聊天,和老闆吃吃飯,每天簽幾個字然後就有高工資等著你去拿。

進校後他們發現其實他們在專業課方面什麼都聽不懂,自己也一點興趣都沒有,沒有興趣那就沒有學習的動力,而且這個專業是要靠悟性的,而興趣是培養悟性的第一步,然後他們會發現越往後學專業課越難,也越聽不懂,好一點的就會狠下心來,硬著頭皮苦學一通,有可能也就能走出一片路來,而不好的就會就此放棄,只需要混著考試通過,混畢業,找個單位安心上班。有些人上了幾年學連自己上哪些課都不知道;拿個程序他分不清是用C語言寫的還是用PASCAL寫的;不小心進了DOS不知道怎麼再回到WINDOWS。但說起游戲來頭頭是道,好像每個都是職業玩家一樣,有的每天只知道泡在網吧。這就是中國計算機人才下一代的悲哀!

再說現在計算機專業大學生的學習和生活。大多數計算機專業的學生對本專業的發展及前景一無所知,每天都是看小說、玩游戲、看電影、打牌、喝酒、睡覺等等很有"前途"的事情。偶爾看見一兩個同學看看與計算機專業有關的書,跑去拿來一看,全是什麼"游戲攻略"、"黑客秘技"等此類書籍。還有的人連C語言和C++誰是誰都還沒搞清楚,就拿本VC的書"刻苦鑽研",真不知他們看懂了沒有。好多學生都買了電腦,但用處都是游戲機+碟機+音響,每天都在用電腦玩著各種流行的游戲、看著最新的大片、聽著時尚的音樂,就是不用電腦學習。有的學生甚至問我電腦除了玩游戲還能幹什麼,我問他你為什麼這么問,他告訴我他覺得電腦只能用來玩游戲,不知道還能不能乾乾別的什麼。據我了解,近幾年在國內好幾所高校的計算機專業的畢業生的畢業設計竟然是做網頁,在大學了四年,學完了《數據結構》、《軟體工程》、《C語言》等專業課後,竟然交了一個沒有學過計算機的人自學一兩天就能做好的東西!

這就是大多數計算機專業的學生,在我在大學玩了兩年之後,我突然明白該為自己的未來打算打算了,但還有許多人仍然還什麼都不明白,所以就有了這篇文章。

如果你是以上我說的那種受父母之命來學計算機的學生,如果你看了《計算機應用文摘》第15期的《寫給想當程序員的朋友》一文後,發現自己沒有當程序員的慾望,那麼我這里有幾條路給你選擇:
1、網頁製作,將來去網站工作!
2、學習3D MAX等軟體,去作動畫!
3、學習美術設計!
4、網路,將來考個CCNA,去專業組網!
5、在保證能順利畢業的前提下,去瘋狂玩游戲,做個職業玩家或做一個或幾個網路游戲的GM。(我身邊就有這樣的人)
6、以上五條都與計算機有關,要有一定的專業知識,但比起你的專業課簡單多了。如果你看到這里還不覺得有適合你乾的,那這條最適合你:在你們學校去修雙學位,修一個自己感興趣的專業,計算機真的不適合你!
如果以上幾條有適合你的,那麼你就努力去做適合你的那一片天地,去看雜志的下一篇文章,下面的文字你看了只會浪費你的時間。

如果你是計算機專業的在校大學生,而且想當程序員,那麼請往下看:
1、大學生活豐富多彩,會令你一生都難忘,但難忘有很多種,你可以學了很多東西而難忘,也會因為什麼都沒學到而難忘!
2、計算機專業是一個很枯燥的專業,但即來之、則安之,只要你努力學,也會發現其中的樂趣的。
3、記住:萬丈高樓平地起!基礎很重要,尤其是專業基礎課,只有打好基礎才能學得更深。
4、C語言是基礎,很重要,如果你不學好C語言,那麼什麼高級語言你都學不好。
5、C語言與C++語言是兩回事。就象大熊貓和小熊貓一樣,只是名字很像!
6、請先學習專業課《數據結構》、《計算機組成原理》,不要剛開始就拿著一本VC在看,你連面向對象都搞不清楚,看VC沒有任何用處。
7、對編程有一定的認識後,就可以學習C++了。(是C++而不是VC,這兩個也是兩碼事!C++是一門語言,而VC教程則是講解如何使用MFC類庫,學習VC應建立在充分了解C++的基礎之上。看VC的書,是學不了C++語言的。)
8、學習編程的秘訣是:編程,編程,再編程;
9、認真學習每一門專業課,那是你的吃飯碗。
10、在學校的實驗室就算你做錯一萬次程序都不會有人罵你,如果你在公司你試試看!所以多去實驗室上機,現在錯的多了,畢業後就錯的少了。
11、從現在開始,在寫程序時就要養成良好的習慣。
12、不要漏掉書中任何一個練習題--請全部做完並記錄下解題思路。
13、你會買好多參考書,那麼請把書上的程序例子親手輸入到電腦上實踐,即使配套光碟中有源代碼。
14、VC、C#、.NET這些東西都會過時,不會過時的是數據結構和優秀的演算法!
15、記住:書到用時方恨少。不要讓這種事發生在你身上,在學校你有充足的時間和條件讀書,多讀書,如果有條件多讀原版書,你要知道,當一個翻譯者翻譯一本書時,他會不知不覺把他的理念寫進書中,那本書就會變得像雞肋!
16、我還是強調認真聽專業課,因為有些課像《數據結構》、《編譯原理》、《操作系統》等等,這種課老師講一分鍾能讓你明白的內容,你自己看要看好幾個月,有的甚至看了好幾年都看不明白。
17、抓住在學校里的各種實踐的機會,要為自己積累經驗,就業時經驗比什麼都有用。
18、多去圖書館,每個學校的圖書館都有很多好書等你去看!
19、編程不是技術活,而是體力活。
20、如果你決定了要當一個好的程序員,那麼請你放棄游戲,除非你是那種每天只要玩游戲就能寫出好程序的天才!
21、你要有足夠的韌性和毅力!有個高手出了一道題測試你的韌性和毅力:找個10000以內的素數表,把它們全都抄下來,然後再檢查三遍,如果能夠不間斷地完成這一工作,你就可以滿足這一條。
22、找到只屬於你自己的學習方法!不要盲目的追隨別人的方法,適合自己的才是最好的!
23、請熱愛程序員這項工作!
以上的話有些是我的經驗,有些是我從高手那裡直接COPY來的,但他們都很有用,記住他們,並遵守他們,那你們一定會成功!

對於大多數初學者來說,好多人有這種問題存在:我到底先學什麼?學C/C++?還是學VC?還是學Borland C++ Builder呢?還是Delphi?哪一個更好呢?學習程序設計和學習程序設計語言究竟是怎麼一個關系?初學者究竟應該如何取捨呢?就這些問題,我從一個高手那裡看了一下的這段話,可以幫助在這方面有問題的人:學習程序設計就好比學習射擊,而程序設計語言就對應射擊中的氣槍、手槍、步槍等各種槍械。學習射擊必須要選擇一種槍械,不可能沒有槍還能學好射擊的,也不可能同時學會使用所有的槍械。但是,如果掌握一種槍械的射擊,再學別的也就觸類旁通了。因為在熟悉一種槍械的同時,也學習了射擊技術本身。再學其他的,自然事半功倍。學習程序設計也是一樣,必然要從學習一門程序設計語言開始入手。在學會系統的編程理念之後,用什麼工具都一樣!

之所以寫這篇文章呢是因為自己眼看身邊那麼多的同學一個個都"不務正業",荒廢了學業,心急如焚,自己也荒廢了好幾年,眼看微軟的Windows從3.X到現在的2003 Server,而中國的軟體業還是在原地踏步,難道我們真要每年等微軟給他的操作系統換一次名字,我們給他交一次錢嗎?這么大的利潤為什麼不留給我們自己,為什麼不讓別的國家給我們交錢呢?這是廣大中國程序員的一個共同的夢,要實現這個夢的人是現在還在大學里的"准程序員"們,他們是中國軟體明天的希望!希望廣大計算機業的大學生看到這篇文章後,睡覺的能醒來,玩游戲的能停下來,在網吧的能出來,一起拿起課本,坐在電腦前,用程序寫出中國軟體業明天的輝煌。

⑥ 計算機二級C語言變數和常量知識點

計算機二級C語言變數和常量知識點

C語言的運算符包含的范圍很廣泛,共有34種運算符。C語言把括弧、賦值、強制類型轉換等都作為運算符處理。下面是關於計算機二級C語言變數和常量知識點,希望大家認真閱讀!

一、變數

(一)、變數類型和表示方法

1.什麼是變數?一句話,變數是存儲數據的值的空間。由於數值的類型有多種,有整數、小數(浮點數)、字元等等,那麼對應的變數就有整型變數、浮點型變數、字元型變數。變數還有其他的具體分類。整型變數還可具體分為無符號型、長整型和短整型。浮點型也可分為單精度型、雙精度型和長雙精度型。此外還可以分為靜態變數、外部變數、寄存器變數和自動存儲變數。這些數據類型我們在本節和後面的章節中都會陸陸續續介紹。

那麼變數我們總要給它取個名字吧,這個名字我們叫做標識符。

標識符的命名有一定的規則:

(1).標識符只能由字母、數字和下劃線三類字元組成

(2).第一個字元必須是字母(第一個字元也可以是下劃線,但被視作系統自定義的標識符)

(3).大寫字母和小寫字母被認為是兩個不同的字元,如A和a是兩個不同的標識符

(4).標識符可以任意長,但只有前32位有效。有些舊的C版本對外部標識符的限制為6位。這是由於鏈接程序的限制所總成的,而不是C語言本身的局限性

(5).標識符不能是C的.關鍵字

2.從上面的規則中,有個關鍵字的概念。那麼什麼叫關鍵字呢?

從表面字意上也可以看出,關鍵字是C語言本身某些特性的一個表示,是唯一的代表某一個意思的。

下面列出ANSI標準定義的32個C語言的關鍵字,這些關鍵字在以後的學習中基本上都會用到,到時再說它們的各自用法。

auto break case char const continue default

do double else enum extern float for

goto if int long register return short

signed sizeof static struct switch typedef

union unsigned void volatile while

C語言還包括一些不能用做標識符的擴展關鍵字。

asm cdecl _cs _ds _es far

huge interrupt near pascal _ss

所以在以後的學習中,在給變數命名時要避開這些關鍵字。

3. Turbo C2.0規定所有變數在使用前都必須加以說明。一條變數說明語句由數據類型和其後的一個或多個變數名組成。變數說明的形式如下:

類型 變數表>;

這里類型是指Turbo C2.0的有效數據類型。變數表是一個或多個標識符名,每個標識符之間用,分隔。

(二)、整型變數

整型變數是用來存儲整數的。

整型變數又可具體分為好幾種,最基本的整型變數是用類型說明符int聲明的符號整型,形式如下:

int Counter;

這里int是類型說明符,Counter是變數的名字。

整型變數可以是有符號型、無符號型、長型、短型或象上面定義的普通符號整型。

整型是16位的,長整型是32位,短整型等價於整型。

以下是幾種整型變數的聲明示例:

long int Amount; /*長整型*/

long Amount; /*長整型,等價於上面*/

signed int Total; /*有符號整型*/

signed Total; /*有符號整型,等價於上面*/

unsigned int Offset; /*無符號整型*/

unsigned Offset; /*無符號整型,等價於上面*/

short int SmallAmt; /*短整型*/

short SmallAmt; /*短整型,等價於上面*/

unsigned short int Month; /*無符號短整型*/

unsigned short Month; /*無符號短整型,等價於上面*/

從上面的示例可以看出,當定義長整型、短整型、符號整型或無符號整型時,可以省略關鍵字int。

註明:

1.用signed對整型變數進行有符號指定是多餘的,因為除非用unsigned指定為無符號型,否則整型都是有符號的。

2.當一個變數有幾重特性時,聲明關鍵字的順序可以任意。以下幾種聲明是等價的:

unsigned long T1;

long unsigned T2;

unsigned long int T3;

unsigned int long T4;

long unsigned int T5;

long int unsigned T6;

int unsigned long T7;

int long unsigned T8;

(三)、浮點類型變數

顧名思義,浮點類型變數是用來存儲帶有小數的實數的。

C語言中有三種不同的浮點類型,以下是對這三種不同類型的聲明示例:

float Amount; /*單精度型*/

double BigAmount; /*雙精度型*/

long double ReallyBigAmount; /*長雙精度型*/

這里Amount,BigAmount,ReallyBigAmount都是變數名。

浮點型都是有符號的。

(四)、字元型變數

字元型變數中所存放的字元是計算機字元集中的字元。對於PC機上運行的C系統,字元型數據用8位單位元組的ASCII碼表示。程序用類型說明符char來聲明字元型變數:

char ch;

這條聲明語句聲明了一個字元型變數,標識符為ch。當以這種形式聲明變數之後,程序可以在表達式中引用這個變數,關於語句和表達式的知識在後面將會介紹。

字元數據類型事實上是8位的整型數據類型,可以用於數值表達式中,與其他的整型數據同樣使用。在這種情況下,字元型變數可以是有符號的,也可以是無符號的。對於無符號的字元型變數可以聲明為:

unsigned char ch;

除非聲明為無符號型,否則在算術運算和比較運算中,字元型變數一般作為8位有符號整型變數處理。

還有其他的如指針型變數,void型變數,以後再介紹。

二、常量

常量的意思就是不可改變的量,是一個常數。同變數一樣,常量也分為整型常量、浮點型常量、字元型常量,還有字元串常量、轉義字元常量和地址常量。

(一)、整型常量

整型常量可以是長整型、短整型、有符號型、無符號型。在Tubbo C 2.0里有符號整型常量的范圍從-32768到32767,無符號整型的為0到65535;有符號長整型的范圍為-2147483648到2147483647。無符號長整型的范圍為0到4294967295。短整型同字元型。

可以指定一個整型常量為二進制、八進制或十六進制,如以下語句:

-129, 0x12fe, 0177

常量的前面有符號0x,這個符號表示該常量是十六進製表示。如果前面的符號只有一個字母0,那麼表示該常量是八進制。

有時我們在常量的後面加上符號L或者U,來表示該常量是長整型或者無符號整型:

22388L, 0x4efb2L, 40000U

後綴可以是大寫,也可以是小寫。

(二)、浮點型常量

一個浮點型常量由整數和小數兩部分構成,中間用十進制的小數點隔開。有些浮點樹非常大或者非常小,用普通方法不容易表示,可以用科學計數法或者指數方法表示。下面是一個實例:

3.1416, 1.234E-30, 2.47E201

注意在C語言中,數的大小也有一定的限制。對於float型浮點數,數的表示範圍為-3.402823E38到3.402823E38,其中-1.401298E-45到1.401298E-45不可見。double型浮點型常數的表示範圍為-1.79E308到1.79E308,其中-4.94E-324到4.94E-324不可見。

在浮點型常量里我們也可以加上後綴。

FloatNumber=1.6E10F; /*有符號浮點型*/

LongDoubleNumber=3.45L; /*長雙精度型*/

後綴可大寫也可小寫。

說明:

1. 浮點常數只有一種進制(十進制)。

2. 所有浮點常數都被默認為double。

3. 絕對值小於1的浮點數, 其小數點前面的零可以省略。如:0.22可寫為.22, -0.0015E-3可寫為-.0015E-3。

4. Turbo C默認格式輸出浮點數時, 最多隻保留小數點後六位

(三)、字元型常量

字元型常量所表示的值是字元型變數所能包含的值。我們可以用ASCII表達式來表示一個字元型常量,或者用單引號內加反斜杠表示轉義字元。

'A', 'x2f', ཉ'

其中:x表示後面的字元是十六進制數,表示後面的字元是八進制數。

注意:在Turbo C 2.0中,字元型常量表示數的范圍是-128到127,除非你把它聲明為unsigned,這樣就是0到255。

(四)、字元串常量

字元串常量就是一串字元,用雙引號括起來表示。

Hello,World!

Enter selection:

aError!!!

(五)、轉義字元

上面我們見到的x, ,a等等都是叫轉義字元,它告訴編譯器需要用特殊的方式進行處理。下面給出所有的轉義字元和所對應的意義:

轉義字元 描述

' 單引號

雙引號

反斜杠

空字元

nnn 八進制數

a 聲音符

 退格符

f 換頁符

換行符

回車符

水平製表符

v 垂直製表符

x 十六進制符

它們的具體用法我們到講輸出語句時再介紹。

(六)、地址常量

我們前面說的變數是存儲數據的空間,它們在內存里都有對應的地址。在C語言里可以用地址常量來引用這些地址,如下:

&Counter, ∑

&是取地址符,作用是取出變數(或者函數)的地址。在後面的輸入語句和指針里還會說明。

這一節所講到的變數和常量知識可以說是在一切程序中都要用到,特別是變數的聲明和命名規則。

;

⑦ 計算機二級c語言常見知識點

計算機二級c語言常見知識點

資料庫是為了更容易地組織、存儲和檢索大量數據。資料庫由資料庫管理系統管理,通過資料庫模型和查詢語言來存儲、創建、維護和搜索數據。下面是我整理的關於計算機二級c語言常見知識點,歡迎大家參考!

計算機二級c語言常見知識點 篇1

文件

【考點1】文件類型指針

文件指針是一個指向結構體類型的指針,定義格式為:FILE *指針變數名。在使用文件時,都需要先定義文件指針。

【考點2】文本文件與二進制文件

文本形式存放的是字元的ASCII碼,二進制形式存放的是數據的二進制。例如「100」如果是文本形式就是存儲』1』、 』0』、 』0』三個字元的ASCII碼(00110001 00110000 00110000),如果是二進制形式就把100轉化成二進制(01100100)。

【考點3】打開文件

文件的打開形式:

FILE *fp;

fp=fopen(「c:lab.c」,」rb」);。

fopen函數的前面一部分為文件名,後面一部分為文件的使用方式。其中r代表讀,w代表寫,a代表添加,b代表二進制位的。

【考點4】文件函數

判斷文件結束feof函數,移動文件指針位置fseek函數,獲得文件位置ftell函數,文件位置移到開頭rewind函數,文件字元輸入輸出fgetc函數和fputc函數,文件輸入輸出fscanf函數和fprintf函數,文件字元串輸入輸出fgets函數和fputs函數,讀寫二進制文件fread函數和fwrite函數。

對C語言的深入探討

【考點1】編譯預處理

凡以#開頭的這一行,都是編譯預處理命令行,編譯預處理不加分號,不佔運行時間。宏替換僅是簡單的文本替換,如#define f(x) (x)*(x)和#define f(x) x*x替換f(2+2)時就有區別,前者展開為(2+2)*(2+2),後者為2+2*2+2。

如果源文件f2.c中有#include"f1.c"可以理解為把源文件f1.c原樣包含到f2.c中,使f1.c和f2.c融合到一起成為一個C程序編譯。所以一個C程序必有主函數,但一個C源文件未必有主函數。

【考點2】標識符作用域

局部變數是在函數內或復合語句內定義的變數,作用域為定義它的函數內。局部變數有三種類型:自動auto,寄存器register和靜態static。

自動變數隨著函數的使用與否創建消失;寄存器變數分配在cpu中,沒有內存地址;靜態變數佔用固定存儲單元,在程序執行過程不釋放,直到程序運行結束。

全局變數是在函數外定義的變數,作用域從定義它的位置到整個源文件結束為止,生存期為整個程序運行期間。全局變數都是靜態變數。

【考點3】動態存儲分配

malloc(size)用來創建size個位元組的連續存儲空間,返回值類型為void *型。malloc函數常用於動態創建鏈表結點,如int *p; p=(int *)malloc(sizeof(int));。

calloc(n,size)創建n個同一類型的連續存儲空間,可以理解為n個malloc。

int *p; p=(int *) calloc (10,sizeof(int));。p指向首地址。

free(p)釋放動態分配的存儲單元。

【考點4】main函數的參數

還有main(int argc,char **argv) {}

這種含有參數的題目,是很呆板的題目。第一個參數是表示輸入的字元串的數目,第二個參數是指向存放的字元串。

【考點5】函數指針

函數指針的用法(*f)()記住一個例子:

int add(int x, int y)

{....}

main()

{ int (*f)();

f=add;

}

賦值之後:合法的調用形式為

1、add(2,3);

2、f(2,3);

3、(*f)(2,3);

計算機二級c語言常見知識點 篇2

【考點1】函數的定義

函數:是具有一定功能的一個程序塊;是C 語言的基本組成單位。

函數的首部為:函數類型 函數名(類型1 形參1,類型2 形參2,……)。在函數定義中不可以再定義函數,即不能嵌套定義函數。函數類型默認為int型。

【考點2】庫函數

調用C語言標准庫函數時要包含include命令,include命令行以#開頭,後面是「」或<>括起來的後綴為」.h」的頭文件。以#開頭的一行稱為編譯預處理命令行,編譯預處理不是C語言語句,不加分號,不佔運行時間。

【考點3】函數的返回值

函數通過return語句返回一個值,返回的值類型與函數類型一樣。return語句只執行一次,執行完或函數體結束後退出函數。

【考點4】函數的聲明

函數要「先定義後調用」,或「先聲明再調用後定義」。函數的聲明一定要有函數名、函數返回值類型、函數參數類型,但不一定要有形參的名稱。

【考點5】函數的調用

程序從上往下執行,當碰到函數名後,把值傳給調用函數,當程序得到了返回值或調用函數結束,再順序往下執行。

【考點6】函數的參數及值傳遞

形式參數簡稱形參,是定義函數時函數名後面括弧中的參數。實在參數簡稱實參,是調用函數時函數名後面括弧中的`參數。實參和形參分別占據不同的存儲單元。實參向形參單向傳遞數值。

「傳值」與「傳址」的區別:傳數值的話,形參的變化不會改變實參的變化。傳地址的話,形參的變化就有可能改變實參所對應的量。(考試的重點)

函數的參數,返回數值(示意圖)。

【考點7】函數的遞歸調用

函數直接或間接地調用自己稱為函數的遞歸調用。遞歸調用必須有一個明確的結束遞歸的條件。在做遞歸題時可把遞歸的步驟一步步寫下來,不要弄顛倒了。

【考點8】要求掌握的庫函數

sqrt()算術平方根函數,fabs()絕對值函數,sin()正弦函數,sin(3.14159/180*30);,pow()冪函數,23是由pow(2,3)表示的。

;

⑧ c語言的主要應用有哪些

因為C語言比較接近硬體,又能做到匯編語言的高效率,又比匯編語言更接近於自然語言.也就是說更好懂,所以C語言一直接以來都有廣泛的應用,目前,C語言主要應用在嵌入式開發,低級操作系統(比如類似於linux的NOS操作系統)上應用程序的開發,還有可以寫一些簡單的應用軟體,LINUX和UNIX都是很C寫的,C還是很有用處的,也得到了很廣泛的應用,所以潛力也大!

⑨ c語言 圖形函數

圖形函數 1. 圖形模式的初始化
不同的顯示器適配器有不同的圖形解析度。即是同一顯示器適配器, 在不同
模式下也有不同解析度。因此, 在屏幕作圖之前, 必須根據顯示器適配器種類將
顯示器設置成為某種圖形模式, 在未設置圖形模式之前, 微機系統默認屏幕為文
本模式(80列, 25行字元模式), 此時所有圖形函數均不能工作。設置屏幕為圖形
模式, 可用下列圖形初始化函數:
void far initgraph(int far *gdriver, int far *gmode, char *path);
其中gdriver和gmode分別表示圖形驅動器和模式, path是指圖形驅動程序所
在的目錄路徑。有關圖形驅動器、圖形模式的符號常數及對應的解析度見表2。
圖形驅動程序由Turbo C出版商提供, 文件擴展名為.BGI。根據不同的圖形
適配器有不同的圖形驅動程序。例如對於EGA、 VGA 圖形適配器就調用驅動程序
EGAVGA.BGI。 例4. 使用圖形初始化函數設置VGA高解析度圖形模式
#include <graphics.h>
int main()
{
int gdriver, gmode;
gdriver=VGA;
gmode=VGAHI;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(100, 100, 300, 250, 50, 1); /*畫一長方體*/
getch();
closegraph();
return 0;
}
有時編程者並不知道所用的圖形顯示器適配器種類, 或者需要將編寫的程序
用於不同圖形驅動器, Turbo C提供了一個自動檢測顯示器硬體的函數, 其調用
格式為:
void far detectgraph(int *gdriver, *gmode);
其中gdriver和gmode的意義與上面相同。

例5. 自動進行硬體測試後進行圖形初始化
#include <graphics.h>
int main()
{
int gdriver, gmode;
detectgraph(&gdriver, &gmode); /*自動測試硬體*/
printf("the graphics driver is %d, mode is %d\n", gdriver,
gmode); /*輸出測試結果*/
getch();
initgraph(&gdriver, &gmode, "c:\\tc");
/* 根據測試結果初始化圖形*/
bar3d(10, 10, 130, 250, 20, 1);
getch();
closegraph();
return 0;
}

上常式序中先對圖形顯示器自動檢測, 然後再用圖形初始化函數進行初始化
設置, 但Turbo C提供了一種更簡單的方法, 即用gdriver= DETECT 語句後再跟
initgraph()函數就行了。採用這種方法後, 上例可改為:

例6.
#include <graphics.h>
int main()
{
int gdriver=DETECT, gmode;
initgraph(&gdriver, &gmode, "c:\\tc");
bar3d(50, 50, 150, 30, 1);
getch();
closegraph();
return 0;
}
另外, Turbo C提供了退出圖形狀態的函數closegraph(), 其調用格式為:
void far closegraph(void);
調用該函數後可退出圖形狀態而進入文本方式(Turbo C 默認方式), 並釋放
用於保存圖形驅動程序和字體的系統內存。

2. 獨立圖形運行程序的建立
Turbo C對於用initgraph()函數直接進行的圖形初始化程序, 在編譯和鏈接
時並沒有將相應的驅動程序(*.BGI)裝入到執行程序, 當程序進行到intitgraph()
語句時, 再從該函數中第三個形式參數char *path中所規定的路徑中去找相應的
驅動程序。若沒有驅動程序, 則在C:\TC中去找, 如C:\TC中仍沒有或TC不存在,
將會出現錯誤:
BGI Error: Graphics not initialized (use 'initgraph')
因此, 為了使用方便, 應該建立一個不需要驅動程序就能獨立運行的可執行
圖形程序,Turbo C中規定用下述步驟(這里以EGA、VGA顯示器為例):
1. 在C:\TC子目錄下輸入命令:BGIOBJ EGAVGA
此命令將驅動程序EGAVGA.BGI轉換成EGAVGA.OBJ的目標文件。
2. 在C:\TC子目錄下輸入命令:TLIB LIB\GRAPHICS.LIB+EGAVGA
此命令的意思是將EGAVGA.OBJ的目標模塊裝到GRAPHICS.LIB庫文件中。
3. 在程序中initgraph()函數調用之前加上一句:
registerbgidriver(EGAVGA_driver):
該函數告訴連接程序在連接時把EGAVGA的驅動程序裝入到用戶的執行程序中。
經過上面處理,編譯鏈接後的執行程序可在任何目錄或其它兼容機上運行。
假設已作了前兩個步驟,若再向例6中加 registerbgidriver()函數則變成:
例7:
#include<stdio.h>
#include<graphics.h>
int main()
{
int gdriver=DETECT,gmode;
registerbgidriver(EGAVGA_driver): / *建立獨立圖形運行程序 */
initgraph( gdriver, gmode,"c:\\tc");
bar3d(50,50,250,150,20,1);
getch();
closegraph();
return 0;
}
上例編譯鏈接後產生的執行程序可獨立運行。
如不初始化成EGA或CGA解析度, 而想初始化為CGA解析度, 則只需要將上述
步驟中有EGAVGA的地方用CGA代替即可。

3.屏幕顏色的設置和清屏函數
對於圖形模式的屏幕顏色設置, 同樣分為背景色的設置和前景色的設置。在
Turbo C中分別用下面兩個函數。
設置背景色: void far setbkcolor( int color);
設置作圖色: void far setcolor(int color);
其中color 為圖形方式下顏色的規定數值, 對EGA, VGA顯示器適配器, 有關
顏色的符號常數及數值見下表所示。
表3 有關屏幕顏色的符號常數表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
符號常數 數值 含義 符號常數 數值 含義
———————————————————————————————————
BLACK 0 黑色 DARKGRAY 8 深灰
BLUE 1 蘭色 LIGHTBLUE 9 深蘭
GREEN 2 綠色 LIGHTGREEN 10 淡綠
CYAN 3 青色 LIGHTCYAN 11 淡青
RED 4 紅色 LIGHTRED 12 淡紅
MAGENTA 5 洋紅 LIGHTMAGENTA 13 淡洋紅
BROWN 6 棕色 YELLOW 14 黃色
LIGHTGRAY 7 淡灰 WHITE 15 白色
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
對於CGA適配器, 背景色可以為表3中16種顏色的一種, 但前景色依賴於不同
的調色板。共有四種調色板, 每種調色板上有四種顏色可供選擇。不同調色板所
對應的原色見表4。
表4 CGA調色板與顏色值表
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
調色板 顏色值
——————————— ——————————————————
符號常數 數值 0 1 2 3
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
C0 0 背景 綠 紅 黃
C1 1 背景 青 洋紅 白
C2 2 背景 淡綠 淡紅 黃
C3 3 背景 淡青 淡洋紅 白
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

清除圖形屏幕內容使用清屏函數, 其調用格式如下:
voide far cleardevice(void);
另外, TURBO C也提供了幾個獲得現行顏色設置情況的函數。
int far getbkcolor(void); 返回現行背景顏色值。
int far getcolor(void); 返回現行作圖顏色值。
int far getmaxcolor(void); 返回最高可用的顏色值。

4. 基本圖形函數
基本圖形函數包括畫點, 線以及其它一些基本圖形的函數。本節對這些函數
作一全面的介紹。

一、畫點
1. 畫點函數
void far putpixel(int x, int y, int color);
該函數表示有指定的象元畫一個按color所確定顏色的點。對於顏色color的
值可從表3中獲得而對x, y是指圖形象元的坐標。
在圖形模式下, 是按象元來定義坐標的。對VGA適配器, 它的最高解析度為
640x480, 其中640為整個屏幕從左到右所有象元的個數, 480 為整個屏幕從上到
下所有象元的個數。屏幕的左上角坐標為(0, 0), 右下角坐標為(639, 479), 水
平方向從左到右為x軸正向, 垂直方向從上到下為y軸正向。TURBO C 的圖形函數
都是相對於圖形屏幕坐標, 即象元來說的。
關於點的另外一個函數是:
int far getpixel(int x, int y);
它獲得當前點(x, y)的顏色值。

2. 有關坐標位置的函數

int far getmaxx(void);
返回x軸的最大值。

int far getmaxy(void);
返回y軸的最大值。

int far getx(void);
返回遊標在x軸的位置。

void far gety(void);
返回遊標有y軸的位置。

void far moveto(int x, int y);
移動游標到(x, y)點, 不是畫點, 在移動過程中亦畫點。

void far moverel(int dx, int dy);
移動游標從現行位置(x, y)移動到(x+dx, y+dy)的位置, 移動過程中不畫點。

二、畫線
1. 畫線函數
TURBO C提供了一系列畫線函數, 下面分別敘述:

void far line(int x0, int y0, int x1, int y1);
畫一條從點(x0, y0)到(x1, y1)的直線。

void far lineto(int x, int y);
畫一作從現行游標到點(x, y)的直線。

void far linerel(int dx, int dy);
畫一條從現行游標(x, y)到按相對增量確定的點(x+dx, y+dy)的直線。

void far circle(int x, int y, int radius);
以(x, y)為圓心, radius為半徑, 畫一個圓。

void far arc(int x, int y, int stangle, int endangle, int radius);
以(x, y)為圓心, radius為半徑, 從stangle開始到endangle結束(用度表示)
畫一段圓弧線。在TURBO C中規定x軸正向為0度, 逆時針方向旋轉一周, 依次為
90, 180, 270和360度(其它有關函數也按此規定, 不再重述)。

void ellipse(int x, int y, int stangle, int endangle, int xradius,
int yradius);
以(x, y)為中心, xradius, yradius為x軸和y軸半徑, 從角stangle 開始到
endangle結束畫一段橢圓線, 當stangle=0, endangle=360時, 畫出一個完整的
橢圓。

void far rectangle(int x1, int y1, int x2, inty2);
以(x1, y1)為左上角, (x2, y2)為右下角畫一個矩形框。

void far drawpoly(int numpoints, int far *polypoints);
畫一個頂點數為numpoints, 各頂點坐標由polypoints 給出的多邊形。
polypoints整型數組必須至少有2倍頂點數個無素。每一個頂點的坐標都定義為x,
y, 並且x在前。值得注意的是當畫一個封閉的多邊形時, numpoints 的值取實際
多邊形的頂點數加一, 並且數組polypoints中第一個和最後一個點的坐標相同。
下面舉一個用drawpoly()函數畫箭頭的例子。
例9:
#include<stdlib.h>
#include<graphics.h>
int main()
{
int gdriver, gmode, i;
int arw[16]={200, 102, 300, 102, 300, 107, 330,
100, 300, 93, 300, 98, 200, 98, 200, 102};
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(12); /*設置作圖顏色*/
drawpoly(8, arw); /*畫一箭頭*/
getch();
closegraph();
return 0;
}

2. 設定線型函數
在沒有對線的特性進行設定之前, TURBO C用其默認值, 即一點寬的實線,
但TURBO C也提供了可以改變線型的函數。線型包括:寬度和形狀。其中寬度只有
兩種選擇: 一點寬和三點寬。而線的形狀則有五種。下面介紹有關線型的設置函
數。

void far setlinestyle(int linestyle, unsigned upattern, int
thickness);
該函數用來設置線的有關信息, 其中linestyle是線形狀的規定, 見表5。
表5. 有關線的形狀(linestyle)
━━━━━━━━━━━━━━━━━━━━━━━━━
符號常數 數值 含義
—————————————————————————
SOLID_LINE 0 實線
DOTTED_LINE 1 點線
CENTER_LINE 2 中心線
DASHED_LINE 3 點畫線
USERBIT_LINE 4 用戶定義線
━━━━━━━━━━━━━━━━━━━━━━━━━
thickness是線的寬度, 見表6。

表6. 有關線寬(thickness)
━━━━━━━━━━━━━━━━━━━━━━━━━
符號常數 數值 含義
—————————————————————————
NORM_WIDTH 1 一點寬
THIC_WIDTH 3 三點寬
━━━━━━━━━━━━━━━━━━━━━━━━━
對於upattern, 只有linestyle選USERBIT_LINE 時才有意義( 選其它線型,
uppattern取0即可)。此進uppattern的16位二進制數的每一位代表一個象元, 如
果那位為1, 則該象元打開, 否則該象元關閉。

void far getlinesettings(struct linesettingstype far *lineinfo);
該函數將有關線的信息存放到由lineinfo 指向的結構中, 表中
linesettingstype的結構如下:
struct linesettingstype{
int linestyle;
unsigned upattern;
int thickness;
}
例如下面兩句程序可以讀出當前線的特性
struct linesettingstype *info;
getlinesettings(info);

void far setwritemode(int mode);
該函數規定畫線的方式。如果mode=0, 則表示畫線時將所畫位置的原來信息
覆蓋了(這是TURBO C的默認方式)。如果mode=1, 則表示畫線時用現在特性的線
與所畫之處原有的線進行異或(XOR)操作, 實際上畫出的線是原有線與現在規定
的線進行異或後的結果。因此, 當線的特性不變, 進行兩次畫線操作相當於沒有
畫線。
有關線型設定和畫線函數的例子如下所示。
例10.
#include<stdlib.h>
#include<graphics.h>
int main()
{
int gdriver, gmode, i;
gdriver=DETECT;
registerbgidriver(EGAVGA_driver);
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(GREEN);
circle(320, 240, 98);
setlinestyle(0, 0, 3); /*設置三點寬實線*/
setcolor(2);
rectangle(220, 140, 420, 340);
setcolor(WHITE);
setlinestyle(4, 0xaaaa, 1); /*設置一點寬用戶定義線*/
line(220, 240, 420, 240);
line(320, 140, 320, 340);
getch();
closegraph();
return 0;
}

5. 封閉圖形的填充
填充就是用規定的顏色和圖模填滿一個封閉圖形。

一、先畫輪廓再填充
TURBO C提供了一些先畫出基本圖形輪廓, 再按規定圖模和顏色填充整個封
閉圖形的函數。在沒有改變填充方式時, TURBO C以默認方式填充。 下面介紹這
些函數。

void far bar(int x1, int y1, int x2, int y2);
確定一個以(x1, y1)為左上角, (x2, y2)為右下角的矩形窗口, 再按規定圖
模和顏色填充。
說明: 此函數不畫出邊框, 所以填充色為邊框。

void far bar3d(int x1, int y1, int x2, int y2, int depth, int
topflag);
當topflag為非0時, 畫出一個三維的長方體。當topflag為0時, 三維圖形不
封頂, 實際上很少這樣使用。
說明: bar3d()函數中, 長方體第三維的方向不隨任何參數而變, 即始終為
45度的方向。

void far pieslice(int x, int y, int stangle, int endangle, int
radius);
畫一個以(x, y)為圓心, radius為半徑, stangle為起始角度, endangle 為
終止角度的扇形, 再按規定方式填充。當stangle=0, endangle=360 時變成一個
實心圓, 並在圓內從圓點沿X軸正向畫一條半徑。

void far sector(int x, int y, int stanle, intendangle, int
xradius, int yradius);
畫一個以(x, y)為圓心分別以xradius, yradius為x軸和y軸半徑, stangle
為起始角, endangle為終止角的橢圓扇形, 再按規定方式填充。

二、設定填充方式
TURBO C有四個與填充方式有關的函數。下面分別介紹:
void far setfillstyle(int pattern, int color);
color的值是當前屏幕圖形模式時顏色的有效值。pattern的值及與其等價的
符號常數 除USER_FILL(用戶定義填充式樣)以外, 其它填充式樣均可由setfillstyle()
函數設置。當選用USER_FILL時, 該函數對填充圖模和顏色不作任何改變。 之所
以定義USER_FILL主要因為在獲得有關填充信息時用到此項。
void far setfillpattern(char * upattern,int color);
設置用戶定義的填充圖模的顏色以供對封閉圖形填充。
其中upattern是一個指向8個位元組的指針。這8個位元組定義了8x8點陣的圖形。
每個位元組的8位二進制數表示水平8點, 8個位元組表示8行, 然後以此為模型向個封
閉區域填充。
void far getfillpattern(char * upattern);
該函數將用戶定義的填充圖模存入upattern指針指向的內存區域。
void far getfillsetings(struct fillsettingstype far * fillinfo);
獲得現行圖模的顏色並將存入結構指針變數fillinfo中。其中fillsettingstype
結構定義如下:
struct fillsettingstype{
int pattern; /* 現行填充模式 * /
int color; /* 現行填充模式 * /
};
三、任意封閉圖形的填充
截止目前為止, 我們只能對一些特定形狀的封閉圖形進行填充, 但還不能對
任意封閉圖形進行填充。為此, TURBO C 提供了一個可對任意封閉圖形填充的函
數, 其調用格式如下:
void far floodfill(int x, int y, int border);
其中: x, y為封閉圖形內的任意一點。border為邊界的顏色, 也就是封閉圖
形輪廓的顏色。調用了該函數後, 將用規定的顏色和圖模填滿整個封閉圖形。例12:
#include<stdlib.h>
#include<graphics.h>
main()
{
int gdriver, gmode;
strct fillsettingstype save;
gdriver=DETECT;
initgraph(&gdriver, &gmode, "");
setbkcolor(BLUE);
cleardevice();
setcolor(LIGHTRED);
setlinestyle(0,0,3);
setfillstyle(1,14); /*設置填充方式*/
bar3d(100,200,400,350,200,1); /*畫長方體並填充*/
floodfill(450,300,LIGHTRED); /*填充長方體另外兩個面*/
floodfill(250,150, LIGHTRED);
rectanle(450,400,500,450); /*畫一矩形*/
floodfill(470,420, LIGHTRED); /*填充矩形*/
getch();
closegraph();
}
6. 有關圖形窗口和圖形屏幕操作函數
一、圖形窗口操作
象文本方式下可以設定屏幕窗口一樣, 圖形方式下也可以在屏幕上某一區域
設定窗口, 只是設定的為圖形窗口而已, 其後的有關圖形操作都將以這個窗口的
左上角(0,0)作為坐標原點, 而且可為通過設置使窗口之外的區域為不可接觸。
這樣, 所有的圖形操作就被限定在窗口內進行。
void far setviewport(int xl,int yl,int x2, int y2,int clipflag);
設定一個以(xl,yl)象元點為左上角, (x2,y2)象元為右下角的圖形窗口, 其
中x1,y1,x2,y2是相對於整個屏幕的坐標。若clipflag為非0, 則設定的圖形以外
部分不可接觸, 若clipflag為0, 則圖形窗口以外可以接觸。
void far clearviewport(void);
清除現行圖形窗口的內容。
void far getviewsettings(struct viewporttype far * viewport);
獲得關於現行窗口的信息,並將其存於viewporttype定義的結構變數viewport
中, 其中viewporttype的結構說明如下:
struct viewporttype{
int left, top, right, bottom;
int cliplag;
};
二、屏幕操作
除了清屏函數以外, 關於屏幕操作還有以下函數:
void far setactivepage(int pagenum);
void far setvisualpage(int pagenum);
這兩個函數只用於EGA,VGA 以及HERCULES圖形適配器。setctivepage() 函數
是為圖形輸出選擇激活頁。 所謂激活頁是指後續圖形的輸出被寫到函數選定的
pagenum頁面, 該頁面並不一定可見。setvisualpage()函數才使pagenum 所指定
的頁面變成可見頁。頁面從0開始(Turbo C默認頁)。如果先用setactivepage()
函數在不同頁面上畫出一幅幅圖像,再用setvisualpage()函數交替顯示, 就可以
實現一些動畫的效果。
void far getimage(int xl,int yl, int x2,int y2, void far *mapbuf);
void far putimge(int x,int,y,void * mapbuf, int op);
unsined far imagesize(int xl,int yl,int x2,int y2);
這三個函數用於將屏幕上的圖像復制到內存,然後再將內存中的圖像送回到
屏幕上。首先通過函數imagesize()測試要保存左上角為(xl,yl), 右上角為(x2,
y2)的圖形屏幕區域內的全部內容需多少個位元組, 然後再給mapbuf 分配一個所測
數位元組內存空間的指針。通過調用getimage()函數就可將該區域內的圖像保存在
內存中, 需要時可用putimage()函數將該圖像輸出到左上角為點(x, y)的位置上,
其中getimage()函數中的參數op規定如何釋放內存中圖像。
對於imagesize()函數, 只能返回位元組數小於64K位元組的圖像區域, 否則將會
出錯, 出錯時返回-1。
本節介紹的函數在圖像動畫處理、菜單設計技巧中非常有用。

例13: 下面程序模擬兩個小球動態碰撞過程。
7. 圖形模式下的文本輸出
在圖形模式下, 只能用標准輸出函數, 如printf(), puts(), putchar() 函
數輸出文本到屏幕。除此之外, 其它輸出函數(如窗口輸出函數)不能使用, 即是
可以輸出的標准函數, 也只以前景色為白色, 按80列, 25行的文本方式輸出。
Turbo C2.0也提供了一些專門用於在圖形顯示模式下的文本輸出函數。下面
將分別進行介紹。
一、文本輸出函數
void far outtext(char far *textstring);
該函數輸出字元串指針textstring所指的文本在現行位置。
void far outtextxy(int x, int y, char far *textstring);
該函數輸出字元串指針textstring所指的文本在規定的(x, y)位置。 其中x
和y為象元坐標。
說明:
這兩個函數都是輸出字元串, 但經常會遇到輸出數值或其它類型的數據,
此時就必須使用格式化輸出函數sprintf()。
sprintf()函數的調用格式為:
int sprintf(char *str, char *format, variable-list);
它與printf()函數不同之處是將按格式化規定的內容寫入str 指向的字元串
中, 返回值等於寫入的字元個數。
例如:
sprintf(s, "your TOEFL score is %d", mark);
這里s應是字元串指針或數組, mark為整型變數。