版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言筆記注意:在C語言中,關(guān)鍵字都是小寫的。C語言簡潔、緊湊,使用方便、靈活。ANSIC一共只有32個關(guān)鍵字:autobreakcasedefaultchar const continuedowhiledoubleelseenum extern floatforgotoifintlongregister return shortsignedstaticsizofstruct switch typedefunionunsignedvoidvolatile9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。TurboC擴充了11個關(guān)鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal#define八進制以0開頭,如0123,即(123)8十六進制以Ox開頭,如0123,即(123)16整型:一個正數(shù)的補碼和其原碼形式相同,如10得0000000000001010一個負數(shù)的補碼是取-10的絕對值10,對10的二進制形式取反加1,101+1=110Signedintunsignedintshortlongcharfloat單精度double雙精度,longdouble%d,%o,%x, %c,%s, —個整常量后面加一個字母丨或L,則認為是longintmain()個說明或一個語句占一行。用{}括起來的部分,通常表示了程序的某一層次結(jié)構(gòu)。{}一般與該結(jié)構(gòu)語句的第一個字母對齊,并單獨占一行。低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。以便看起來更加清晰,增加程序的可讀性??瞻追?空格符、制表符、換行符等統(tǒng)稱為空白符在C語言中使用的詞匯分為六類:標識符,關(guān)鍵字,運算符,分隔符,常量,注釋符等1?標識符(在程序中使用的變量名、函數(shù)名、標號等統(tǒng)稱為標識符)C規(guī)定,標識符只能是字母(A?Z,a?z)、數(shù)字(0?9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。⑴標準C不限制標識符的長度,但它受各種版本的C語言編譯系統(tǒng)限制,同時也受到具體機器的限制。在標識符中,大小寫是有區(qū)別的。標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號。因此,命名應盡量有相應的意義,以便于閱讀理解,作到“顧名思義”。2?關(guān)鍵字(關(guān)鍵字是由C語言規(guī)定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應與關(guān)鍵字相同)(1)類型說明符:如前面例題中用到的int,double等(2)語句定義符:ifelse就是條件語句的語句定義符(3)預處理命令字:include3?運算符:4?分隔符:在C語言中采用的分隔符有逗號和空格兩種5?常量:C語言中使用的常量可分為數(shù)字常量、字符常量、字符串常量、符號常量、轉(zhuǎn)義字符等多種。6?注釋符:C語言的注釋符是以"/*"開頭并以"*/"結(jié)尾的串#definePRICE30/*#define定義PRICE代表常量30*/ PRICE是符號常量習慣上符號常量用大寫,變量用寫小寫例如:整型變量a和b,可以進行求余運算:a%b(%是求余符號)若指定a和b為實型變量,則不允許進行”求余”運算.整型八進制以0開頭的數(shù)是八進制.如0123表示八進制123,即(123)8其值為1X82+2X81+3X8。8,十六進制以0x開頭的數(shù)是十六進制?如0x123表示十六進制123,即(123)16,其值為1X162+2X161+3X160在C編譯系統(tǒng),每一個整型變量在內(nèi)存中占2個字節(jié).實際上,數(shù)值是以補碼表示的?一個正數(shù)的補碼和其原碼的形式是相同?而負數(shù)的補碼是將該值的絕對值的二進制形式,按位取反再加1.例如:求-10的補碼,取-10的絕對值為10,然后10的二進制為1010,對1010(0000000000001010)取反,,一共占16個字節(jié),再加1為整數(shù)的16位中,最左面的一位是表示符號,該位為0表示數(shù)值為正,該位為1則數(shù)值為負Signedint有符號-32768-32767unsignedint無符號0-65535shortint短整型longint長整型.不一樣的微機,位數(shù)是不一樣的.整型int%d,%0,%x實型floatdouble%f字符型char一個字符變量在內(nèi)存中占一個字節(jié)%cPrintf(“%f,%d,%c\n”,a,b,c);\ddd:1到3位8進制數(shù)所代表的字符如:\101(八進制)為65(二進制)的字符”A”注意:”\0”或”\000”是代表ASCII碼為0的控制字符,即”空操作”字符.它將用在字符串中.\xhh:1到2位16進制數(shù)所代表的字符\n:換行,將當前位置移到下一行開頭,ASCII代碼為10(十進制)\t:水平制表(跳到下一個tab位置),制表區(qū)占8列,ASCII代碼為9(十進制)\b:退格,將當前位置移到前一列,ASCII代碼為8(十進制)\r:回車,將當前位置移到本行開頭,ASCII代碼為13(十進制)\f:換頁,將當前位置移到下頁開頭,ASCII代碼為12(十進制)\\:反斜杠字符”\”,ASCII代碼為92(十進制)\':單引號(撇號)字符,ASCII代碼為39(十進制)\”:雙引號字符,ASCII代碼為34(十進制)字符串常量‘a(chǎn)'是字符常量(是用一對單引號括起來的),"a"是字符串常量(是用一對雙引號括起來的)C規(guī)定在每一個字符串的結(jié)尾加一個”字符串結(jié)束標志”,是以字符'\0'作為字符結(jié)束標志,從ASCII代碼表中可以看到ASCII碼為0的字符是”空操作字符”各類數(shù)值型數(shù)據(jù)間的混合運算如字符數(shù)據(jù)必定先轉(zhuǎn)換為整數(shù),short型轉(zhuǎn)換為int型float型數(shù)據(jù)在運算時一律先轉(zhuǎn)換成雙精度型即是二個全是float型也要先轉(zhuǎn)換成double型.Charshortlfintfunsignedflongfdoubleafloat運算符優(yōu)先級和結(jié)合性級別類別含義運算符結(jié)合方向1強制轉(zhuǎn)換、數(shù)組、結(jié)構(gòu)、聯(lián)合圓括號()自左至右下標運算符[]指向結(jié)構(gòu)成員運算符或結(jié)構(gòu)體成員運算符->或2邏輯邏輯非!自右至左(單目運算符)字位按位取反2增量自增(加一)++減量自減(減一)--指針地址與運算符(取地址)&指針運算符(取內(nèi)容)*算術(shù)負號運算符(單目減)-長度計算長度計算sizeof3算術(shù)乘*自左至右(雙目運算符)除/求余(取模)%4算術(shù)和指針運算加+減-5字位左移<<右移>>6關(guān)系大于等于>=大于>小于等于<=小于<7等于(恒等于)==
不等于!=8字位按位與&9按位異或A10按位或|11邏輯邏輯與&&左結(jié)合左結(jié)口雙目運算符12邏輯或||13條件條件運算14賦值賦值=復合賦值+=*=/=%=》=<<=&=A=1=15逗號逗號運算/-右1結(jié)合右結(jié)口強制類型轉(zhuǎn)換運算符(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整形,如果寫成(int)x+y則只將x轉(zhuǎn)換成int型,然后與y相加(float)(5%3)將5%3的值轉(zhuǎn)換成float型說明:在強制轉(zhuǎn)換時,得到一個所需的類型的中間變量,原來變量的類型未發(fā)生變化.求余"%”運算符要求其兩側(cè)均為整型量,floatx,則x%3是不合法,必須(int)x%3自增自減運算符(只能用于變量,不能用于常理和表達式)++i是在使用之前先使i的值加(減)1若j=++i;i=3;printf("%d\n”,++j)為4i++是在使用之后使i的值加(減)1若j=i++;i=3;printf("%d\n”,j++)為3-i++中,其中-為負號運算和++為同優(yōu)先級,而結(jié)合方向是自右至左,所以相當于-(i++)(1)控制語句C語言9種控制語句:1、 if()~~~~~~else~~~~~~(條件語句)2、for()~~~~~ (循環(huán)語句)3、while()~~~~~ (循環(huán)語句)4、 do~~~'~~while()~~~~~~(循環(huán)語句)5、 continue (結(jié)束本次循環(huán)語句)6、break (中止執(zhí)行switch或循環(huán)語句)7、 switch (多分支選擇語句)8、goto (轉(zhuǎn)向語句)9、 return (從函數(shù)返回語句)
上述括號()表示其中是一個條件,~~~~表示內(nèi)嵌的語句例:if(x>y)z=x;elsez=y;函數(shù)調(diào)用語句:printf(“ThisisaCstatement.\n”);表達式語句:a=3;(一個賦值表達式)空語句: ; (即只有一個分號語句)復合語句{}: {z=x+y;t=z/100;printf(“%f\n”,t);}輸入輸出函數(shù)#include<>或“”/*頭文件*/Scanf()輸入函數(shù)printf()輸出函數(shù)是系統(tǒng)提供的標準函數(shù)#include(預編譯命令)Putchar(Putchar(:輸出字符)Printf(:格式輸出)getchar(輸入字符)scanf(格式輸入)Puts(輸出字符串) gets(輸入字符串)c語言中include后用引號與尖括號的區(qū)別使用尖括號的話,編譯時會先在系統(tǒng)inelude目錄里搜索,如果找不到才會在源代碼所在目錄搜索;使用雙引號則相反,會先在源代碼目錄里搜索。這就意味著,當系統(tǒng)里(如/usr/include/里)有一個叫做的頭文件,而你的源代碼目錄里也有一個你自己寫的頭文件,那么使用尖括號時用的就是系統(tǒng)里的;而使用雙引號的話則會使用你自己寫的那個。所以建議:使用系統(tǒng)里提供的頭文件時使用尖括號使用自己編寫的頭文件時使用雙引號輸出單個字符:#include<>Main(){chara,b,c;a=‘B';b=‘O'c=‘Y';putchar(a);putchar(b);putchar(c);}也可以輸出轉(zhuǎn)義字符如:putchar(‘\101');putchar(‘\'');輸入單個字符:getchar()函數(shù)沒有參數(shù),其一般形式為getchar() 字符輸入函數(shù)#include<>main(){charc;c=getchar();putchar(c);}格式輸入輸出函數(shù)Printf(“%d\n”,x);%d么按整型數(shù)據(jù)的實際長度輸出%md么m為指定的輸出字段的寬度,如果數(shù)據(jù)的位數(shù)小于m,則左端補以空格,若大于m,則按實際位數(shù)輸出.Printf("%4d,%4d\n”,a,b)若a=123,b=12345則a輸出結(jié)果為:空格123則b輸出結(jié)果為:12345%ld么輸出長整型數(shù)據(jù)若longa=1356739;printf(“%9ld”,a);則a輸出結(jié)果為:空格空格1356739%o是以八進制形式輸出整數(shù).%x是以十六進制形式輸出整數(shù).%u用來輸出unsigned型數(shù)據(jù),即無符號數(shù),以十進制形式輸出.%c用來輸出一個字符.chara='w';printf("%c”,w);%s用來輸出一個字符串.printf("%s”,”CHINA”);%ms輸出的字符占m列,如字符串本身長度大于m則突破m的限制,全部輸出字符串,若串長小于m,則左補空格.%-ms如果串長小于m則在m列范圍內(nèi),字符串向左靠,右補空格.%輸出占m列,但只取字符串左端n個字符.這n個字符輸出在m列的右端,左補空格.%輸出占m列,但只取字符串左端n個字符.這n個字符輸出在m列的左端,右補空格.n>m,則m自動取n值,即保證n個字符正常輸出.%f用來輸出實數(shù)(單精度和雙精度),以小數(shù)形式輸出.%e以指數(shù)形式輸出實數(shù),輸出數(shù)據(jù)所占的寬度和數(shù)字部分小數(shù)位數(shù)由系統(tǒng)自動指定給出6位小數(shù),指數(shù)部分占5列(如e+002),其中e占一位,指數(shù)符號占一位,指數(shù)占3位%g用來輸出實數(shù),它根據(jù)數(shù)值大小自動選f格式或e格式.Scanf輸入函數(shù)scanf(“%d,%d,%d”,&a,&b,&c)#include<>main(){inta,b,c;scanf("%d,%d,%d",&a,&b,&c);/*輸入這三個數(shù)的時候丫逗號也要輸?shù)?*/printf("%d,%d,%d\n",a,b,c);getch();}若:scanf("%d%d%d",&a,&b,&c);輸入a,b,c三個數(shù)時,12空格13空格88Scanf(“%3d%3d”,&a,&b);輸入:123456,系統(tǒng)自動把123賦給a,456賦給bScanf(“%3c”,&ch);輸入:abc,由于ch只能容納一個字符,系統(tǒng)就把第一個字符'a'賦給ch如果%后面有一個”*”附加說明符,表示跳過它指定的列數(shù).如:scanf("%2d%*3d%2d”,&a,&b);輸入:12空格345空格67回車,將12賦給a,%*3d表示讀入3位整數(shù)但不賦給任何變量.然后再讀入2位整數(shù)67賦給b.第二組數(shù)據(jù)345被跳過.在輸入數(shù)據(jù)進,遇以下情況時數(shù)據(jù)認為結(jié)束:1、 遇空格,或按回車或跳格(Tab)鍵;2、 按指定的寬度結(jié)束,如“%3d”,只取3列;
3、遇非法輸入;例:輸入三角形的三邊長,求三角形面積s=1/2(a+b+c) area=?號s(s-a)(s-b)(s-c)Floata,b,c,area,s;scanf(“%f,%f,%f”,&a,&b,&c);s=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.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);If語句If與else的配對關(guān)系:else總是與它上面的最近的if配對.If與else的數(shù)目一樣時If與else的數(shù)目一樣時,采用If()If()語句1Else語句2ElseIf()語句3Else語句4If與else的數(shù)目不一樣時,釆用加花括號來確定If(){if()語句1}Else語句2判斷某一年是否閏年其中一種方法main(){intyear,leap;printf("inputyear:");scanf("%d",&year);if(year%4==0)if(year%100==0)if(year%400==0)leap=1;elseleap=0;elseleap=1;elseleap=0;if(leap)printf("%dyes\n",year);elseprintf("%dnoyear\n",year);getch();}main(){intx,y;scanf(“%d”,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%d,y=%d\n”,x,y);getch();/*能顯示輸出*/}/*判斷某一年是否閏年另一種方法*/#include<>voidmain(){intyear;printf("inputyear:");scanf("%d",&year);if(((year%4==0)&&(year%100!=0))||(year%400==0))printf("%dyes\n",year);elseprintf("%dnoyear\n",year);getch();}條件運算符(三目運算符,自右至左)main(){intx,y,max;scanf("%d,%d",&x,&y);max=(x>y)x:y;/*如果(a>b)條件為真,則條件表達式取值a,否則取值b*/printf("%d\n",max);getch();/*能顯示輸出*/}/*輸入一個字符,判斷大小寫,如果是大寫,轉(zhuǎn)換成小寫,并輸出最后得到的字符*/Main(){charch;Scanf(“%c”,&ch);If(ch>=‘A'&&ch<=‘Z'){ch=ch+32;printf(“%c\n”,ch);}/*去掉花括號將編譯出錯*//* ch=(ch>=‘A'&&ch<=‘Z')(ch+32):ch 也可以用條件運算符*/Elseprintf(“%c\n”,ch);getch();/*能顯示輸出*/Switch語句是多分支選擇語句Switch(表達式)表達式的值與某一個case后面的常量表達式的值相等時就執(zhí)行case后面的語句{case常量表達式1語句1;break;每一個case常量表達式的值必須互不相同case常量表達式2:語句2 ;break;執(zhí)行一個分支后可以用一個break語句來終止switch語句的執(zhí)行case常量表達式3:語句3 ;break;case常量表達式n:語句n;break;default:語句n+1;最后一個分支default可以不加break語句。}Case后面包含一個以上執(zhí)行語句,但可以不必用花括弧括起來,會自動順序執(zhí)行本case后面所有的執(zhí)行語句Switch(表達式)表達式的值為A或B或C時都執(zhí)行同一組語句case‘A':case‘B':case‘C':case‘D':printf(">60\n”);break;/*求方程的解*/#include<> /*輸入輸出函數(shù)要調(diào)用,也可以不寫*/#include<> /*用到絕對值函數(shù)和開根號函數(shù),所以要調(diào)用*/main(){floata,b,c,disc,x1,x2,realpart,imagpart; /*定義類型*/scanf("%f,%f,%f",&a,&b,&c); /*輸入方程的三個數(shù)*/printf("theequation"); /*顯示theequation,意思是方程*/訐(fabs(a)<=pow(10,-6))printf("isnotaquadratic");/*對a求絕對值,判斷a=0(fabs(a)<=le-6))就不是二次方程*/elsedisc=b*b-4*a*c; /*計算b*b-4*a*c的值是等于還是小于還是大于0*/if(fabs(disc)<=pow(10,-6))printf("hastwoequalroots:%8.4f\n",-b/(2*a));/*hastwoequalroots是有兩個相等的根的意思,這個判斷是等于0后有兩個相等實根*/elseif(disc>pow(10,-6)) /*大于0后有兩個不等實根*/{x1=(-b+sqrt(disc))/(2*a);x2=(-b-sqrt(disc))/(2*a);printf("hastwoequalroots:%8.4fand%8.4f\n",x1,x2);}else{realpart=-b/(2*a);/*小于0后有兩個共軛復根的實部*/imagpart=sqrt(-disc)/(2*a);printf("hascomplexroots:\n");/*hascomplexroots是有復雜的根源的意思*/printf("%8.4f+%\n",realpart,imagpart);printf("%8.4f-%\n",realpart,imagpart);}getch();}說明:le-6:是科學計數(shù)法,表示10的-6次方,用函數(shù)是pow(10,-6))不用0來判斷,用一個很小的數(shù)就認為disc是0,是為了產(chǎn)生誤差,因為實數(shù)在計算和存儲時會有一些微小的誤差。/*算運費*/#include<>main(){intc,s;floatf,d,p,w; /*總運費f(freight貨物),基本運費p(price價格),貨物重w(weight重量),距離s,折扣d(discount)*/printf("inputnumber:\n");scanf("%f,%f,%d",&p,&w,&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=2;break;case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/;printf("freight=%f\n",f);getch();}Goto語句為無條件轉(zhuǎn)向語句,形式:goto語句標號;語句標號用標識符表示,它的定名規(guī)則與變量名相同.即字母,下劃線,數(shù)字.一般來說來兩種用途:1、 與訐語句一起構(gòu)成循環(huán)結(jié)構(gòu);2、從循環(huán)體中跳轉(zhuǎn)到循環(huán)體外.但在C語言中可以用break語句和continue語句跳出本層循環(huán)和結(jié)束本次循環(huán).用if語句和goto語句構(gòu)成循環(huán),求1+2+3+ +99+100#include<>main(){intsum=0,i=1;loop: if(i<=100){sum=sum+i;i++;gotoloop;}printf("sum=%d\n",sum);getch();}While語句用來實現(xiàn)當型循環(huán)結(jié)構(gòu),一般形式:while(表達式)語句當表達式非0值時執(zhí)行while語句中的內(nèi)嵌語句,先判斷表達式后執(zhí)行語句/*用while語句構(gòu)成循環(huán),求1+2+3+ ..+99+100*/#include<>main(){intsum=0,i=1;while(i<=100){sum=sum+i;i++;} /*如果不加花括弧則while語句的范圍只到“sum=sum+i”*/printf("sum=%d\n",sum);getch();}Do循環(huán)體While(表達式)Do-While是循環(huán)語句特點是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立/*用do-while語句構(gòu)成循環(huán),求1+2+3+ ??+99+100*/#include<>main(){intsum=0,i=1;do{sum=sum+i;i++;}while(i<=100);printf("sum=%d\n",sum);getch();}按esc后一個一個顯示輸出/*用do-while語句構(gòu)成循環(huán),求1+2+3+ ??+99+100*/#include<>main(){intsum=0,i=1;do{sum=sum+i;i++;printf("sum=%d\n",sum);getch();}while(i<=100);printf("sum=%d\n",sum);getch();}For語句格式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值;) 語句;表達式1 表達式2表達式3先求解表達式1。再求解表達式2,若值為真,則執(zhí)行for語句中的內(nèi)嵌語句,然后就求解表達式3,若為假則結(jié)束循環(huán)。1、“表達式T可以省略for(;表達式2;表達式3)語句;/*分號不能少*/2、“表達式2”省略即不判斷循環(huán)條件,循環(huán)將無終止地進行下去。3、 “表達式3”也可以省略,如i++不放在“表達式3”,而作為循環(huán)體的一部分效果是一樣的。4、 全部省略么不賦值,不判斷,不增量,無終止地執(zhí)行循環(huán)體。5、 for(i=O;(c=getchar())!=‘\n';i+=c;)終端接收一個字符給C,判斷表達式的值是否不等于'\n'(換行符)for(;(c=getchar())!='\n';)則輸入Computer輸出則也是Computerbreak語句和continue語句break是終止整個循環(huán)的執(zhí)行;continue只是結(jié)束本次循環(huán);訐(fabs(a)<=pow(10,-6))的意思是if(a=0)頭文件:#include<>_pow(x,y)函數(shù)是求X的值,幾的幾次方。Pow(x,y)函數(shù)是計算xy的值函數(shù)原型:doublepow(doublex,doubley)Abs(x)函數(shù)是求整數(shù)x的絕對值函數(shù)原型:intabs(intx)Fabs(x)函數(shù)是求雙精度實數(shù)的絕對值函數(shù)原型:doublefabs(doublex)Sqrt(x)函數(shù)是開根號子 函數(shù)原型:doublesqrt(doublex)攝氏溫度C=5/9(F華氏溫度-32)
數(shù)組一維數(shù)組類型說明:數(shù)組名[常量表達式]如如:inta[10];表示數(shù)組名為a,此數(shù)組有10個元素。數(shù)組必須先定義后使用。C語言規(guī)定只能逐個引用數(shù)組元素而不能一次引用整個數(shù)組。main(){inti,a[10];for(i=0;i<10;i++) a[i]=i;for(i=9;i>=0;i--) printf(“outnumber%d\n”,a[i]);/*從9到0輸出*/getch();}/*輸出數(shù)字101到110*/#include<>main()/*輸出數(shù)字101到110*/#include<>main(){inti,t=100,a[10];for(i=0;i<=9;i++){t++;a[i]=t;printf("outnumber%d\n",a[i]);}getch();}#include<>main(){inti,t,a[10];printf("intputnumber:");scanf("%d",&t);for(i=0;i<=9;i++){t++;a[i]=t;printf("outnumber%d\n",a[i]);}getch();}一維數(shù)組初始化定義成:inta[10]={0,1,2,3,4,5,6,7,8,9};定義成:inta[10]={0,1,2,3,4,5};表示只給前面5個元素賦初值,后面的5個元素值為0/*后一個數(shù)是前二個數(shù)之和‘Fibonacci數(shù)列*/#include<>main(){inta[20]={1,1};inti;for(i=2;i<20;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<20;i++){if(i%5==0)printf(“\n”);printf(“%12d”,a[i]);}getch();}#include<>main(){longinta[30]={1,1};inti;for(i=2;i<30;i++)a[i]=a[i-2]+a[i-1];for(i=0;i<30;i++){if(i%5==0)printf("\n");printf("%12ld",a[i]);}getch();}起泡法對10個數(shù)排序(由小到大):將相鄰的兩個數(shù)比較,將小的調(diào)到前頭。main(){inta[11];inti,j,t;printf(“inpuf10numers:\n”);for(i=1;i<11;i++)scanf(“%d”,&a[i]);printf(“\n”);for(j=1;j<=9;j++) /*因為10個數(shù),所以要要循環(huán)j=10-1次*/for(i=1;i<=10-j;i++)/*第j趟要進行n-j次兩兩比較*/if(a[i]>a[i+1]){t=a[i];a[i]=a[i+1];a[i+1]=t;}printf(“thesortednumbers:\n”);for(i=1;i<=10;i++)printf(“%d\n”,a[i]);getch();}二維數(shù)組類型說明:數(shù)組名[常量表達式][常量表達式]如:floata[3][4];3行4列C語言對二維數(shù)組采用這樣的定義,可以把二維數(shù)組看作是一種特殊的一維數(shù)組:它的元素又是一個一維數(shù)組。可以看作是一個一維數(shù)組它有3個元素a[0],a[1],a[2]每個元素又包含有4個元素的一維數(shù)組。二維數(shù)組初始化inta[3][4]={ {1,2,3,4},{5,6,7,8},{9,10,11,12} };inta[3][4]={ 1,2,3,4,5,6,7,8,9,10,11,12 };a[3][4]={{1},{5},{9}};只對各行第1列賦值,其余元素值自動為0/*將二維數(shù)組行和列互換,存到另一個二維數(shù)組*/#include""main(){inta[2][3]={{1,2,3},{4,5,6}};intb[3][2],i,j;printf("arraya:\n"); /*array陣列*/for(i=0;i<=1;i++) /*行*/{for(j=0;j<=2;j++) /*列*/{printf("%6d",a[i][j]);b[j][i]=a[i][j]; /*賦值給b[j][i]值*/}printf("\n");}printf("arrayb:\n"); /*以下是數(shù)組b輸出*/for(i=0;i<=2;i++) for(j=0;j<=2;j++){for(j=0;j<=1;j++) {for(i=0;i<=1;i++)printf("%6d",b[i][j]); printf("%6d",b[j][i]);printf("\n"); printf("\n");} } /*左右兩部分輸出結(jié)果一樣的*/getch();}/*一個3X4矩陣,求出其中最大值的那個元素的值及所在的行號和列號*/#include""main(){inti,j,row=0,colum=0,max;/*row行\(zhòng)排colum列*/inta[3][4]={{1,2,3,4},{9,8,7,6},{-10,10,-5,2}};max=a[0][0];for(i=0;i<=2;i++)for(j=0;j<=3;j++)if(a[i][j]>max){max=a[i][j];row=i;colum=j;}pritntf(“max=%d,row=%d,colum=%d\n”,max,row,colum);getch();}字符數(shù)組:用來存放字符數(shù)據(jù)的數(shù)組,一個元素存放一個字符.初始化charc[10];c[0]=‘I';c[1]=‘';c[2]=‘a(chǎn)';c[3]=‘m';c[4]=‘';c[5]=‘h';c[6]=‘a(chǎn)';c[7]=‘p';c[8]=‘p';c[9]=‘y';字符型與整型是互相通用,所以也可以定義intc[10];初始化:charc[10]={T,‘''a:'m',‘'‘h''a''p''p''y'};如果初值個數(shù)小于數(shù)組長度,將剩下的元素自動定為空字符“\0”也可以定義二維字符數(shù)組chara[5][5]={{''''''''''},{''''''''''},{''''''''''},{''''''''''},{''''''''''}};單引號中間就是想賦的值C語言中將字符串作為字符數(shù)組來處理。C語言規(guī)定了一個“字符串結(jié)束標志”,以字符'\0'代表。系統(tǒng)對字符串常量也自動加一個'\0'作為結(jié)束符。說明:'\0'代表ASCII碼為0的字符,是一個不可以顯示的字符,而是一個“空操作字符”單個字符作初值用單引號,字符串是用雙引號。charc[10]={“China”};前面5個元素為'C','h','i','n','a',第6個為'\0',后4個元素為空字符,所以也是‘\0'字符數(shù)組的輸入輸出逐個字符輸入輸出,用格式符“%C” 輸入或輸出一個字符。將整個字符串一次輸入或輸出,用格式符“%s”輸入或輸出一串字符。輸出字符不包括結(jié)束符'\0'用“%s”格式符輸出字符串時,printf函數(shù)中的輸出項是字符數(shù)組名,而不是數(shù)組元素名。如寫成printf("%s”,c[O]);是不對的。應為:printf("%s”,c);定義:chara[13];Scanf("%s”,a);若輸入:Howareyou回車而只將第一個空格前的“How”送到a中。注意:scanf函數(shù)中輸入項是字符數(shù)組名。輸入項是字符數(shù)組名時,不要再加地址符&,因為在C語言中數(shù)組名代表該數(shù)組的起始地址,Scanf("%s”,&a);這樣的寫法是不對的。printf(“%o”,c);可以輸出數(shù)組C的起始地址。puts(字符數(shù)組,輸出字符串)charstr[]={“China\nBeijing”};puts(str);gets(字符數(shù)組,輸入字符串)定義:charstr[];gets(str);若輸入:Computer回車,將所輸入的字符串送給字符數(shù)組str,8個字母加一個自動加上去的'\0'共9個字符送入str。注意:puts和gets函數(shù)只能輸入或輸出一個字符串。不能寫成:puts(str1,str2)或gets(str1,str2)Strcat(字符數(shù)組1字符數(shù)組2)是字符串連接,作用:連接兩個字符數(shù)組中的字符串,把字符2接到字符1的后面,結(jié)果放在字符數(shù)組1中。字符數(shù)組1必須足夠大,以便容納連接后的新字符串。charstr1[30]={"People'sRepublicof”};charstr2[]={"China”};printf(“%s”,strcat(str1,str2));輸出:People'sRepublicofChinastrcpy(字符數(shù)組1字符串2)是字符串復制。作用:將字符串2復制到字符數(shù)組1中去。字符數(shù)組1必須足夠大,以便容納被復制的字符串。字符數(shù)組1必須寫成數(shù)組名形式(如str1),字符串2可以是字符數(shù)組名也可以是一個字符串常量,如strcpy(str1,“China”);復制時連同字符串后面的'\0'一起復制到字符數(shù)組1中。不能用賦值語句將一個字符串常或字符數(shù)組直接給一個字符數(shù)組?如:str1={"China”};和str1=str2;都是不合法的。用賦值語句只能將一個字符賦給一個字符型變量或字符數(shù)組元素。如:chara[5],cl1,cl2;cl1='A';Cl2='B';a[0]='C';a[1]='h'; 以此類推??梢杂胹trncpy函數(shù)將字符串2中前面若干個字符復制到字符數(shù)組1中去。如:strncpy(str1,str2,2);Strcmp(字符串1,字符串2)是字符串比較。作用:比較字符串1和字符串2。對兩個字符串自左至右逐個字符相比(按ASCII碼大小比較)直到出現(xiàn)不同的字符或遇到'\0'為止比較結(jié)果由函數(shù)值帶回:1、 如果字符串1=字符串2,函數(shù)值為02、 如果字符串1>字符串2,函數(shù)值為正整數(shù)3、 如果字符串1<字符串2,函數(shù)值為負整數(shù)注意:對兩個字符串比較,不能用以下形式:if(str1==str2)printf(“yes”);而只能用if(strcmp(str1,str2)==0)printf("yes”);/*輸入slzzOOO正確后顯示*/#include""main(){charstr1[]={"slzzOOO"};charstr2[16];printf("inputmima:\n");scanf("%s",str2);if(strcmp(str1,str2)==O)printf("ILOVEYOU");elseprintf("NONONONONONONONONO");getch();}strlen(字符數(shù)組)是測字符串長度。作用:用來測試字符串長度的函數(shù)。函數(shù)的值為字符串的實際長度,不包括‘\0'在內(nèi)。charstr[1O]={“China”};printf(“%d”,strlen(str));strlwr(字符串)是字符串小寫。作用:將字符串中大寫字母換成小寫字母。/*將字符串中大寫字母換成小寫字母*/#include""main(){charstr[16]={"ChinaWOaiNI"};printf("%s\n",str);printf("%s",strlwr(str));getch();}strupr(字符串)是字符串大寫。作用:將字符串中小寫字母換成大寫字母。/*將字符串中小寫字母換成大寫字母*/#include""main(){charstr[16]={"ChinaWOaiNI"};printf("%s\n",str);printf("%s",strupr(str));getch();/*輸入一行字符,統(tǒng)計有多少個單詞,單詞之間用空格分隔開*/思路:單詞數(shù)目可以由空格出現(xiàn)的次數(shù)決定(連續(xù)的若干空格作為出現(xiàn)一次空格;一行開頭的空格不統(tǒng)計在內(nèi))。#include""main(){charstr[81];inti,num=0,word=0;/*num為單詞數(shù),word=0則表示前一個字符是空格,word=1意味著前一個字符為非空格*/charc;gets(str); /*輸入字符串*/for(i=0;(c=str[i])!='\0';i++) /*如果是空操作就結(jié)束循環(huán),‘\0'是空操作*/if(c=='')word=0;/*空格鍵的ASCII碼值是032(space鍵)。如果C為空格,word為0,沒有新單詞*/else訐(word==0)/*C不是空格,條件滿足前一個字符是空格,新單詞開始,word為1前一個為非空格*/{word=1;num++;/*單詞個數(shù)+1*/}printf("Thereare%dwordsintheline.\n",num);getch();}當前為空格,未出現(xiàn)單詞,使word為0,num不累加;當前不為空格,前一字符為空格(word=0),新單詞出現(xiàn),num加1,word=1當前不為空格,前一字符非空格(word=1),未出現(xiàn)新單詞,num不加1預處理一》宏定義:1、 不帶參數(shù):#define標識符常量表達式/*#define是宏定義命令,宏名(標識符)好習慣用大寫*/#defineNIL0x80可以用#undefNIL命令終止宏定義的作用域。宏定義定義時可以引用已定義的宏名,可以層層置換如:#defineR#definePI#defineL2*PI*R#defineSPI*R*R2、 帶參數(shù):/*相當于小函數(shù)*/#define宏名(參數(shù)表)字符串/*不僅要時行字符串替換還要進行參數(shù)的替換,在宏定義時,宏名與帶參數(shù)的括弧之間不應該加空格,否則將空格以后的字符串都作為替代字符串的一部分,這可是很容易出錯的*/如:#defineSQ(a,b)a*b使用:x=12;y=10;area=SQ(x,y);/*則area=12*10=120*/define金山詞霸2009牛津版翻譯為確定宏不存在類型問題,宏名無類型,它的參數(shù)也無類型,只是一個符號代表。調(diào)用函數(shù)只可得到一個返回值,而宏可以設法得到幾個結(jié)果。如#definePI#defineCIRCLE(R,L,S,V)L=2*PI*R;S=PI*R*R;V=*PI*R*R*Rmain(){floatR,L,S,V;printf("INPUTSUZI:\n");scanf("%f",&R);CIRCLE(R,L,S,V);printf("R=%6.2f,L=%6.2f,S=%6.2f,V=%6.2f\n",R,L,S,V);getch();}宏替換不占運行時間,只上編譯時間.二》文件包含:#include<文件名〉或#include"文件名"/*在C中用雙引用形式更保險,在C51中常用物是尖括弧形式*/include金山詞霸2009牛津版翻譯為包括用<>尖括號形式時系統(tǒng)到存放C庫函數(shù)頭文件所在的目錄中找,這種稱為標準方式一個include命令只能指定一個被包含文件.如果文件1包含文件2,而文件2中要用到文件3的內(nèi)容,則而文件1中要用到兩個include命令.
即在文件即在文件1中定義:#include“”用雙引號么先在用戶當前目錄中尋找,若找不到再按標準方式#include“”如果中有全局靜態(tài)變量,它也在文件中有效,不必用extern聲明。條件編譯條件編譯幾種形式:#ifdef標識符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京市豐臺區(qū)2024-2025學年高二上學期11月期中考試生物試題
- 運動治療學-步行訓練
- 【課件】實際問題與一元一次方程(3)球賽積分+課件人教版七年級數(shù)學上冊
- 基于學習任務群的單元教學設計與實施
- 高中語文第6單元文無定格貴在鮮活2子路曾誓冉有公西華侍坐課件新人教版選修中國古代詩歌散文欣賞
- 信息技術(shù)(第2版)(拓展模塊)教案6-模塊3 3.6 大數(shù)據(jù)安全與風險
- 小學生安全教育班會教案12篇 托班安全教案20篇
- 2014-2020年全球無碳紙行業(yè)市場調(diào)查及投資運行態(tài)勢報告
- 2024至2030年中國葉片專用掃查器行業(yè)投資前景及策略咨詢研究報告
- 2024至2030年中國內(nèi)環(huán)式齒輪泵數(shù)據(jù)監(jiān)測研究報告
- (完整word版)英語四級單詞大全
- 嶺南新天地調(diào)研報告
- 推行向善文化促進內(nèi)涵發(fā)展
- 高級生物化學.PPT
- AMI_SodiumA-鈉表
- 滲透結(jié)晶材料在水利渠道襯砌工程中應用實驗研究
- 《質(zhì)量管理體系文件》18客戶投訴處理控制程序
- 無損檢測公司質(zhì)量手冊范本
- 踝關(guān)節(jié)韌帶損傷與修復ppt課件
- 滬科版八年級物理《光的折射》優(yōu)質(zhì)教案新課標[原創(chuàng)]
- 酒店營銷案例及分析ppt課件
評論
0/150
提交評論