版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
/01.C程序基本結(jié)構(gòu)一、C語(yǔ)言的特點(diǎn):1、C語(yǔ)言源程序的基本組成單位是函數(shù);一個(gè)C程序可由若干個(gè)函數(shù)組成,其中必須有且僅有一個(gè)以main命名的主函數(shù),其余的函數(shù)名稱可由編程者自行設(shè)定。,2、C程序的執(zhí)行總是由main()函數(shù)的第一個(gè)可執(zhí)行語(yǔ)句開始,到main()函數(shù)的最后一個(gè)可執(zhí)行的語(yǔ)句結(jié)束;而其他函數(shù)都是在main()函數(shù)開始執(zhí)行以后,通過(guò)其他函數(shù)的調(diào)用才得以運(yùn)行。3、C語(yǔ)言系統(tǒng)提供了豐富的庫(kù)函數(shù),用戶在程序中需要調(diào)用某個(gè)庫(kù)函數(shù)時(shí),必須用#include編譯預(yù)處理命令將描述該庫(kù)函數(shù)的頭文件包含進(jìn)去。二、C程序的書寫格式:1、語(yǔ)句可從分開放在任意多行內(nèi);如:printf(“ToC,”);printf(“ornottoC:”);與printf(“ToC,ornottoC:”);是等價(jià)的2、一行中可以有若干個(gè)語(yǔ)句;如:a=123;b=345; 3、每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào);三、C語(yǔ)言程序的運(yùn)行:1、編譯(Compile):將C源程序文件翻譯成能被計(jì)算機(jī)識(shí)別的二進(jìn)制形式的“目標(biāo)”文件;編譯時(shí),編譯器將檢查源程序每一條語(yǔ)句的語(yǔ)法錯(cuò)誤。2、建造(Bulid):C語(yǔ)言程序示例:顯示“Hello”#include<stdio.h>intmain(void){printf(“Hello.\n”);return0;}說(shuō)明:#include<stdio.h>是必不可少的,它包含了C語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)的相關(guān)信息;printf函數(shù)來(lái)自”標(biāo)準(zhǔn)輸入輸出庫(kù)”,可以產(chǎn)生格式化輸出;\n告訴printf函數(shù)執(zhí)行完信息顯示后要進(jìn)行換行操作;return0表明程序終止時(shí)會(huì)向操作系統(tǒng)返回值0;{}來(lái)標(biāo)出main()函數(shù)的起始和結(jié)束。02.數(shù)據(jù)類型一、C語(yǔ)言的特點(diǎn):1、C語(yǔ)言源程序的基本組成單位是函數(shù);一個(gè)C程序可由若干個(gè)函數(shù)組成,其中必須有且僅有一個(gè)以main命名的主函數(shù),其余的函數(shù)名稱可由編程者自行設(shè)定。2、C程序的執(zhí)行總是由main()函數(shù)的第一個(gè)可執(zhí)行語(yǔ)句開始,到main()函數(shù)的最后一個(gè)可執(zhí)行的語(yǔ)句結(jié)束;而其他函數(shù)都是在main()函數(shù)開始執(zhí)行以后,通過(guò)其他函數(shù)的調(diào)用才得以運(yùn)行。3、C語(yǔ)言系統(tǒng)提供了豐富的庫(kù)函數(shù),用戶在程序中需要調(diào)用某個(gè)庫(kù)函數(shù)時(shí),必須用#include編譯預(yù)處理命令將描述該庫(kù)函數(shù)的頭文件包含進(jìn)去。二、C程序的書寫格式:1、語(yǔ)句可從分開放在任意多行內(nèi);如:printf(“ToC,”);printf(“ornottoC:”);與printf(“ToC,ornottoC:”);是等價(jià)的2、一行中可以有若干個(gè)語(yǔ)句;如:a=123;b=345;3、每個(gè)語(yǔ)句和數(shù)據(jù)定義的最后必須有一個(gè)分號(hào);三、C語(yǔ)言程序的運(yùn)行:1、編譯(Compile):將C源程序文件翻譯成能被計(jì)算機(jī)識(shí)別的二進(jìn)制形式的“目標(biāo)”文件;編譯時(shí),編譯器將檢查源程序每一條語(yǔ)句的語(yǔ)法錯(cuò)誤。2、建造(Bulid):C語(yǔ)言程序示例:顯示“Hello”#include<stdio.h>intmain(void){printf(“Hello.\n”);return0;}說(shuō)明:#include<stdio.h>是必不可少的,它包含了C語(yǔ)言標(biāo)準(zhǔn)輸入輸出庫(kù)的相關(guān)信息;printf函數(shù)來(lái)自”標(biāo)準(zhǔn)輸入輸出庫(kù)”,可以產(chǎn)生格式化輸出;\n告訴printf函數(shù)執(zhí)行完信息顯示后要進(jìn)行換行操作;return0表明程序終止時(shí)會(huì)向操作系統(tǒng)返回值0;{}來(lái)標(biāo)出main()函數(shù)的起始和結(jié)束。03,運(yùn)算符和表達(dá)式1、算術(shù)運(yùn)算符和表達(dá)式+:加法運(yùn)算符,如3+5;-:減法運(yùn)算符,如5-3;*:乘法運(yùn)算符,如5*8;/:除法運(yùn)算符,如3/6;參與運(yùn)算量均為整型時(shí),結(jié)果也為整型,舍去小數(shù);若運(yùn)算量中有一個(gè)是實(shí)型,則結(jié)果為雙精度實(shí)型。%:模運(yùn)算符,也稱“取余運(yùn)算符”,用于計(jì)算兩數(shù)相除后的余數(shù),如5%3=2;2、賦值運(yùn)算符和賦值表達(dá)式 賦值運(yùn)算符:”=”,其作用是將一個(gè)表達(dá)式的值賦給一個(gè)變量;其一般形式為:變量=表達(dá)式如:x=a+b;賦值表達(dá)式的功能是計(jì)算表達(dá)式的值再賦予左邊的變量。賦值運(yùn)算符具有右結(jié)合性。因此a=b=c=5可理解為a=(b=(c=5));復(fù)合賦值運(yùn)算符:+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=構(gòu)成復(fù)合賦值表達(dá)式的一般形式為:變量雙目運(yùn)算符=表達(dá)式它等價(jià)于:變量=變量運(yùn)算符表達(dá)式如:a+=5等價(jià)于a=a+5x*=y+7等價(jià)于x=x*(y+7)r%=p等價(jià)于r=r%p3、類型轉(zhuǎn)換如果賦值運(yùn)算符兩邊的數(shù)據(jù)類型不相同,系統(tǒng)將自動(dòng)進(jìn)行類型轉(zhuǎn)換,即把賦值號(hào)右邊的類型換成左邊的類型。具體規(guī)定如下:1)實(shí)型賦予整型,舍去小數(shù)部分。前面的例子已經(jīng)說(shuō)明了這種情況。2)整型賦予實(shí)型,數(shù)值不變,但將以浮點(diǎn)形式存放,即增加小數(shù)部分(小數(shù)部分的值為0)。3)字符型賦予整型,由于字符型為一個(gè)字節(jié),而整型為二個(gè)字節(jié),故將字符的ASCII碼值放到整型量的低八位中,高八位為0。整型賦予字符型,只把低八位賦予字符量。4、自增、自減運(yùn)算符:自增運(yùn)算符:“++”,功能是將變量的值加1;自減運(yùn)算符:“--”,功能是將變量的值減1;可有以下幾種形式: ++ii自增1后再參與其它運(yùn)算。 --ii自減1后再參與其它運(yùn)算。 i++i參與運(yùn)算后,i的值再自增1。 i--i參與運(yùn)算后,i的值再自減1。注:(1)”++”、”--“的操作對(duì)象只能是變量;(2)”++”、”--“運(yùn)算優(yōu)先級(jí)相同,且結(jié)合方向自右向左;-i++應(yīng)理解為-(i++),【例】自增、自減運(yùn)算、#include<stdio.h>main(){inti=8;printf("%d\n",++i);/*i先加1,再輸出i,輸出結(jié)果為9*/printf("%d\n",--i);/*i先減1,再輸出i,結(jié)果為8*/printf("%d\n",i++);/*先輸出i,輸出結(jié)果為8,i再加1,*/printf("%d\n",i--);/*先輸出i,輸出結(jié)果為9,i再減1,*/printf("%d\n",-i++);/*先加輸出-i,輸出結(jié)果為-8,i再加1*/printf("%d\n",-i--);/*先輸出-i,輸出結(jié)果為-9,i再減1*/}5、求字節(jié)運(yùn)算符計(jì)算表達(dá)式的結(jié)果所占字節(jié)數(shù)或某種數(shù)據(jù)類型的定義字節(jié)數(shù)。一般格式:sizeof(數(shù)據(jù)類型標(biāo)識(shí)符)或sizeof(表達(dá)式)如:sizeof(float)的值為4,占4個(gè)字節(jié);sizeof(2*3)的值為2,占2個(gè)字節(jié);6、關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符:“<”(小于)、“<=”(小于等于)、”>”(大于)、”>=”(大于等于)、”==”(等于)、“!=”(不等于)關(guān)系表達(dá)式:若關(guān)系表達(dá)式成立,其值為“真”,否則為“假”;在C語(yǔ)言中,用0代表“假”,用1代表“真”;7、邏輯運(yùn)算符和邏輯表達(dá)式:邏輯運(yùn)算符:“!”(非)、“&&”(與)、“||”(或);運(yùn)算優(yōu)先級(jí):!>&&>||邏輯表達(dá)式:用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子;邏輯表達(dá)式的結(jié)果仍然是邏輯量(“真”或“假”)8、條件運(yùn)算符:一般格式:<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>先計(jì)算表達(dá)式1,若表達(dá)式1的值為真,則計(jì)算表達(dá)式2的值,且表達(dá)式2的值為整個(gè)條件表達(dá)式的值;否則,計(jì)算表達(dá)式3的值,且表達(dá)式3的值即為整個(gè)條件表達(dá)式的值。9、逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式逗號(hào)運(yùn)算符:”,”作為運(yùn)算符,其功能是將多個(gè)表達(dá)式組成一個(gè)表達(dá)式;一般形式:表達(dá)式1,表達(dá)式2,…,表達(dá)式n求解過(guò)程:先計(jì)算表達(dá)式1,再計(jì)算表達(dá)式2,依此計(jì)算表達(dá)式n,最終,表達(dá)式n的值即為整個(gè)表達(dá)式的值。04.順序結(jié)構(gòu)一、概述:順序語(yǔ)句按照語(yǔ)法形式分為:表達(dá)式語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、復(fù)合語(yǔ)句、流程控制語(yǔ)句和空語(yǔ)句。1、表達(dá)式語(yǔ)句:語(yǔ)法格式:表達(dá)式;如:a+4;其中賦值語(yǔ)句為最典型的表達(dá)式語(yǔ)句,如:a=5;a=b+3;特別提示:分號(hào)(;)是表達(dá)式語(yǔ)句中不可缺少的一部分。2、函數(shù)調(diào)用語(yǔ)句:如:printf(”Iamastudent!”);其中:printf()為系統(tǒng)提供的函數(shù),用于顯示信息。3、復(fù)合語(yǔ)句:所謂“復(fù)合語(yǔ)句”即由一對(duì)“{}”括起來(lái)的一組語(yǔ)句,也稱“塊語(yǔ)句”或“分程序”。一般形式為:{語(yǔ)句1語(yǔ)句2...語(yǔ)句n}如:{i++;j=a+3;printf("%d,j=",i,j);}特別提示:復(fù)合語(yǔ)句中的最后一條語(yǔ)句的分號(hào)不得缺少;復(fù)合語(yǔ)句的“}”之后不得有分號(hào)。4、空語(yǔ)句:“空語(yǔ)句”即為一個(gè)獨(dú)立的分號(hào)。如:main(){...;...}二、數(shù)據(jù)的輸入輸出C語(yǔ)言提供了一些輸入輸出函數(shù),如printf()和scanf(),在程序中調(diào)用這些輸入輸出函數(shù)時(shí),必須將標(biāo)準(zhǔn)輸入輸出頭文件“stdio.h”包含到用戶所編寫的源程序中。如:#include<stdio.h>其中:#include命令一般寫在程序的開頭位置。1、格式輸入輸出1、格式輸出函數(shù)printf()(1)一般格式:printf(格式字符串,輸出列表)其中:“格式字符串”包括“輸出字符”和“格式控制字符”(由%和格式字符組成,指定輸出項(xiàng)的輸出格式)。?d格式符:用于輸出十進(jìn)制整數(shù);%d:以十進(jìn)制形式顯示輸出變量的值;%5d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間,若不夠5位數(shù)字,則左側(cè)補(bǔ)空格;%-5d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間,左對(duì)齊;%5.3d:以十進(jìn)制形式顯示變量的值,且至少占用5個(gè)字符的空間并至少有3位數(shù)字,若不夠3位數(shù)字,則左側(cè)補(bǔ)0;如:#include<stdio.h>main(){inti;i=40;printf(“%d\n”,i);printf(“%5d\n”,i);printf(“%-5d\n”,i);printf(“%5.3d\n”,i);}?f格式符:用于以小數(shù)形式輸出實(shí)數(shù);%10.3f:以定點(diǎn)十進(jìn)制形式顯示變量的值,且總共用10個(gè)字符,其中,整數(shù)位6位,小數(shù)位3位,小數(shù)點(diǎn)1位;如:#include<stdio.h>main(){floatx;x=839.21f;printf(“%10.3f\n”,x);}?c格式符:用于輸出一個(gè)字符;如:x=”a”,y=”b”,則printf(%c%c",x,y)的輸出結(jié)果為:ab若變量的值為整數(shù),則輸出該整數(shù)值為ASCII碼的字符:如x=65,y=98,則printf(“%c,%c”,x,y)的輸出結(jié)果為:A,b;同理,一個(gè)字符的數(shù)據(jù)也可以以整數(shù)的形式輸出;如x=’a’,y=’B’,則printf(“%d,%d”,x,y)的輸出結(jié)果為:97,66?s格式符:用于輸出一個(gè)字符串。如:printf(“%s”,”Iamastudent!”)?e,E格式符:用于以指數(shù)形式輸出實(shí)數(shù)。如:printf(“%e”,123.456),則輸出結(jié)果為:1.234560e+002;?g,G格式符:用于輸出實(shí)數(shù),根據(jù)數(shù)值的大小自動(dòng)選擇f格式或e格式。2、格式輸入函數(shù)scanf()(1)一般格式:scanf(格式字符串,變量地址表)其中:格式字符串使用雙引號(hào)括起來(lái)的字符串,包括“普通字符”(按原樣輸入)、“格式控制字符”(由%和格式字符組成,用來(lái)標(biāo)定輸入數(shù)據(jù)的格式)。變量地址表是由若干個(gè)變量地址組成的表列,可以是變量的地址,也可以使字符串的首地址。?d格式:用于輸入十進(jìn)制整數(shù);如:scanf(“%d,%d”,&x,&y);則輸入格式為:123,3456?u格式:用于輸入十進(jìn)制無(wú)符號(hào)整數(shù);?f格式:用于輸入以小數(shù)形式的實(shí)數(shù);如:scanf(“%f,%f”,&x,&y);則輸入格式為:123.23,23.456?c格式:用于輸入一個(gè)字符;如:scanf(“%c,%c”,&x,&y);則輸入格式為:a,b?s格式:用于輸入一個(gè)字符串;如:scanf(“%s”,a);假定a為字符數(shù)組,則輸入格式為:abcdef注:輸入的字符串中間不能包含空格。特別說(shuō)明:?對(duì)于變量,”&”加變量名即為該變量的地址;如:&a、&b等分別表示變量a和變量b的地址;?對(duì)于字符串?dāng)?shù)組或字符指針型變量,數(shù)組名和指針變量名本身即為其地址;?可以在%和格式字符之間加表示位數(shù)的數(shù)字;如:scanf(“%5s”,p);表示只能輸入5個(gè)字符給字符串指針p;3、字符數(shù)據(jù)的輸入輸出:(1)putchar()函數(shù):是向標(biāo)準(zhǔn)輸入輸出設(shè)備輸出一個(gè)字符;其調(diào)用格式為:putchar(ch);其中:ch為一個(gè)字符變量或常量;putchar()函數(shù)作用等同于printf(“%c”,ch);(2)getch()getche()和getchar()函數(shù):?getch():從鍵盤上讀入一個(gè)字符,但不顯示在屏幕上;?getche():從鍵盤上讀入一個(gè)字符,顯示在屏幕上;?getchar():從鍵盤上讀入一個(gè)字符,并顯示在屏幕上,但直到輸入回車鍵時(shí)才結(jié)束輸入,第一個(gè)字符為其函數(shù)的返回值。05.選擇結(jié)構(gòu)一、if語(yǔ)句:一般格式:if(表達(dá)式)語(yǔ)句;表示:當(dāng)“表達(dá)式”成立時(shí),則執(zhí)行“語(yǔ)句”;否則跳過(guò)“語(yǔ)句”;如:if(a>b)printf(“a>b!”);例:若用戶輸入的數(shù)為3的倍數(shù),則顯示”O(jiān)K”#include<stdio.h>main(){inta;scanf(“%d”,&a);if(a%3==0)printf(“OK”);}二、if-else語(yǔ)句:一般格式:if(表達(dá)式)語(yǔ)句1;else語(yǔ)句2;例:給出用戶輸入的兩個(gè)整數(shù)的較大者#include<stdio.h>main(){inta,b;scanf(“%d,%d”,&a,&b);if(a>b)printf(“themax=%d”,a);elseprintf(“themax=%d”,b);}三、if語(yǔ)句的嵌套1、if子句中嵌套:?if(表達(dá)式1)if(表達(dá)式2)語(yǔ)句1;else語(yǔ)句2;else語(yǔ)句3;?if(表達(dá)式1){if(表達(dá)式2)語(yǔ)句1;}else語(yǔ)句2;2、else子句中嵌套?if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;else語(yǔ)句3;?if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;3、嵌套一般格式:if(表達(dá)式1)語(yǔ)句1;elseif(表達(dá)式2)語(yǔ)句2;elseif(表達(dá)式3)語(yǔ)句3;…elseif(表達(dá)式n)語(yǔ)句n;else語(yǔ)句n+1;例:將用戶輸入的成績(jī)按以下規(guī)則轉(zhuǎn)換成等級(jí)成績(jī):分?jǐn)?shù):90~100等級(jí):優(yōu)分?jǐn)?shù):80~89等級(jí):良分?jǐn)?shù):70~79等級(jí):中分?jǐn)?shù):60~69等級(jí):與格分?jǐn)?shù):60以下等級(jí):不與格#include<stdio.h>main(){intd;printf(“輸入分?jǐn)?shù):”);scanf(“%d”,&d);if(d>=90)printf(“優(yōu)”);elseif(d>=80)printf(“良”);elseif(d>=70)printf(“中”);elseif(d>=60)printf(“與格”);elseprintf(“不與格”);}四、條件語(yǔ)句:表達(dá)式1?表達(dá)式2:表達(dá)式3執(zhí)行的過(guò)程:若表達(dá)式1的值為非0時(shí),該條件語(yǔ)句的職位表達(dá)式2,否則為表達(dá)式3;例:求一個(gè)整數(shù)的絕對(duì)值#include<stdio.h>main(){inti,absi;scanf(“%d”,&i);absi=i>0?i:-i;printf(“%d絕對(duì)值是%d\n”,i,absi);}五、switch語(yǔ)句switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1;break;case常量表達(dá)式2:語(yǔ)句2;break;…case常量表達(dá)式n:語(yǔ)句n;break;default:語(yǔ)句n+1;}例:商店賣貨物,每一件3.5元,按購(gòu)買的數(shù)量給與優(yōu)惠:購(gòu)買100件,優(yōu)惠5%;購(gòu)買200件以上,優(yōu)惠6%;購(gòu)買300件以上,優(yōu)惠8%;購(gòu)買400件以上,優(yōu)惠10%;購(gòu)買500件以上,優(yōu)惠15%;#include<stdio.h>main(){intn;floatp,price;scanf("%d",&n);switch(n/100){case1:p=0.05;break;case2:p=0.06;break;case3:p=0.08;break;case4:p=0.10;break;case5:p=0.15;break;}price=3.5*n*(1-p);printf("%應(yīng)付款=%7.2f\n",price);}06.循環(huán)結(jié)構(gòu)一、for語(yǔ)句:一般格式:for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語(yǔ)句;表示:先計(jì)算表達(dá)式1的值,再計(jì)算表達(dá)式2的值,若表達(dá)式2的值為0,則跳出循環(huán)體,轉(zhuǎn)去執(zhí)行循環(huán)體后面的程序命令;若表達(dá)式2的值非0,則執(zhí)行循環(huán)體中的語(yǔ)句,接著計(jì)算表達(dá)式3的值;而后,再?gòu)挠?jì)算表達(dá)式2的值開始重復(fù)上訴操作,直到表達(dá)式2的值為0時(shí)結(jié)束。例:計(jì)算sum=1+2+3+…+100的值”#include<stdio.h>main(){inti,sum;sum=0;for(i=1;i<=100;i++)sum=sum+i;printf(“sum=%d”,sum);}二、while語(yǔ)句:一般格式:while<表達(dá)式>語(yǔ)句;表示:先計(jì)算表達(dá)式的值,若為非0,則執(zhí)行循環(huán)體語(yǔ)句,然后再計(jì)算表達(dá)式的值,重復(fù)上述過(guò)程,直到計(jì)算表達(dá)式的值為0時(shí)結(jié)束循環(huán)。例:計(jì)算sum=1+2+3…+100的值#include<stdio.h>main(){inti,sum;i=1;sum=0;while(i<=100){sum=sum+i;i++;}printf(“sum=%d”,sum);}三、do-while語(yǔ)句1、一般格式:Do語(yǔ)句;While<表達(dá)式>;表示:先執(zhí)行一次循環(huán)語(yǔ)句,然后計(jì)算表達(dá)式的值,若表達(dá)式的值非0,則再執(zhí)行循環(huán)語(yǔ)句,然后從計(jì)算表達(dá)式的值開始重復(fù)上述過(guò)程,直到計(jì)算表達(dá)式的值為0,循環(huán)結(jié)束。例:計(jì)算sum=1+2+3…+100的值#include<stdio.h>main(){inti,sum;i=1;sum=0;do{sum=sum+i;i++;}while(i<=100);printf(“sum=%d”,sum);}四、break和continue語(yǔ)句:1、break語(yǔ)句:使用break語(yǔ)句可以提前結(jié)束由while、for、do-while語(yǔ)句構(gòu)成的循環(huán),而去執(zhí)行循環(huán)下面的語(yǔ)句。例:判定用戶輸入的一個(gè)數(shù)是否為素?cái)?shù)#include<stdio.h>main(){inta,d;printf(“請(qǐng)輸入一個(gè)整數(shù):”);scanf(“%d”,&a);for(d=2;d<a;d++)if(a%d==0)break;//跳出當(dāng)前的循環(huán),執(zhí)行循環(huán)后面的語(yǔ)句if(d<a)printf(“%d不是素?cái)?shù)”,a);elseprintf(“%d是素?cái)?shù)“,a);}2、continue:continue語(yǔ)句用于for、while、do-while語(yǔ)句中,其作用是結(jié)束本次循環(huán),接著進(jìn)入下一次是否執(zhí)行循環(huán)的判斷。例:輸入10個(gè)非0的整數(shù)并求和。#include<stdio.h>main(){inti,n=0,sum=0;while(n<10){printf(“請(qǐng)輸入整數(shù):”);scanf(“%d”,&i);if(i==0)continue;//若為0,則繼續(xù)輸入下一個(gè)數(shù)sum+=i;n++;}printf(“%d”,sum);}五、三種循環(huán)的比較:1、三種循環(huán)可以處理同一個(gè)問(wèn)題,一般情況下可以相互代替;2、while和do-while循環(huán)語(yǔ)句只在while語(yǔ)句之后指定循環(huán)條件,在循環(huán)體內(nèi)應(yīng)包含使循環(huán)趨于結(jié)束的語(yǔ)句;for循環(huán)語(yǔ)句可以在<語(yǔ)句3>中包含使循環(huán)趨于結(jié)束的語(yǔ)句;3、對(duì)于while和do-while循環(huán)語(yǔ)句,循環(huán)變量的初始化應(yīng)在while和do-while語(yǔ)句之前完成;for循環(huán)語(yǔ)句可以在<表達(dá)式1>中進(jìn)行;4、while和for語(yǔ)句是先判斷表達(dá)式,后執(zhí)行循環(huán);do-while循環(huán)語(yǔ)句是先執(zhí)行循環(huán),后判斷表達(dá)式;07數(shù)組數(shù)組是一組具有同一名字、不同下標(biāo)的變量。數(shù)組中帶下標(biāo)的變量稱為數(shù)組元素,每個(gè)數(shù)組元素由數(shù)組名字和下標(biāo)唯一地來(lái)確定;同一數(shù)組中的元素?cái)?shù)據(jù)類型相同。一、一維數(shù)組:1、定義:只有一個(gè)下標(biāo)的數(shù)組。2、定義格式:類型說(shuō)明符數(shù)組名[常量表達(dá)式]如:inta[3];//定義了一個(gè)一維數(shù)組,名稱為a,數(shù)據(jù)類型為整型,含3個(gè)數(shù)組元素a[0]、a[1]、a[2];說(shuō)明:?類型說(shuō)明符:是指數(shù)組的數(shù)據(jù)類型;?常量表達(dá)式:是一個(gè)值為正整數(shù)的表達(dá)式,用來(lái)表示該數(shù)組的元素的個(gè)數(shù),即數(shù)組的大小;3、數(shù)組的引用:數(shù)組名[下標(biāo)];如:a[2]4、數(shù)組的初始化:?對(duì)數(shù)組的全部因素賦初值:如:inta[3]={10,20,30};則該語(yǔ)句執(zhí)行后,a[0]=10,a[1]=20,a[2]=30;?對(duì)數(shù)組的部分元素賦初值:如:intb[3]={12,11};則該語(yǔ)句執(zhí)行后,b[0]=12,b[1]=11,a[2]=0;?對(duì)數(shù)組的全部元素賦初值時(shí),也可將數(shù)組定義為一個(gè)不確定長(zhǎng)度的數(shù)組:如:intc[]={10,15,20};則該語(yǔ)句執(zhí)行后,數(shù)組c的長(zhǎng)度自動(dòng)確定為3,c[0]=10,c[1]=15,c[2]=20;例:將輸入的10個(gè)整數(shù)按反序輸出#include<stdio.h>main(){inta[10],i;printf("請(qǐng)輸入10個(gè)整數(shù):");for(i=0;i<10;i++)scanf("%d",&a[i]);printf("反序輸出:");for(i=9;i>=0;i--)printf("%d",a[i]);printf("\n");}例:計(jì)算Fibonacci數(shù)列的前20項(xiàng)Fibonacci數(shù)列定義:f(1)=1f(2)=1f(n)=f(n-1)+f(n-2)(n>2)#include<stdio.h>main(){intf[21],i;f[1]=1;f[2]=1;for(i=3;i<=20;i++)f[i]=f[i-1]+f[i-2];for(i=1;i<=20;i++){printf("%8d",f[i]);//每個(gè)數(shù)字占8位if(i%5==0)printf("\n");//按5個(gè)一行輸出}}二、二維數(shù)組:具有兩個(gè)下標(biāo)的數(shù)組為二維數(shù)組。1、定義格式:類型說(shuō)明符數(shù)組名[常量表達(dá)式][常量表達(dá)式]如:inta[3][2];//定義了一個(gè)二維數(shù)組,名稱數(shù)組名為a,含有6個(gè)元素:a[0][0]、a[0][1]、a[1][0]、a[1][1]、a[2][0]、a[2][1];說(shuō)明:?第一個(gè)常量表達(dá)式指出的是數(shù)組的行數(shù);第二個(gè)常量表達(dá)式指出的是數(shù)組的列數(shù);?二維數(shù)組元素的順序是:按行存放;即先順序存放第一行的元素,再存放第二行的元素…以此類推;其存儲(chǔ)格式:a[0][0] a[0][1]a[1][0] a[1][1]a[2][0] a[2][1]2、二維數(shù)組的初始化:同一維數(shù)組。?分行為二維數(shù)組賦初值:inta[3][2]={{1,2},{3,4},{5,6}};則該語(yǔ)句執(zhí)行后,a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6;?按數(shù)組在存儲(chǔ)時(shí)的排列次序賦初值:inta[3][2]={1,2,3,4,5,6};?對(duì)數(shù)組的部分元素賦初值:inta[3][2]={{1},{2,3},{4}};?忽略第一維的長(zhǎng)度,對(duì)二維數(shù)組賦初值:inta[][2]={1,2,3,4,5,6};該語(yǔ)句執(zhí)行后,C語(yǔ)言系統(tǒng)自動(dòng)計(jì)算出第一維的長(zhǎng)度為6/2=3,同樣有:a[0][0]=1,a[0][1]=2,a[1][0]=3,a[1][1]=4,a[2][0]=5,a[2][1]=6;例:將兩個(gè)2行3列的矩陣相加,并顯示結(jié)果。#include<stdio.h>main(){inta[2][3]={1,3,5,7,9,11};intb[2][3]={2,4,6,8,10,12};intc[2][3],sum=0,i,j;for(i=0;i<2;i++)//i表示第1行到第3行for(j=0;j<3;j++)//j表示第1列到第3列c[i][j]=a[i][j]+b[i][j];for(i=0;i<2;i++)for(j=0;j<3;j++){printf(“%5d”,c[i][j]);if((j+1)%3==0)printf(“\n”);}}08字符數(shù)組字符數(shù)組是用來(lái)存放字符的數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。1、字符數(shù)組的定義:chara[10];2、字符串:字符串是借助于字符數(shù)組來(lái)存放的,并規(guī)定以字符’\0’(占用存儲(chǔ)空間,但不計(jì)入字符串的長(zhǎng)度)為字符串的結(jié)束標(biāo)記。3、字符串處理函數(shù):?scanf(“%s”,a);//以格式符%s輸入字符串,輸入的字符串自動(dòng)以’\0’結(jié)尾;輸入的字符數(shù)組名前不加”&”前綴;?printf(“%s”,a);//以格式符%s輸出字符串,輸出的字符串以’\0’結(jié)尾;?gets(a);//a為字符數(shù)組名,輸入的字符可以包含’\0’字符;?puts(a);//a為字符數(shù)組名,輸入的字符可以包含’\0’字符;?strcat(字符串1,字符串2);//把字符串2連接到字符串1后;?strcpy(字符數(shù)組1,字符串2);//把字符串2拷貝到字符數(shù)組1中;如:str為字符數(shù)組,將字符常量賦予str:strcpy(str,"abcdef");?strcmp(字符串1,字符串2);//比較兩個(gè)字符串,若相等,則返回0,若字符串1>字符串2,則返回1,否則返回-1;如:比較兩個(gè)字符串str1、str2:if(strcmp(str1,str2)==1)printf("str1>str2");?strlen(字符數(shù)組);//返回字符數(shù)組中包含的字符串的長(zhǎng)度;?strlwr(字符串);//將字符串的大寫字符轉(zhuǎn)換為小寫;?strupr(字符串);//將字符串的小寫字符轉(zhuǎn)換為大寫;例:不使用strlen()函數(shù),計(jì)算一個(gè)字符串的長(zhǎng)度#include<stdio.h>main(){inti=0;charstr[30];printf(“輸入一個(gè)字符串:”);gets(str);while(str[i]!=’\0’)i++;printf(“字符串長(zhǎng)度為:%d\n”,i);}例:將一字符串逆轉(zhuǎn)#include<stdio.h>#include<string.h>main(){charstr[20],temp;inti,j;printf(“輸入一個(gè)字符串:”);gets(str);for(i=0;i<strlen(str)/2;i++){j=strlen(str)-1;temp=str[i];str[i]=str[j-i];str[j-i]=temp;}printf(“倒置的字符串為:%s\n”,str);}09指針字符數(shù)組是用來(lái)存放字符的數(shù)組,字符數(shù)組中的一個(gè)元素存放一個(gè)字符。1、字符數(shù)組的定義:chara[10];2、字符串:字符串是借助于字符數(shù)組來(lái)存放的,并規(guī)定以字符’\0’(占用存儲(chǔ)空間,但不計(jì)入字符串的長(zhǎng)度)為字符串的結(jié)束標(biāo)記。3、字符串處理函數(shù):?scanf(“%s”,a);//以格式符%s輸入字符串,輸入的字符串自動(dòng)以’\0’結(jié)尾;輸入的字符數(shù)組名前不加”&”前綴;?printf(“%s”,a);//以格式符%s輸出字符串,輸出的字符串以’\0’結(jié)尾;?gets(a);//a為字符數(shù)組名,輸入的字符可以包含’\0’字符;?puts(a);//a為字符數(shù)組名,輸入的字符可以包含’\0’字符;?strcat(字符串1,字符串2);//把字符串2連接到字符串1后;?strcpy(字符數(shù)組1,字符串2);//把字符串2拷貝到字符數(shù)組1中;如:str為字符數(shù)組,將字符常量賦予str:strcpy(str,"abcdef");?strcmp(字符串1,字符串2);//比較兩個(gè)字符串,若相等,則返回0,若字符串1>字符串2,則返回1,否則返回-1;如:比較兩個(gè)字符串str1、str2:if(strcmp(str1,str2)==1)printf("str1>str2");?strlen(字符數(shù)組);//返回字符數(shù)組中包含的字符串的長(zhǎng)度;?strlwr(字符串);//將字符串的大寫字符轉(zhuǎn)換為小寫;?strupr(字符串);//將字符串的小寫字符轉(zhuǎn)換為大寫;例:不使用strlen()函數(shù),計(jì)算一個(gè)字符串的長(zhǎng)度#include<stdio.h>main(){inti=0;charstr[30];printf(“輸入一個(gè)字符串:”);gets(str);while(str[i]!=’\0’)i++;printf(“字符串長(zhǎng)度為:%d\n”,i);}例:將一字符串逆轉(zhuǎn)#include<stdio.h>#include<string.h>main(){charstr[20],temp;inti,j;printf(“輸入一個(gè)字符串:”);gets(str);for(i=0;i<strlen(str)/2;i++){j=strlen(str)-1;temp=str[i];str[i]=str[j-i];str[j-i]=temp;}printf(“倒置的字符串為:%s\n”,str);}10函數(shù)C程序是由函數(shù)組成的,有且只有一個(gè)主函數(shù)main(),由主函數(shù)調(diào)用其他函數(shù),其他各函數(shù)也可以相互調(diào)用。1、函數(shù)的定義:一般格式:類型說(shuō)明函數(shù)名(形式參數(shù)表)//函數(shù)頭{說(shuō)明部分;//函數(shù)體執(zhí)行部分;}其中:類型說(shuō)明:是指函數(shù)返回值的數(shù)據(jù)類型;默認(rèn)為int;函數(shù)名:為一標(biāo)識(shí)符;代表了函數(shù)的入口地址;形式參數(shù)表:是用逗號(hào)分隔的一組變量說(shuō)明,指出每一個(gè)形式參數(shù)的類型和名稱;函數(shù)值的返回:有時(shí),調(diào)用函數(shù)是為了計(jì)算一個(gè)結(jié)果,這是需要使用返回語(yǔ)句將就是結(jié)果返回給主調(diào)函數(shù),此值即為函數(shù)的返回值;一般格式:return(表達(dá)式);其中,圓括號(hào)可以省略;當(dāng)函數(shù)不需要返回值時(shí),可以寫成:return;例:編寫一個(gè)函數(shù)power(),用于計(jì)算x的n次方的值#include<stdio.h>floatpower(floatx,intn){inti;floats;s=1;for(i=1;i<=n;i++)s=s*x;return(s);}2、函數(shù)的調(diào)用:C語(yǔ)言中函數(shù)調(diào)用的一般格式:函數(shù)名(實(shí)參表);如:floatf;f=power(3,10);3、數(shù)組作為函數(shù)的參數(shù)?數(shù)據(jù)元素作為函數(shù)實(shí)參在函數(shù)調(diào)用時(shí),把數(shù)組元素作為實(shí)參傳遞給形參,實(shí)現(xiàn)單向的值傳遞;如:判別各個(gè)元素的值,大于0,則輸出該值,小于或等于0,則輸出0#include<stdio.h>voidfunc(intx){if(x>0)printf(“%4d”,x);elseprintf(“%2d”,0);}main(){inta[5],i;printf(“請(qǐng)輸入5個(gè)數(shù):”);for(i=0;i<5;i++)scanf(“%d”,&a[i]);for(i=0;i<5;i++)func(a[i]);//將數(shù)組元素作為實(shí)參傳遞}?數(shù)組名作為函數(shù)參數(shù)(1)使用數(shù)組名作為函數(shù)參數(shù)時(shí),形參和實(shí)參是同類型的數(shù)組;(2)在主調(diào)函數(shù)和被調(diào)函數(shù)中分別定義數(shù)組;(3)數(shù)組名代表了數(shù)組的起始地址,數(shù)組名作為函數(shù)參數(shù)傳遞的是該數(shù)組的起始地址,而不是該數(shù)組元素的值;例:將數(shù)組中的元素的和計(jì)算并顯示出來(lái)。#include<stdio.h>func(intb[]){intsum=0,i;for(i=0;i<10;i++)sum+=b[i];returnsum;}main(){inta[]={1,2,3,4,5,6,7,8,9,10},s;s=func(a);//將數(shù)組a組為參數(shù)傳遞給函數(shù)funcprintf("s=%d",s);}4、內(nèi)部函數(shù)和外部函數(shù)?內(nèi)部函數(shù):在定義函數(shù)時(shí),在其類型名之前加“static”,則所定義的函數(shù)為內(nèi)部函數(shù),只能被所在的源文件中的函數(shù)調(diào)用,其他源文件若有同名的內(nèi)部函數(shù),互不干擾。?外部函數(shù):在定義函數(shù)時(shí),在其類型名之前加“extern”(也可省略),則所定義的函數(shù)為外部函數(shù)(也稱全局函數(shù)),可被其他源程序的函數(shù)調(diào)用。如:staticintfunc_1()//內(nèi)部函數(shù){...}externfunc_2()//外部函數(shù){...}綜合測(cè)試~~~~~給定程序?yàn)椋汉镒拥谝惶煺?/p>
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度籃球運(yùn)動(dòng)員個(gè)人榮譽(yù)獎(jiǎng)勵(lì)合同3篇
- 公益性崗位勞動(dòng)合同協(xié)議書(2025年度)-社區(qū)健康促進(jìn)3篇
- 2025年度新能源汽車合伙人股權(quán)分配與產(chǎn)業(yè)鏈整合合同3篇
- 2025年度農(nóng)村宅基地房屋租賃與鄉(xiāng)村旅游資源開發(fā)合同2篇
- 2025年農(nóng)村自建房安全責(zé)任追究協(xié)議書
- 二零二五年度智能機(jī)器人研發(fā)項(xiàng)目采購(gòu)合同風(fēng)險(xiǎn)管理與防范3篇
- 2025年度智能制造企業(yè)監(jiān)事聘用合同規(guī)范文本3篇
- 二零二五石材品牌授權(quán)與市場(chǎng)營(yíng)銷合作合同3篇
- 二零二五年度日本語(yǔ)言學(xué)校入學(xué)合同2篇
- 二零二五年度公司與公司簽訂的智慧社區(qū)建設(shè)合作協(xié)議3篇
- 2024年03月中國(guó)農(nóng)業(yè)發(fā)展銀行內(nèi)蒙古分行校園招考擬招錄人員筆試歷年參考題庫(kù)附帶答案詳解
- 2024年盾構(gòu)操作工職業(yè)技能競(jìng)賽理論考試題庫(kù)(含答案)
- ISO 56001-2024《創(chuàng)新管理體系-要求》專業(yè)解讀與應(yīng)用實(shí)踐指導(dǎo)材料之8:“5領(lǐng)導(dǎo)作用-5.2創(chuàng)新方針”(雷澤佳編制-2025B0)
- (西北卷)名校教研聯(lián)盟2025屆高三12月聯(lián)考英語(yǔ)試卷(含答案解析)
- 金科新未來(lái)大聯(lián)考2025屆高三12月質(zhì)量檢測(cè)語(yǔ)文試題(含答案解析)
- 江蘇省2025年高中學(xué)業(yè)水平合格考?xì)v史試卷試題(含答案詳解)
- 大學(xué)試卷(示范)
- 高職院校智能制造實(shí)驗(yàn)室實(shí)訓(xùn)中心建設(shè)方案
- 房產(chǎn)交易管理平臺(tái)行業(yè)發(fā)展預(yù)測(cè)分析
- 云南省昆明市(2024年-2025年小學(xué)六年級(jí)語(yǔ)文)部編版期末考試(上學(xué)期)試卷及答案
- 2024年浙江省單獨(dú)考試招生文化課考試數(shù)學(xué)試卷真題(含答案詳解)
評(píng)論
0/150
提交評(píng)論