




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
C語言筆記注意:在C語言中,關鍵字都是小寫的。C語言簡潔、緊湊,使用方便、靈活。ANSIC一共只有32個關鍵字:autobreakcasedefaultchar const continuedowhiledoubleelseenum extern floatforgotoifintlongregister return shortsignedstaticsizofstruct switch typedefunionunsignedvoidvolatile9種控制語句,程序書寫自由,主要用小寫字母表示,壓縮了一切不必要的成分。TurboC擴充了11個關鍵字:asm_cs_ds_es_sscdeclfarhugeinterruptnearpascal#define八進制以0開頭,如0123,即(123)8十六進制以Ox開頭,如0123,即(123)16整型:一個正數的補碼和其原碼形式相同,如10得0000000000001010一個負數的補碼是取-10的絕對值10,對10的二進制形式取反加1,101+1=110Signedintunsignedintshortlongcharfloat單精度double雙精度,longdouble%d,%o,%x, %c,%s, —個整常量后面加一個字母丨或L,則認為是longintmain()個說明或一個語句占一行。用{}括起來的部分,通常表示了程序的某一層次結構。{}一般與該結構語句的第一個字母對齊,并單獨占一行。低一層次的語句或說明可比高一層次的語句或說明縮進若干格后書寫。以便看起來更加清晰,增加程序的可讀性。空白符:空格符、制表符、換行符等統稱為空白符在C語言中使用的詞匯分為六類:標識符,關鍵字,運算符,分隔符,常量,注釋符等1?標識符(在程序中使用的變量名、函數名、標號等統稱為標識符)C規定,標識符只能是字母(A?Z,a?z)、數字(0?9)、下劃線(_)組成的字符串,并且其第一個字符必須是字母或下劃線。⑴標準C不限制標識符的長度,但它受各種版本的C語言編譯系統限制,同時也受到具體機器的限制。在標識符中,大小寫是有區別的。標識符雖然可由程序員隨意定義,但標識符是用于標識某個量的符號。因此,命名應盡量有相應的意義,以便于閱讀理解,作到“顧名思義”。2?關鍵字(關鍵字是由C語言規定的具有特定意義的字符串,通常也稱為保留字。用戶定義的標識符不應與關鍵字相同)(1)類型說明符:如前面例題中用到的int,double等(2)語句定義符:ifelse就是條件語句的語句定義符(3)預處理命令字:include3?運算符:4?分隔符:在C語言中采用的分隔符有逗號和空格兩種5?常量:C語言中使用的常量可分為數字常量、字符常量、字符串常量、符號常量、轉義字符等多種。6?注釋符:C語言的注釋符是以"/*"開頭并以"*/"結尾的串#definePRICE30/*#define定義PRICE代表常量30*/ PRICE是符號常量習慣上符號常量用大寫,變量用寫小寫例如:整型變量a和b,可以進行求余運算:a%b(%是求余符號)若指定a和b為實型變量,則不允許進行”求余”運算.整型八進制以0開頭的數是八進制.如0123表示八進制123,即(123)8其值為1X82+2X81+3X8。8,十六進制以0x開頭的數是十六進制?如0x123表示十六進制123,即(123)16,其值為1X162+2X161+3X160在C編譯系統,每一個整型變量在內存中占2個字節.實際上,數值是以補碼表示的?一個正數的補碼和其原碼的形式是相同?而負數的補碼是將該值的絕對值的二進制形式,按位取反再加1.例如:求-10的補碼,取-10的絕對值為10,然后10的二進制為1010,對1010(0000000000001010)取反,,一共占16個字節,再加1為整數的16位中,最左面的一位是表示符號,該位為0表示數值為正,該位為1則數值為負Signedint有符號-32768-32767unsignedint無符號0-65535shortint短整型longint長整型.不一樣的微機,位數是不一樣的.整型int%d,%0,%x實型floatdouble%f字符型char一個字符變量在內存中占一個字節%cPrintf(“%f,%d,%c\n”,a,b,c);\ddd:1到3位8進制數所代表的字符如:\101(八進制)為65(二進制)的字符”A”注意:”\0”或”\000”是代表ASCII碼為0的控制字符,即”空操作”字符.它將用在字符串中.\xhh:1到2位16進制數所代表的字符\n:換行,將當前位置移到下一行開頭,ASCII代碼為10(十進制)\t:水平制表(跳到下一個tab位置),制表區占8列,ASCII代碼為9(十進制)\b:退格,將當前位置移到前一列,ASCII代碼為8(十進制)\r:回車,將當前位置移到本行開頭,ASCII代碼為13(十進制)\f:換頁,將當前位置移到下頁開頭,ASCII代碼為12(十進制)\\:反斜杠字符”\”,ASCII代碼為92(十進制)\':單引號(撇號)字符,ASCII代碼為39(十進制)\”:雙引號字符,ASCII代碼為34(十進制)字符串常量‘a'是字符常量(是用一對單引號括起來的),"a"是字符串常量(是用一對雙引號括起來的)C規定在每一個字符串的結尾加一個”字符串結束標志”,是以字符'\0'作為字符結束標志,從ASCII代碼表中可以看到ASCII碼為0的字符是”空操作字符”各類數值型數據間的混合運算如字符數據必定先轉換為整數,short型轉換為int型float型數據在運算時一律先轉換成雙精度型即是二個全是float型也要先轉換成double型.Charshortlfintfunsignedflongfdoubleafloat運算符優先級和結合性級別類別含義運算符結合方向1強制轉換、數組、結構、聯合圓括號()自左至右下標運算符[]指向結構成員運算符或結構體成員運算符->或2邏輯邏輯非!自右至左(單目運算符)字位按位取反2增量自增(加一)++減量自減(減一)--指針地址與運算符(取地址)&指針運算符(取內容)*算術負號運算符(單目減)-長度計算長度計算sizeof3算術乘*自左至右(雙目運算符)除/求余(取模)%4算術和指針運算加+減-5字位左移<<右移>>6關系大于等于>=大于>小于等于<=小于<7等于(恒等于)==
不等于!=8字位按位與&9按位異或A10按位或|11邏輯邏輯與&&左結合左結口雙目運算符12邏輯或||13條件條件運算14賦值賦值=復合賦值+=*=/=%=》=<<=&=A=1=15逗號逗號運算/-右1結合右結口強制類型轉換運算符(double)a將a轉換成double類型(int)(x+y)將x+y的值轉換成整形,如果寫成(int)x+y則只將x轉換成int型,然后與y相加(float)(5%3)將5%3的值轉換成float型說明:在強制轉換時,得到一個所需的類型的中間變量,原來變量的類型未發生變化.求余"%”運算符要求其兩側均為整型量,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++中,其中-為負號運算和++為同優先級,而結合方向是自右至左,所以相當于-(i++)(1)控制語句C語言9種控制語句:1、 if()~~~~~~else~~~~~~(條件語句)2、for()~~~~~ (循環語句)3、while()~~~~~ (循環語句)4、 do~~~'~~while()~~~~~~(循環語句)5、 continue (結束本次循環語句)6、break (中止執行switch或循環語句)7、 switch (多分支選擇語句)8、goto (轉向語句)9、 return (從函數返回語句)
上述括號()表示其中是一個條件,~~~~表示內嵌的語句例:if(x>y)z=x;elsez=y;函數調用語句:printf(“ThisisaCstatement.\n”);表達式語句:a=3;(一個賦值表達式)空語句: ; (即只有一個分號語句)復合語句{}: {z=x+y;t=z/100;printf(“%f\n”,t);}輸入輸出函數#include<>或“”/*頭文件*/Scanf()輸入函數printf()輸出函數是系統提供的標準函數#include(預編譯命令)Putchar(Putchar(:輸出字符)Printf(:格式輸出)getchar(輸入字符)scanf(格式輸入)Puts(輸出字符串) gets(輸入字符串)c語言中include后用引號與尖括號的區別使用尖括號的話,編譯時會先在系統inelude目錄里搜索,如果找不到才會在源代碼所在目錄搜索;使用雙引號則相反,會先在源代碼目錄里搜索。這就意味著,當系統里(如/usr/include/里)有一個叫做的頭文件,而你的源代碼目錄里也有一個你自己寫的頭文件,那么使用尖括號時用的就是系統里的;而使用雙引號的話則會使用你自己寫的那個。所以建議:使用系統里提供的頭文件時使用尖括號使用自己編寫的頭文件時使用雙引號輸出單個字符:#include<>Main(){chara,b,c;a=‘B';b=‘O'c=‘Y';putchar(a);putchar(b);putchar(c);}也可以輸出轉義字符如:putchar(‘\101');putchar(‘\'');輸入單個字符:getchar()函數沒有參數,其一般形式為getchar() 字符輸入函數#include<>main(){charc;c=getchar();putchar(c);}格式輸入輸出函數Printf(“%d\n”,x);%d么按整型數據的實際長度輸出%md么m為指定的輸出字段的寬度,如果數據的位數小于m,則左端補以空格,若大于m,則按實際位數輸出.Printf("%4d,%4d\n”,a,b)若a=123,b=12345則a輸出結果為:空格123則b輸出結果為:12345%ld么輸出長整型數據若longa=1356739;printf(“%9ld”,a);則a輸出結果為:空格空格1356739%o是以八進制形式輸出整數.%x是以十六進制形式輸出整數.%u用來輸出unsigned型數據,即無符號數,以十進制形式輸出.%c用來輸出一個字符.chara='w';printf("%c”,w);%s用來輸出一個字符串.printf("%s”,”CHINA”);%ms輸出的字符占m列,如字符串本身長度大于m則突破m的限制,全部輸出字符串,若串長小于m,則左補空格.%-ms如果串長小于m則在m列范圍內,字符串向左靠,右補空格.%輸出占m列,但只取字符串左端n個字符.這n個字符輸出在m列的右端,左補空格.%輸出占m列,但只取字符串左端n個字符.這n個字符輸出在m列的左端,右補空格.n>m,則m自動取n值,即保證n個字符正常輸出.%f用來輸出實數(單精度和雙精度),以小數形式輸出.%e以指數形式輸出實數,輸出數據所占的寬度和數字部分小數位數由系統自動指定給出6位小數,指數部分占5列(如e+002),其中e占一位,指數符號占一位,指數占3位%g用來輸出實數,它根據數值大小自動選f格式或e格式.Scanf輸入函數scanf(“%d,%d,%d”,&a,&b,&c)#include<>main(){inta,b,c;scanf("%d,%d,%d",&a,&b,&c);/*輸入這三個數的時候丫逗號也要輸的?*/printf("%d,%d,%d\n",a,b,c);getch();}若:scanf("%d%d%d",&a,&b,&c);輸入a,b,c三個數時,12空格13空格88Scanf(“%3d%3d”,&a,&b);輸入:123456,系統自動把123賦給a,456賦給bScanf(“%3c”,&ch);輸入:abc,由于ch只能容納一個字符,系統就把第一個字符'a'賦給ch如果%后面有一個”*”附加說明符,表示跳過它指定的列數.如:scanf("%2d%*3d%2d”,&a,&b);輸入:12空格345空格67回車,將12賦給a,%*3d表示讀入3位整數但不賦給任何變量.然后再讀入2位整數67賦給b.第二組數據345被跳過.在輸入數據進,遇以下情況時數據認為結束:1、 遇空格,或按回車或跳格(Tab)鍵;2、 按指定的寬度結束,如“%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的配對關系:else總是與它上面的最近的if配對.If與else的數目一樣時If與else的數目一樣時,采用If()If()語句1Else語句2ElseIf()語句3Else語句4If與else的數目不一樣時,釆用加花括號來確定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();/*能顯示輸出*/}/*輸入一個字符,判斷大小寫,如果是大寫,轉換成小寫,并輸出最后得到的字符*/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后面的常量表達式的值相等時就執行case后面的語句{case常量表達式1語句1;break;每一個case常量表達式的值必須互不相同case常量表達式2:語句2 ;break;執行一個分支后可以用一個break語句來終止switch語句的執行case常量表達式3:語句3 ;break;case常量表達式n:語句n;break;default:語句n+1;最后一個分支default可以不加break語句。}Case后面包含一個以上執行語句,但可以不必用花括弧括起來,會自動順序執行本case后面所有的執行語句Switch(表達式)表達式的值為A或B或C時都執行同一組語句case‘A':case‘B':case‘C':case‘D':printf(">60\n”);break;/*求方程的解*/#include<> /*輸入輸出函數要調用,也可以不寫*/#include<> /*用到絕對值函數和開根號函數,所以要調用*/main(){floata,b,c,disc,x1,x2,realpart,imagpart; /*定義類型*/scanf("%f,%f,%f",&a,&b,&c); /*輸入方程的三個數*/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:是科學計數法,表示10的-6次方,用函數是pow(10,-6))不用0來判斷,用一個很小的數就認為disc是0,是為了產生誤差,因為實數在計算和存儲時會有一些微小的誤差。/*算運費*/#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語句為無條件轉向語句,形式:goto語句標號;語句標號用標識符表示,它的定名規則與變量名相同.即字母,下劃線,數字.一般來說來兩種用途:1、 與訐語句一起構成循環結構;2、從循環體中跳轉到循環體外.但在C語言中可以用break語句和continue語句跳出本層循環和結束本次循環.用if語句和goto語句構成循環,求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語句用來實現當型循環結構,一般形式:while(表達式)語句當表達式非0值時執行while語句中的內嵌語句,先判斷表達式后執行語句/*用while語句構成循環,求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循環體While(表達式)Do-While是循環語句特點是先執行循環體,然后判斷循環條件是否成立/*用do-while語句構成循環,求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語句構成循環,求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(循環變量賦初值;循環條件;循環變量增值;) 語句;表達式1 表達式2表達式3先求解表達式1。再求解表達式2,若值為真,則執行for語句中的內嵌語句,然后就求解表達式3,若為假則結束循環。1、“表達式T可以省略for(;表達式2;表達式3)語句;/*分號不能少*/2、“表達式2”省略即不判斷循環條件,循環將無終止地進行下去。3、 “表達式3”也可以省略,如i++不放在“表達式3”,而作為循環體的一部分效果是一樣的。4、 全部省略么不賦值,不判斷,不增量,無終止地執行循環體。5、 for(i=O;(c=getchar())!=‘\n';i+=c;)終端接收一個字符給C,判斷表達式的值是否不等于'\n'(換行符)for(;(c=getchar())!='\n';)則輸入Computer輸出則也是Computerbreak語句和continue語句break是終止整個循環的執行;continue只是結束本次循環;訐(fabs(a)<=pow(10,-6))的意思是if(a=0)頭文件:#include<>_pow(x,y)函數是求X的值,幾的幾次方。Pow(x,y)函數是計算xy的值函數原型:doublepow(doublex,doubley)Abs(x)函數是求整數x的絕對值函數原型:intabs(intx)Fabs(x)函數是求雙精度實數的絕對值函數原型:doublefabs(doublex)Sqrt(x)函數是開根號子 函數原型:doublesqrt(doublex)攝氏溫度C=5/9(F華氏溫度-32)
數組一維數組類型說明:數組名[常量表達式]如如:inta[10];表示數組名為a,此數組有10個元素。數組必須先定義后使用。C語言規定只能逐個引用數組元素而不能一次引用整個數組。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();}/*輸出數字101到110*/#include<>main()/*輸出數字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();}一維數組初始化定義成:inta[10]={0,1,2,3,4,5,6,7,8,9};定義成:inta[10]={0,1,2,3,4,5};表示只給前面5個元素賦初值,后面的5個元素值為0/*后一個數是前二個數之和‘Fibonacci數列*/#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個數排序(由小到大):將相鄰的兩個數比較,將小的調到前頭。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個數,所以要要循環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();}二維數組類型說明:數組名[常量表達式][常量表達式]如:floata[3][4];3行4列C語言對二維數組采用這樣的定義,可以把二維數組看作是一種特殊的一維數組:它的元素又是一個一維數組。可以看作是一個一維數組它有3個元素a[0],a[1],a[2]每個元素又包含有4個元素的一維數組。二維數組初始化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/*將二維數組行和列互換,存到另一個二維數組*/#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"); /*以下是數組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");} } /*左右兩部分輸出結果一樣的*/getch();}/*一個3X4矩陣,求出其中最大值的那個元素的值及所在的行號和列號*/#include""main(){inti,j,row=0,colum=0,max;/*row行\排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();}字符數組:用來存放字符數據的數組,一個元素存放一個字符.初始化charc[10];c[0]=‘I';c[1]=‘';c[2]=‘a';c[3]=‘m';c[4]=‘';c[5]=‘h';c[6]=‘a';c[7]=‘p';c[8]=‘p';c[9]=‘y';字符型與整型是互相通用,所以也可以定義intc[10];初始化:charc[10]={T,‘''a:'m',‘'‘h''a''p''p''y'};如果初值個數小于數組長度,將剩下的元素自動定為空字符“\0”也可以定義二維字符數組chara[5][5]={{''''''''''},{''''''''''},{''''''''''},{''''''''''},{''''''''''}};單引號中間就是想賦的值C語言中將字符串作為字符數組來處理。C語言規定了一個“字符串結束標志”,以字符'\0'代表。系統對字符串常量也自動加一個'\0'作為結束符。說明:'\0'代表ASCII碼為0的字符,是一個不可以顯示的字符,而是一個“空操作字符”單個字符作初值用單引號,字符串是用雙引號。charc[10]={“China”};前面5個元素為'C','h','i','n','a',第6個為'\0',后4個元素為空字符,所以也是‘\0'字符數組的輸入輸出逐個字符輸入輸出,用格式符“%C” 輸入或輸出一個字符。將整個字符串一次輸入或輸出,用格式符“%s”輸入或輸出一串字符。輸出字符不包括結束符'\0'用“%s”格式符輸出字符串時,printf函數中的輸出項是字符數組名,而不是數組元素名。如寫成printf("%s”,c[O]);是不對的。應為:printf("%s”,c);定義:chara[13];Scanf("%s”,a);若輸入:Howareyou回車而只將第一個空格前的“How”送到a中。注意:scanf函數中輸入項是字符數組名。輸入項是字符數組名時,不要再加地址符&,因為在C語言中數組名代表該數組的起始地址,Scanf("%s”,&a);這樣的寫法是不對的。printf(“%o”,c);可以輸出數組C的起始地址。puts(字符數組,輸出字符串)charstr[]={“China\nBeijing”};puts(str);gets(字符數組,輸入字符串)定義:charstr[];gets(str);若輸入:Computer回車,將所輸入的字符串送給字符數組str,8個字母加一個自動加上去的'\0'共9個字符送入str。注意:puts和gets函數只能輸入或輸出一個字符串。不能寫成:puts(str1,str2)或gets(str1,str2)Strcat(字符數組1字符數組2)是字符串連接,作用:連接兩個字符數組中的字符串,把字符2接到字符1的后面,結果放在字符數組1中。字符數組1必須足夠大,以便容納連接后的新字符串。charstr1[30]={"People'sRepublicof”};charstr2[]={"China”};printf(“%s”,strcat(str1,str2));輸出:People'sRepublicofChinastrcpy(字符數組1字符串2)是字符串復制。作用:將字符串2復制到字符數組1中去。字符數組1必須足夠大,以便容納被復制的字符串。字符數組1必須寫成數組名形式(如str1),字符串2可以是字符數組名也可以是一個字符串常量,如strcpy(str1,“China”);復制時連同字符串后面的'\0'一起復制到字符數組1中。不能用賦值語句將一個字符串常或字符數組直接給一個字符數組?如:str1={"China”};和str1=str2;都是不合法的。用賦值語句只能將一個字符賦給一個字符型變量或字符數組元素。如:chara[5],cl1,cl2;cl1='A';Cl2='B';a[0]='C';a[1]='h'; 以此類推。可以用strncpy函數將字符串2中前面若干個字符復制到字符數組1中去。如:strncpy(str1,str2,2);Strcmp(字符串1,字符串2)是字符串比較。作用:比較字符串1和字符串2。對兩個字符串自左至右逐個字符相比(按ASCII碼大小比較)直到出現不同的字符或遇到'\0'為止比較結果由函數值帶回:1、 如果字符串1=字符串2,函數值為02、 如果字符串1>字符串2,函數值為正整數3、 如果字符串1<字符串2,函數值為負整數注意:對兩個字符串比較,不能用以下形式: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(字符數組)是測字符串長度。作用:用來測試字符串長度的函數。函數的值為字符串的實際長度,不包括‘\0'在內。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();/*輸入一行字符,統計有多少個單詞,單詞之間用空格分隔開*/思路:單詞數目可以由空格出現的次數決定(連續的若干空格作為出現一次空格;一行開頭的空格不統計在內)。#include""main(){charstr[81];inti,num=0,word=0;/*num為單詞數,word=0則表示前一個字符是空格,word=1意味著前一個字符為非空格*/charc;gets(str); /*輸入字符串*/for(i=0;(c=str[i])!='\0';i++) /*如果是空操作就結束循環,‘\0'是空操作*/if(c=='')word=0;/*空格鍵的ASCII碼值是032(space鍵)。如果C為空格,word為0,沒有新單詞*/else訐(word==0)/*C不是空格,條件滿足前一個字符是空格,新單詞開始,word為1前一個為非空格*/{word=1;num++;/*單詞個數+1*/}printf("Thereare%dwordsintheline.\n",num);getch();}當前為空格,未出現單詞,使word為0,num不累加;當前不為空格,前一字符為空格(word=0),新單詞出現,num加1,word=1當前不為空格,前一字符非空格(word=1),未出現新單詞,num不加1預處理一》宏定義:1、 不帶參數:#define標識符常量表達式/*#define是宏定義命令,宏名(標識符)好習慣用大寫*/#defineNIL0x80可以用#undefNIL命令終止宏定義的作用域。宏定義定義時可以引用已定義的宏名,可以層層置換如:#defineR#definePI#defineL2*PI*R#defineSPI*R*R2、 帶參數:/*相當于小函數*/#define宏名(參數表)字符串/*不僅要時行字符串替換還要進行參數的替換,在宏定義時,宏名與帶參數的括弧之間不應該加空格,否則將空格以后的字符串都作為替代字符串的一部分,這可是很容易出錯的*/如:#defineSQ(a,b)a*b使用:x=12;y=10;area=SQ(x,y);/*則area=12*10=120*/define金山詞霸2009牛津版翻譯為確定宏不存在類型問題,宏名無類型,它的參數也無類型,只是一個符號代表。調用函數只可得到一個返回值,而宏可以設法得到幾個結果。如#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牛津版翻譯為包括用<>尖括號形式時系統到存放C庫函數頭文件所在的目錄中找,這種稱為標準方式一個include命令只能指定一個被包含文件.如果文件1包含文件2,而文件2中要用到文件3的內容,則而文件1中要用到兩個include命令.
即在文件即在文件1中定義:#include“”用雙引號么先在用戶當前目錄中尋找,若找不到再按標準方式#include“”如果中有全局靜態變量,它也在文件中有效,不必用extern聲明。條件編譯條件編譯幾種形式:#ifdef標識符
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 光電產業鏈的平衡發展試題及答案
- 文化產業管理證書考試與市場動態結合試題及答案
- 系統架構設計師考試提升方案試題及答案
- 教師資格考試視頻課程與試題及答案
- 山行測試題及答案
- 職工普法教育試題及答案
- 理科組合試題題庫及答案
- 育嬰師情感教育的有效路徑及技術試題及答案
- 地理說課試題模板及答案
- 西醫臨床技能測試試題及答案
- 電子商務文案策劃與寫作 課件 第5、6章 品牌類電子商務文案寫作;推廣類電子商務文案寫作
- 2025年開封大學單招職業技能測試題庫新版
- 財政投資評審咨詢服務預算和結算評審項目投標文件(技術方案)
- 2025年濟源職業技術學院單招職業技能測試題庫完整
- 極端天氣安全教育主題班會
- 教師團隊建設與質量提升的策略與路徑
- 口腔咨詢師接診技巧培訓
- 貴州省三級醫院評審標準實施細則(2023版)
- 2024年考研英語(二)真題及參考答案
- 江蘇省安全員C證考試(專職安全員)題庫附答案
- 板翅式換熱器介紹
評論
0/150
提交評論