C语言程序设计课件_第1页
C语言程序设计课件_第2页
C语言程序设计课件_第3页
C语言程序设计课件_第4页
C语言程序设计课件_第5页
已阅读5页,还剩195页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C語言概述

主要內容:

C語言的特點

C語言的開發流程簡單的C語言程式

Win-TC的基本操作教學目的及要求:

通過對本章的學習,要求掌握C語言的特點及其發展歷史;初步認識C語言編譯軟體Win-TC的使用,基本瞭解C語言程式開發的設計流程。第一章C語言概述本章重點:

C語言的特點

C語言程式的開發流程

Win-TC的基本操作本章難點:

Win-TC的基本操作第一章C語言概述

1.C語言的誕生與發展(1)在C語言誕生以前,系統軟體主要是用組合語言編寫的。由於組合語言程式依賴於電腦硬體,其可讀性和可移植性都很差;但一般的高級語言又難以實現對電腦硬體的直接操作(這正是組合語言的優勢),於是人們盼望有一種兼有組合語言和高級語言特性的新語言。(2)C語言是貝爾實驗室於70年代初研製出來的,後來又被多次改進,並出現了多種版本。80年代初,美國國家標準化協會(ANSI),根據C語言問世以來各種版本對C語言的發展和擴充,制定了ANSIC標準(1989年再次做了修訂)。*本書以ANSIC新標準來介紹。1.1C語言的特點(3)目前,在微機上廣泛使用的C語言編譯系統有MicrosoftC、TurboC、BorlandC等。雖然它們的基本部分都是相同的,但還是有一些差異,所以請大家注意自己所使用的C編譯系統的特點和規定(參閱相應的手冊)。本書選定的上機環境是Win-TC(Windows操作系統)。2.C語言的特點

C語言同時具有組合語言和高級語言的優勢。(1)語言簡潔、緊湊,使用方便、靈活。(2)運算符極其豐富。(3)生成的目標代碼品質高,程式執行效率高。(4)可移植性好(較之組合語言)。(5)可以直接操縱硬體。3.在C語言中,除實現順序、選擇和迴圈三種基本結構等的9條控制語句外,輸入輸出操作均由標準庫函數(不是C語言的組成部分)來實現。所以學習C語言,不僅要學習這9條控制語句和各種運算符,而且要學習並掌握常用標準庫函數的使用。1.2C語言程式的開發過程1.編輯編輯C語言根源程式,以.C為擴展名。2.編譯將C語言根源程式編譯成目標程式。擴展名為.OBJ。3.連接將目標程式連接生成可執行的代碼。可執行檔的擴展名為.EXE。4.執行執行可執行檔。1.3簡單的C語言程式1.3.1C語言程式的總體結構一個完整的C語言程式,是由一個main()函數(又稱主函數)和若干個其他函數結合而成的,或僅由一個main()函數構成。[案例1.1]僅由main()函數構成的C語言程式。/*案例代碼檔案名:AL1_1.C*//*功能:僅由main()函數構成的C語言程式示例*/main(){printf(“ThisisaCprogram.\n”);}程式運行結果:

ThisisaCprogram.1.3.2C語言程式規定

一個C語言程式可由多個函數組成,但必須包含一個且只能包含一個名為main的函數,程式總是從main函數開始執行。

由一對{}擴起來的部分是函數體,其中語句實現程式的預定功能。

C語言的每個基本語句都以“;”結束。

C語言程式書寫格式較自由,一行可寫一個或多個語句。

所有的變數必須“先定義、後使用”。

/*……*/中的內容是程式的注釋部分

#include語句是編譯預處理語句。1.4Win-TC軟體的使用本章小結:

本章系統介紹了C語言的特點及其C語言程式設計開發流程,讓學生對C語言有個感性的認識,初步接觸了簡單易學的C語言編譯軟體——Win-TC。第一章C語言概述

常量和變數

基本數據類型及其常量

算術運算符、賦值運算符及其運算式

關係運算符、邏輯運算符及其運算式

逗號運算符、條件運算符及其運算式

變數的初始化

不同類型數據之間的轉換

類型定義第二章数据类型、运算符及其表达式主要內容:本章授課理論課:

4學時實踐課:4學時第二章数据类型、运算符及其表达式教學目的及要求:

通過對本章的學習,要求掌握C語言程式設計的基礎知識,能夠對變數和常量進行定義及使用,對常用的運算符及其運算式能夠熟練應用。基本瞭解C語言不同類型數據間的轉換和類型定義。本章重點:

變數定義和應用基本類型及其常量定義和應用算術運算符、賦值運算符及其運算式關係運算符、邏輯運算符及其運算式本章難點:

逗號運算符、條件運算符及其運算式類型定義第二章数据类型、运算符及其表达式2.1常量和變數

常量

即在程式運行過程中其值不會改變的量。

變數

即在程式運行過程中其值可以改變的量。

識別字

用以標識程式中用到的變數名、函數名、類型名、數組名、檔案名、符號常量名等的有效字元序列。識別字的命名規則:由字母(大、小寫均可)、數字及下劃線組成,且第一個字元必須是字母或下劃線。變數名

合法變數名:Year,Day,ATOK,x1,_CWS,_change,_to

不合法變數名:#123,.CUM,$100,1996Y,1-2-3-大,小寫字母有區別,一般變數名用小寫,組成變數名的有效字元數隨C語言的編譯系統而定,同一個函數內所定義的變數不能同名。最基本的數據類型有四種:整型:int字元型:char單精確度型:float雙精度型:double2.2基本數據類型及其常量浮點型2.2.1整型變數及其常量

整型變數用以存放整型數據.

一般定義形式:inti1,i2;

整型常量

C語言中可用三種數製錶示:

十進位:

如250,23,-10等十六進制:

以0X或0x開頭,如0X61(相當97)

八進制:以0開頭,如0141(相當97)2.2.2浮點型變數及其常量

帶有小數點的數稱為浮點數或實型數。浮點型變數分單精確度浮點型變數和雙精度浮點型變數。單精確度浮點型變數的定義方式:floatf1,f2;雙精度浮點型變數的定義方式:doubled1,d2;不同系統中,float型數據和double型數據所能提供的精度是有差異的。浮點型常量一般不分float型和double型,根據變數的類型來截取相應的有效位數。兩種表示形式:(1)十進位形式:由數字和小數點組成。如,21.34567,-4,30等。(2)指數形式:即用科學計數法。字母E和e之前必須有數字,且e後面的指數部分必須是整數。2.2.3字元型變數及其常量字元型變數用於存放一個字元。一般定義形式:charc1,c2;字元型常量用一對單引號括起來的一個字元。如‘A’,‘3’,‘#’等。轉義字元以‘\’開頭的特殊字元型常量。‘\n’換行字元‘\r’回車字元‘\b’退格字元‘\t’跳格字元‘\’’單引號字元‘\“’雙引號字元

2.2.4長整型、短整型和無符號型

長整型變數定義的一般形式:longintX;能表示的數值範圍與電腦系統有關,是int的兩倍。長整型常量:在整型常量的末尾加上字母L或l。例:x=9876543L;

短整型變數定義的一般形式:shortintx;能表示的數值範圍與電腦系統有關,有的與int相同,有的小於int。

無符號整型變數定義的一般形式:unsignedintx;用於存放非負整型數。與int型變數占相同的記憶體空間。

注:C語言只要求long型數據長度不短於int型,short型數據長度不長於int型,各數據類型所占存儲位元組數具體所使用系統及編譯器。2.2.5sizeof運算符

用於瞭解一個變數或某種數據類型的量在內存中所占位元組數。Sizeof有兩種使用方法:

sizeof運算式如:當x是整形變數的時候,sizeofx=2;

sizeof(類型名)

如:sizeof(float)=42.3算術運算符、賦值運算符及其運算式運算符的優先順序及結合性優先順序:一個運算式中,多個運算符運算的先後順序。結合性:一個運算對象的兩側的運算符的優先順序相同時,進行運算的結合方向。算術運算符和算術運算式

1.加、減、乘、除及取模運算符(自左至右)

+、-、*、/(運算符兩側是整數,則其結果為整數)、%(取兩個整型數相除的餘數)。

2.增1、減1運算符(自右至左)運算對象只能是整型或字元型變數。

i++;先使用變數i的值,再使i的值加1。

++i;先使i的值加1,再先使用變數i的值。

i--;先使用變數i的值,再使i的值減1。

--i;先使i的值減1,再先使用變數i的值。賦值運算符和賦值運算式

1.賦值運算符(自右至左)

=

功能:將賦值運算符右邊的運算式的值賦給左邊的變數。例:x=23;f=23.5;h=‘A’;

2.複合賦值運算符(自右至左)

+=,-=,*=,/=,%=

例:x+=10;y*=20;舉例#include"stdio.h"voidmain(){inti,j;i=3;j=-i++;printf("%d,%d\n",j,i);system(“pause”)}#include"stdio.h"voidmain(){inta;a=12;a+=a-=a*a;printf("%d\n",a);system(“pause”)}a+=a-=a*a=>1.a-=a*a

即:a=a-a*a

2.a+=a

即:a=a+a

a+=a-=a*a=>a=(a-a*a)+(a-a*a)2.4關係運算符、邏輯運算符及其運算式關係運算符和關係運算式

1.關係運算符(自左至右)

共6種:

<、<=、>、>=、==、!=

後兩種運算符的優先順序低於前4種。關係運算符的優先順序低於算術運算符。

2.關係運算式用關係運算符將兩個運算量連接起來的有意義的式子。例:X>Y,A+B<=C+D。關係運算式是一個邏輯值“真”(用1表示)或“假”(用0表示)。邏輯運算符和邏輯運算式

1.邏輯運算符有三種:!、&&、||

優先順序依次降低,“!”優先順序高於算術運算符和關係運算符;&&、||優先順序低於算術運算符和關係運算符。結合性:!自右至左。

&&、||自左至右。

2.邏輯運算式用邏輯運算符將關係運算式或邏輯量連接起來的式子。邏輯運算式結果是一個邏輯值“真”(用1表示)或“假”(用0表示)。但判斷一個量是否為“真”時,以非0表示“真”,以0表示“假”。#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d\n",a>b||b<c);printf("%d\n",!(x<y));system(“pause”);}舉例#include"stdio.h"voidmain(void){inta=10,b=20,c=30;charx='a',y='b';printf("%d,%d\n",a>b,b<c);printf("%d\n",x<y);system(“pause”);}2.5逗號運算符、條件運算符及其運算式

逗號運算符和逗號運算式

1.逗號運算符:,(自左至右)

優先順序最低。

2.逗號運算式:一般形式:運算式1,運算式2,…,運算式n

求解過程:先求解運算式1,再求解運算式2,最後求解運算式n,逗號運算式的值為最右邊運算式n的值。例:a=6,a*3

條件運算符和條件運算式

1.條件運算符:?:(自右至左)唯一的三目運算符。

2.條件運算式一般形式:運算式1?運算式2:運算式3

功能:當運算式1的值為“真”時,條件運算式的值取運算式2的值,當運算式1的值為“假”時,條件運算式的值取運算式3的值。例:c=(a>b)?a:b;舉例#include"stdio.h"voidmain(void){inta=10,b=20,c=30,x;x=(a,b,c);printf("%d\n",x);}#include"stdio.h"voidmain(void){inta,b,max;scanf("%d,%d",&a,&b);max=(a>b)?a:b;printf("max=%d\n",max);}2.6變數的初始化

即在對變數進行定義的同時,為其賦初值。例:int age=20;

char letter=‘A’;

int convert=‘b’-‘B’;

float average=3.2*9.8;int x=10,y=20,z=30;2.7不同類型數據之間的轉換

不同類型數據在進行混合運算時,需進行類型轉換,有兩種方式:1.自動類型轉換

2.強制類型轉換

C語言允許字元型數據和整型數據之間通用。2.7.1自動類型轉換自動類型轉換規則:當單、雙精度浮點型數據賦給整型變數時,浮點數的小數部分將被捨棄,且需進行相應有效位數的截取。當整型數據賦給浮點型變數時,數值上不發生任何變化。只要某個算術運算符的兩個運算對象中有一個是浮點數,則運算將按浮點型格式來進行。2.7.2強制類型轉換自動類型轉換達不到目的時,可以利用強制類型轉換。一般形式:(類型名)(運算式)例:(float)x/y說明:強制類型轉換後,得到的是一個所需類型的中間變數,原來變數的類型沒有發生任何變化。舉例#include"stdio.h"voidmain(void){ inti='a'; charc=97; printf("%d,%c\n",c,c); printf("%d,%c\n",i,i);}#include"stdio.h"voidmain(void){ inti=20,j; floatf; j=i/40; f=(float)i/40; printf("%d\n",j); printf("%f\n",f);}2.8類型定義

C語言允許使用typedef語句定義新的類型名,以代替已有的類型名。例:typedefintcounter;

counterx,y;=>intx,y;說明: 1.typedef不能創建新的類型

2.typedef不能用以定義變數.第二章数据类型、运算符及其表达式本章小結:

本章主要介紹C語言程式設計中的常用數據類型,對變數和常量的定義和引用,對常用的運算符及其運算式應用方法。簡單介紹C語言不同類型數據間的轉換方法和類型定義方法。

基本語句

數據的輸入

數據的輸出

第三章基本语句主要內容:本章授課理論課:

2學時實踐課:2學時

第三章基本语句教學目的及要求:

通過對本章的學習,要求掌握C語言程式設計中常用的基本語句和複合語句,熟悉數據的輸入和輸出方法。能夠調用常用的數據輸入和輸出函數。本章重點:

基本語句複合語句數據的輸入數據的輸出本章難點:數據的輸入數據的輸出

第三章基本语句語句和複合語句數據的輸入數據的輸出第三章基本語句3.1語句和複合語句

一個運算式的後面跟一個分號構成語句。用左、右花括弧括起來的語句稱為複合語句。

一個複合語句在語法上等同於一個語句。例: x=a+b;

if(1)

{a=3;b=4;x=a*b;}第三章基本語句

字元輸入函數格式:getchar()

功能:接收從鍵盤輸入的一個字元。例:#include"stdio.h"voidmain(void){ charc;

c=getchar(); }3.2數據的輸入第三章基本語句格式輸入函數格式:scanf(格式控制,地址表);

功能:用以接收從鍵盤上輸入的多個任何類型的數據。1.格式控制由%和格式字元組成。作用是將輸入的數據轉換成指定的格式後存入到由地址表所指向的相應的變數中。例:%c,%d,%f2.地址表由變數地址組成。變數地址由&和變數名組成。例:&a,&b3.2數據的輸入第三章基本語句格式字元d輸入十進位整數(長整型用ld;短整型用hd)o輸入八進制整數(長整型用lo;短整型用ho)x輸入十六進制整數(長整型用lx;短整型用hx)c輸入單個字元f輸入浮點數e輸入浮點數,作用與f相同.s輸入以‘\0’為結束標緻的字串3.2數據的輸入第三章基本語句舉例#include"stdio.h"voidmain(void){ inti; floatf; charc; scanf("%d%f%c",&i,&f,&c); printf("%d,%f,%c\n",i,f,c);}3.2數據的輸入第三章基本語句字元輸出函數 格式:putchar(變數名)

功能:將變數中的字元輸出到螢幕當前游標位置。 例:#include"stdio.h" voidmain(void) { charc; c=getchar(); putchar(c); }3.3數據的輸出第三章基本語句格式輸出函數 格式:printf(格式控制,輸出表); 功能:用以輸出多個任何類型的數據。

1.格式控制 由%和格式字元組成,作用是將要輸出的數據轉換為指定的格式後輸出。 例:%d,%f,%c 2.輸出表 由變數名組成。變數名間用逗號隔開。 例:a,b,c第三章基本語句3.3數據的輸出格式字元d 輸出十進位整數(長整型用ld)o 輸出八進制整數(長整型用lo)x 輸出十六進制整數(長整型用lx)c 輸出單個字元f 輸出浮點數e 以科學計數法輸出浮點數s 輸出以‘\0’為結束標緻的字串第三章基本語句3.3數據的輸出#include"stdio.h"voidmain(void){ charc1,c2; scanf("%c%c",&c1,&c2); ++c1; --c2;

printf("C1=%c,C2=%c",c1,c2);}第三章基本語句3.3數據的輸出舉例

第三章基本语句本章小結:

本章在闡述C語言程式設計中常用的基本語句和複合語句基礎上,詳細介紹了數據的輸入和輸出的常用函數及其使用方法。第四章選擇結構

主要內容:

結構化程式設計的三種基本結構

IF-else選擇結構多分支Switch選擇結構本章授課理論課:

2學時實踐課:2學時教學目的及要求:

通過對本章的學習,要求掌握C語言程式設計中的三種基本結構,把握選擇結構的兩種常用語句結構。基本瞭解C語言程式開發的選擇流程設計。第四章選擇結構本章重點:

C語言程式設計的三種基本結構

IF-else選擇語句結構多分支Switch選擇語句結構本章難點:

Switch多分支選擇結構第四章選擇結構

結構化程式設計的三種基本結構

1.順序結構按語句的書寫順序依此執行。

2.選擇結構通過對特定條件的判斷,選擇一個分支執行。

3.迴圈結構在給定條件下,重複執行某段程式,直到條件不滿足為止。AB第四章选择结构格式:if(運算式)

語句1else

語句2

功能:先計算運算式的值,若運算式的值為“真”(非0),則執行語句1,否則,若運算式的值為“假”(為0),則執行語句2。

說明:

1、語句1、語句2可以是單個語句,也可是複合語句。

2、if語句可以嵌套。(else總是與它前面的離它最近的if配對)。非0?YNAB4.1IF條件選擇語句第四章选择结构if語句舉例#include"stdio.h"main(){ charc1,c2; c1=getchar(); c2=getchar(); if(c1>c2) printf("%c\n",c1); else printf("%c\n",c2);}#include<stdio.h>main(){ inta,b,c,max; printf("Inputa,b,c:");scanf("%d,%d,%d",&a,&b,&c); if(a>b&&a>c) max=a; else if(b>c) max=b; else max=c;printf("max=%d\n",max);}4.1IF條件選擇語句第四章选择结构格式:switch(運算式){ case常量運算式1:

語句1 case常量運算式2:

語句2 …… case常量運算式n:

語句n [default: 語句n+1] }功能:先計算switch後面運算式的值,若此值等於某個case後面的常量運算式的值,則轉去執行該case後面的語句去執行;否則執行default後面的語句。4.2多分支選擇語句第四章选择结构說明:

1.“運算式”及“常量運算式”的值,必須是整型或字元型。

2.case後面的常量運算式的值必須互不相同。

3.執行完某個case後面的語句後,將自動轉到該語句後面的語句去執行,直到遇到switch語句結束或“break”語句為止。

4.case後面的多個語句可以不用花括弧括起。

5.多個case後面的語句可以共用一組執行語句。4.2多分支選擇語句第四章选择结构 case4: case6: case9: case11:days=30;break; case2:if(year%4==0&&year%100!=0||year%400==0) days=29; else days=28;break; default: printf("Dataerror!");break; } printf("Days=%d",days);}4.3Switch語句舉例第四章选择结构#include<stdio.h>main(){ intyear,month,days; printf("Inputyearandmonth:"); scanf("%d%d",&year,&month); switch(month) { case1: case3: case5: case7: case8: case10: case12:days=31;break;本章小結:

本章簡單介紹了C語言程式設計中的三種基本結構,重點系統介紹了選擇結構的兩種常用語句結構及其使用方法。第四章選擇結構第五章迴圈結構

主要內容:

while迴圈語句

do-while迴圈語句

for迴圈語句

break和continue語句空操作語句和goto語句本章授課理論課:

4學時實踐課:4學時教學目的及要求:

通過對本章的學習,要求熟悉C語言程式設計中常用的迴圈語句,包括while、do-while和for語句結構,並能夠熟練應用它們去設計程式;掌握迴圈語句結構配套使用的break和continue的用法;瞭解空操作語句和goto語句的用法;第五章迴圈結構本章重點:

while、do-while和for迴圈語句

break和continue語句空操作和goto語句本章難點:

for迴圈語句

break和continue的用法區別第五章迴圈結構while迴圈語句do-while迴圈語句for迴圈語句break語句和continue語句空操作語句和goto語句第五章迴圈結構格式:while(運算式){

循環體

}功能:先計算運算式的值,若運算式的值為真,則執行循環體,否則,執行循環體後面的語句。運算式真假循環體第五章迴圈結構5.1while迴圈語句While迴圈舉例#include"stdio.h"voidmain(){ inti=1,sum=0;

while(i<=100) { sum+=i; i=i+1; } printf("%d\n",sum);}第五章迴圈結構5.1while迴圈語句格式:do{循環體}while(運算式);功能:先執行一次循環體,再判斷運算式的值是否為“真”,若為“真”,繼續執行循環體,直到運算式的值為“假”,退出迴圈。循環體運算式真假第五章迴圈結構5.2do-while迴圈語句do-while迴圈語句舉例#include"stdio.h"voidmain(){ inti=1,sum=0;

do {sum+=i; i=i+1;} while(i<=100); printf("%d\n",sum);}第五章迴圈結構5.2do-while迴圈語句格式:for(運算式1;運算式2;運算式3)

{循環體}執行過程:1、先求解運算式1,2、再求解運算式2,若運算式2的值為“真”,則執行循環體中的語句,接著求解運算式3,3、重複執行步驟2),直到運算式2的值為“假”,退出迴圈。

求解運算式1運算式2執行循環體求解運算式3退出迴圈真假第五章迴圈結構5.3for迴圈語句for迴圈說明for語句中的任何一個運算式都可以省略,但其中分號不能省略。省略運算式2,相當於死迴圈。此時應在循環體中設置相應語句結束迴圈。如循環體由多個語句組成,則必須用花括弧括起。運算式1和運算式3都可是逗號運算式。第五章迴圈結構5.3for迴圈語句for迴圈舉例#include"stdio.h"voidmain(){ inti,sum;

for(i=1,sum=0;i<=100;i++) sum+=i; printf("%d\n",sum);}第五章迴圈結構5.3for迴圈語句break語句格式:break;功能:終止switch語句或迴圈語句的執行。continue語句格式:continue;功能:終止本次迴圈。第五章迴圈結構5.4break和continueBreak、continue語句舉例#include"stdio.h"voidmain(){ inti,sum; for(i=1,sum=0;i<=100;i++){ if(sum>2000) break; sum+=i;} printf("%d\n",sum);}第五章迴圈結構5.4break和continue#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}第五章迴圈結構Break、continue語句比較舉例#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') continue; sum++;} printf("sum=%d",sum);}#include"stdio.h"voidmain(){ intsum,i; charch; sum=0; for(i=0;i<10;i++){ ch=getchar(); if(ch<'0'||ch>'9') break; sum++;} printf("sum=%d",sum);}空操作語句 僅由一個分號組成,不進行任何操作。goto語句 格式:goto標號;

……

標號:語句; 功能:將執行流程轉到以該標號為首碼的語句去執行。 說明:標號的命名規則與變數完全相同。第五章迴圈結構5.5空操作和goto語句舉例#include"stdio.h"voidmain(){ intsum,i; charch; for(sum=0,i=1;i<=100;sum+=i,i++) ; printf("sum=%d\n",sum);}#include"stdio.h"voidmain(){ inti; floatsum; sum=1; i=2;L1:sum+=1/(float)i; i+=2; if(i<=50) gotoL1; printf("sum=%f\n",sum);}第五章迴圈結構5.5空操作和goto語句本章小結:

本章重點介紹了C語言程式設計中常用的迴圈語句及其使用方法,包括while、do-while和for語句結構,並通過例子說明了它們的使用方法;同時介紹了迴圈語句結構配套使用的break和continue的用法;最後,對空操作語句和goto語句的用法作了簡單介紹;第五章迴圈結構第六章數組

主要內容:

一維數組定義、引用、初始化和舉例二維數組定義、引用、初始化和舉例字元數組定義、引用、初始化和舉例字串函數的應用本章授課理論課:

4學時實踐課:4學時教學目的及要求:

通過對本章的學習,要求掌握C語言一維數組、二維數組和字元數組的定義、引用及其初始化方法;初步認識數組的應用舉例使用,瞭解常用的字串處理函數。第六章數組本章重點:

一維數組的定義、引用、舉例和初始化二維數組的定義、引用、舉例和初始化字元數組的定義、引用、舉例和初始化字串處理函數本章難點:

一維數組、二維數組和字元數組的初始化第六章數組

一維數組

二維數組

字元數組和字串第六章数组一維數組的定義和引用 定義:類型說明符數組名[常量運算式]; 例:intage[10];

floata[10],f,b[20]; 說明:不允許動態定義數組。 如:inti;i=15;intdata[i]; 引用:數組名[下標運算式]

例:a[0]=10;a[5]=2*a[0]; 說明:下標從0開始,不允許一次引用整個數組,只能逐個引用每個數組元素。一維數組元素的初始化

staticinta[5]={1,2,3,4,5}; staticintdata[5]={5,4,3}; staticintdata[5]; staticintdata[]={1,2,3,4,5};第六章数组6.1一維數組舉例#include"stdio.h"voidmain(){ inti;

staticintx[]={10,8,7,6,5}; staticinty[]={-3,9,-10,-2,4}; intz[5]; for(i=0;i<5;i++) z[i]=x[i]+y[i]; for(i=0;i<5;i++) printf("%d\n",z[i]);}第六章数组6.1一維數組二維數組的定義和引用 定義:類型說明符數組名[常量運算式][常量運算式]; 例:int x[3][2];

float a[2][3],f,b[20]; 說明:數組元素的排列順序按行進行。 引用:數組名[下標運算式][下標運算式]

例:a[0][1]=10;a[1][1]=2*a[0][1]; 說明:每個下標從0開始,不允許一次引用整個數組,只能逐個引用每個數組元素。一維數組元素的初始化

staticinta[3][2]={1,2,3,4,5,6}; staticintdata[2][3]={5,4,3}; staticintdata[3][2]={{1},{2},{3}}; staticintdata[][2]={{1},{2,3},{4}};第六章数组6.2二維數組舉例#include"stdio.h"voidmain(){ intyear,month,day,days,i,leap; staticintmtable[][13]={{0,31,28,31,30,31,30,31,31,30,31,30,31},{0,31,29,31,30,31,30,31,31,30,31,30,31}}; printf("inputyear,month,day:"); scanf("%d%d%d",&year,&month,&day); leap=0; if(year%4==0&&year%100!=0||year%400==0) leap=1; days=day; for(i=1;i<month;i++) days+=mtable[leap][i]; printf("Days=%d",days);}第六章数组6.2二維數組字元數組

一維數組定義: char數組名[常量運算式];

二維數組定義: char數組名[常量運算式][常量運算式];

字元數組元素的引用: c[5]=‘B’;ch[1][2]=‘k’;

字元數組初始化: staticcharch[5]={‘G’,’O’,’O’,’D’,’!’}

說明:初值個數可以少於數組元素的個數,不可多於。

第六章数组6.3字元數組和字串字元數組舉例#include"stdio.h"voidmain(){

staticchartext[]={'h','e','l','l','o'}; charbuff[5]; inti,flag; for(i=0;i<5;i++) buff[i]=getchar(); flag=0; for(i=0;i<5;i++) if(buff[i]!=text[i]) {flag=1; break;} if(flag) printf("Thiswordisnothello"); else printf("Thiswordishello");}第六章数组6.3字元數組和字串字串字串及其結束標誌 字串是用雙引號括起來的字元序列。 字串利用字元數組存放。 字串結束標誌:‘\0’

字串常量初始化數組: staticcharstr[]={“Happy”};

或:staticcharstr[]=“Happy”;字串的輸入和輸出 “%c”格式符:每次輸入或輸出一個字元。 “%s”格式符:每次輸入或輸出一個字串。第六章数组6.3字元數組和字串字串輸入輸出舉例#include"stdio.h"voidmain(){ charstr[10]; inti; printf("Inputastring:"); scanf("%s",str); i=0; while(str[i]!='\0') { printf("%c",str[i]); i++; }}第六章数组6.3字元數組和字串常用的字串處理函數

輸入字串函數

輸出字串函數

字串比較函數

字串拷貝函數

字串連接函數

字串測試長度函數第六章数组6.3字元數組和字串輸入字串函數格式:gets(字元數組名)功能:輸入一個字串。說明:

1.要用#include命令將“stdio.h”頭檔包含到檔中。

2.返回字元數組的首地址。例:charp[20];

……gets(p);第六章数组輸入字串函數舉例#include"stdio.h"main(){ charp[20]; gets(p); printf("%s\n",p);}第六章数组輸出字串函數格式:puts(字元數組名)功能:輸出以‘\0’結尾的字串。說明: 要用#include命令將“stdio.h”頭檔包含到檔中。 例: charp[20];

…… puts(p);第六章数组輸出字串函數舉例#include"stdio.h"main(){ charp[20]; gets(p); puts(p);}第六章数组字串比較函數格式:strcmp(字串1,字串2)功能:比較兩個字串。說明: R<0字串1<字串2 R=0字串1=字串2 R>0字串1>字串2例: intR; R=strcmp(“Good”,”Happy”)第六章数组字串比較函數舉例#include"stdio.h"#include"string.h"voidmain(){ charstr1[]={"abcde"},p[20]; intr; gets(p); r=strcmp(str1,p); printf("%d",r);}第六章数组字串拷貝函數格式: strcpy(字元數組1,字元數組2)功能:

將字元數組2(以‘\0’結尾)拷貝到字元數組1中。例: staticcharstr2[]=“string” charstr1[7];

…… strcpy(str1,str2);第六章数组字串拷貝函數舉例#include"stdio.h"#include"string.h"voidmain(){ charstr1[20],p[20]; gets(p); strcpy(str1,p); printf("%s\n",str1);}第六章数组字串連接函數格式:strcat(字串1,字串2)功能:連接兩個以‘\0’結尾的字串。說明: 字元數組1必須足夠長,以便容納字串2。例: staticcharstr1[20]=“Happy”staticcharstr2[10]=“NewYear” ……strcat(str1,str2);第六章数组字串連接函數舉例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde",p2[]="12345"; strcat(p1,p2); printf("%s\n",p1);}第六章数组字串測試長度函數格式:strlen(字串)功能:測試字串長度(不包括‘\0’)。例: strlencharstr[10]={“China”};printf(“%d”,strlen(str));第六章数组字串測試長度函數舉例#include"stdio.h"#include"string.h"voidmain(){ charp1[]="abcde"; inti,j; i=strlen(p1); j=strlen("1234567890"); printf("%d,%d\n",i,j);}第六章数组本章小結:

本章主要介紹了C語言一維數組、二維數組和字元數組的定義、引用及其初始化方法;闡述了數組的應用方法,並介紹了跟數組相關的常用的字串處理函數的用法。第六章數組第七章函數

主要內容:

函數的概念和定義函數的常用調用方法函數的參數傳遞方式函數變數的作用域函數的作用域本章授課理論課:

6學時實踐課:6學時教學目的及要求:

通過對本章的學習,要求掌握構成C語言程式模組的單元--函數的特點及其定義和調用的方法;初步認識C語言變數的作用範圍,區分函數的作用域。第七章函數本章重點:

函數的定義

函數的調用方法函數的參數傳遞方式函數的作用域函數變數的作用域本章難點:

函數的調用方法及其參數傳遞方式第七章函數

函數的概念

函數的定義和調用

函數的返回值及其類型

函數的參數及其傳遞方式

函數的嵌套調用和遞歸調用

變數的作用域及存儲類型

內部函數和外部函數第七章函數和變數一個C程式由一個或多個函數組成,必須有且僅有一個主函數(main())。函數之間沒有從屬關係。函數通過調用執行,從main函數開始,main函數可以調用任何一個函數,其他函數不能調用main函數。函數包括:標準庫函數和用戶自定義函數。第七章函數和變數7.1函數的概念函數的定義格式:類型說明符函數名(形參表)形參類型說明

{

說明部分語句部分(函數體部分)

}函數的調用格式:函數名(實參表);例第七章函數和變數7.2函數的定義和調用函數的定義和調用舉例#include"stdio.h"intmax(inta,intb){inti;i=(a>b)?a:b;return(i);}main(){intx=10,y=20,temp;

temp=max(x,y);printf("Themaxis%d\n",temp);system("pause");}第七章函數和變數7.2函數的定義和調用返回語句 格式: return[(運算式)]; 或: return[運算式];返回值類型

C語言規定第七章函數和變數7.3函數返回值與類型C語言規定在調用函數中,通常應對被調用函數的返回值類型進行說明例: main()

{ floatcount();

floats;

…… s=count(20);

…… }第七章函數和變數7.3函數返回值與類型當被調用函數的定義位於調用函數之前時可不必說明例: floatcount(n)

intn;

{ floats;

…… return(s);

} main()

{ floats;

…… s=count(10);

…… }第七章函數和變數7.3函數返回值與類型允許在所有函數的外面、檔的開頭對函數的類型進行說明,而在調用函數中便可以不對被調用函數的類型進行說明。例: floatcount();

main()

{ floats;

…… s=count(10);

…… }

floatcount(n)

intn;

{ floats;

…… return(s);

}第七章函數和變數7.3函數返回值與類型當函數的返回值為int型時,在函數定義時,返回值的類型說明可以省略。當函數沒有返回值時,函數的返回值類型可說明為void型。例: #include"stdio.h" voidabc() { printf("good!"); } main() { abc(); }第七章函數和變數7.3函數返回值與類型函數返回值類型一般應與return語句中的運算式的值的類型一致,若不同,則以函數定義時的返回值類型說明為准。允許在沒有返回值的函數中使用return語句,以結束函數的執行,返回主調函數。

格式:return第七章函數和變數7.3函數返回值與類型實參和形參

實參:函數調用時,函數名後面的參數 形參:函數定義時,函數名後面的參數。一般變數(包括數組元素)作函數參數

實參—>形參 (單向)值傳遞 形參值改變不影響實參。數組名作函數參數

實參和形參共占一段存儲單元 (雙向)地址傳遞 形參值的改變將影響實參。第七章函數和變數7.4參數及傳遞方式一般變數(包括數組元素)作函數參數#include"stdio.h"intmult10(intn){ n*=10; return(n);}main(){ intnum; intresult; num=5; result=mult10(num); printf("result=%d\n",result); printf("num=%d\n",num);}第七章函數和變數7.4參數及傳遞方式數組名作函數參數#include"stdio.h"voidADD1(inta[],intn){ inti; for(i=0;i<n;i++) a[i]++;}main(){ staticintarray[]={0,1,2,3,4,5,6,7,8,9}; inti; ADD1(array,10); for(i=0;i<10;i++) printf("%d",array[i]);}第七章函數和變數7.4參數及傳遞方式函數的嵌套調用 即一個函數可以被其他函數調用,也可調用其他函數。函數的遞歸調用

直接遞歸調用: 一個函數可直接調用該函數本身。

間接遞歸調用: 一個函數可間接調用該函數本身。第七章函數和變數7.5嵌套和遞歸調用函數的嵌套調用#include"stdio.h"intSADD(intn){ inti,sum=0; for(i=1;i<=n;i++) sum+=i; return(sum);}intsmul(intn){ intm,d;

m=SADD(n); d=2*m-1; eturn(d);}main(){ inti,n,d; intflag; printf("Inputanumber:"); scanf("%d",&n);

d=smul(n); flag=0; for(i=0;i<n;i++) { printf("%d",d); d-=2; flag++; if(flag==5) { printf("\n");flag=0; } }}第七章函數和變數7.5嵌套和遞歸調用直接遞歸調用floatfunc(n)intn;{ intm;

floatf;

…… f=func(m);

……}第七章函數和變數7.5嵌套和遞歸調用間接遞歸調用func1(n)intn;{ intm;

…… func2(m);

……}func2(x)intx;{ int

y;

…… func1(y);

……}第七章函數和變數7.5嵌套和遞歸調用函數的遞歸調用#include"stdio.h"main(){ intn; longintresult; longintfact(int); while(1) { printf("Inputanumber:"); scanf("%d",&n); if(n>=0) break; } result=fact(n); printf("Result=%ld",result);}longintfact(intn){ longintf; if(n==0) f=1; else f=n*fact(n-1); return(f);}第七章函數和變數7.5嵌套和遞歸調用

一般概念

局部變數及存儲類型

全局變數及存儲類型第七章函數和變數7.6變數作用域及存儲類型一般概念C語言所占存儲空間分為: 程式區:存放可執行的程式的機器指令。 靜態存儲區:存放需佔用固定存儲單元的變數。 動態存儲區:存放不需佔用固定存儲單元的變數。變數的定義包含三個方面: 變數的數據類型 變數的作用域:一個變數能夠起作用的程式範圍。 變數的存儲類型:變數在內存中的存儲方法。第七章函數和變數7.6變數作用域及存儲類型局部變數及存儲類型局部變數: 在函數內部定義的變數。局部變數的作用域:僅限於定義它的函數。局部變數的三種存儲類型:

自動類(auto)

靜態類(static)

寄存器類(register)第七章函數和變數7.6變數作用域及存儲類型自動類(auto)變數

在函數內部定義的,沒有指定其他存儲類型的變數。格式:[auto]類型說明符變數表在動態存儲區分配存儲單元,函數調用結束時,其中的數據被釋放,每調用一次函數都需重新賦初值一次。#include"stdio.h"voidtest_auto(){ intva=0; printf("auto=%d\n",va); ++va;}main(){ inti; for(i=0;i<4;i++) test_auto();}第七章函數和變數7.6變數作用域及存儲類型靜態類(static)變數

在函數內用static定義的變數。格式:static類型說明符變數表在靜態存儲區分配存儲單元,函數調用結束後其中數據並不釋放。#include"stdio.h"voidtest_static(){

staticintvs=0; printf("static=%d\n",vs); ++vs;}main(){ inti; for(i=0;i<4;i++) test_static();}第七章函數和變數7.6變數作用域及存儲類型寄存器類(register)變數用寄存器存放值的變數。格式:

register類型說明符變數表能被說明為寄存器類變數的數據類型只有char、shortint、unsignedint、int和指針類型。第七章函數和變數7.6變數作用域及存儲類型全局變數及存儲類型全局變數:

在函數外定義的變數。作用域:

從定義位置開始到本源檔結束。所有全局變數都在靜態存儲區分配存儲單元。默認初值為0。全局變數的兩種存儲類型:

外部的(extern)

靜態的(static)第七章函數和變數7.6變數作用域及存儲類型外部變數

沒有說明為static的全局變數稱外部變數。一個C語言程式可由多個原始檔案組成,如果一個檔要引用另一個檔中定義的外部變數,需用extern關鍵字說明,一般應在檔的開頭且位於所有函數的外面。如在同一個檔中的全局變數的定義位於使用它的函數後面,可在要使用該全局變數的函數中,用extern說明,再使用它(見例)。格式:

extern數據類型變數名檔f1.c的內容:#include"stdio.h"intx;main(){ intsum,y; scanf("%d",&y); store(); sum=x+y; printf("sum=%d",sum);}檔f2.c的內容:externintx;voidstore(){ x=10;}第七章函數和變數7.6變數作用域及存儲類型例#include"stdio.h"main(){

externintx,y; intm; scanf("%d%d",&x,&y); m=(x<y)?x:y; printf("Min=%d",m);}

intx,y;第七章函數和變數7.6變數作用域及存儲類型靜態(static)外部變數

若希望在一個檔中定義的全局變數的作用域僅限於此檔中,則可在定義全局變數的類型說明符的前面使用static關鍵字。格式:

static類型說明符變數名作用域:從定義位置開始到該檔結束。file1.cstaticinta;main(){……}file2.cexterninta;fun(n)intn;{ …… a=a*n; ……}第七章函數和變數7.6變數作用域及存儲類型

內部函數只能在定義它的檔中被調用,不能被其他檔中的函數所調用。定義格式:

static類型說明符函數名(參數表)

外部函數可以被其他檔中的函數所調用。可在定義和調用函數時使用extern說明。定義函數時extern可以省略。第七章函數和變數7.7內部函數和外部函數外部函數file1.cmain(){

externvoidinput(); charbuff[100]; ...... input(buff); ......}file2.cexternvoidinput(b)charb[100];{ ......}第七章函數和變數7.7內部函數和外部函數本章小結:

本章系統介紹了函數的特點及其定義和調用的方法;簡單介紹了C語言變數的作用域和函數的作用域。第七章函數第八章結構和聯合

主要內容:

結構體的定義、引用及其初始化結構體數組結構體的嵌套聯合枚舉本章授課理論課:

4學時實踐課:4學時教學目的及要求:

通過對本章的學習,要求掌握C語言結構體的特點及其定義、引用和初始化方法;在此基礎上,初步認識結構體數組,結構體的嵌套方法;瞭解聯合和枚舉的定義、引用的方法。第八章結構和聯合本章重點:

結構體的定義、引用和初始化

結構體數組結構體的嵌套聯合的定義、引用枚舉的定義、引用本章難點:

結構體數組的定義和引用第八章結構和聯合結構類型變數的定義結構類型變數的引用結構的初始化結構和函數結構和數組結構的嵌套聯合枚舉第八章結構和聯合先定義結構類型,再定義結構變數在定義結構類型的同時定義結構變數直接定義結構變數定義結構類型名8.1

結構類型變數的定義第八章結構和聯合先定義結構類型,再定義結構變數定義結構格式:

struct結構名

{

成員表

};定義結構變數

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论