專(zhuān)插本C語(yǔ)言簡(jiǎn)便總結(jié)復(fù)習(xí)_第1頁(yè)
專(zhuān)插本C語(yǔ)言簡(jiǎn)便總結(jié)復(fù)習(xí)_第2頁(yè)
專(zhuān)插本C語(yǔ)言簡(jiǎn)便總結(jié)復(fù)習(xí)_第3頁(yè)
專(zhuān)插本C語(yǔ)言簡(jiǎn)便總結(jié)復(fù)習(xí)_第4頁(yè)
專(zhuān)插本C語(yǔ)言簡(jiǎn)便總結(jié)復(fù)習(xí)_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、C語(yǔ)言筆記注意:在C語(yǔ)言中,關(guān)鍵字都是小寫(xiě)的。C語(yǔ)言簡(jiǎn)潔、緊湊,使用方便、靈活。 ANSI C 一共只有32個(gè)關(guān)鍵字:auto break case default char const continuedo whiledoubleelseenumexternfloatforgotoifintlongregisterreturnshortsign ed un sig nedstaticvoidsizofvolatilestructswitchtypedefunion9種控制語(yǔ)句,程序書(shū)寫(xiě)自由,主要用小寫(xiě)字母表示,壓縮了一切不必要的成分。Turbo C擴(kuò)充了 11個(gè)關(guān)鍵字:asm _cs _ds

2、 _es _ss cdecl far huge in terruptn earpascal#defi ne八進(jìn)制以0開(kāi)頭,如0123,即(123)8十六進(jìn)制以0x開(kāi)頭,如0123,即(123)代整型:一個(gè)正數(shù)的補(bǔ)碼和其原碼形式相同,如10得0000000000001010一個(gè)負(fù)數(shù)的補(bǔ)碼是取-10的絕對(duì)值10,對(duì)10的二進(jìn)制形式取反加1,1111111111110101+1=1111111111110110Signed int un sig ned int short long charfloat單精度double 雙精度,long double%d, %o,%x,%c,%s,個(gè)整常量后面加一個(gè)

3、字母I或L,則認(rèn)為是long intma in ()/ mai n是主函數(shù)的函數(shù)名,表示這是一個(gè)主函數(shù)。printf(”世界,您好! n");/ printf函數(shù)的功能是把要輸出的內(nèi)容送到顯示器去顯示#include<math.h> / include 稱(chēng)為文件包含命令#include<stdio.h>main()double x,s;定義兩個(gè)實(shí)數(shù)變量,以被后面程序使用printf("input number:n");顯示提示信息scanf("%lf", &x);從鍵盤(pán)獲得一個(gè)實(shí)數(shù)xs=sin(x);求x的正弦,

4、并把它賦給變量 sprintf("sine of %lf is %lfn",x,s); / 顯示程序運(yùn)算結(jié)果在本例中,使用了三個(gè)庫(kù)函數(shù):輸入函數(shù)scanf,正弦函數(shù)sin,輸出函數(shù)printf。sin函數(shù)是數(shù)學(xué)函數(shù),其頭文件為math.h文件scanf和printf是標(biāo)準(zhǔn)輸入輸出函數(shù),其頭文件為stdio.hC語(yǔ)言規(guī)定,源程序中所有用到的變量都必須先說(shuō)明,后使用C語(yǔ)言規(guī)定對(duì)scanf和printf這兩個(gè)函數(shù)可以省去對(duì)其頭文件的包含命令由于sin函數(shù)要求這兩個(gè)量必須是雙精度浮點(diǎn)型,故用類(lèi)型說(shuō)明符double來(lái)說(shuō)明這兩個(gè)變量scanf和printf這兩個(gè)函數(shù)都由以下兩部分組成:

5、格式控制串”,參數(shù)表格式控制串是一個(gè)字符串,必須用雙引號(hào)括起來(lái),它表示了輸入輸出量的數(shù)據(jù)類(lèi)型printf("sine of %lf is %lfn",x,s);其中%lf為格式字符,表示按雙精度浮點(diǎn)數(shù)處理。它在格式串中兩次現(xiàn),對(duì)應(yīng)了x和s兩個(gè)變量。其余字符為非格式字符則照原樣輸出在屏幕上。在程序的每行后用/*和*/括起來(lái)的內(nèi)容為注釋部分,程序不執(zhí)行注釋部分。int max(int a,int b);/* 函數(shù)說(shuō)明 */main()/* 主函數(shù) */int x,y,z;/* 變量說(shuō)明 */int max(int a,int b);/* 函數(shù)說(shuō)明 */prin tf("

6、;i nput two nu mbers:n");scanf("%d%d",&x,&y);/* 輸入 x,y 值*/z=max(x,y);/* 調(diào)用 max 函數(shù) */printf("maxmum=%d",z);/*輸出 */int max(int a,int b)/* 定義 max 函數(shù) */if(a>b) return a;else return b; /*把結(jié)果返回主調(diào)函數(shù) */從書(shū)寫(xiě)清晰,便于閱讀,理解,維護(hù)的角度出發(fā),在書(shū)寫(xiě)程序時(shí)應(yīng)遵循以下規(guī)則:1一個(gè)說(shuō)明或一個(gè)語(yǔ)句占一行。2用括起來(lái)的部分,通常表示了程序的某一層

7、次結(jié)構(gòu)。 一般與該結(jié)構(gòu)語(yǔ)句的第一個(gè)字母對(duì)齊,并單獨(dú)占一行。3低一層次的語(yǔ)句或說(shuō)明可比高一層次的語(yǔ)句或說(shuō)明縮進(jìn)若干格后書(shū)寫(xiě)。以便看起來(lái)更 加清晰,增加程序的可讀性??瞻追嚎崭穹?、制表符、換行符等統(tǒng)稱(chēng)為空白符在C語(yǔ)言中使用的詞匯分為六類(lèi):標(biāo)識(shí)符,關(guān)鍵字,運(yùn)算符,分隔符,常量,注釋符等。1標(biāo)識(shí)符(在程序中使用的變量名、函數(shù)名、標(biāo)號(hào)等統(tǒng)稱(chēng)為標(biāo)識(shí)符)C規(guī)定,標(biāo)識(shí)符只能是字母 (AZ , az)、數(shù)字(09)、下劃線(_)組成的字符串,并且 其第一個(gè)字符必須是字母或下劃線。標(biāo)準(zhǔn)C不限制標(biāo)識(shí)符的長(zhǎng)度,但它受各種版本的C語(yǔ)言編譯系統(tǒng)限制,同時(shí)也受到具體機(jī)器的限制。(2) 在標(biāo)識(shí)符中,大小寫(xiě)是有區(qū)別的。(3)

8、 標(biāo)識(shí)符雖然可由程序員隨意定義,但標(biāo)識(shí)符是用于標(biāo)識(shí)某個(gè)量的符號(hào)。因此,命名應(yīng)盡量有相應(yīng)的意義,以便于閱讀理解,作到顧名思義”。2關(guān)鍵字(關(guān)鍵字是由C語(yǔ)言規(guī)定的具有特定意義的字符串,通常也稱(chēng)為保留字。用戶(hù)定 義的標(biāo)識(shí)符不應(yīng)與關(guān)鍵字相同)(1) 類(lèi)型說(shuō)明符:如前面例題中用到的int,double等(2) 語(yǔ)句定義符:if else就是條件語(yǔ)句的語(yǔ)句定義符(3) 預(yù)處理命令字:in elude3運(yùn)算符:4分隔符:在C語(yǔ)言中采用的分隔符有逗號(hào)和空格兩種5常量:C語(yǔ)言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號(hào)常量、轉(zhuǎn) 義字符等多種。6注釋符:C語(yǔ)言的注釋符是以“/*開(kāi)頭并以“ */結(jié)尾的串#

9、define PRICE 30 /*#define 定義 PRICE 代表常量 30*/ PRICE 是符號(hào)常量習(xí)慣上符號(hào)常量用大寫(xiě),變量用寫(xiě)小寫(xiě)例如:整型變量a和b,可以進(jìn)行求余運(yùn)算:a%b (%是求余符號(hào))若指定a和b為實(shí)型變 量,則不允許進(jìn)行”求余”運(yùn)算.整型八進(jìn)制以0開(kāi)頭的數(shù)是八進(jìn)制如0123表示八進(jìn)制123,即(123)8,其值為1X82+2X81+3X8° 十六進(jìn)制以 0x開(kāi)頭的數(shù)是十六進(jìn)制 如0x123表示十六進(jìn)制 123,即(123)16,其值為2 1 01X16 +2X16 +3X16在C編譯系統(tǒng),每一個(gè)整型變量在內(nèi)存中占2個(gè)字節(jié)實(shí)際上,數(shù)值是以補(bǔ)碼表示的一個(gè)正數(shù)的

10、補(bǔ)碼和其原碼的形式是相同而負(fù)數(shù)的補(bǔ)碼是將該值的絕對(duì)值的二進(jìn)制形式,按位取反再加1.例如:求-10的補(bǔ)碼,取-10的絕對(duì)值為10,然后10的二進(jìn)制為1010,對(duì) 1010(00000000 00001010)取反,11111111 11110101一共占 16 個(gè)字節(jié),再加 1 為 11111111 11110110整數(shù)的16位中,最左面的一位是表示符號(hào),該位為0表示數(shù)值為正,該位為1則數(shù)值為負(fù)Signed int 有符號(hào)-32768-32767unsigned int 無(wú)符號(hào) 0-65535short int短整型long int長(zhǎng)整型.不一樣的微機(jī),位數(shù)是不一樣的.整型int%d ,%0,

11、%x實(shí)型 float double%f字符型char 一個(gè)字符變量在內(nèi)存中占一個(gè)字節(jié)%cPrintf(n ”,a,b,c);ddd : 1到3位8進(jìn)制數(shù)所代表的字符如:101(八進(jìn)制)為65(二進(jìn)制)的字符”A ”注意:”0”或”000”是代表ASCII碼為0的控制字符,即”空操作”字符它將用在字符串中xhh :1到2位16進(jìn)制數(shù)所代表的字符n :換行,將當(dāng)前位置移到下一行開(kāi)頭,ASCII代碼為10(十進(jìn)制)t冰平制表(跳到下一個(gè)tab位置),制表區(qū)占8列,ASCII代碼為9(十進(jìn)制)b :退格,將當(dāng)前位置移到前一列,ASCII代碼為8(十進(jìn)制)r :回車(chē),將當(dāng)前位置移到本行開(kāi)頭,ASCII代

12、碼為13(十進(jìn)制)f :換頁(yè),將當(dāng)前位置移到下頁(yè)開(kāi)頭,ASCII代碼為12(十進(jìn)制)仮斜杠字符”,ASCII代碼為92(十進(jìn)制)':單引號(hào)(撇號(hào))字符,ASCII代碼為39(十進(jìn)制)”:雙引號(hào)字符,ASCII代碼為34(十進(jìn)制)字符串常量a是字符常量(是用一對(duì)單引號(hào)括起來(lái)的),”a”是字符串常量(是用一對(duì)雙引號(hào)括起來(lái)的)C規(guī)定在每一個(gè)字符串的結(jié)尾加一個(gè)”字符串結(jié)束標(biāo)志”是以字符0'作為字符結(jié)束標(biāo)志 從ASCII代碼表中可以看到 ASCII碼為0的字符是”空操作字符”各類(lèi)數(shù)值型數(shù)據(jù)間的混合運(yùn)算如字符數(shù)據(jù)必定先轉(zhuǎn)換為整數(shù),short型轉(zhuǎn)換為int型float型數(shù)據(jù)在運(yùn)算時(shí)一律先轉(zhuǎn)換

13、成雙精度型,即是二個(gè)全是float型也要先轉(zhuǎn)換成double型Char shortl 宀 int 宀 unsignedlong double J float運(yùn)算符優(yōu)先級(jí)和結(jié)合性級(jí)別類(lèi)另S含義運(yùn)算符結(jié)合方向1強(qiáng)制轉(zhuǎn)換、數(shù)組、結(jié)構(gòu)、聯(lián)合圓括號(hào)()自左至右下標(biāo)運(yùn)算符指向結(jié)構(gòu)成員運(yùn)算符或 結(jié)構(gòu)體成員運(yùn)算符->或2邏輯邏輯非1!自右至左(單目運(yùn)算符)字位按位取反增量自增(加一)+減量自減(減一)-指針地址與運(yùn)算符(取地址)&指針運(yùn)算符(取內(nèi)容)*算術(shù)負(fù)號(hào)運(yùn)算符(單目減)-長(zhǎng)度計(jì)算長(zhǎng)度計(jì)算sizeof3算術(shù)乘*自左至右(雙目運(yùn)算符)除/求余(取模)%4算術(shù)和指針運(yùn)算加+減-5字位左移<

14、<右移>>6關(guān)系大于等于>=大于>小于等于<=小于<7等于(恒等于)=不等于!=8字位按位與&9按位異或A10按位或|11邏輯邏輯與&&左結(jié)合 雙目運(yùn)算符12邏輯或II13條件條件運(yùn)算?:14賦值賦值=復(fù)合賦值+=*=/=%=<< =&=A =1 =15逗號(hào)逗號(hào)運(yùn)算J右結(jié)合強(qiáng)制類(lèi)型轉(zhuǎn)換運(yùn)算符(double)a 將a轉(zhuǎn)換成double類(lèi)型(int)(x+y) 將x+y的值轉(zhuǎn)換成整形,如果寫(xiě)成(int)x+y貝U只將x轉(zhuǎn)換成int型,然后與y相加(float)(5%3) 將5%3的值轉(zhuǎn)換成float 型說(shuō)明:在強(qiáng)

15、制轉(zhuǎn)換時(shí),得到一個(gè)所需的類(lèi)型的中間變量,原來(lái)變量的類(lèi)型未發(fā)生變化.求余“ '運(yùn)算符要求其兩側(cè)均為整型量,float x ,則x%3是不合法,必須(int)x%3自增自減運(yùn)算符(只能用于變量,不能用于常理和表達(dá)式)+i是在使用之前先使 i的值加(減)1若j=+i; i=3; printf(“ dn”,+j)為4i+是在使用之后使i的值加(減)1 若j=i+; i=3; printf(“ %dn” ,j+)為3-i+中,其中-為負(fù)號(hào)運(yùn)算和+為同優(yōu)先級(jí),而結(jié)合方向是自右至左,所以相當(dāng)于-(i+)(1)控制語(yǔ)句C語(yǔ)言9種控制語(yǔ)句:1、 if()else(條件語(yǔ)句)2、for()(循環(huán)語(yǔ)句)3、

16、while()(循環(huán)語(yǔ)句)4、do'while()( 循環(huán)語(yǔ)句)5、con ti nue(結(jié)束本次循環(huán)語(yǔ)句)6、break(中止執(zhí)行switch或循環(huán)語(yǔ)句)7、switch(多分支選擇語(yǔ)句)8、goto(轉(zhuǎn)向語(yǔ)句)9、return(從函數(shù)返回語(yǔ)句)上述括號(hào)()表示其中是個(gè)條件,表示內(nèi)嵌的語(yǔ)句例:if(x>y) z=x; else z=y; 函數(shù)調(diào)用語(yǔ)句:printf( “This is a C statement.n ” );(3) 表達(dá)式語(yǔ)句:a=3;(一個(gè)賦值表達(dá)式)(4) 空語(yǔ)句:;(即只有一個(gè)分號(hào)語(yǔ)句) 復(fù)合語(yǔ)句: z=x+y; t=z/100; printf(“ %fn

17、 ” ,t);輸入輸出函數(shù)#include <stdio.h> 或"stdio.h ” /* 頭文件 stdio.h*/Scanf()輸入函數(shù)printf() 輸出函數(shù)是系統(tǒng)提供的標(biāo)準(zhǔn)函數(shù)#include( 預(yù)編譯命令)Putchar(輸出字符)getchar(輸入字符)Printf( 格式輸出)scanf(格式輸入)Puts(輸出字符串)gets(輸入字符串)c語(yǔ)言中include后用引號(hào)與尖括號(hào)的區(qū)別使用尖括號(hào)的話(huà),編譯時(shí)會(huì)先在系統(tǒng)include目錄里搜索,如果找不到才會(huì)在源代碼所在目錄搜索;使用雙引號(hào)則相反,會(huì)先在源代碼目錄里搜索。這就意味著,當(dāng)系統(tǒng)里(如/usr/

18、inelude/里)有一個(gè)叫做math.h的頭文件,而你的源代碼目錄里也有一個(gè)你自己寫(xiě)的 math.h頭文件,那么使用尖括號(hào)時(shí)用的就是系統(tǒng) 里的;而使用雙引號(hào)的話(huà)則會(huì)使用你自己寫(xiě)的那個(gè)。所以建議:使用系統(tǒng)里提供的頭文件時(shí)使用尖括號(hào) 使用自己編寫(xiě)的頭文件時(shí)使用雙引號(hào) 輸出單個(gè)字符:# include <stdio.h>Mai n() char a,b,c;a= B' ; b= O c= Y'putchar(a); putchar(b); putchar(c);也可以輸出轉(zhuǎn)義字符如:putchar( 101 ' ); putchar( );輸入單個(gè)字符:getc

19、har()函數(shù)沒(méi)有參數(shù),其一般形式為getchar()字符輸入函數(shù)#in clude <stdio.h>main () char c;c=getchar();putchar(c);格式輸入輸出函數(shù)Printf( “ dn” ,x);%dN按整型數(shù)據(jù)的實(shí)際長(zhǎng)度輸出%mc么m為指定的輸出字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補(bǔ)以空格,若大于m,則按實(shí)際位數(shù)輸出 Printf( “ 4d,%4dn” ,a,b);若 a=123,b=12345則a輸出結(jié)果為:空格123 則b輸出結(jié)果為:12345%ld么輸出長(zhǎng)整型數(shù)據(jù)若long a=1356739;printf(“ 9ld” ,a);則

20、a輸出結(jié)果為:空格空格1356739%0是以八進(jìn)制形式輸出整數(shù).%x是以十六進(jìn)制形式輸出整數(shù).%u用來(lái)輸出unsigned型數(shù)據(jù),即無(wú)符號(hào)數(shù),以十進(jìn)制形式輸出.%c用來(lái)輸出一個(gè)字符.char a= ' w ;printf(“ C ,w);%s用來(lái)輸出一個(gè)字符串.printf(“S' , ” CHINA');%mS俞出的字符占m列,如字符串本身長(zhǎng)度大于m則突破m的限制,全部輸出字符串,若串長(zhǎng)小于m,則左補(bǔ)空格.%-ms如果串長(zhǎng)小于 m則在m列范圍內(nèi),字符串向左靠,右補(bǔ)空格.%m.ns輸出占m列,但只取字符串左端n個(gè)字符.這n個(gè)字符輸出在 m列的右端,左補(bǔ)空格.%-m.ns

21、輸出占m列,但只取字符串左端 n個(gè)字符.這n個(gè)字符輸出在 m列的左端,右補(bǔ)空 格.n>m,則m自動(dòng)取n值,即保證n個(gè)字符正常輸出.%f用來(lái)輸出實(shí)數(shù)(單精度和雙精度),以小數(shù)形式輸出.%e以指數(shù)形式輸出實(shí)數(shù),輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù)由系統(tǒng)自動(dòng)指定給出6位小數(shù),指數(shù)部分占5列(如e+002),其中e占一位,指數(shù)符號(hào)占一位,指數(shù)占3位%g用來(lái)輸出實(shí)數(shù),它根據(jù)數(shù)值大小自動(dòng)選f格式或e格式.Scanf 輸入函數(shù) scanf( “ d,%d,%d' ,&a,&b,&c)#in clude <stdio.h>main () int a,b,c;s

22、canf("%d,%d,%d",&a,&b,&c);/*輸入這三個(gè)數(shù)的時(shí)候”,”逗號(hào)也要輸?shù)?*/prin tf("%d,%d,%dn",a,b,c);getch();若:scanf("%d%d%d",&a,&b,&c);輸入 a,b,c 三個(gè)數(shù)時(shí),12 空格 13 空格 88Scanf( “ %3d%3d,&a,&b);輸入:123456,系統(tǒng)自動(dòng)把123賦給a,456賦給bScanf( “ %3c” ,&ch);輸入:abc,由于ch只能容納一個(gè)字符,系統(tǒng)就把

23、第一個(gè)字符a'賦給ch如果后面有一個(gè)” *”附加說(shuō)明符,表示跳過(guò)它指定的列數(shù).如:scanf(“ %2d %*3d %2d',&a,&b);輸入:12空格345空格67回車(chē),將12賦給a,%*3d表示讀入3位整數(shù)但不賦給任何變量.然后再讀入2位整數(shù)67賦給b.第二組數(shù)據(jù)345被跳過(guò).在輸入數(shù)據(jù)進(jìn),遇以下情況時(shí)數(shù)據(jù)認(rèn)為結(jié)束:1、 遇空格,或按回車(chē)或跳格(Tab)鍵;2、 按指定的寬度結(jié)束,如“3d” ,只取3列;3、遇非法輸入;例:輸入三角形的三邊長(zhǎng),求三角形面積 s=1/2(a+b+c) area= 根號(hào)s(s-a) (s-b) (s-c)Float a,b,c

24、,area,s; scanf(“ f,%f,%f ”,&a,&b,&c);s=1.0/2*(a+b+c);Area=sqrt(s*(s-a)*(s-b)*(s-c);Printf( “a=%7.2f, b=%7.2f, c=%7.2f, s=%7.2fn”,a,b,c,s);printf(“area=%7.2fn ” ,area);If語(yǔ)句If與else的配對(duì)關(guān)系:else總是與它上面的最近的if配對(duì).If與else的數(shù)目一樣時(shí),采用If()main() int x,y;scanf("%d,&x);if(x<0) y=-1;else if(x=0

25、) y=0; else y=1;printf(“x=%d,y=%dn” ,x,y);If()ElseElseIf()Else語(yǔ)句1語(yǔ)句2語(yǔ)句3語(yǔ)句4If與else的數(shù)目不一樣時(shí),采用加花括號(hào)來(lái)確定getch();/*能顯示輸出*/If()if()語(yǔ)句1Else 語(yǔ)句2判斷某一年是否閏年其中一種方法main()int year,leap;printf("input year:");scanf("%d", &year);if(year%4=0)if(year%100=0) if(year%400=0) leap=1;else leap=0;else

26、leap=1;else leap=0;if(leap) printf("%d yesn",year); else printf("%d no yearn",year); getch();/*判斷某一年是否閏年另一種方法*/#include <stdio.h>void main()int year;printf("input year:");scanf("%d", &year);if(year%4=0)&&(year%100!=0)|(year%400=0) printf(&quo

27、t;%d yesn",year);else printf("%d no yearn",year);getch();條件運(yùn)算符(三目運(yùn)算符,自右至左)main() int x,y,max;scanf("%d,%d",&x,& y);max=(x>y) ? x:y; /* 如果(a>b)條件為真,則條件表達(dá)式取值 a,否則取值b*/printf("%dn",max);/*輸入一個(gè)字符getch();/*能顯示輸出*/,判斷大小寫(xiě),如果是大寫(xiě),轉(zhuǎn)換成小寫(xiě),并輸岀最后得到的字符*/Main() char

28、ch;Scanf( “ %cIf(ch>= A'/* ch=(ch>=Else printf(getch();/*能顯示輸出*/,& ch);&& ch<= Z' ) ch=ch+32; printf( “cn” ,ch); /* 去掉花括號(hào)將編譯出錯(cuò) */'A' && ch<= Z' ) ?(ch+32) :ch也可以用條件運(yùn)算符 */“cn” ,ch);Switch語(yǔ)句是多分支選擇語(yǔ)句Switch(表達(dá)式)case 常量表達(dá)式case常量表達(dá)式的執(zhí)行1 :語(yǔ)句 1; break ;每一個(gè)

29、case常量表達(dá)式的值必須互不相同2:語(yǔ)句 2; break ;執(zhí)行一個(gè)分支后可以用一個(gè)break語(yǔ)句來(lái)終止switch語(yǔ)句表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí)就執(zhí)行case后面的語(yǔ)句case常量表達(dá)式3:語(yǔ)句;break ;case常量表達(dá)式n:語(yǔ)句;break ;default: 語(yǔ)句n+1 ;最后一個(gè)分支default 可以不加break語(yǔ)句。Switch(表達(dá)式)表達(dá)式的值為A或B或C時(shí)都執(zhí)行同一組語(yǔ)句case A':case B':case'C:case D': printf(“ >60n ” );break ;/*求方程的解*/

30、#include <stdio.h> /*輸入輸出函數(shù)要調(diào)用,也可以不寫(xiě)*/#include <math.h> /*用到絕對(duì)值函數(shù)和開(kāi)根號(hào)函數(shù),所以要調(diào)用*/main()float a,b,c,disc,x1,x2,realpart,imagpart; /* scanf("%f,%f,%f", &a,&b, &c);/*printf("the equation");/*定義類(lèi)型*/輸入方程的三個(gè)數(shù)*/顯示the equation, 意思是方程*/if(fabs(a)v=pow(10,-6)printf(&q

31、uot;isnot a quadratic"); /*對(duì) a 求 絕 對(duì) 值,判斷a=0(fabs(a)v=le-6)就不是二次方程 */else disc=b*b-4*a*c; /*計(jì)算b*b-4*a*c的值是等于還是小于還是大于0*/if(fabs(disc)<=pow(10,-6) printf("has two equal roots:%8.4fn",-b/(2*a); /*has twoequal roots是有兩個(gè)相等的根的意思,這個(gè)判斷是等于0后有兩個(gè)相等實(shí)根*/else if(disc>pow(10,-6)/*大于0后有兩個(gè)不等實(shí)根*/

32、x1=(-b+sqrt(disc)/(2*a);x2=(-b-sqrt(disc)/(2*a);printf("has two equal roots:%8.4f and %8.4fn",x1,x2);elserealpart=-b/(2*a); /*小于0后有兩個(gè)共軛復(fù)根的實(shí)部*/imagpart=sqrt(-disc)/(2*a);printf("has complex roots:n"); /*has complex roots是有復(fù)雜的根源的意思 */printf("%8.4f+%8.4fin",realpart,imagpa

33、rt);printf("%8.4f-%8.4fin",realpart,imagpart);getch();說(shuō)明:le-6 :是科學(xué)計(jì)數(shù)法,表示10的-6次方,用函數(shù)是pow(10,-6) 不用0來(lái)判斷,用一個(gè)很小的數(shù)就認(rèn)為disc是0,是為了產(chǎn)生誤差,因?yàn)閷?shí)數(shù)在計(jì)算和存儲(chǔ)時(shí)會(huì)有一些微小的誤差。/* 算運(yùn)費(fèi)*/#include <stdio.h>main()int c,s;float f,d,p,w; /*總運(yùn)費(fèi)f(freight 貨物),基本運(yùn)費(fèi)p(price 價(jià)格),貨物重w(weight重量),距離 s,折扣 d(discount)*/printf(&qu

34、ot;input numberin'');scanf("%f,%f,%d",&p,&w,&s);if(s>=3000) c=12;else c=s/250;switch(c)case 0:d=0;break;case 1:d=2;break;case 2:case 3:d=5;break;case 4:case 5:case 6:case 7:d=8;break;case 8:case 9:case 10:case 11:d=10;break;case 12:d=15;break;f=p*w*s*(1-d/100.0);prin

35、tf("freight=%fn",f);getch();Goto語(yǔ)句為無(wú)條件轉(zhuǎn)向語(yǔ)句,形式:goto 語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示,它的定名 規(guī)則與變量名相同.即字母,下劃線,數(shù)字.一般來(lái)說(shuō)來(lái)兩種用途:1、與if語(yǔ)句一起構(gòu)成循環(huán)結(jié)構(gòu);2、 從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外.但在C語(yǔ)言中可以用break語(yǔ)句和continue語(yǔ)句跳出本層循環(huán)和 結(jié)束本次循環(huán).用if語(yǔ)句和goto語(yǔ)句構(gòu)成循環(huán),求1+2+3+.+99+100#include <stdio.h>main()int sum=0,i=1;loop: if(i<=100) sum=sum+i;i+;goto

36、loop;printf("sum=%dn",sum);getch();語(yǔ)句While語(yǔ)句用來(lái)實(shí)現(xiàn)當(dāng)型循環(huán)結(jié)構(gòu),一般形式:while(表達(dá)式)當(dāng)表達(dá)式非0值時(shí)執(zhí)行while語(yǔ)句中的內(nèi)嵌語(yǔ)句,先判斷表達(dá)式后執(zhí)行語(yǔ)句/* 用 while 語(yǔ)句構(gòu)成循環(huán),求 1+2+3+ .+99+100*/#include <stdio.h>main()int sum=0,i=1;while(i<=100) sum=sum+i;i+;/*如果不加花括弧則 while語(yǔ)句的范圍只到“ sum=sum+f */printf("sum=%dn",sum);getch

37、();Do 循環(huán)體While (表達(dá)式)Do-While是循環(huán)語(yǔ)句特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立/* 用 do-while 語(yǔ)句構(gòu)成循環(huán),求 1+2+3+ .+99+100*/#i nclude <stdio.h>main ()int sum=0,i=1;dosum=sum+i;i+;while(i<=100);prin tf("sum=%dn",sum);getch();按 esc 后一個(gè)一個(gè)顯示輸出/* 用 do-while 語(yǔ)句構(gòu)成循環(huán),求 1+2+3+ .+99+100*/#include <stdio.h>main()i

38、nt sum=0,i=1;do sum=sum+i;i+;printf("sum=%dn",sum); getch();while(i<=100);printf("sum=%dn",sum);getch();For 語(yǔ)句格式 : for( 循環(huán)變量賦初值 ; 循環(huán)條件 ; 循環(huán)變量增值 ;) 語(yǔ)句 ; 表達(dá)式 1表達(dá)式 2 表達(dá)式 3先求解表達(dá)式 1 。再求解表達(dá)式 2, 若值為真 , 則執(zhí)行 for 語(yǔ)句中的內(nèi)嵌語(yǔ)句 , 然后就求解表達(dá)式 3, 若為假 則結(jié)束循環(huán)。1 、“表達(dá)式 1 ”可以省略 for(; 表達(dá)式 2;表達(dá)式 3) 語(yǔ)句; /*

39、 分號(hào)不能少 */2、“表達(dá)式 2”省略即不判斷循環(huán)條件,循環(huán)將無(wú)終止地進(jìn)行下去。3、 “表達(dá)式 3”也可以省略,如i+ 不放在“表達(dá)式3”,而作為循環(huán)體的一部分效果是一樣的。4、全部省略么不賦值,不判斷,不增量,無(wú)終止地執(zhí)行循環(huán)體。5、 for (i=0;(c=getchar()!= n ' ; i+=c;)終端接收一個(gè)字符給C,判斷表達(dá)式的值是否不等于 n '(換行符)for (;(c=getchar()!= n ' ;) 則輸入 Computer 輸出則也是 Computerbreak 語(yǔ)句和 continue 語(yǔ)句break 是終止整個(gè)循環(huán)的執(zhí)行; contin

40、ue 只是結(jié)束本次循環(huán);if(fabs(a)v=pow(10,-6) 的意思是 if(a=O)y頭文件:#include <math.h> pow(x,y) 函數(shù)是求 X的值,幾的幾次方。yPow(x,y)函數(shù)是計(jì)算 X 的值 函數(shù)原型:double pow(double x,double y )Abs(x)函數(shù)是求整數(shù)x的絕對(duì)值函數(shù)原型:int abs( int x )Fabs(x)函數(shù)是求雙精度實(shí)數(shù)的絕對(duì)值函數(shù)原型:double fabs( double x )Sqrt(x)函數(shù)是開(kāi)根號(hào)子函數(shù)原型:double sqrt(double x)攝氏溫度C=5/9(F華氏溫度-32)

41、一維數(shù)組 類(lèi)型說(shuō)明:數(shù)組名常量表達(dá)式如:int a10;表示數(shù)組名為a,此數(shù)組有10個(gè)元素 數(shù)組必須先定義后使用。C語(yǔ)言規(guī)定只能逐個(gè)引用數(shù)組元素而不能一次引用整個(gè)數(shù)組。main() int i,a10;for(i=0;i<10;i+)ai=i;"out number %dn ” ,ai); /* 從 9 到 0 輸出 */for(i=9;i>=0;i-) printf( getch();/*輸出數(shù)字101到110*/*輸入數(shù)字,從此數(shù)字后輸出10個(gè)數(shù)*/#include <stdio.h>#include <stdio.h>main() int i

42、,t=100,a10;for(i=0;i<=9;i+)t+ ;main() int i,t,a10;printf("intput number:");scanf("%d", &t);for(i=0;i<=9;i+)ai=t;t+ ; ai=t;printf("out number %dn",ai); printf("out number %dn",ai); getch();getch();一維數(shù)組初始化定義成:int a10=0,1,2,3,4,5,6,7,8,9;定義成:int a10=0,1

43、,2,3,4,5;表示只給前面5個(gè)元素賦初值,后面的5個(gè)元素值為0/*后一個(gè)數(shù)是前二個(gè)數(shù)之和,Fibonacci數(shù)列*/#include <stdio.h>main() int a20=1,1;int i;for(i=2;i<20;i+) ai=ai-2+ai-1;for(i=0;i<20;i+) if(i%5=0) printf(“ n ” );printf( “ %12d ,ai);getch();#include <stdio.h>main() long int a30=1,1;int i;for(i=2;i<30;i+) ai=ai-2+ai-

44、1;for(i=0;i<30;i+) if(i%5=0) printf("n");printf("%12ld",ai);getch();起泡法對(duì)10個(gè)數(shù)排序(由小到大):將相鄰的兩個(gè)數(shù)比較,將小的調(diào)到前頭。main() int a11;int i,j,t;printf( “ inpuf 10 numers :n” );for(i=1;i<11;i+) scanf(“d',&ai);printf( “n ”);for(j=1;jv=9;j+) /*因?yàn)?0個(gè)數(shù),所以要要循環(huán)j=10-1次*/for(i=1;iv=10-j;i+)

45、/*第j趟要進(jìn)行n-j次兩兩比較*/if(ai>ai+1) t=ai; ai=ai+1; ai+1=t;printf(“the sorted numbers :n” );for(i=1;i<=10;i+) printf(“ n” ,ai);getch();二維數(shù)組類(lèi)型說(shuō)明:數(shù)組名常量表達(dá)式常量表達(dá)式女口: float a34;3行4列C語(yǔ)言對(duì)二維數(shù)組采用這樣的定義,可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個(gè)一維數(shù)組??梢钥醋魇且粋€(gè)一維數(shù)組它有3個(gè)元素a0, a1, a2每個(gè)元素又包含有 4個(gè)元素的一維數(shù)組。二維數(shù)組初始化int a34= 1,2,3,4,5,6,7,8

46、,9,10,11,12int a34= 1,2,3,4,5,6,7,8,9,10,11,12;a34=1,5,9;只對(duì)各行第1列賦值,其余元素值自動(dòng)為 0/*將二維數(shù)組行和列互換,#include "stdio.h"main()int a23=1,2,3,4,5,6;int b32,i,j;printf("array a:n “);for(i=0;i<=1;i+) for(j=0;j<=2;j+)printf("%6d",aij); bji=aij; /*printf("n");printf("arra

47、y b:n"); /*for(i=0;i<=2;i+) for(j=0;j<=1;j+) printf("%6d",bij); printf("n");getch();存到另一個(gè)二維數(shù)組*/*array/*/*陣列*/行*/列*/賦值給bji 值*/以下是數(shù)組b輸岀*/for(j=0;jv=2;j+) for(i=0;i<=1;i+)printf("%6d",bji); printf("n"); /*左右兩部分輸岀結(jié)果一樣的*/* 一個(gè)3X4矩陣,求岀其中最大值的那個(gè)元素的值及所在的行號(hào)

48、和列號(hào)*/#include "stdio.h"main()int i,j,row=0, colum=0,max; /*row 行 排 colum 歹y */int a34=1,2,3,4,9,8,7,6,-10,10,-5,2;max=a00;for(i=0;i<=2;i+)for(j=0;j<=3;j+)if(aij>max) max=aij;row=i;colum=j;pritntf(“max=%d,row=%d,colum=%dr” ,max,row,colum);getch();字符數(shù)組:用來(lái)存放字符數(shù)據(jù)的數(shù)組,一個(gè)元素存放一個(gè)字符初始化 char

49、 c10;c0= T ;c1= ,; c2= a' c3= mc4= ' c5= h' c6='a'c7= ' p; c8= ' p ' c9= ' y '字符型與整型是互相通用,所以也可以定義int c10; 初始化:char c10=' I ;,'',' a; m, ' h ' a' p' p' y' ;如果初值個(gè)數(shù)小于數(shù)組長(zhǎng)度,將剩下的元素自動(dòng)定為空字符“0 ”也可以定義二維字符數(shù)組char a55=, , , , , ,, &#

50、39;' ,, '' ;單引號(hào)中間就是想賦的值C語(yǔ)言中將字符串作為字符數(shù)組來(lái)處理。C語(yǔ)言規(guī)定了一個(gè)“字符串結(jié)束標(biāo)志”,以字符 0 '代表。系統(tǒng)對(duì)字符串常量也自動(dòng)加一個(gè)0 '作為結(jié)束符。說(shuō)明: 0 '代表ASCII碼為0的字符,是一個(gè)不可以顯示的字符,而是一個(gè)“空操作字符”單個(gè)字符作初值用單引號(hào),字符串是用雙引號(hào)。char c10=“China” ; 前面 5 個(gè)元素為C' , h' , i ', 'n' , a',第 6個(gè)為 0 ',后 4 個(gè)元素為空字符,所以也是0 '字符數(shù)組的輸

51、入輸出逐個(gè)字符輸入輸岀,用格式符“c”輸入或輸岀一個(gè)字符。將整個(gè)字符串一次輸入或輸岀,用格式符“s輸入或輸岀一串字符。輸岀字符不包括結(jié)束符0 '用“s格式符輸岀字符串時(shí),printf函數(shù)中的輸岀項(xiàng)是字符數(shù)組名,而不是數(shù)組元素名。如寫(xiě)成 printf(“S' ,c0);是不對(duì)的。應(yīng)為:printf(“S' ,c);定義:char a13; Scanf( “S' ,a);若輸入:Howare you?回車(chē) 而只將第一個(gè)空格前的 “ How”送到a中。注意:scanf函數(shù)中輸入項(xiàng)是字符數(shù)組名。輸入項(xiàng)是字符數(shù)組名時(shí),不要再加地址符&,因?yàn)樵贑語(yǔ)言中數(shù)組名代表該數(shù)

52、組的起始地址,Scanf( “%s ,&a);這樣的寫(xiě)法是不對(duì)的。printf( “%o ,c);可以輸出數(shù)組C的起始地址puts(字符數(shù)組,輸出字符串)char str=“ChinanBeijing ” ;puts(str);gets(字符數(shù)組,輸入字符串)定義:char str;gets(str); 若輸入:Computer回車(chē),將所輸入的字符串送給字符數(shù)組str , 8個(gè)字母加一個(gè)自動(dòng)加上去的0 '共9個(gè)字符送入str。注意:puts和gets函數(shù)只能輸入或輸出一個(gè)字符串。不能寫(xiě)成:puts(str1,str2) 或gets(str1,str2)Strcat(字符數(shù)組1,

53、字符數(shù)組2)是字符串連接,作用:連接兩個(gè)字符數(shù)組中的字符串,把 字符2接到字符1的后面,結(jié)果放在字符數(shù)組1中。字符數(shù)組1必須足夠大,以便容納連接后的新字符串。char str130= “People ' s Republic of ” ;char str2= | “ China ”;printf(“s ,strcat(str1,str2);輸出:People ' s Republic of Chinastrcpy(字符數(shù)組1,字符串2)是字符串復(fù)制。作用:將字符串 2復(fù)制到字符數(shù)組1中去。 字符數(shù)組1必須足夠大,以便容納被復(fù)制的字符串。字符數(shù)組1必須寫(xiě)成數(shù)組名形式(如 str1

54、 ),字符串2可以是字符數(shù)組名也可以是一個(gè)字符串常量,如strcpy(str1, “China ”);復(fù)制時(shí)連同字符串后面的0 '一起復(fù)制到字符數(shù)組1中。不能用賦值語(yǔ)句將一個(gè)字符串?;蜃址麛?shù)組直接給一個(gè)字符數(shù)組.如:str1=“ China”;和str1=str2;都是不合法的。用賦值語(yǔ)句只能將一個(gè)字符賦給一個(gè)字符型變量或字符數(shù)組元素。如:char a5,cl1,cl2; cl1= A'Cl2= B' ; a0=C' a1=h' 以此類(lèi)推??梢杂胹trncpy函數(shù)將字符串2中前面若干個(gè)字符復(fù)制到字符數(shù)組1中去。如:strncpy(str1,str2,2)

55、;Strcmp(字符串1,字符串2)是字符串比較。作用:比較字符串1和字符串2。對(duì)兩個(gè)字符串自左至右逐個(gè)字符相比(按ASCII碼大小比較)直到岀現(xiàn)不同的字符或遇到0 '為止比較結(jié)果由函數(shù)值帶回:1、如果字符串 仁字符串2,函數(shù)值為02、如果字符串1字符串2,函數(shù)值為正整數(shù)3、如果字符串1字符串2,函數(shù)值為負(fù)整數(shù)注意:對(duì)兩個(gè)字符串比較,不能用以下形式:if(str仁=str2) printf(“yes ”);而只能用if(strcmp(str1,str2)=0) printf(“yes” );/*輸入slzz22222200000正確后顯示*/#include "stdio.h"main()char str1="slzz22222200000"char str216;printf("input mi ma:n");scanf("%s",str2);if(strcmp(str1,str2)=0) printf("I LOVE YOU");else printf("NO NO NO NO NO NO NO NO NO");getch();strlen(字符數(shù)組)是測(cè)字符串長(zhǎng)度。作用

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論