㈠ c語言是怎麼用的 具體解釋是什麼
語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的「THE C PROGRAMMING LANGUAGE」一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准學會在此基礎上制定了一個C 語言標准,於一九八三年發表。通常稱之為ANSI C。
當代最優秀的程序設計語言
早期的C語言主要是用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,並很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。
C語言的特點
C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
C語言版本
目前最流行的C語言有以下幾種:
·Microsoft C 或稱 MS C
·Borland Turbo C 或稱 Turbo C
·AT&T C
這些C語言版本不僅實現了ANSI C標准,而且在此基礎上各自作了一些擴充,使之更加方便、完美。
面向對象的程序設計語言
在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向 對象的程序設計語言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。
C和C++
但是,C是C++的基礎,C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。
C源程序的結構特點
為了說明C語言源程序結構的特點,先看以下幾個程序。這幾個程 序由簡到難,表現了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式。main()
{
printf("c語言世界www.vcok.com,您好!\n");
}
main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,且只能有一個主函數(main函數)。函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標准函數,可在程序中直接調用。
#include
#include
main()
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
}
每行注釋
include稱為文件包含命令擴展名為.h的文件也稱為頭文件或首部文件
定義兩個實數變數,以被後面程序使用
顯示提示信息
從鍵盤獲得一個實數x
求x的正弦,並把它賦給變數s
顯示程序運算結果
main函數結束
程序的功能是從鍵盤輸入一個數x,求x的正弦值,然後輸出結果。在main()之前的兩行稱為預處理命令(詳見後面)。預處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括弧""或引號<>內指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統提供的,其擴展名為.h。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標准庫函數的函數原型。因此,凡是在程序中調用一個庫函數時,都必須包含該函數原型所在的頭文件。在本例中,使用了三個庫函數:輸入函數scanf,正弦函數sin,輸出函數printf。sin函數是數學函數,其頭文件為math.h文件,因此在程序的主函數前用include命令包含了math.h。scanf和printf是標准輸入輸出函數,其頭文件為stdio.h,在主函數前也用include命令包含了stdio.h文件。
需要說明的是,C語言規定對scanf和printf這兩個函數可以省去對其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include。同樣,在例1.1中使用了printf函數,也省略了包含命令。
在例題中的主函數體中又分為兩部分,一部分為說明部分,另一部分執行部分。說明是指變數的類型說明。例題中未使用任何變數,因此無說明部分。C語言規定,源程序中所有用到的變數都必須先說明,後使用,否則將會出錯。這一點是編譯型高級程序設計語言的一個特點,與解釋型的BASIC語言是不同的。說明部分是C源程序結構中很重要的組成部分。本例中使用了兩個變數x,s,用來表示輸入的自變數和sin函數值。由於sin函數要求這兩個量必須是雙精度浮點型,故用類型說明符double來說明這兩個變數。說明部分後的四行為執行部分或稱為執行語句部分,用以完成程序的功能。執行部分的第一行是輸出語句,調用printf函數在顯示器上輸出提示字元串,請操作人員輸入自變數x的值。第二行為輸入語句,調用scanf函數,接受鍵盤上輸入的數並存入變數x中。第三行是調用sin函數並把函數值送到變數s中。第四行是用printf 函數輸出變數s的值,即x的正弦值。程序結束。
printf("input number:\n");
scanf("%lf",'C10F10&x);
s=sin(x);
printf("sine of %lf is %lf\n",'C10F10x,s);
運行本程序時,首先在顯示器屏幕上給出提示串input number,這是由執行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數,如5,按下回車鍵,接著在屏幕上給出計算結果。
輸入和輸出函數
在前兩個例子中用到了輸入和輸出函數scanf和 printf,在第三章中我們要詳細介紹。這里我們先簡單介紹一下它們的格式,以便下面使用。scanf和 printf這兩個函數分別稱為格式輸入函數和格式輸出函數。其意義是按指定的格式輸入輸出值。因此,這兩個函數在括弧中的參數表都由以下兩部分組成: 「格式控制串」,參數表 格式控制串是一個字元串,必須用雙引號括起來,它表示了輸入輸出量的數據類型。各種類型的格式表示法可參閱第三章。在printf函數中還可以在格式控制串內出現非格式控制字元,這時在顯示屏幕上將原文照印。參數表中給出了輸入或輸出的量。當有多個量時,用逗號間隔。例如:
printf("sine of %lf is %lf\n",x,s);
其中%lf為格式字元,表示按雙精度浮點數處理。它在格式串中兩次現,對應了x和s兩個變數。其餘字元為非格式字元則照原樣輸出在屏幕上
int max(int a,int b);
main(){
int x,y,z;
printf("input two numbers:\n");scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
int max(int a,int b){
if(a>b)return a;else return b;
}
此函數的功能是輸入兩個整數,輸出其中的大數。
/*函數說明*/
/*主函數*/
/*變數說明*/
/*輸入x,y值*/
/*調用max函數*/
/*輸出*/
/*定義max函數*/
/*把結果返回主調函數*/
上面例中程序的功能是由用戶輸入兩個整數,程序執行後輸出其中較大的數。本程序由兩個函數組成,主函數和max 函數。函數之間是並列關系。可從主函數中調用其它函數。max 函數的功能是比較兩個數,然後把較大的數返回給主函數。max 函數是一個用戶自定義函數。因此在主函數中要給出說明(程序第三行)。可見,在程序的說明部分中,不僅可以有變數說明,還可以有函數說明。關於函數的詳細內容將在第五章介紹。在程序的每行後用/*和*/括起來的內容為注釋部分,程序不執行注釋部分。
上例中程序的執行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數,回車後由scanf函數語句接收這兩個數送入變數x,y中,然後調用max函數,並把x,y 的值傳送給max函數的參數a,b。在max函數中比較a,b的大小,把大者返回給主函數的變數z,最後在屏幕上輸出z的值。
C源程序的結構特點
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
書寫程序時應遵循的規則
從書寫清晰,便於閱讀,理解,維護的角度出發,在書寫程序時 應遵循以下規則:
1.一個說明或一個語句佔一行。
2.用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
C語言的字元集
字元是組成語言的最基本的元素。C語言字元集由字母,數字,空格,標點和特殊字元組成。在字元常量,字元串常量和注釋中還可以使用漢字或其它可表示的圖形符號。
1.字母 小寫字母a~z共26個,大寫字母A~Z共26個
2.數字 0~9共10個
3.空白符 空格符、製表符、換行符等統稱為空白符。空白符只在字元常量和字元串常量中起作用。在其它地方出現時,只起間隔作用, 編譯程序對它們忽略。因此在程序中使用空白符與否,對程序的編譯不發生影響,但在程序中適當的地方使用空白符將增加程序的清晰性和可讀性。
4.標點和特殊字元
C語言詞彙
在C語言中使用的詞彙分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等。
1.標識符
在程序中使用的變數名、函數名、標號等統稱為標識符。除庫函數的函數名由系統定義外,其餘都由用戶自定義。C 規定,標識符只能是字母(A~Z,a~z)、數字(0~9)、下劃線()組成的字元串,並且其第一個字元必須是字母或下劃線。
以下標識符是合法的:
a,x, 3x,BOOK 1,sum5
以下標識符是非法的:
3s 以數字開頭
s*T 出現非法字元*
-3x 以減號開頭
bowy-1 出現非法字元-(減號)
在使用標識符時還必須注意以下幾點:
(1)標准C不限制標識符的長度,但它受各種版本的C 語言編譯系統限制,同時也受到具體機器的限制。例如在某版本C 中規定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。
(2)在標識符中,大小寫是有區別的。例如BOOK和book 是兩個不同的標識符。
(3)標識符雖然可由程序員隨意定義,但標識符是用於標識某個量的符號。因此,命名應盡量有相應的意義,以便閱讀理解,作到「顧名思義」。
2.關鍵字
關鍵字是由C語言規定的具有特定意義的字元串,通常也稱為保留字。用戶定義的標識符不應與關鍵字相同。C語言的關鍵字分為以下幾類:
(1)類型說明符
用於定義、說明變數、函數或其它數據結構的類型。如前面例題中用到的int,double等
(2)語句定義符
用於表示一個語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。
(3)預處理命令字
用於表示一個預處理命令。如前面各例中用到的include。
3.運算符
C語言中含有相當豐富的運算符。運算符與變數,函數一起組成表達式,表示各種運算功能。運算符由一個或多個字元組成。
4.分隔符
在C語言中採用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數參數表中,分隔各個變數。空格多用於語句各單詞之間,作間隔符。在關鍵字,標識符之間必須要有一個以上的空格符作間隔, 否則將會出現語法錯誤,例如把int a;寫成 inta;C編譯器會把inta當成一個標識符處理,其結果必然出錯。
5.常量
C語言中使用的常量可分為數字常量、字元常量、字元串常量、符號常量、轉義字元等多種。在第二章中將專門給予介紹。
6.注釋符
C 語言的注釋符是以「/*」開頭並以「*/」結尾的串。在「/*」和「*/」之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調試結束後再去掉注釋符。
㈡ 什麼是C語言
一種計算機基本編程語言。
第一章: C語言概論
C語言的發展過程
C語言是在70年代初問世的。一九七八年由美國電話電報公司(AT&T)貝爾實驗室正式發表了C語言。同時由B.W.Kernighan和D.M.Ritchit合著了著名的「THE C PROGRAMMING LANGUAGE」一書。通常簡稱為《K&R》,也有人稱之為《K&R》標准。但是,在《K&R》中並沒有定義一個完整的標准C語言,後來由美國國家標准學會在此基礎上制定了一個C 語言標准,於一九八三年發表。通常稱之為ANSI C。
當代最優秀的程序設計語言
早期的C語言主要是用於UNIX系統。由於C語言的強大功能和各方面的優點逐漸為人們認識,到了八十年代,C開始進入其它操作系統,並很快在各類大、中、小和微型計算機上得到了廣泛的使用。成為當代最優秀的程序設計語言之一。
C語言的特點
C語言是一種結構化語言。它層次清晰,便於按模塊化方式組織程序,易於調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便於實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由於C語言實現了對硬體的編程操作,因此C語言集高級語言和低級語言的功能於一體。既可用於系統軟體的開發,也適合於應用軟體的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。
C語言版本
目前最流行的C語言有以下幾種:
·Microsoft C 或稱 MS C
·Borland Turbo C 或稱 Turbo C
·AT&T C
這些C語言版本不僅實現了ANSI C標准,而且在此基礎上各自作了一些擴充,使之更加方便、完美。
面向對象的程序設計語言
在C的基礎上,一九八三年又由貝爾實驗室的Bjarne Strou-strup推出了C++。 C++進一步擴充和完善了C語言,成為一種面向 對象的程序設計語言。C++目前流行的最新版本是Borland C++4.5,Symantec C++6.1,和Microsoft VisualC++ 2.0。C++提出了一些更為深入的概念,它所支持的這些面向對象的概念容易將問題空間直接地映射到程序空間,為程序員提供了一種與傳統結構程序設計不同的思維方式和編程方法。因而也增加了整個語言的復雜性,掌握起來有一定難度。
C和C++
但是,C是C++的基礎,C++語言和C語言在很多方面是兼容的。因此,掌握了C語言,再進一步學習C++就能以一種熟悉的語法來學習面向對象的語言,從而達到事半功倍的目的。
C源程序的結構特點
為了說明C語言源程序結構的特點,先看以下幾個程序。這幾個程 序由簡到難,表現了C語言源程序在組成結構上的特點。雖然有關內容還未介紹,但可從這些例子中了解到組成一個C源程序的基本部分和書寫格式。main()
{
printf("c語言世界www.vcok.com,您好!\n");
}
main是主函數的函數名,表示這是一個主函數。每一個C源程序都必須有,且只能有一個主函數(main函數)。函數調用語句,printf函數的功能是把要輸出的內容送到顯示器去顯示。printf函數是一個由系統定義的標准函數,可在程序中直接調用。
#include
#include
main()
{
double x,s;
printf("input number:\n");
scanf("%lf",&x);
s=sin(x);
printf("sine of %lf is %lf\n",x,s);
}
每行注釋
include稱為文件包含命令擴展名為.h的文件也稱為頭文件或首部文件
定義兩個實數變數,以被後面程序使用
顯示提示信息
從鍵盤獲得一個實數x
求x的正弦,並把它賦給變數s
顯示程序運算結果
main函數結束
程序的功能是從鍵盤輸入一個數x,求x的正弦值,然後輸出結果。在main()之前的兩行稱為預處理命令(詳見後面)。預處理命令還有其它幾種,這里的include 稱為文件包含命令,其意義是把尖括弧""或引號<>內指定的文件包含到本程序來,成為本程序的一部分。被包含的文件通常是由系統提供的,其擴展名為.h。因此也稱為頭文件或首部文件。C語言的頭文件中包括了各個標准庫函數的函數原型。因此,凡是在程序中調用一個庫函數時,都必須包含該函數原型所在的頭文件。在本例中,使用了三個庫函數:輸入函數scanf,正弦函數sin,輸出函數printf。sin函數是數學函數,其頭文件為math.h文件,因此在程序的主函數前用include命令包含了math.h。scanf和printf是標准輸入輸出函數,其頭文件為stdio.h,在主函數前也用include命令包含了stdio.h文件。
需要說明的是,C語言規定對scanf和printf這兩個函數可以省去對其頭文件的包含命令。所以在本例中也可以刪去第二行的包含命令#include。同樣,在例1.1中使用了printf函數,也省略了包含命令。
在例題中的主函數體中又分為兩部分,一部分為說明部分,另一部分執行部分。說明是指變數的類型說明。例題中未使用任何變數,因此無說明部分。C語言規定,源程序中所有用到的變數都必須先說明,後使用,否則將會出錯。這一點是編譯型高級程序設計語言的一個特點,與解釋型的BASIC語言是不同的。說明部分是C源程序結構中很重要的組成部分。本例中使用了兩個變數x,s,用來表示輸入的自變數和sin函數值。由於sin函數要求這兩個量必須是雙精度浮點型,故用類型說明符double來說明這兩個變數。說明部分後的四行為執行部分或稱為執行語句部分,用以完成程序的功能。執行部分的第一行是輸出語句,調用printf函數在顯示器上輸出提示字元串,請操作人員輸入自變數x的值。第二行為輸入語句,調用scanf函數,接受鍵盤上輸入的數並存入變數x中。第三行是調用sin函數並把函數值送到變數s中。第四行是用printf 函數輸出變數s的值,即x的正弦值。程序結束。
printf("input number:\n");
scanf("%lf",'C10F10&x);
s=sin(x);
printf("sine of %lf is %lf\n",'C10F10x,s);
運行本程序時,首先在顯示器屏幕上給出提示串input number,這是由執行部分的第一行完成的。用戶在提示下從鍵盤上鍵入某一數,如5,按下回車鍵,接著在屏幕上給出計算結果。
輸入和輸出函數
在前兩個例子中用到了輸入和輸出函數scanf和 printf,在第三章中我們要詳細介紹。這里我們先簡單介紹一下它們的格式,以便下面使用。scanf和 printf這兩個函數分別稱為格式輸入函數和格式輸出函數。其意義是按指定的格式輸入輸出值。因此,這兩個函數在括弧中的參數表都由以下兩部分組成: 「格式控制串」,參數表 格式控制串是一個字元串,必須用雙引號括起來,它表示了輸入輸出量的數據類型。各種類型的格式表示法可參閱第三章。在printf函數中還可以在格式控制串內出現非格式控制字元,這時在顯示屏幕上將原文照印。參數表中給出了輸入或輸出的量。當有多個量時,用逗號間隔。例如:
printf("sine of %lf is %lf\n",x,s);
其中%lf為格式字元,表示按雙精度浮點數處理。它在格式串中兩次現,對應了x和s兩個變數。其餘字元為非格式字元則照原樣輸出在屏幕上
int max(int a,int b);
main(){
int x,y,z;
printf("input two numbers:\n");scanf("%d%d",&x,&y);
z=max(x,y);
printf("maxmum=%d",z);
}
int max(int a,int b){
if(a>b)return a;else return b;
}
此函數的功能是輸入兩個整數,輸出其中的大數。
/*函數說明*/
/*主函數*/
/*變數說明*/
/*輸入x,y值*/
/*調用max函數*/
/*輸出*/
/*定義max函數*/
/*把結果返回主調函數*/
上面例中程序的功能是由用戶輸入兩個整數,程序執行後輸出其中較大的數。本程序由兩個函數組成,主函數和max 函數。函數之間是並列關系。可從主函數中調用其它函數。max 函數的功能是比較兩個數,然後把較大的數返回給主函數。max 函數是一個用戶自定義函數。因此在主函數中要給出說明(程序第三行)。可見,在程序的說明部分中,不僅可以有變數說明,還可以有函數說明。關於函數的詳細內容將在第五章介紹。在程序的每行後用/*和*/括起來的內容為注釋部分,程序不執行注釋部分。
上例中程序的執行過程是,首先在屏幕上顯示提示串,請用戶輸入兩個數,回車後由scanf函數語句接收這兩個數送入變數x,y中,然後調用max函數,並把x,y 的值傳送給max函數的參數a,b。在max函數中比較a,b的大小,把大者返回給主函數的變數z,最後在屏幕上輸出z的值。
C源程序的結構特點
1.一個C語言源程序可以由一個或多個源文件組成。
2.每個源文件可由一個或多個函數組成。
3.一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。
4.源程序中可以有預處理命令(include 命令僅為其中的一種),預處理命令通常應放在源文件或源程序的最前面。
5.每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。
6.標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
書寫程序時應遵循的規則
從書寫清晰,便於閱讀,理解,維護的角度出發,在書寫程序時 應遵循以下規則:
1.一個說明或一個語句佔一行。
2.用{} 括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,並單獨佔一行。
3.低一層次的語句或說明可比高一層次的語句或說明縮進若干格後書寫。以便看起來更加清晰,增加程序的可讀性。在編程時應力求遵循這些規則,以養成良好的編程風格。
C語言的字元集
字元是組成語言的最基本的元素。C語言字元集由字母,數字,空格,標點和特殊字元組成。在字元常量,字元串常量和注釋中還可以使用漢字或其它可表示的圖形符號。
1.字母 小寫字母a~z共26個,大寫字母A~Z共26個
2.數字 0~9共10個
3.空白符 空格符、製表符、換行符等統稱為空白符。空白符只在字元常量和字元串常量中起作用。在其它地方出現時,只起間隔作用, 編譯程序對它們忽略。因此在程序中使用空白符與否,對程序的編譯不發生影響,但在程序中適當的地方使用空白符將增加程序的清晰性和可讀性。
4.標點和特殊字元
C語言詞彙
在C語言中使用的詞彙分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等。
1.標識符
在程序中使用的變數名、函數名、標號等統稱為標識符。除庫函數的函數名由系統定義外,其餘都由用戶自定義。C 規定,標識符只能是字母(A~Z,a~z)、數字(0~9)、下劃線()組成的字元串,並且其第一個字元必須是字母或下劃線。
以下標識符是合法的:
a,x, 3x,BOOK 1,sum5
以下標識符是非法的:
3s 以數字開頭
s*T 出現非法字元*
-3x 以減號開頭
bowy-1 出現非法字元-(減號)
在使用標識符時還必須注意以下幾點:
(1)標准C不限制標識符的長度,但它受各種版本的C 語言編譯系統限制,同時也受到具體機器的限制。例如在某版本C 中規定標識符前八位有效,當兩個標識符前八位相同時,則被認為是同一個標識符。
(2)在標識符中,大小寫是有區別的。例如BOOK和book 是兩個不同的標識符。
(3)標識符雖然可由程序員隨意定義,但標識符是用於標識某個量的符號。因此,命名應盡量有相應的意義,以便閱讀理解,作到「顧名思義」。
2.關鍵字
關鍵字是由C語言規定的具有特定意義的字元串,通常也稱為保留字。用戶定義的標識符不應與關鍵字相同。C語言的關鍵字分為以下幾類:
(1)類型說明符
用於定義、說明變數、函數或其它數據結構的類型。如前面例題中用到的int,double等
(2)語句定義符
用於表示一個語句的功能。如例1.3中用到的if else就是條件語句的語句定義符。
(3)預處理命令字
用於表示一個預處理命令。如前面各例中用到的include。
3.運算符
C語言中含有相當豐富的運算符。運算符與變數,函數一起組成表達式,表示各種運算功能。運算符由一個或多個字元組成。
4.分隔符
在C語言中採用的分隔符有逗號和空格兩種。逗號主要用在類型說明和函數參數表中,分隔各個變數。空格多用於語句各單詞之間,作間隔符。在關鍵字,標識符之間必須要有一個以上的空格符作間隔, 否則將會出現語法錯誤,例如把int a;寫成 inta;C編譯器會把inta當成一個標識符處理,其結果必然出錯。
5.常量
C 語言中使用的常量可分為數字常量、字元常量、字元串常量、符號常量、轉義字元等多種。在第二章中將專門給予介紹。
6.注釋符
C 語言的注釋符是以「/*」開頭並以「*/」結尾的串。在「/*」和「*/」之間的即為注釋。程序編譯時,不對注釋作任何處理。注釋可出現在程序中的任何位置。注釋用來向用戶提示或解釋程序的意義。在調試程序中對暫不使用的語句也可用注釋符括起來,使翻譯跳過不作處理,待調試結束後再去掉注釋符。
㈢ C語言基礎知識
•1 C語言程序的結構認識
用一個簡單的c程序例子,介紹c語言的基本構成、格式、以及良好的書寫風格,使讀者對c語言有個初步認識。
例1 計算兩個整數之和的c程序:
1、任何一個c語言程序都必須包括以下格式:
這是c語言的基本結構,任何一個程序都必須包含這個機構。括弧內可以不寫任何內容,那麼該程序將不執行任何結果。
2、main()----在c語言中稱之為「主函數」,一個c程序有且僅有一個main函數,任何一個c程序總是從main函數開始執行,main函數後面的一對圓括弧不能省略。
3、被大括弧{ }括起來的內容稱為main函數的函數體,這部分內容就是計算機要執行的內容。
4、在{ }裡面每一句話後面都有一個分號(;),在c語言中,我們把以一個分號結尾的一句話叫做一個c語言的語句,分號是語句結束的標志。
5、printf(「a=%d,b=%d,sum=%d\n」,a,b,sum); ----通過執行這條c語言系統提供給我們直接使用的屏幕輸出函數,用戶即可看到運行結果,本程序運行後,將在顯示器上顯示如下結果:
6、#include
7、程序中以 /*開頭並且以*/結尾的部分表示程序的注釋部分,注釋可以添加在程序的任何位置,為了提高程序的可讀性而添加,但計算機在執行主函數內容時完全忽略注釋部分,換而言之就是計算機當做注釋部分不存在於主函數中。
• 2 C程序的生成過程
C程序是先由源文件經編譯生成目標文件,然後經過連接生成可執行文件,如圖所示。
編譯過程
• 3 標識符
在編寫程序時,必須為函數、變數等命名,這個名字稱為標識符。C語言中標識符的命名規則如下:
標識符不能與程序中具有特殊意義的關鍵字相同,不能與用戶編制的函數名、C語言庫函數相同,在程序中各種標識符盡量不要重復,以便區分。選擇變數名和其他標識符時,應注意做到 「見名知義」。
標識符分為如下三類:
1、關鍵字
3、用戶標識符
用戶根據需要自己定義的標識符稱為用戶標識符。無論如何自定義標識符,都必須符合標識符的三條命名規則。
• 4 常量
在程序運行中,其值不能被改變的量稱為常量。常量有5種類型:整型常量、實型常量、字元常量、字元串常量和符號常量。
(一)數值轉換
數字的四種表現形式:
在計算機內部,數字均以二進制形式表示和存放,用戶輸入的普通十進制數字都要被計算機轉換成二進制才能在計算機內部存儲,同樣計算機的運算結果也為二進制,一般要將其轉換成十進制數再輸出給用戶閱讀,這種轉換通常由計算機自動實現。
(1)將十進制轉換二進制、八進制和十六進制
除法:將十進制數除以2,記錄余數,得到的商繼續除以2,直到商為0,然後將各次相處所得的余數從後往前逆序排列,所得余數數字序列就是該十進制數對應的二進制數。八進制和十六進制轉換方法同上。
例:十進制數13轉換成二進制數的值為1101,轉換八進制為015,轉換成十六進制為D.
(2)將二進制、八進制和十六進制轉換成十進制
乘積求和:將二進制的每一位從低位到高位(右邊為低位,左邊為高位)分別乘以20,21,22。。。。,然後將這些積求和。
例如:(1101)2=(13)10 (317)8=(207)10 (23E)16=(574)10
(3)二進制與八進制、十六進制數之間的相互轉換
(二)整型常量
整型常量有3種形式:十進制整型常量、八進制整型常量和十六進制整型常量。
書寫方式如下:
(三)實型常量
實型常量有兩種表示形式:小數形式和指數形式。
(四)字元常量
(2)由一對單引號括起來,以反斜杠\開頭,後跟若干數字或者字母,比如『\n』,其中「\「是轉義的意思,後面跟不同的字元表示不同的意思,這類字元常量叫轉義字元。具體如圖所示 。
(五)字元串常量
C語言中,以雙引號括起來的,由若干個字元組成的序列即為字元串常量。
例:「ni hao」 「happy」等等。
(六)符號常量
例:計算圓的面積的c程序。
說明:
• 5 變數
變數就是其值可以改變的量。變數要有變數名,在內存中占據一定的存儲單元,存儲單元里存放的是該變數的值。不同類型的變數其存儲單元的大小不同,變數在使用前必須定義。
(一)整型變數
不同的編譯系統對上述四種整型數據所佔用的位數和數值范圍有不同的規定。
類型說明符
說明:
(二)實型變數
C語言中,實型變數分為單精度類型( float )和雙精度類型( double )兩種。如:
在vc中,float 型數據在內存中佔4個位元組(32位),double型數據佔8個位元組。單精度實數提供7位有效數字,雙精度實數提供15~16位有效數字。實型常量不分float型和double型,一個實型常量可以賦給一個float 型或double型變數,但變數根據其類型截取實型常量中相應的有效數字。
注意:實型變數只能存放實型值,不能用整型變數存放實型值,也不能用實型變數存放整型值。
(三)字元變數
字元變數用來存放字元常量,定義形式:
char 變數名;
其中關鍵字char定義字元型數據類型,佔用一個位元組的存儲單元。
將一個字元賦給一個字元變數時,並不是將該字元本身存儲到內存中,而是將該字元對應的ASCII碼存儲到內存單元中。例如,字元 ′A′ 的ASCII碼為65,在內存中的存放形式如下:01000001
由於在內存中字元以ASCII碼存放,它的存儲形式和整數的存儲形式類似,所以C語言中字元型數據與整型數據之間可以通用,一個字元能用字元的形式輸出,也能用整數的形式輸出,字元數據也能進行算術運算,此時相當於對它們的ASCII碼進行運算。
•6 類型的自動轉換和強制轉換
當同一表達式中各數據的類型不同時,編譯程序會自動把它們轉變成同一類型後再進行計算。轉換優先順序為:
即左邊級別「低「的類型向右邊轉換。具體地說,若在表達式中優先順序最高的數據是double型,則此表達式中的其他數據均被轉換成double型,且計算結果也是double型;若在表達式中優先順序最高的數據是float型,則此表達式中的其他數據均被轉換成float型,且計算結果也是float型。
在做賦值運算時,若賦值號左右兩邊的類型不同,則賦值號右邊的類型向左邊的類型轉換;當右邊的類型高於左邊的類型時,則在轉換時對右邊的數據進行截取。
除自動轉換外,還有強制轉換,表示形式是:
討論:當a值賦值為3.4,b值賦值為2.7,(int)(a+b)和(int)a+b的值分別為多少?
• 7 C運算符認識
C語言的運算符范圍很廣,可分為以下幾類:
1、算術運算符:用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(%)、自增(++)、自減(--)共七種。
2、賦值運算符:用於賦值運算,分為簡單賦值(=)、復合算術賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。
3、逗號運算符:用於把若干表達式組合成一個表達式(,)。
4、關系運算符:用於比較運算。包括大於(>)、小於(<)、等於(==)、 大於等於(>=)、小於等於(<=)和不等於(!=)六種。
5、邏輯運算符:用於邏輯運算。包括與(&&)、或(||)、非(!)三種。
6、條件運算符:這是一個三目運算符,用於條件求值(?:)。
7、位操作運算符:參與運算的量,按二進制位進行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。
8、指針運算符:用於取內容(*)和取地址(&)二種運算。
9.、求位元組數運算符:用於計算數據類型所佔的位元組數(sizeof)。
10、特殊運算符:有括弧(),下標[],成員(→,.)等幾種。
另外,按參與運算的對象個數,C語言運算符可分為:單目運算符 (如 !)、雙目運算符 (如+,- )和三目運算符 (如 ? : )。
一、 基本的算術運算符
(1)+(加法運算符或正值運算符,如2+5)。
(2)-(減法運算符或負值運算符,如4-2)。
(3)*(乘法運算符,如3*8)。
(4)/(除法運算符,如11/5)。
/的運算分為兩種情況:
(5)%(模運算符或稱求余運算符,%兩側均應為整型數據,如9%7的值為2)。
需要說明的是:當運算對象為負數時,所得結果隨編譯器不同而不同,在vc中,結果的符號與被除數相同,比如:13%-2值為1,而-15%2值為-1.
二、 算術表達式和運算符的優先順序與結合性
算術表達式是用算術運算符和括弧將運算量(也稱操作數)連接起來的、符合C語言語法規則的表達式。運算對象包括函數、常量和變數等。
在計算機語言中,算術表達式的求值規律與數學中的四則運算的規律類似,其運算規則和要求如下。
(1)在算術表達式中,可使用多層圓括弧,但括弧必須配對。運算時從內層圓括弧開始,由內向外依次計算各表達式的值。
(2)在算術表達式中,對於不同優先順序的運算符,可按運算符的優先順序由高到低進行運算,若表達式中運算符的優先順序相同,則按運算符的結合方向進行運算。
(3)如果一個運算符兩側的操作數類型不同,則先利用自動轉換或強制類型轉換,使兩者具有相同類型,然後進行運算。
三、 自增自減運算符
作用:使變數的值增1或減1。
(1)只有變數才能用自增運算符 (++)和自減運算符(--),而常量或表達式不能用,如10++或(x+y)++都是不合法的。
(2)++和--的結合方向是「自右向左「,如 -i++ ,i的左邊是負號運算符,右邊是自增運算符,負號運算和自增運算都是 「自右向左「結合的,相當於 -(i++)。
在循環語句中常用到自增(減)運算符,在指針中也常用到該運算符,考生要弄清楚「i++」和「++i」及「i--」和「--i」的區別,特別弄清楚表達式的值和變數的值。
例:變數n的初始值為2,則
例:有以下程序
程序運行後的輸出結果是_____
A.12 35 13 35 14 36 B. 12 35 14 35 14 36
C.12 35 14 36 14 36 D. 12 35 14 35 14 35
解析:自增自減運算需要注意區分表達式的值和變數的值,表達式運算後,變數會自增自減運算,表達式和變數變化如下:
•9 賦值運算符與賦值表達式
一、賦值運算符與賦值表達式
賦值符號 「=「就是賦值運算符,作用是將一個數據賦給一個變數或將一個變數的值賦給另一個變數,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:
變數名 = 表達式
在程序中可以多次給一個變數賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,內存中當前的數據就是最後一次所賦值的那個數據。
說明:
a、如果賦值號兩邊的運算對象類型不一致,系統會自動進行類型轉換,轉換的規則:將賦值號右邊表達式的值的類型轉換成賦值號左邊變數的類型,
b、 可以將復製表達式的值再賦值給變數,形成連續賦值。
二、復合的賦值運算符
在賦值運算符之前加上其他運算符可以構成復合賦值運算符。其中與算術運算有關的復合運算符是:+=,-=,*=,/=,%= 。
兩個符號之間不可以有空格,復合賦值運算符的優先順序與賦值運算符的相同。表達式n+=1等價於n=n+1,作用是取變數n中的值增1再賦給變數n,其他復合的賦值運算符的運算規則依次類推。
如求表達a+=a-=a*a 的值,其中a的初值為12 。
步驟:
•10 逗號運算符和逗號表達式
在c語言中,逗號除了作為分隔符,還可以用作一種運算符----逗號運算符,用逗號運算符將幾個表達式連接起來,例如a=b+c,a=b*c等稱為逗號表達式。
一般形式為:
表達式1 ,表達式2 ,表達式3 , …,表達式n
例:x=2,y=3,z=4
逗號表達式具有從左至右的結合性,即先求解表達式1,然後依次求解表達式2,直到表達式n的值。表達式n的值就是整個逗號表達式的值。上述的逗號表達式的值就是表達式z=4的值4.需要注意的是,逗號運算符是所有運算符中級別最低的。
例:有如下程序段:
程序顯示結果為:y=6,x=6
討論:將y=(x=a+b),(b+c);改為y=((x=a+b),b+c) 的程序結果?
• 11 關系運算符和關系表達式
一、 C語言中的邏輯值
C語言中的邏輯值只有兩個:真(true)和假(flase)。用非零代表真,用零代表假。因此,對於任意一個表達式,如果它的值為零,就代表一個假值,如果它的值為非零,就代表一個真值。只要值不是零,不管是正數,負數,整數,實數,都代表一個真值。例如-5的邏輯值為真。
二、 關系運算符及其優先次序
C語言提供了6種關系運算符,見表
由兩個字元組成的運算符之間不可以加空格,關系運算符都是雙目運算符。
(1)結合性:自左向右。
(2)優先次序:前4種關系運算符( <,<=,>=,> )的優先順序別相同,後兩種 (==,!=)優先順序相同,且前4種優先順序高於後兩種;關系運算符的優先順序低於算術運算符,高於賦值運算符。
三、 關系表達式
由關系運算符連接而成的表達式稱為關系表達式。
例如:a>b,(a=7)>(b=10)等都是合法的關系表達式。
關系表達式的結果有兩個:0和1,。其中0表示假,1表示真。如果關系表達式成立,則值為真,如果關系表達式不成立,則值為假。
例:變數a的值為5,b的值為6,那麼關系表達式a>b的值為假,即為0.而關系表達式
(a=13)>(b=10)的值為真,即為1。
當關系運算符兩邊值的類型不一致時,若一邊是整型,一邊是實型,系統將自動把整型數轉化為實型數,然後再進行比較。
•12 邏輯運算符和邏輯表達式
一、 邏輯運算符及其優先順序
C語言提供了3種邏輯運算符,如下表。
二、 邏輯表達式
「&&」和「||」的運算對象有兩個,故它們都是雙目運算符,而!的運算對象只有一個,因此它是單目運算符。邏輯運算舉例如下:
(1)a&&b: 當&&兩邊都為「真」時,表達式a&&b的值才是真。
值得注意的是:在數學中,關系式0
(2)a||b: 當||兩邊有一個為「真」時,表達式a||b的值就是真。
(3)!a: 表示取反,如果a為真,則!A為假,反之亦然。例如!-5的值就為0.
在C語言中,由&&或||組成的邏輯表達式,在某些特定情況下會產生「短路「現象。
(1)x && y && z ,只有當x為真(非0)時,才需要判別y的值;只有x和y都為真時,才需要去判別z的值;只要x為假就不必判別y和z,整個表達式的值為0。口訣:「一假必假」。
例:(!5==1)&&(++i==0) (!5==1)表達式的值為0,所以計算機運行中就跳過(++i==0)此表達式,(!5==1)&&(++i==0)表達式的值為0.
(2)x||y||z ,只要x的值為真(非零),就不必判別y和z的值,整個表達式的值為1,只有x的值為假,才需要判別y的值,只有x和y的值同時為假才需要判別z的值,口訣:「一真必真」。
•13 位運算
一、 位運算符
在計算機中,數據都是以二進制數形式存放的,位運算就是指對存儲單元中二進制位的運算。C語言提供6種位運算符。
二、位運算
位運算符 & |~<< >> ∧ 按優先順序從高到低排列的順序是:
位運算符中求反運算「~「優先順序最高,而左移和右移相同,居於第二,接下來的順序是按位與 「&「、按位異或 「∧「和按位或 「|「。順序為~ << >> & ∧ | 。
例1左移運算符「<<」是雙目運算符。其功能把「<< 」左邊的運算數的各二進位全部左移若干位,由「<<」右邊的數指定移動的位數,高位丟棄,低位補0。
例 2右移運算符「>>」是雙目運算符。其功能是把「>> 」左邊的運算數的各二進位全部右移若干位,「>>」右邊的數指定移動的位數。
應該說明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯系統的規定。
例 3 設二進制數a是00101101 ,若通過異或運算a∧b 使a的高4位取反,低4位不變,則二進制數b是。
解析:異或運算常用來使特定位翻轉,只要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。異或運算還可用來交換兩個值,不用臨時變數。
所以本題的答案為: 11110000 。
㈣ 一個完整的C程序由什麼組成
C語言的構成如下:
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用*號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * 。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
5、字元串
C語言的字元串其實就是以'