C語言基礎知識 (一)_第1頁
C語言基礎知識 (一)_第2頁
C語言基礎知識 (一)_第3頁
C語言基礎知識 (一)_第4頁
C語言基礎知識 (一)_第5頁
已閱讀5頁,還剩14頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

文檔來源網絡,僅供參考,侵權必刪除

C語言基礎知識

1.1c語言簡介

C語言于1972年由美國的DennisRitchie發明,并首次在配備了UNIX

操作系統的DECPDP-11計算機上實現。它由早期的編程語言BCPL(Basic

CombindProgrammingLanguage)發展演變而來。1970年,AT&T貝爾實驗

室的KenThompson根據BCPL語言設計出了較先進并取名為B的語言,通

過不斷修改、完善,更先進的C語言問世了。

C語言是一種功能強大、應用廣泛、具有發展前途的計算機語言。它既

可用于系統軟件的設計,也可用于應用軟件的開發。許多著名的系統軟件都

是由C語言編寫的。C語言具有下列特點:

(1)C語言既具有低級語言直接操縱硬件的特點,又具有高級語言與

自然語言和人的思維邏輯相似的特點,C語言程序易編寫、易查錯,而且實

用性很強。

(2)C語言具有豐富的數據類型和運算符,語法結構簡單。

(3)C語言是一種結構化程序設計語言,提供了完整的程序控制語句。

(4)C語言是一種模塊化程序設計語言,適合大型軟件的開發和研制。

(5)C語言還有一個突出的優點就是適合于多種操作系統,如DOS、

UNIX,也適用于多種機型,其程序移植性好。

1.2C語言的數據類型

數據是程序處理的對象,數據類型是數據的內在表現形式。例如,學生

的年齡和成績具有一般數值的特點,在C語言中稱為數值型,其中年齡是

整數,稱為整型;成績可以為小數,稱為實型。而學生的姓名和性別是文字,

在C語言中稱為字符型數據。

C語言具有豐富的數據類型,其中基本的數據類型有整型、實型、字

文檔來源網絡,僅供參考,侵權必刪除

符型。

1.2.1變量

變量是在程序執行過程中其值可以被改變的量。

1.變量命名規則

和人的取名一樣,變量的命名也有一定的規則。

(1)由字母、數字和下劃線組成;

(2)必須以字母或下劃線打頭;

(3)字母區分大小寫(在系統默認狀態下);

(4)前32個字符有效(在系統默認狀態下)。

例如:a,Book,book,_Make_Cipher都是合法的變量名,且Book與book是不同

的變量名,而123A,x+y都不是變量名。

2.變量的數據類型

變量可以是任意的一種數據類型,如整型變量、字符型變量、指針變量等。C語言

中的基本數據類型及其特性如表1」所示。

表C語言的基本數據類型

數據類型名數據類型描述數據類型的長度(字節)數據取值范圍

char字符型10-255

int有符號整型2-32768?32767

unsignedint無符號整型20?65535

short短整型2-32768?32767

long長整型4-2147483648-2147483647

unsignedlong無符號長整型40-4294967295

float單精度實數4|3.4XIO?|-|3.4X1O381

double雙精度實數8|1.7X1O-3O8|~|1.7X1O3O8|

longdouble長雙精度實數10|3.4X10用巧?|3.4X104932|

3.變量的定義

每個變量在使用前都必須先定義其數據類型,定義變量數據類型的語法格式如下:

數據類型符變量名1,變量名2…;

例如:

intage,score;/*定義年齡和成績為整型*/

charname[20];/*定義姓名為至多含20個字符的字符數組*/

4.變量的存儲類型

當定義某個變量時,C語言的編譯系統就要給該變量分配若干個存儲單元用來存放

該變量的值。而在計算機中寄存器和內存都可以存放數據,內存又可分為臨時占用和長

期占用。變量的存儲類型是指變量在計算機中的存放位置及時間。

定義變量存儲類型的語法格式如下:

存儲類型符數據類型符變量名1,變量名2,…;

變量的存儲類型有自動型(aut。)、寄存器型(register)、靜態型(static)和外部型

(extern),具體特點和使用方法在后面的章節中詳細介紹。

在變量定義時,如未說明存儲類型,則系統默認為自動型(aul。)。

5.變量的初始化

變量的初始化是給變量賦初值的一種方法,是指在變量定義時就給變量賦予初始值。

變量初始化的方法很簡單,在變量定義的語句中,在變量名后加一個等號和初值即可。

例如:

intx,age=20,score=100;

在上面的定義中,變量x未賦初值,而變量age和score的初值分別為20和100。

在程序中,變量未賦值之前不允許使用,即要遵循“先賦值后使用”的規則。

1.2.2常量

常量是在程序運行過程中值不發生改變的數據。例如,圓周率3.1415926就是一個

常量。常量也有數據類型,它們是整型常量、實型常量、字符常量、字符串常量及符號

常量,整型常量及實型常量的數據長度及取值范圍與變量的規定相同。

1.整型常量

整型常量用來表示整數,整型數據可以以不同數制形式來表示,不同的進位制有其

不同的表示方式,其表示方式如表1-2所示。

表L2整型常量的表示方式

數制表示方式示例

十進制一般整數的寫法0,-22,55

八進制在八進制整數前加數字000,-072,+0331

十六進制在十六進制整數前加數字0和字母X0x0,0xlB5?-0xb3

另外,對于長整型常量,應當在其后加后綴L或1,例如30L。30L和30數值一樣,

但占用內存的大小不一樣。30占用2個字節的存儲空間,而30L占用4個字節的存儲空間。

2.實型常量

實型常量只有十進制數表示方式,它沒有單精度和雙精度之分C其表示方式有定點

數表示和浮點數表示兩種。具體表示方式如表1-3所示。

表1-3實型常量的書寫方法

類別表示方式示例

定點數整數部分.小數部分0.0.1.34,-34.0

浮點數尾數E(或e)指數3.57E10,-5.6e-9

說明:

供了方便。例如,當不需要太高精度時,只需要將符號常量定義修改為

#definePI3.14

而不需要在程序中去修改每一處的圓周率。

1.3算術運算符與算術表達式

用來表示各種運算的符號稱為運算符。c語言中包括以下七大類的基本運算符:算

術運算符、邏輯運算符、關系運算符、賦值運算符、逗號運算符、條件運算符和位運算

符。本節主要介紹算術運算符,其他的運算符將在后續章節中詳細介紹。

1.3.1算術運算符

c語言中的算術運算符和數學中的算術運算相似,是對數據進行算術運算的。算術

運算符的運算對象、運算規則及結合性如表1-5所示。

表1?5算術運算符

運算對象

運算對象個數名稱運算符運算規則結合性

數據類型

正+取原值

單目自右向左

負—取負值

加+加法運算

整型或實型

減—減法運算

雙目乘?乘法運算自左向右

除/除法運算

模%整除取余整型

增1(前綴)++先加1,后使用整型、字符

增1(后綴)++先使用,后加1型、指針型

單目自右向左

減1(前綴)—先減1,后使用變量或數組

減1(后綴)——先使用,后減1兀素、實型

在C語言中,參加運算的對象個數稱為運算符的“目”。單目運算符是指參加運算

的對象只有一個,如+10,-67,x++。雙目運算符是指參加運算的對象有兩個,如2+3,

7%3o

相同運算符連續出現時,有的運算符是從左至右進行運算,有的運算符是從右至左

進行運算,C語言中,將運算符的這種特性稱為結合性。

力口法(+)、減法(-)、乘法(*)與數學中的算術運算相同。例如:3.5+4Z7結果是

8.2;3.5-4.7結果是一0.8:3.5*4.7結果是16.45。

除法運算(/)與數學中的除法不完全相同,它與參加運算的對象的數據類型相關。

當參加運算的兩個對象均為整型數據時,其運算結果為數學運算結果的整數部分。如7/4

結果為1,而不是1.75。若參加運算的兩個對象有一個是實型或兩個都是實型,那么運

算結果為實際運算的值,如7/5.0的運算結果為1.4。

文檔來源網絡,僅供參考,侵權必刪除

模運算的運算對象必須為整型,結果是相除后的余數,如7%5結果為2。

增1減1運算符都是單月運算符,用來對整型、實型、字符型、指針型變量或數組

元素等變量進行加1或減1運算,運算的結果仍是原類型。

1.3.2常用數學函數

C語言系統提供了400多個標準函數(稱為庫函數),設計程序時可以直接使用它們。

庫函數主要包括數學函數、字符處理函數、類型轉換函數、文件管理函數及內存管理函

數等幾類。下面介紹常用的數學函數,其他類型的函數將在后面章節中陸續介紹。

1.函數名:abs

原型:intabs(inti);

功能:求整數的絕對值。

例如,設x=abs(5),y=abs(-5)>z=abs(0),則x=5,y=5,z=0。

2.函數名:labs

原型:longlabs(longn);

功能:求長整型數的絕對值。

例如,設x=Ebs(40000L),y=labs(-5),z=labs(0),則x=40000,y=5,z=0,

3.函數名:fabs

原型:doublefabs(doublex);

功能:求實數的絕對值。

例如,設x=hbs(5.3),y=fabs(-5.3),z=fabs(0)>則x=5.3,y=5.3,z=0。

4.函數名:floor

原型:doublefloor(doublex);

功能:求不大于x的最大整數,它相當于數學函數[x]。

例如,設x=flooi?(-5.1),y=floor(5.9),z=floor(5)>則x=-6,y=5?z=5。

5.函數名:ceil

原型:doubleceil(doublex):

功能:求不小于x的最小整數。

例如,設x=ceil(—5.9),y=ceil(5.1),z=ceil(5),則x=—5,y=6,z=5

6.函數名:sqrt

原型:doublesqrt(doublex);

功能:求x的平方根。

例如,設x=sqrt(4),y=sqrt(16),Mx=l.414214,y=4.0

7.函數名:Iog10

原型:doublelog10(doublex);

功能:求x的常用對數。

8.函數名:log

原型:doublelog(doublex);

功能:求x的自然對數。

9.函數名:exp

原型:doubleexp(doublex);

功能:求歐拉常數e的x次方。

10.函數名:pow10

原型:doublepowlO(intp);

功能:求10的p次方。

例如,設x=powl0(3),y=powl0(0)?則x=1000,y=l

11.函數名:pow

原型:doublepow(doublex,doubley);

功能:求x的y次方。

例如,設x=pow(3,2),y=pow(-3,2),則x=9,y=9

12.函數名:sin

原型:doublesin(doublex);

功能:正弦函數。

13.函數名:cos

原型:doublecos(doublex);

功能:余弦函數。

14.函數名:tan

原型:doubletan(doublex);

功能:正切函數。

1.3.3算術表達式

由算術運算符和運算對象連接形成的式子稱為算術表達式。

算術運算符的優先級從高到低規定如下:

++--

*/%

十—

位于同一行的運算符的優先級相同。

1.4數據類型轉換規則

對數據進行運算時,要求參與運算的對象的數據類型相同(運算得到的運算結果的

類型與運算對象也相同)。因此,在運算過程中常常需要對變量或常量的數據類型進行轉

換,轉換的方法有兩種,一種是系統自動轉換(又稱為隱式轉換);另一種是在程序中強

制轉換(又稱為顯式轉換)。

文檔來源網絡,僅供參考,侵權必刪除

1.4.1自動轉換規則

在不同類型數據的混合運算中,由系統自動實現轉換。轉換規則如下:

(1)若參與運算的數據的類型不同,則應先轉換成同一類型,然后進行運算。

(2)將低類型數據轉換成高類型數據后進行運算。如血型和long型運算時,先把

int型轉換成long型后再進行運算。

類型的高低是根據其所占空間的字節數按從小到大的順序排列的,順序如下:

char,int,long,float,doubleo

(3)所有的浮點運算都是按照雙精度進行運算的,即使僅含float型單精度量運算的

表達式,也要先轉換成double型,再作運算。

(4)char型和short型參與運算時,必須先轉換成int型。

例如,設有:

floatPI=3.14;

ints,r=7;

s=r*r*PI;

因為PI為單精度型,s和r為整型,在執行s=r*r*PI語句時,r和PI都轉換成double

型后再進行計算,運算結果也為double型,右邊的運算結果為153.86,但由于s為整型,

故應將賦值號右邊的運算結果轉換成整型(舍去小數部分),因此s的值為153。

1.4.2強制類型轉換

強制類型轉換是通過類型轉換運算來實現的,其語法格式如下:

(類型說明符)(表達式)

其功能是把表達式的運算結果強制轉換成類型說明符所表示的類型。例如:(float)a把

a轉換為實型;(int)(x+y)把x+y的結果轉換為整型;W(int)x+y則只將x轉換為整型。

在使用強制類型轉換時應注意以下問題:

(1)類型說明符和表達式都必須加括號(單個變量可以不加括號),如把(int)(x+y)寫

成(in【)x+y則只是把x轉換成int型之后再與y相加。

(2)對于被轉換的單個變量而言,無論是強制轉換還是自動轉換,都只是為了本次

運算的需要而對變量的數據長度進行臨時性轉換,而不會改變變量定義時所聲明的類型。

例如,設有:

floatf=-5.75;

intx;

x=(int)f;

將f強制轉換成整數-5,因此x=-5,而f本身的類型并未改變且其值仍為-5.75。

1.5程序結構

1.5.1主函數結構

每一個c源程序都是一系列函數的集合。其中,必須有且只能有一個主函數,其函

數名為main,其結構如下:

voidmain(void)

其中,voidmain(void)稱為函數說明部分(又稱函數頭),而

稱為函數體,函數體中的每個語句行末尾都必須用分號結束。

1.5.2文件包含命令

C語言系統提供了400多個庫函數,并將這些函數根據其功能分成了若干組,每組

都有一個組名。如數學類函數組的組名為math。在C語言系統所安裝文件夾的下級文件

夾中有一個與其相對應的文件math.h,這些擴展名為.h的文件稱為頭文件。

include稱為文件包含命令,當用戶在程序中使用到系統的標準庫函數中的函數時,

需要在程序中(一般在程序的首部)增加一條預處理語句如#抽4遍改$1由0.11:>,以便告知

系統需要使用某個頭文件中的函數。

1.5.3C語言程序基本結構

一個完整的C語言源程序由如下5個部分構成:

(1)預處理命令:

(2)全局變量說明;

(3)函數原型說明;

(4)主函數;

(5)其他子函數。

一個簡單的C語言源程序只需要(1)和(4)兩個部分,其中“預處理命令”一般

是一系列文件包含命令,即include命令。

關于程序結構,應當注意以下幾方面的問題:

文檔來源網絡,僅供參考,侵權必刪除

(1)可由若干個函數構成,其中必須有且只有一個以main命名的主函數,可以沒

有其他函數。每個函數完成一定的功能,函數與函數之間可以通過參數傳遞信息。main()

函數可以位于原程序文件中任何位置,但程序的執行總是從main函數開始,main函數

執行完畢時程序執行結束。

(2)子函數的結構與主函數相同,即分為函數說明部分和函數體兩個部分。

(3)函數中的每個語句最后要有一個分號,作為語句結束標記°但某些特殊的語句

行末尾不需要分號,有時還不能有分號。

(4)“/*”和“*/”括住的任意一段字符稱為“程序注釋”,用來對程序作說明,可

以插入到程序的任何地方,且可以跨行使用。程序注釋不影響程序運行結果。

(5)函數的書寫格式很靈活,在一行中可以書寫多個語句(每個語句末尾都要有分

號),一個語句也可以寫在多行中。在程序的任何地方都可以插入空格或回車符。

(6)主函數可以調用任何子函數但不能調用它自己,任何子函數之間也可以相互調

用,但是子函數不能調用主函數。

下面是一個簡單的C語言源程序;

【例1?1】求圓的面積。

#include<stdio.h>

voidmain(void)

{

floatr,s,p=3.14;

r=10.5;

s=r*r*p;

printf("圓的面積是:%f",s);

)

下面是一個較完整的C語言源程序:

【例1?2】較完整的C語言程序示例。

#include<stdio.h>

#include<conio.h>

inty,z;

voidabc(intx);

voidmain(void)

{

intx;

clrscrO;

x=10:

y=20;

z=30;

printf("okl:x=%dy=%dz=%d\n'\x,y,z);

abc(x);

printf("ok2:x=%dy=%dz=%d\n",x,y,z);

getch();

)

voidabc(intx)

{

inty;

printf("ok3:x=%dy=%dz=%d\n”,x,y,z);

x=100;

y=200;

z=300;

printf("ok4:x=%dy=%dz=%d\n",x.y,z);

}

提高中小學教學質量在于課堂

中小學課堂教學作為一種教育人的生命活動,是人生中一段

重要的生命經歷。對此,全國著名特級教師竇桂梅深有感觸“課

堂是一個值得我們好好經營的地方,是我們人生修煉的道場。課

堂就是一本人生的大書,贏在課堂,就是贏得人生我們還要理

直氣壯地說課堂是學校的血脈、教師的根基、學生的跑道,教學

質量不能輸在課堂,精彩人生不能輸在課堂。全面提高中小學教

學質量就要贏在課堂,這是奠基、這是底線、這是焦點、這是根

本。

當下,我們認真審視和考量中小學課堂教學,不難發現教師

教得苦、學生學得累、質量難得好的現象還是比較普遍,主要困

境如下:

文檔來源網絡,僅供參考,侵權必刪除

一是教學理念轉變不到位。課改的核心理念是為了每一位學

生的發展,以人為本。但在課堂教學現狀中我講你聽、我寫你記、

我考你背仍然流通。考點為中心,考題為中心,考試為中心仍然

盛行。穿新鞋,走老路只管教,不管學重考試,輕能力仍然存在。

二是教學目的窄化、不明確。我們的教師應該是既傳學習之

道,更傳做人之道既授課堂學業,更授立身基業既解攻書之惑,

更解成長之惑。現實中有些老師則是將“傳道授業解惑”直接演

繹為知識傳授、解題訓練,考試高分是教學的唯一目的或最為重

要的目的。

三是教學目標落實不清楚。課程改革提出教學三維目標,即

知識與技能,過程與方法,情感、態度與價值觀。

四是教學內容封閉不科學。當今的教學改革關注自然、關注

社會、關注生活、關注熱點。選拔考試突出考能力、考素養、考

思辨。令人擔憂的是有些老師在教材使用上拘泥教材,內容選擇

上應付考試,直接導致教師走進苦海,學生跳進題海。

五是教學方式單一不管用。課程改革倡導“自主、合作、探

究”的學習方式,走進新課改,對話教學、問題教學、探究教學

效果顯著。

六是教學效率偏低不高效。有的課堂”互動”只停留在形式上,

假互動、無效熱鬧充斥課堂。自主、合作、探究或是牽強附會,

或是徒有虛名,或是無病呻吟。表面上看起來課堂比較活躍,,實

際上浪費了時間,浪費了精力,效率低下。

七是教學主體忽視不全面。一部分課堂教學,仍然存在著學

生的主體作用被忽視的現象。有些教師的教學基點過高,視野狹

窄,盯住尖子,以犧牲時間、精力搶抓分數為代價,造成惡性循

環。

八是教學手段簡單不恰當。有些教師既不板書課題,也不板

書主要內容。看不見老師的循循善誘,聽不到老師的畫龍點睛。

只是照本宣科、點擊鼠標、呈現菜單,一個問題接一個問題閃現,

然后呈現答案,呼啦一片,課就結束了。

文檔來源網絡,僅供參考,侵權必刪除

一要贏在理念驅動。教學理念,是指在教學實踐中形成的關

于教學工作的思想、觀念,以及對某些問題的理性認識,它對于

教學工作、教學行為具有指導、引領的作用。正確的教學理念會

給教學活動指明方向和道路,并提高課堂教學水平。新課程改革

反復強調理念是思想的先導、行為的指南。顧明遠先生一語道出

真諦:“任何教育行為都應以教育理念為指導,教育教學理念貫穿

于教育教學的全過程,很難想象缺乏理念或理念單一的教育教學

過程,將會帶來怎樣的后果。”中小學課堂教學實踐證明:先進的

教學理念有助于激發學生的學習興趣,有助于培育學生的學科素

養,有助于打造學科的高效課堂,有助于提升課堂的教學質量。

二要贏在目標導學。新課程倡導的三維教學目標是課堂教學

導引、導入、導學的根本。目標導學是課堂教學的起點,也是課

堂教學的歸宿。價值觀強調個人價值與社會價值的統一;科學的

價值與人文價值的統一,課堂教學的實施其三維目標缺一不可、

互為整體,在具體教學過程中應該有機融入、自然滲透,決不可

人為割裂,穿鞋戴帽,顧此失彼。

三要贏在興趣培養C蘇霍姆林斯基說過:“在每一個年輕的心

靈里,存放著求知好學、渴望知識的火藥。就看你能不能點燃這

火藥。”可見,激發學生的興趣就是點燃渴望知識的導火索。興趣,

是學生學習一切知識的精神與力量源泉。但興趣是不能強求的,

耍順其自然、因勢利導,想方設法地著力培養。興趣的培養,耍

觸發學生的學習責任感和內驅力,需要不斷地強化知識積累。因

為知識儲備是興趣愛好的基礎,知識越豐富的人,興趣也越廣泛。

知識貧乏的人,興趣也會是貧乏的。一般來說,人都會因為興趣

而執著于某一項活動,并在最后取得或小或大的成功。有了濃厚

的興趣、有了學習的動力,就會有豐富的想象力,就會有合理的

聯想力,從而促使學習成為一種享受、一種快樂。

學習興趣的教學,是一座冰山。美國教育家哈曼說得精辟:

“那些不設法勾起學生求知欲的教學,正如同錘打著一塊冰冷的

生鐵J

文檔來源網絡,僅供參考,侵權必刪除

四要贏在教材探究C教材是學生自主學習的重要資源和工具,

它不僅決定課堂教學的內容,而且提供了教學活動的基本線索和

學習方法。教師把握教材,要經過解讀、深究、理解、活用。根

據認識過程的普遍規律和教學過程中學生的認知特點,學生系統

掌握知識,常常是從對教材的感知開始,感知越豐富,觀念越清

晰,形成概念和理解知識就越容易,同時教材也使學生在學習過

程中獲得的知識更加系統化、規范化。新課程倡導教師用教材教,

而不是教教材的教育理念日漸深入人心。教師要研讀教材,為教

學明晰方向;吃透教材,為教學正確定位;把握教材,為教學夯

實基礎;用好教材,為教學質量負責;整合教材,為教學活動充

電;活化教材,為教學生命奠基。教材無非是個例子,教師要牽

引學生通過對教材的學習、感悟、理解,轉換為自主、合作、探

究的學習方式,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論