版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第一章C語言概述
Hello,everyone!1.安裝TC編譯器:將:我的電腦/Holly/compilers/tc2.0檔夾複製到D盤,並重新命名為"TC".2.運行TC.進入TC檔夾,雙擊tc.exe1.1C語言出現的歷史自學1.2C語言的特點C語言的主要特點如下:1.語言表達能力強運算符豐富,運算式類型多樣化2.結構化好while語句結構化語句等,函數為單位3.具有較強的數據類型構造能力4.語言精練i+=2(i=i+2);if(e)s;5.可移植性好6.生成的代碼品質高,程式的執行效率高
i+=2(i=i+2);7.能實現組合語言的大部分功能,可以直接對硬體進行操作。(可寫系統軟體UNIX及應用軟體)1.3簡單的C程式介紹例1.1main(){printf(“Hello,everyone!\n”);}程式的運行結果:Hello,everyone!1.3簡單的C程式介紹例1.2main(){inta,b,sum;/*這是定義變數*/a=123;b=456;/*以下3行為C語句*/sum=a+b;printf(“Sumis%d\n”,sum);}程式的運行結果:Sumis5791.3簡單的C程式介紹例1.3:從鍵盤輸入兩個整數,並將最大的數顯示出來。
#include“stdio.h” /*包含預處理語句*/main(){inta,b,c;printf(“Pleaseinputtwointegers:\n”);scanf(“%d,%d”,&a,&b);c=max(a,b);printf(“max=%d\n”,c);}intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}
程式運行情況:Pleaseinputtwointegers:8,5max=8通過以上例子可以看出:1.C程式是由函數構成的。每個程式由一個或多個函數組成,其中必須有且僅有一個主函數main()。函數容易實現程式的模組化.2.一個可執行的C語言程式總是從main函數開始執行,而不論其在整個程式中的位置如何。3.每條語句和數據定義的最後必須有一個分號;。說明:在以下三種情況下不允許有分號:
a.所定義的函數的名稱後面不使用分號;
b.在右花括弧“}”後面不使用分號;
c.預處理語句後面不使用分號。sum();{……}while(total<=2000){limit++;total=total+limit;};#include“stdio.h”;4.C對輸入輸出實行函數化。5.C程式書寫格式自由,一行內可以寫幾個語句,一個語句也可以分寫在多行上。6.可用/*……*/對C程式中的任何部分作注釋,注釋可以寫在程式的任何位置上,“/*”與“*/”也可不在同一行上。7.在C語言中,大小寫字母是有區別的。(C語言習慣用小寫字母)
1.4C程式的開發過程1.編輯:選擇適當的編輯程式,將C語言根源程式通過鍵盤輸入到電腦中,並以檔的形式存入到磁片中(.C)2.編譯:即將根源程式翻譯成機器語言程式的過程。編譯出來的程式稱為目標程式(.OBJ)3.連接:編譯後生成的目標檔經過連接後生成最終的可執行程式(.EXE)編輯編譯
出錯?連接出錯?執行
結果正確?
.C根源程式
.OBJ目標程式
.EXE可執行程式開始結束YYNYNN庫函數和其他目標程式main(){intx,num1=0,num2=0;printf("inputnum");scanf("%d",&x);while(x!=0){if(x>0)num1=num1+1;elsenum2=num2+1;scanf("%d",&x);}printf("Positivenumis:%d\n",num1);printf("Negativenumis:%d\n",num2);}
2345–10–8920660請讀出該程式的功能main(){intnum1=0,num2=0;printf("inputnum");scanf("%d",&x);while(x!=0){if(x>0)num1=num1+1;elsenum2=num2+1;scanf("%d",&x);}printf("Positivenumis:%d\n",num1);printf("Negativenumis:%d\n",num2);}
x程式有錯嗎?main(){printf(“*****************\n”);printf(“\n”);printf(“Verygood!\n”);printf(“\n”);printf(“*****************\n”);}運行結果:*********************Verygood!*********************main(){inta,b,c,max;printf(“inputnumbera,b,c:\n”);scanf(“%d,%d,%d”,&a,&b,&b);max=a;if(max<b)max=b;if(max<c)max=c;printf(“MAX:%d”,max);}運行結果:inputnumbera,b,c:6,5,1MAX:6在TurboC運行C程式的步驟我的電腦/Holly/compilers/tc2.0檔夾複製到D盤,並重新命名為"TC".2.運行TC.進入TC檔夾,雙擊tc.exe
(d:\tc\tc)第二章演算法簡介及程式的基本結構本章要點:瞭解演算法的基本概念掌握程式的基本結構演算法(algorithm)是對特定問題求解步驟的一種描述。程式=數據結構+演算法+程式設計方法+編程語言2.1演算法的概念例1.
有50個學生,要求將他們之中成績在80分以上者列印出來。用n表示學號,n1代表第一個學生學號,ni代表第i個學生學號。用g代表學生成績,gi代表第i個學生成績,演算法可表示如下:S1:1iS2:如果gi80,則列印ni
和gi,否則不列印S3:i+1iS4:如果i50,返回S2,繼續執行;否則,演算法結束。2.2簡單演算法舉例(用自然語言描述法)例2將學生百分成績按分數段分級的程式。該演算法的核心部分是對輸入的每一個數進行比較判斷,以確定屬於的級別。若學生成績分佈是均勻的,演算法描述如下:S1:1iS2:a<60
a<70
a<80
a<90
不及格中等良好優秀及格YNYNYNYN輸入10000個數據,則需進行31500次比較。S3:i+1iS4:如果i10000,返回S2;否則,演算法結束。轉S3轉S3轉S3轉S3轉S3分數0—5960—6970—7980—8990—99比例0.050.150.40.30.10
不及格Ya<90
a<80
a<70
a<60
優秀中等及格良好YNNNYYY
學生成績分佈不是均勻的情況,演算法改進如下:輸入10000個數據,僅需進行22000次比較。例3:對一個大於或等於3的正整數,判斷它是不是一個素數。方法:將n(其中n3)作為被除數,將2到(n-1)各個整數輪流作為除數,如果都不能被整除,則n為素數。演算法表示如下:S1:輸入n的值S2:2i(i作為除數)
S3:n被i除,得餘數rS4:如果r等於0,表示n能被i整除,則列印n“不是素數”,演算法結束;否則執行S5S5:i+1iS6:如果in-1,返回S3;否則,列印n“是素數”,演算法結束。例4:求1-1/2+1/3–1/4+…+1/99–1/100。S1:
1signS2:1sumS3:2denoS4:(-1)*signsignS5:sign*(1/deno)termS6:sum+termsumS7:deno+1denoS8:若deno100返回S4;否則演算法結束。2.3演算法的特性1.演算法(algorithm)是對特定問題求解步驟的一種描述。程式=數據結構+演算法2.演算法的五個特性:有窮性:一個演算法必須在執行有窮步之後結束。確定性:演算法的每一步必須是確切定義的。對於相同輸入必須得到相同結果。有效性:演算法的每一步都是能夠實現的,即可操作的。輸入:演算法有零個或多個輸入。有輸出:演算法執行完畢,必須有一個或若干個輸出結果。2.4怎樣描述演算法2.4.1自然語言描述法2.4.2流程圖表示常用符號有:起止框輸入/輸出框判斷框處理框流程線開始1=>ii>50輸出gi和nii+1=>ii>50結束YNN輸入ni和gi
i+1=>igi>=80N1=>iY2.4.3程式的三種基本結構和改進的流程圖(N-S結構流程圖)一、順序結構
BA(a)AB(b)先執行A操作,再執行B操作,兩者是順序執行關係。N-S結構流程圖二、選擇結構當P條件為真時,執行A模組,否則執行B模組。APB真假(a)P真假AB(b)三、迴圈結構當P條件成立時,反復執行A,直到P為假。1.當型迴圈結構PA假真(a)當P為真A(b)當P為真2.直到型迴圈結構先執行A操作,再判斷P是否為假,若P為假,再執行A,直到P為真為止。AP假真(a)
A直到P為真(b)開始1=>ii>50輸出gi和nii+1=>ii>50結束YNN輸入ni和gi
i+1=>igi>=80N1=>iY2.4.5用偽代碼表示演算法:用介於自然語言和電腦語言之間的文字和符號來描述演算法
BEGIN1=>iwhile(i
50){inputni和gi
i+1=>I}
1=>iwhile(i
50){if(gi>=80)printni和gi
i+1=>i}END
2.4.6用電腦語言表示演算法
例4:求1-1/2+1/3–1/4+…+1/99–1/100。S1:
1signS2:1sumS3:2denoS4:(-1)*signsignS5:sign*(1/deno)termS6:sum+termsumS7:deno+1denoS8:若deno100返回S4;否則演算法結束。main(){intsign=1;floatdeno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;deno=deno+1;}printf(“%f”,sum);}2.4結構化程式設計方法1.自頂向下2.逐步細化3.模組化設計4.結構化編碼讀輸入{
輸入處理;
return輸入;}編輯輸入{
編輯輸入處理;
return
編輯好的輸入;}383.1C語言數據類型3.1.1C語言數據類型
整型字元型實型(浮點型)
枚舉類型
數組結構體類型共用體類型
單精確度型雙精度型基本類型構造類型指針類型空類型數據類型393.1C的數據類型整型字元型實型(浮點型)枚舉類型單精確度型雙精度型數組類型結構體類型共用體類型構造類型基本類型指針類型空類型數據類型403.2常量與變數3.2.1常量1.定義:在程式執行期間,其值不可改變的量稱為常量2.類型:數值常量例如:10,3,2.68等符號常量即用一個符號代表一個常量例如:#definePI3.1415926main(){floatr,l,s;
r=2;l=2*PI*r;s=PI*r*r;
printf(“l=%d,s=%d”,l,s);}41說明:符號常量必須先定義後才能用它表示一個數值。符號常量的值在其作用域內不能改變,也不能再被賦值。符號常量名習慣用大寫字母表示。423.2.2變數1.定義:程式執行期間值可以改變的量。2.命名規則:
變數名由識別字表示,只能由字母、數字和下劃線三種字元組成,且第一個字元必須為字母或下劃線。
例如:下列識別字中,不合法的變數名有:
M.D.John,12%gf,1add,_ce36,age&5thclass,lotus-1-2-3,cd*ef,float3.變數要“先定義,後使用”
定義格式:類型說明符識別字1,…,識別字n
例如:intx,y,z;(每個變數分配2個位元組)
floata,b,c,d;(每個變數分配4個位元組)3a43在C語言中,變數必須強制定義,其目的:1、凡未被事先定義的,不作為變數名。2、每一個變數被指定為一確定的類型,在編譯時就能為其分配相應的存儲單元。3、指定每一個變數為一確定的類型,在編譯時據此檢查該變數所進行的運算是否合法。例如:如果變數a,b是整型類型,則可以進行求餘運算:
a%b
而兩個實數類型的變數求餘是不允許的。44*選變數名時,要做到“見名知意”例如:namest_agexmnlclasssum*大小寫字母是兩個不同的字元,C變數名習慣用小寫字母表示。*建議變數名的長度不要超過8個字元。請注意453.3整型數據3.3.1整型常量的表示法十進位整數:由數字(0-9)和正負號表示
例如:123、-456、0等八進制整數:以0開頭數是八進制數例如:
0123即(123)8=(83)10(123)8=182+281+380=(83)10十六進制整數:以0x或0X開頭,例如:
0x123即(123)16=(291)10
-0x12即(-12)16=(-18)10463.3.2整型變數整型數據在內存中的存放形式(補數表示法:便於加減運算)inti;i=10;
10=(1010)22102522210餘數0101首位00000000
0000101000000000
0000101011111111
111101011111111
11111011010的原碼取反取反後再加1,得-10的補數10的表示法,正數的補數等於它的原碼-10472整型變數的分類
基本型:以int
表示短整型:以shortint
或short
表示
1.類型長整型:以longint
或long
表示
(123l、123L)無符號基本型(unsignedint)
無符號型無符號短整型(unsignedshort)
無符號長整型(unsignedlong)(-32768~32767)一個無符號整型變數中可以存放的正數的範圍比一般整型變數中正數的範圍擴大一倍。inta;/*變數a的數值範圍:-32768~32768*/unsignedintb;/*變數b的數值範圍:0~65535*/48
整型變數的字長short型∶字長16位(2個位元組)。long型∶字長32位(4個位元組)。int型∶隨編譯程序而定(可以是2個位元組,也可以是4個位元組)C要求long型數據長度不短於int型,
short型不長於int型。(short<=int<=long)long型可以得到大範圍的數據,但同時會降低運算速度,因此除非不得已,不要隨便使用long型。49整型數據的溢出:main(){inta,b;a=32767;b=a+1;printf(“”%d,%d”,a,b);運行結果:32767,-32767改進:將變數a和b改成long型,並按%ld格式輸出。50
整型數據的數據範圍請看P43表。注意:
1、在一個整數常量後面加一個字母l或L,則認為是long型常量。
2、在一個整數常量後面加一個字母u或U,則認為是unsignedint型常量。513.4實型數據3.4.1實型常量表示形式有如下兩種:
十進位數形式:由數字和小數點及正負號組成。(注意:必須有小數點)
例如:23.678.67823.
指數形式:由數字、小數點、字母e或E及正負號組成。
(注:e或E之前必須有數字,且後指數必須為整數)例如:3.5E-52e3
錯誤:E23.6e3.5.e6e
523.4.2實型變數實型變數可分為:
單精確度(float型)如:floatx,y;
雙精度型(double型)如:doublea,b,c;說明:1.float型變數在內存中占4個位元組;double型變數在內存中占8個位元組。2.單精確度實數提供7位有效數字;雙精度實數提供15~16位有效數字。3.一個實型常量不分float和
double型,一個實型常量可以賦給一個float型或
double型變數,並根據變數的類型截取實型常量中相應的有效位數字。例如:
floata;doubleb;a=123456.789e5;b=123456.789;
53main(){floata,c;doubleb;a=123456.789e5;b=123456789111111.789;c=a+20;printf(“a=%f,b=%f,c=%f\n”,a,b,c);}輸出結果:a=12345678848.000000,b=123456789111111.781000,c=12345678848.000000(避免將一個很大的數與一個很小的數相加,,以免出現舍入誤差)543.5字元型數據3.5.1字元常量1.字元常量:用單引號括起來的一個字元。
例如:‘a’‘A’‘$’‘!’
注:‘a’與‘A’是的字元常量不同2.轉義字元:以一個‘\’開頭的字元序列
例如:‘\n’換行‘\t’橫向跳格(水準製錶)‘\b’退格‘\v’豎向跳格(垂直製錶)‘\r’回車‘\f’走紙換頁‘\a’報警‘\0’空字元
55說明:1、“\ddd”與“\xhh”分別表示用八進制數或十六進制數表示一個字元。
例:‘\101’代表ASCII碼(十進位)為65的字元‘A’.
系統中所有字元都有ASCII值(見374頁)2、由於\’”在C語言中都有了特殊的意義,故要想在字串中使用它們,須在其前面再加上一個反斜線。例如:\\
反斜線\’
單引號\”
雙引號
3、除了前面介紹的特殊轉義字元外,‘\字母’代表字母本身。如‘\c’代表字母c。56判斷下列字串的長度:
“\\\’\054”“\x56\”\\\c\ta”
“\\\n\t\bab”
57583.5.2字元變數定義形式:char識別字1,識別字2,…
,識別字n
例如:charc1,c2,c3,ch;c1=‘a’;c2=‘b’;c3=‘c’;ch=‘d’;說明:1、字元變數在內存中占一個位元組。2、在內存中,是把字元對應的ASCII碼值放到存儲單元中.3、字元型數據與整型數據之間可以通用.。6659main(){charc1,c2;c1=97;c2=98;printf(“%c%c\n”,c1,c2);printf(“%d%d\n”,c1,c2);}輸出結果:ab9798main(){inti;charc;i=‘a’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}輸出結果:a,97a,97603.5.4字串常量1.定義:括在一對雙引號之內的字元序列或轉義字元序列稱為字串常量。例如:“Howareyou!”“a”“*abc\n\t”2.存儲:字串中的字元依次存儲在內存中一塊連續的區域內,並且把空操作字元‘\0’自動附加到字串的尾部作為字串的結束標誌。故字元個數為n的字串在內存中應占n+1個位元組。例:c=“china”
china\061‘b’與‘B’是否相同?‘b’與“b”是否相同?b為98,B為66'b'是字元常量,“b"是字串常量623.6變數賦初值1.初始化:在定義變數的同時為變數賦初值2.形式:類型識別字變數名=常量或常量運算式
例如:
intx=10;charch=‘a’;變數賦初值允許使用符號常量
例如:
#definePI3.1415926…...floatx=PI;…...
可對被定義的變數的一部分賦初值
例如:
inta,b,c=1,d=2;floatr=2,l,s;可對幾個變數賦以同一個初值
例如:
inta=6,b=6,c=6;
或可寫為:inta=b=c=6;633.7各類數值型數據間的混合運算一、運算過程:先自動轉換成同類數據,再進行運算。
二、轉換規則:低字長類型轉換成高字長類型。double←float
↑long
↑unsigned
↑int←char,short①向左的橫向箭頭表示即使在同一種數據類型間進行運算時也要進行轉換。用於提高精度。②向上縱向箭頭表示當運算對象類型不同時的轉換方向。643.7各類數值型數據間的混合運算形式:隱式轉換(由系統自動進行)顯式轉換(強制類型轉換)隱式轉換的轉換規則:
intunsignedintlongintunsignedlongintdoubleshort,charfloat(1)float型數據一律轉換成double型數據。(2)char和shortint型數據一律轉換成int型數據以上兩條轉換原則說明:即使兩個運算元類型相同,但只要它們同屬char,shortint或float類型,則轉換一定發生。65例:若有:inti;floatf;doubled;longe;
試判斷運算式
3+‘b’+i*f-d/e的類型intunsignedintlongintunsignedlongintdoubleshort,charfloatdouble型66
C語言使用的基本運算式有:
⑴賦值運算式,如:a=3⑵算數運算式,如:3+4*2⑶關係運算式,如:3>2⑷邏輯運算式,如:3>5&&a>=b⑸條件運算式,如:a>b?a:b⑹逗號運算式,如:a=3,b=4,c=5673.8算術運算符和算術運算式1、基本的算術運算符:
+-
*/%說明:(1)上述運算符均為雙目運算符(即有兩個運算元)(2)在“/”運算中,若運算元均為整數,則執行整除運算,舍去小數部分。例如:5/3=(3)“%”要求兩側均為整數,“%”運算不能用於float和double型數據例如:5%3=2
682、算術運算式和運算符的優先順序與結合性(1)算術運算式:用算術運算符和括弧將運算元連接起來的,符合C語法規則的式子。例如:‘a’+‘b’+a*b/c+2.8(2)優先順序:*/%高於+-(3)結合性:“自左至右的結合方向”例如:a-b+c3、強制類型轉換
形式:(類型名)(運算式)例如:(double)(a+b)
69說明:(1)運算式應用括弧括起例如:(int)(x+y);
若要得到x/2的小數部分,應寫為:
(float)x/2還是float(x/2)(2)在強制類型轉換時,得到一個所需類型的中間變數,原來變數類型未發生變化。例如:floatx=8.6;inty;y=(int)x;70請看下麵程式段:
main(){floatx;inti;x=3.6;i=(int)x;printf(“x=%f,i=%d”,x,i);}輸出結果:x=3.600000,i=3注意:強制類型轉換後並不改變原來變數的類型714、自增、自減運算符(++、--)作用:使變數的值增1或減1,如:++i,--i(使用之前,先使i的值加(減)1)
i++,i--(使用之後,使i的值加(減)1)
++i先執行i=i+1,再使用i的值
i++先使用i的值,再執行i=i+1例如:inta=1,b;b=++a;b=a++;舉例:
intj,i=3;j=++i;/*j的值為4,i為4*/j=i++;/*j的值為4,然後i的值變為5*/j=-i++;/*j的值-5,然後i的值變為6*/72說明:(1)為單目運算符(2)++、--只能用於變數,而不能用於常量或運算式。
例如:10++,(x+y)++
,++’a’,b++中合法的為:(3)自增、自減運算符為右結合性(即自右至左)。例如:-a++
-(a++)
4、自增、自減運算符(++、--)錯誤的結合(-a)++73練習題設a=2,則執行語句k=++a+a++後的k值為多少?(k=6,a=4)a=(i++)+(i++)+(i++)?printf(“%d,%d”,i,i++)?
請避免這種寫法743.9賦值運算符和賦值運算式1、賦值運算符(=)形式:變數名=常量或運算式作用:將右邊常量或運算式的值賦給左邊的變數例如:b=c+d要求:如果運算式類型與左邊的變數的類型不匹配,自動進行類型轉換。
752、類型轉換的原則(1)將實型數據賦給整型變數時,捨棄實數的小數部分如:若a為int型變數,執行a=3.56後,則a的值3(2)將整型數據賦給實型數據時,數值不變,但以浮點形式存儲到變數中。如:若b為float型變數,執行b=35後,則b為35.00000(3)整型數據賦給字元型變數時,只將低8位原封不動地送到字元變數中(即截斷)。001000010000000100100001如:i=289c=33c=‘!’76(4)字元型數據賦給整型變數時,將字元數據(8位)放到整型變數低8位中。高8位則需要依據“符號擴展”來決定。例1(無符號字元數據賦給整型變數)
unsignedcharc;inti;c=254;i=c;11111110c=254i=2540000000011111110例2(TurboC系統把字元處理為帶符號的)
charc;inti;c=254;i=c;/*變數c以整數形式輸出為-2*/11111110c=254i=-211111111
1111111077(5)將帶符號數據賦給長度相同的無符號型變數,原樣照賦。(6)double賦給float時,截取前面7位有效數字。78例3:(帶符號int型數據賦給long型變數)
inta;longb;a=254;b=a;0000000000000000
0000000011111110a=2540000000011111110b=254例4:(帶符號int型數據賦給long型變數)
inta;longb;a=-2;b=a;1111111111111111
1000000011111110a=-21111111111111110b=-279例5:(無符號int型數據賦給long型變數)
unsignedinta;longb;a=65534;b=a;00000000000000001111111111111110a=655341111111111111110b=65534例6:(有符號數據賦給無符號變數)
inta;unsignedintb;a=-2;b=a;1111111111111110a=-21111111111111110b=6553480P66(3.11)寫出下麵賦值的結果。格中寫了數值的是要將它賦給其他類型的變數,將所有空格添上賦值後的數值。int9910076536842-1char‘c’‘d’‘L’‘5’‘D’‘*’X
unsignedint991007653684265535float99.000000100.00000076.00000053.6568.00000042.00000065535.000000longint991007653684265535813、複合賦值運算符複合賦值運算符:在賦值符“=”之前加上其他運算符共有10種複合賦值運算符
+=,-=,*=,/=,%=,
<<=,>>=,&=,^=,|=82例如:a+=3a=a+3x*=y+3x=x*(y+3)4、賦值運算式定義:由賦值運算符將一個變數和一個運算式連接起來的式子。形式:
變數=運算式說明:賦值運算式的值為被賦值的變數的值。例如:a=b=c=6a=(b=4)+(c=6)a=(b=4)*(c=6)83練習:寫出順序執行下列運算式運算後的x值:1.x=a=b=102.x=25%(c=3)
X=10X=1賦值運算式中可以包含複合賦值運算符例如:若a=12,計算運算式a+=a-=a*a運算後a的值
第一步:a-=a*aa=a-a*a=12-12*12=-132
第二步:a+=-132a=a+(-132)=-264843.10逗號運算符和逗號運算式1.逗號運算符:即“,”優先順序:為所有運算符中級別最低的。2.逗號運算式形式:運算式1,運算式2,……,運算式n
求解過程:順次求解運算式1,運算式2……
最後求解運算式n。逗號運算式的值為運算式n的值。例如:a=3*5,a*4a=3*5,a*4,a+5x=(a=4%3,a+1,a*10)6020104.1C語句概述一、C程式結構C程式根源程式檔1根源程式檔2根源程式檔n••••••預處理命令全局變數聲明函數1函數n••••••函數首部函數體局部變數聲明執行語句二、C語句概述C語句分類:
1.控制語句
2.函數調用語句
3.運算式語句
4.空語句
5.複合語句
一條完整的C語句必須以“;”結束。“;”是一個語句不可缺少的一部分。1.控制語句:完成一定的控制功能。C有9種控制語句:
⑴if()~else~(條件語句)
⑵for()~(迴圈語句)
⑶while()~(迴圈語句)
⑷do~while()(迴圈語句)
⑸continue(結束本次迴圈語句)
⑹break(中止執行switch或迴圈語句)
⑺switch(多分支選擇語句)
⑻goto(轉向語句)
⑼return(從函數返回語句)2.函數調用語句
由一次函數調用加一個“;”構成。如:printf(“HelloWorld!”);函數調用分號3.運算式語句
由運算式加上“;”構成。如:x+4*y;算術運算式語句
4*7,4+8;逗號運算式語句
x=4*7;賦值運算式語句(賦值語句)4.空語句
由一個“;”構成。即:;作用:①程式轉向點;
②什麼也不做的循環體。whiel(i<=11);5.複合語句
用{}括起的一組語句。如:if(x1>x2){y=x1*x1+x2;printf("y=%d",y);}不能省略不能加“;”4.空語句
由一個“;”構成。即:;作用:①程式轉向點;
②什麼也不做的循環體(待開發)。5.複合語句
用{}括起的一組語句。①複合語句中的每一個語句還可以是複合語句;
②複合語句儘管可由多個語句組合,但它只相當於一個語句,在任何單一語句可以存在的地方,複合語句都可以存在。4.2賦值語句
⑵賦值運算式和賦值語句不同,賦值運算式可以被包含在其他運算式之中。如:if((a=b)>0)t=a;
其執行過程是:先進行賦值運算(將b的值賦給a),然後判斷a是否大於0,如大於0,執行t=a。如果寫成:if((a=b;)>0)t=a;錯了。在if的條件中不能包含賦值語句⑴
C語言中的賦值號“=”是一個運算符。注意:4.3數據輸入輸出的概念及在C語言中的實現一、數據輸入輸出的概念電腦的輸入輸出是以電腦主機為主體而言。輸入:從外部通過輸入設備(如,鍵盤、磁片、光碟、掃描器等)向電腦輸入數據。輸出:從電腦向外部設備(如,顯示幕、打印機、磁片等)輸出數據。二、數據輸入輸出在C語言中的實現1.調用輸入輸出函數實現輸入輸出操作
C語言本身不提供輸入輸出語句,輸入和輸出操作是通過調用C語言庫函數中輸入輸出函數來實現的。如:putchar函數——輸出字元
getchar函數——輸入字元
printf函數——格式輸出
scanf函數——格式輸入
puts函數——輸出字串
gets函數——輸入字串1、C語言庫函數已被編譯成目標檔(二進位形式)2、根源程式必須先編譯成目標檔。根源程式中的輸入輸出函數等庫函數,在編譯時並不被翻譯成目標指令。3、生成好的目標檔(.OBJ)必須與與系統的函數庫(以及其他的目標檔)進行連接,,形成可執行檔(EXE)4、運行EXE檔時,調用已被連接的函數庫中的系統函數。main(){inta,b;a=10;b=20;
printf(“a=%d,b=%d”,a,b);}printf()的目標代碼系統函數庫……………….2.檔開頭應有“#include”命令
在調用標準輸入輸出庫函數時,檔開頭應有預編譯命令:
#include<stdio.h>
或#include“stdio.h”
其中,stdio.h是“頭檔”,包含了與用到的標準輸入輸出函數有關的資訊。
系統允許在使用printf和scanf兩個函數時可不加“#include”命令。4.4字元數據的輸入與輸出一、putchar函數(字元輸出函數)一般格式:putchar(c)必須有預編譯命令∶#include<stdio.h>功能∶從終端輸出一個字元,且轉換成ascii
碼返回。說明:其中c可以是字元型常量、字元型變數、整型常量、整型變數運算式。例:#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);putchar(‘\’’);}輸出結果:BOY’一般格式:getchar()——沒有參數必須有預編譯命令∶#include<stdio.h>功能∶從終端輸入一個字元。#include”stdio.h”main(){charc;c=getchar();putchar(c);}
a例:a二、getchar函數(字元輸入函數)4.5格式輸入輸出函數printf();scanf();格式字元說明d,i用來輸入有符號的十進位整數u用來輸入無符號的十進位整數o用來輸入無符號的八進制整數x,X用來輸入無符號的十六進制整數c用來輸入單個字元s用來輸入字串f用來輸入實數(小數或指數)e,E,g,G與f作用相同,e與f,g可以互相替換4.5.1printf函數(格式輸出函數)功能:向終端輸出若干個任意類型的數據。(一)printf函數的一般格式printf(格式控制,輸出表列)舉例:main(){inta=3,b=4;printf(“a=%db=%d\n”,a,b);}輸出結果:a=3b=4格式說明(格式字元)普通字元輸出表列轉義字元main(){charc1=‘a’,c2=‘b’,c3=‘c’,c4=‘101’,c5=‘116’;printf(“a%cb%c\tc%c\tabc\n”,c1,c2,c3);printf(“\t\b%c%c”,c4,c5);}aabbccabcANprintf(格式控制,輸出表列)1.格式說明,由“%”和格式字元組成,如%d,%f等。
說明:“輸出表列”是需要輸出的一些數據(變數、表達式)。“格式控制”是用雙引號括起來的字元也稱“轉換控制字串”,它包括三種資訊:3.轉義字元,將\後面的字元轉換成另外的意義P48表2.普通字元,即需要原樣輸出的字元。(二)格式字元
對不同類型的數據用不同的格式字元。1.d格式符——用來輸出十進位整數。(1)%d:按整型數據的實際長度輸出。如:inta=123;printf(“%d”,a);
結果:123(二)格式函數
對不同類型的數據用不同的格式字元。1.d格式符——用來輸出十進位整數。(2)%md:m為指定的輸出字段的寬度。若數據位數小於m,則左端補以空格;若大於
m,則按實際位數輸出。如:inta=123,b=12345;printf(“%4d,%4d”,a,b);
結果:123,12345(二)格式函數
對不同類型的數據用不同的格式字元。1.d格式符——用來輸出十進位整數。(3)%ld:輸出長整型數據。也可以對長整型數據指定字段寬度。如:longa=1234567;printf(“%ld,%8ld,%5ld”,a,a,a);
結果:1234567,1234567,12345672.o格式符——以8進制數形式輸出整數.
輸出的數值不帶符號,即將符號也一起作為八進制數的一部分輸出。
如:inta=-1;printf(“%d,%o”,a,a);
結果:-1,177777
o格式符同d格式符一樣,可以輸出長整型數據,也可以指定字段寬度。11111111111111113.x格式符——以16進制數形式輸出整數。同樣不會出現負的十六進制數。4.u格式符——以十進位形式輸出unsigned型數據如:main(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}輸出結果:a=-1,177777,ffff,65535b=-2,177776,fffe,655345.
C格式符——用來輸出一個字元。
一個整數,只要它的值在0~255範圍內,也可以用字符形式輸出,在輸出前,將該整數轉換成相應的ASCII字元;反之,一個字元數據也可以用整數形式輸出。如:main(){charc=‘a’;inti=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}
輸出結果:a,97a,976.s格式符——用來輸出一個字串。(1)%s:按原長度輸出字串。如:printf(“%s”,“CHINA”)
輸出結果:CHINA(2)%ms:輸出的字串占m列,如字串本身長度大於m,則突破m的限制,將字串全部輸出,若串長小於m,則左補空格。(3)%–ms:如果串長小於m,則在m列範圍內,字串向左靠,右補空格。(4)%m.ns:輸出占m列,但只取字串中左端
n個字元。輸出在列的右側,左補空格。如果n>m,則自動取值,即保證個字元正常輸出。(5)%–m.ns,其中m、n含義同上,n個字元輸出在m列範圍的左側,右補空格。如:printf(“%3s,%7.2s,%.4s,%-5.3s\n”,“CHINA”,“CHINA”,“CHINA”,“CHINA”);輸出結果:CHINA,CH,CHIN,CHI7.f格式符——以小數形式輸出實數。(1)%f:不指定字段寬度,由系統自動指定,使整數部分全部如數輸出,並輸出6位小數。注意float型和double型數據的有效位數,如:floatx=123456.123;printf(“%f”,x);
輸出結果:123456.125000main(){
double
x,y;x=1111111111111.111111111;y=1111111111111.111111111;printf(“%f”,x+y);}2222222222222.222170(2)%m.nf:指定輸出的數據共占m列,其中有n
位小數。若數據長度小於m,則左端補空格。(3)%–m.nf:與%m.nf基本相同,只是使輸出的數值向左端靠,右端補空格。如:floatf=123.456;printf(“%10.2f,%-10.2f”,f);
輸出結果:
123.46,123.468.e格式——以指數形式輸出實數。
(1)%e如:printf(“%e”,123.456);
輸出結果:1.234560e+0026位3位一般共占13列寬度(2)%m.ne和%–m.ne:m、n和“–”字元含義與前相同。此處n指數據的數字部分(又稱尾數)
的小數位數。9.g格式符——用來輸出實數,它根據數值的大小,自動選f格式或e格式(選擇輸出時占寬度較小的一種),且不輸出無意義的零。如:f=123.468;
printf(“%f,%e,%g”,f,f,f);輸出如下:123.468000,1.234680e+002,123.46810列13列如:f=123.468;
printf(“%f,%e,%g”,f,f,f);輸出如下:123.468000,1.234680e+002,123.46810列二、scanf函數(格式輸入函數)(一)scanf(格式控制,地址表列)1015main(){inta,b,c;scanf(“%d,%d”,&a,&b);printf(“a=%d,b=%d”,a,b);輸入:10,15輸出:a=10,b=15ab如:inta,b,c;scanf(“%d%d%d”,&a,&b,&c);輸入形式:1017181inta,b,c;scanf(“%d,%d,%d\n”,&a,&b,&c);輸入形式:10,11,12
scanf(“%3d%3d%c”,&a,&b,&ch);
輸入形式:123456abc
結果:a=123b=456ch=‘a’scanf(“%d%d%c”,&a,&b,&ch);
輸入形式:123456abc
結果:a=123b=456ch=‘a’main(){charc1,c2;scanf(“c1=%c,c2=%c”,&c1,&c2);printf(“%c%c”,c1,c2);}輸入數據:c1=a,c2=b輸出數據:abmain(){intx,y,z;charch;scanf(“%7.2d%d%d%c”,x,y,z,ch);}main(){intx,y;scanf(“%5d,%3d”,&x,&y);}輸入數據:345,567
有錯嗎?說明:1.%後的“*”附加說明符,用來表示跳過它相應的數據。如:scanf(“%2d,%*3d,%2d”,&a,&b);
輸入:12,456,67
結果:a=12b=672.輸入數據時不能規定精度。╳
Scanf(“%7.2f”,&a);3、scanf(“a=%d,b=%d”,&a,&b);
輸入:a=12,b=134、scanf(“%c%c%c”,&a,&b,&c);
輸入:abc
空格和轉義字元都作為有效字元輸入main(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“%f%e”,&x,&y);scanf(“%c%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);}輸入數據:a=10b=201010ab輸出數據:10,20,10.00000,20.00000,a,b輸入方式2:a=10b=201020abmain(){inta,b;floatx,y;charc1,c2;scanf(“a=%db=%d”,&a,&b);scanf(“x=%fy=%e”,&x,&y);scanf(“c1=%cc2=%c”,&c1,&c2);printf(“%d,%d,%f,%f,%c,%c”,a,b,x,y,c1,c2);}輸入數據:a=10b=20x=10y=10c1=ac2=b輸出數據:10,20,10.00000,20.00000,a,b4.6順序結構程式設計(順序結構)(選擇結構)(迴圈結構)二、順序結構程式設計特點:程式按語句從上到下的排列順序依此執行,每條語句必須執行且只能執行一次,沒有執行不到或執行多次的語句。例如:已知圓柱體半徑6米,高7米,求體積。#definePI3.14159main(){floatr,h,s,v;r=6;h=7;s=PI*r*r;v=s*h;printf(“V=%f\n”,v);}例4.10輸入三角形的三條邊,求三角形的面積。分析:已知∶三角形的三條邊a,b,c。求解∶三角形的面積area。計算公式∶設s=
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 贵州城市职业学院《安全评价理论与技术》2023-2024学年第一学期期末试卷
- 贵阳职业技术学院《人机工程研究》2023-2024学年第一学期期末试卷
- 2025青海省建筑安全员《A证》考试题库
- 生态保护修复和水土流失综合治理项目可行性研究报告-生态修复需求迫切
- 贵阳人文科技学院《工科大学化学-有机化学基础》2023-2024学年第一学期期末试卷
- 广州中医药大学《物流信息系统》2023-2024学年第一学期期末试卷
- 2025陕西建筑安全员C证考试题库
- 2025云南省建筑安全员《A证》考试题库
- 广州应用科技学院《钢筋混凝土原理》2023-2024学年第一学期期末试卷
- 2025山西省建筑安全员C证(专职安全员)考试题库
- 17J008挡土墙(重力式、衡重式、悬臂式)图示图集
- 2025年济南铁路局招聘笔试参考题库含答案解析
- 2024至2030年中国大颗粒尿素行业投资前景及策略咨询研究报告
- 《长方体和正方体》复习(教案)
- 超声技术报告范文
- 思想道德与法治(同济大学)知到智慧树章节答案
- 小学语文阅读理解24个万能答题公式
- 湖南省怀化市2023-2024学年七年级上学期语文期末试卷(含答案)
- 《廊坊市绿色建筑专项规划(2020-2025)》
- 2024-2030年中国湿巾行业发展趋势及竞争策略分析报告
- 2023-2024学年全国小学二年级上语文人教版期末试卷(含答案解析)
评论
0/150
提交评论