版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
4.1
C語句概述
C程序的結(jié)構:
4.1
C語句概述C程序的結(jié)構:1C語句可分為以下三類:1.控制語句2.表達式語句3.復合語句C程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實現(xiàn)的。C語句可分為以下三類:C程序的執(zhí)行部分是由語句組成的。程序21.控制語句
控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構方式。可分成以下三類:1)條件判斷語句:ifelse語句、switch語句;2)循環(huán)執(zhí)行語句:dowhile語句、while語句、for語句;3)轉(zhuǎn)向語句:break語句、goto語句、continue語句、return語句。
1.控制語句控制語句用于控制程序的流程,以實現(xiàn)程序32.表達式語句表達式語句由表達式加上分號“;”組成。執(zhí)行表達式語句表示一個運算或者操作。其一般形式:表達式;常見形式有賦值語句、函數(shù)調(diào)用語句和空語句例如:x=y+z;y+z;i++;賦值語句加法運算語句,但計算結(jié)果不能保留,無實際意義自增1語句,i值增12.表達式語句表達式語句由表達式加上分號“;”組成。41)
賦值語句賦值語句是由賦值表達式再加上分號構成的表達式語句。其一般形式為:
變量=表達式;
賦值語句的功能和特點與賦值表達式相同。是程序中使用最多的語句之一。
1)
賦值語句賦值語句是由賦值表達式再加上分號構5在賦值語句的使用中需要注意以下幾點:1、賦值表達式的嵌套:賦值符右邊的表達式又是一個賦值表達式:
變量=(變量=表達式);展開之后的一般形式為:
變量=變量=…=表達式;例如:a=b=c=d=e=5;按照賦值運算符的右接合性,等效于:e=5;d=e;c=d;b=c;a=b;在賦值語句的使用中需要注意以下幾點:1、賦值表達式的嵌套:62、變量說明中給變量賦初值和賦值語句的區(qū)別:給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。例如:inta=5,b,c;3、在變量說明中,不允許連續(xù)給多個變量賦初值:
如下述說明是錯誤的:
inta=b=c=5;而賦值語句允許連續(xù)賦值:
a=b=c=5;×√2、變量說明中給變量賦初值和賦值語句的區(qū)別:×√72)函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名、實際參數(shù)加上分號“;”組成。執(zhí)行函數(shù)語句就是調(diào)用函數(shù)體(在后面函數(shù)中再詳細介紹)。其一般形式為:
函數(shù)名(實際參數(shù)表);例如:printf("CProgram");
調(diào)用庫函數(shù),輸出字符串。
2)函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名、實際參數(shù)加上83)空語句空語句只有分號“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。例如while(getchar()!='\n');空語句本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。3)空語句空語句只有分號“;”組成的語句稱為空語句93.復合語句復合語句把多個語句用括號{}括起來組成的一個語句稱復合語句。在程序中應把復合語句看成是單條語句,而不是多條語句。例如:{x=y+z;a=b+c;printf(“%d%d”,x,a);}是一條復合語句。復合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在括號“}”外不能加分號。3.復合語句復合語句把多個語句用括號{}括起來組成的104.2printf函數(shù)(格式輸出函數(shù))1.printf(······)功能:按格式控制所指定的形式(向用戶屏)輸出輸出項的值。C不提供輸入輸出語句,只調(diào)用printf(······)函數(shù)4.2printf函數(shù)(格式輸出函數(shù))1.prin11例:voidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);}結(jié)果:a=123,b=456,c=579
原樣輸出格式控制符與輸出項表列一一對應例:原樣格式控制符與輸出項表列一一對應12
2.格式:
printf(格式控制,輸出項表列)
輸出項表列:由一個或多個輸出項組成(若多個、它們之間用逗號隔開),常量、變量、函數(shù)、表達式、字符數(shù)組名等均可做輸出項。
格式控制:是用雙引號括起來的字符串,用來表示格式說明,也稱為轉(zhuǎn)換控制字符串。其中字符可由下面3類組成:普通字符(原樣輸出)轉(zhuǎn)義字符(輸出所表示的字符或?qū)崿F(xiàn)其功能)格式說明:控制對應輸出項的輸出形式"a=""%d""\n"2.格式:"a=""%d""\n"13#include<math.h>voidmain(){intk=68;floatt=56.3;
printf(”%d\t%d\t%f\n”,k,k+123,sqrt(t));}結(jié)果:681917.503333轉(zhuǎn)義字符,跳到下一區(qū)917轉(zhuǎn)義字符,回車格式控制符,對應輸出格式#include<math.h>轉(zhuǎn)義字符,跳到下一區(qū)917轉(zhuǎn)143.格式說明:控制對應輸出項的輸出形式(每個格式說明按先后順序與輸出項一一對應),輸出結(jié)果中格式說明被對應的輸出項值取代。(1)
格式說明基本形式:
①%d(或%i)、%o、%x(或%X)、%u、%c對應的輸出項類型為字符型和整型。帶符號十進制帶符號八進制帶符號十六進制無符號十進制字符3.格式說明:帶符號帶符號帶符號無符號字15例:
voidmain(){inta=65;charc=’!’;printf(”%d,%c\n”,a,a);
printf(”c=%c,ItsASCIIcode=%d\n”,c,c);}結(jié)果:65,Ac=!,ItsASCIIcode=33例:
16main(){inta=-1;printf("%d,%o,%x,%u",a,a,a,a);}
/*假設int占2個字節(jié)*/-1的原碼:1000,0000,0000,0001。-1在內(nèi)存中的補碼表示為:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff輸出:-1,177777,ffff,65535-1是十進制,177777是八進制,ffff是十六進制。%o、%x(或%X)、%u按unsigned型輸出,且不帶前導符號“o”和“x”main()%o、%x(或%X)、%u按unsigne17
②%s對應的輸出項為字符串或字符數(shù)組例:
voidmain(){charname[]=”Jone”;
printf(”%s%s%c\n”,”Whois”,name,’?’);}結(jié)果:WhoisJone?字符串字符②%s對應的輸出項為字符串或字符數(shù)組字符串字符18③%f、%e(或%E)、%g(或%G)對應float型輸出項%lf、%le(或%E)、%lg(或%G)對應double型輸出項%f——小數(shù)形式(6位小數(shù))%e(或%E)——標準化指數(shù)形式(尾數(shù)的小數(shù)點前有一位且只有一位非零、6位小數(shù))%g(或%G)——讓系統(tǒng)自動選取%f(去掉小數(shù)點后多余的零)或%e中較短者——6位有效例:main(){floatf;f=123.46;printf(”%f,%e,%g\n”,f,f,f)}結(jié)果:123.459999,1.234600e+002,123.46數(shù)字③%f、%e(或%E)、%g(或%G)對應floa19(2)在格式說明基本形式中加附加格式說明符①若輸出項為long型或unsignedlong型,則用下面格式說明控制:%ld、%lx、%lo、%lu若輸出項為short型或unsignedshort型,則用下面格式說明控制:%hd、%hx、%ho、%hu②在格式說明%后加一個整數(shù)m——指定寬度為|m|位:若實際需要的位數(shù)>|m|位、則此m失效若m為無符號整數(shù),則左邊填空格若m為負整數(shù),則右邊填空格若m為帶正號整數(shù),則左邊填空格且所輸出的數(shù)據(jù)前有正負號(2)在格式說明基本形式中加附加格式說明符20例:
voidmain(){inta=12;longb=12345678;printf(”%6d\n”,a);printf(”%-6d\n”,a);printf(”%+6d\n”,a);printf(”%12ld\n”,b);printf(”%+8s\n”,”book”);}
1212+1212345678book字符串負數(shù)本身肯定帶負符號,帶正號必須這樣寫例:1212+1212345678book字符串負數(shù)本身21③在%s中間插入m.n:m含義同②,此m可省略、若省略則m=n。n為無符號整數(shù)、表示只輸出對應字符串中左邊n個字符。例:
voidmain(){printf(”%8.3s\n”,”book”);printf(”%.3s\n”,”book”);}輸出:booboo寬度就是3③在%s中間插入m.n:m含義同②,此m可省略、若省略則m=22④在%f、%e(或%E)、%g(或%G)中間插入m.n:m含義同②,此m可省略、若省略則m=n。n為無符號整數(shù)、表示n位小數(shù),其余四舍五例8:printf(”a=%+10.3lf\n”,123.45678);
輸出:注:若②與④中m為正整數(shù)且m前加0,則輸出的左邊空位填0例9:printf(”a=%+010.3lf\n”,123.45678);輸出:a=+123.457a=+00123.457四舍五入④在%f、%e(或%E)、%g(或%G)中間插入m.n23⑤在%x、%o、%lx、%lo的%后加#輸出帶前導的八進制或十六進制數(shù)據(jù)例10:voidmain(){intx=7281;printf(”%o,%#o\n”,x,x);printf(”%x,%#x\n”,x,x);}輸出:16161,0161611c71,0x1c71注:格式控制中,連續(xù)的兩個%表示一個%(不是格式說明符)
(16161)8(1c71)16⑤在%x、%o、%lx、%lo的%后加#輸出帶前導的八進制24C語言順序結(jié)構程序設計資料課件25C語言順序結(jié)構程序設計資料課件26Printf函數(shù)輸出列表的運算順序程序示例main(){inti=1,j=2;printf("%d%d%d",i+j,++i,i);}421求值順序自右至左Printf函數(shù)輸出列表的運算順序程序示例42274.3
scanf函數(shù)(格式輸入函數(shù))1格式scanf(格式控制,輸入項地址表列)地址:1)變量名前加&——變量在內(nèi)存中的地址;2)數(shù)組名——數(shù)組在內(nèi)存中的首地址。例如:&a,&b分別表示變量a和變量b的地址。這個地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。一個或多個地址組成(若多個之間用逗號隔開)4.3scanf函數(shù)(格式輸入函數(shù))1格式s28變量的地址和變量值的關系如下:1、在賦值表達式中給變量賦值:如:a=5672、scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址:
如:scanf(”%d”,&a);
3、這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達式,其功能是求變量的地址。變量名,不能寫地址變量的值變量a的地址變量的地址和變量值的關系如下:變量名,不能寫地址變量變量a的294.6.2功能:系統(tǒng)切換到用戶屏、要求并等待用戶按格式控制形式和順序輸入要賦給輸入項的常量,按回車鍵結(jié)束,系統(tǒng)立即把所輸入的賦給相應輸入項。它是一個標準庫函數(shù),與printf函數(shù)相同,使用scanf函數(shù)之前不必包含stdio.h文件。4.6.3注意:格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“&”后跟變量名組成的。不能是符號常量,不加單撇號或雙撇號,直接輸入一定要有4.6.2功能:系統(tǒng)切換到用戶屏、要求并等待用戶按格式控制30
例:
voidmain(){inta,b,sum;scanf(”%d,%d”,&a,&b);sum=a+b;printf(“sum=%d\n”,sum);}執(zhí)行程序時應輸入123,456↙如果要輸入a=123;b=456;
例:
如果要輸入31
使用scanf函數(shù)還必須注意以下幾點:1)scanf函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能用此語句輸入小數(shù)為2位的實數(shù)。2)scanf中要求給出變量地址,如給出變量名則會出錯。如scanf("%d",a);是非法的,應改為scnaf("%d",&a)。3)在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到這些符號即認為該數(shù)據(jù)結(jié)束。
使用scanf函數(shù)還必須注意以下幾點:324)在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。如:
scanf("%c%c%c",&a,&b,&c);輸入為:則賦值:如果在格式控制中加入空格作為間隔,如:scanf("%c%c%c",&a,&b,&c);輸入時數(shù)據(jù)之間可加空格。d
ef↙bcabcad
ef↙bca空格,輸入多少個無關def↙4)在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有335)如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。
scanf("%d,%d,%d",&a,&b,&c);輸入時應為:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應為:非格式符“,”作間隔符5,6,7↙a=5,b=6,c=7↙“a=“、”,”、“b=“、
”c=“為間隔符5)如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符346)如輸入的數(shù)據(jù)與輸出的類型不一致,scanf("a=%d,b=%d,c=%d",&a,&b,&c);輸入:雖然編譯能夠通過,但結(jié)果將不正確。scanf(”%d:%d”,&a,&b);應輸入:
a=5;b=6;c=7↙123:456↙6)如輸入的數(shù)據(jù)與輸出的類型不一致,a=5;b=6;c=735
scanf(”%d,%d\n”,&a,&b);應輸入:scanf(”%d%d”,&a,&b);應輸入:123,456↙1↙按格式控制符輸入123
456↙數(shù)據(jù)分割,多少個無關123,456↙按格式控制符輸入123456↙數(shù)據(jù)分割,36scanf(”%d”,&a);scanf(”%d”,&b);應輸入:或輸入:scanf(”%d\n”,&a);scanf(”%d”,&b);應輸入:或輸入:123↙456↙123
456↙多少個無關123↙456↙123
456↙多少個無關scanf(”%d”,&a);scanf(”%d”,&b)37voidmain(){chara,b;
scanf("%c%c",&a,&b);printf("%c%c\n",a,b);
scanf("%c%c",&a,&b);printf("\n%c%c\n",a,b);}輸入:顯示:
輸入:顯示:MN↙MMN↙MNvoidmain()MN↙MMN↙MN38說明1.格式控制中不包含附加格式說明符m.n,一般不包含轉(zhuǎn)義字符(\n可以)。2.double型輸入項必須使用如下格式說明:%lf、%le、%lg(輸出一樣)3.*
——在格式說明%后插入*表示跳過它所指定的列數(shù),如:scanf(”%d%*5%d\n”,&a,&b);輸入:結(jié)果:用%f只能輸出6位小數(shù),輸出10位用%20.10lf
12398765456↙a值:123b值:456如果只有%*d則表示本輸入項再度入后不賦給相應的變量說明1.格式控制中不包含附加格式說明符m.n,一般不包含39voidmain(){inta;scanf("%d",&a);printf("%ld",a);}
輸入:123顯示:8061051main(){longa;scanf("%ld",&a);printf("%ld",a);}
輸入:1234567890顯示:1234567890voidmain()404、在格式說明基本形式中加附加格式說明符①l——若輸出項為long型或unsignedlong型,則必須用下面格式說明控制:%ld、%lx、%lo、%lu②h——若輸出項為short型或unsignedshort型,則可用下面格式說明控制:%hd、%hx、%ho、%hu。4、在格式說明基本形式中加附加格式說明符414.4
其它輸入、輸出函數(shù)1.getchar函數(shù)(字符輸入函數(shù))形式:getchar()功能:c=getchar();同scanf(”%c”,&c);注意:需在文件開頭加#include”stdio.h”
輸入一個字符,賦給變量c4.4其它輸入、輸出函數(shù)1.getchar函數(shù)(字符42例:#include<stdio.h>voidmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);}
輸入:$#↙abc結(jié)果:$#輸入:$↙#↙abc結(jié)果:$#換行例:#include<stdio.h>輸入:$#↙abc結(jié)43使用getchar函數(shù)還應注意幾個問題:
1)getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。輸入多于一個字符時,只接收第一個字符。2)使用本函數(shù)前必須包含文件“stdio.h”。3)在TC屏幕下運行含本函數(shù)程序時,將退出TC屏幕進入用戶屏幕等待用戶輸入。輸入完畢再返回TC屏幕。使用getchar函數(shù)還應注意幾個問題:442.
putchar函數(shù)(字符輸出函數(shù))
格式:putchar(一個整形或字符型輸出項)
功能:同printf(”%c”,輸出項),在顯示器上輸出單個字符。例如:putchar('A');(輸出大寫字母A)putchar(x);(輸出字符變量x的值)putchar(‘\101’);(也是輸出字符A)putchar('\n');(換行)對控制字符則執(zhí)行控制功能,不在屏幕上顯示。使用本函數(shù)前必須要用文件包含命令:#include<stdio.h>或#include“stdio.h”2.putchar函數(shù)(字符輸出函數(shù))格式:pu45例:#include<stdio.h>voidmain(){charc=’A’;putchar(66);putchar(’\53’);putchar(c+2);putchar(’\n’);putchar(’7’);putchar(’\n’);}結(jié)果:B+C7B+C7換行換行例:#include<stdio.h>B+C7換行換行463.puts函數(shù)puts函數(shù)(字符串、字符數(shù)組中字符串輸出函數(shù))一般形式:puts(char*str);功能:將字符串或字符數(shù)組中存放的字符串輸出到顯示器上。例如:putstr(“China\nBeijing\n”);3.puts函數(shù)puts函數(shù)(字符串、字符數(shù)組中字符串輸出474.gets函數(shù)(字符串輸入函數(shù))gets函數(shù)(字符串輸入函數(shù))一般形式:gets(char*str);功能:接收從鍵盤輸入的一個字符串,存放在字符數(shù)組中。例如:chars[81];gets(s);4.gets函數(shù)(字符串輸入函數(shù))gets函數(shù)(字符串輸入484.5算法及其表示方法1算法:為解決一個問題而采取的方法和步驟稱為“算法”。2算法的5大特性
(1)有窮性(有限的步驟)
(2)確定性(不能有歧義)(3)有0個或多個輸入(4)有1個或多個輸出(即算法必須得到結(jié)果)(5)有效性:算法的每個步驟都應當能有效執(zhí)行,并能得到確定的結(jié)果。4.5算法及其表示方法1算法:493算法的表示方法常用的算法表示方法:自然語言,傳統(tǒng)流程圖,結(jié)構化流程圖(N-S流程圖),偽代碼、計算機語言等。(1)用自然語言表示算法(2)
用流程圖表示算法流程圖表示算法:用一些圖框表示各種操作,用箭頭表示算法流程。用圖形表示算法直觀形象,易于理解。美國標準化協(xié)會ANSI規(guī)定了一些常用的流程圖符號,已為世界各國程序工作者普遍采用。3算法的表示方法504.5算法及其表示方法4.5算法及其表示方法514.6順序結(jié)構程序設計舉例例:輸入三角形的三邊長,求三角形面積。為簡單起見,設輸入的三邊長a,b,c能構成三角形。從數(shù)學知識已知求三角形面積的公式為:4.6順序結(jié)構程序設計舉例例:輸入三角形的三邊長,求三角52#include<math.h>main(){floata,b,c,s,area;scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));/*sqrt()求平方根的函數(shù)*/
printf("a=%7.2f,b=%7.2f,c=%7.2f\n",a,b,c);printf("area=%8.3f\n",area);}
346<CR>a=3.00,b=4.00,c=6.00area=5.333#include<math.h>53求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設b2-4ac>0。一元二次方程的根為:
求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設b254#include<math.h>main(){floata,b,c,disc,p,q,x1,x2;scanf("%f%f%f",&a,&b,&c);/*輸入a,b,c*/disc=b*b-4*a*c;/*計算δ*/p=-b/(2*a);q=sqrt(disc)/(2*a);x1=p+q;x2=p-q;/*計算2個方程的根*/printf("x1=%f\nx2=%f\n",x1,x2);/*輸出*/}132x1=-1.000000x2=-2.000000
#include<math.h>55C語言順序結(jié)構程序設計資料課件56C語言順序結(jié)構程序設計資料課件574.1
C語句概述
C程序的結(jié)構:
4.1
C語句概述C程序的結(jié)構:58C語句可分為以下三類:1.控制語句2.表達式語句3.復合語句C程序的執(zhí)行部分是由語句組成的。程序的功能也是由執(zhí)行語句實現(xiàn)的。C語句可分為以下三類:C程序的執(zhí)行部分是由語句組成的。程序591.控制語句
控制語句用于控制程序的流程,以實現(xiàn)程序的各種結(jié)構方式。可分成以下三類:1)條件判斷語句:ifelse語句、switch語句;2)循環(huán)執(zhí)行語句:dowhile語句、while語句、for語句;3)轉(zhuǎn)向語句:break語句、goto語句、continue語句、return語句。
1.控制語句控制語句用于控制程序的流程,以實現(xiàn)程序602.表達式語句表達式語句由表達式加上分號“;”組成。執(zhí)行表達式語句表示一個運算或者操作。其一般形式:表達式;常見形式有賦值語句、函數(shù)調(diào)用語句和空語句例如:x=y+z;y+z;i++;賦值語句加法運算語句,但計算結(jié)果不能保留,無實際意義自增1語句,i值增12.表達式語句表達式語句由表達式加上分號“;”組成。611)
賦值語句賦值語句是由賦值表達式再加上分號構成的表達式語句。其一般形式為:
變量=表達式;
賦值語句的功能和特點與賦值表達式相同。是程序中使用最多的語句之一。
1)
賦值語句賦值語句是由賦值表達式再加上分號構62在賦值語句的使用中需要注意以下幾點:1、賦值表達式的嵌套:賦值符右邊的表達式又是一個賦值表達式:
變量=(變量=表達式);展開之后的一般形式為:
變量=變量=…=表達式;例如:a=b=c=d=e=5;按照賦值運算符的右接合性,等效于:e=5;d=e;c=d;b=c;a=b;在賦值語句的使用中需要注意以下幾點:1、賦值表達式的嵌套:632、變量說明中給變量賦初值和賦值語句的區(qū)別:給變量賦初值是變量說明的一部分,賦初值后的變量與其后的其它同類變量之間仍必須用逗號間隔,而賦值語句則必須用分號結(jié)尾。例如:inta=5,b,c;3、在變量說明中,不允許連續(xù)給多個變量賦初值:
如下述說明是錯誤的:
inta=b=c=5;而賦值語句允許連續(xù)賦值:
a=b=c=5;×√2、變量說明中給變量賦初值和賦值語句的區(qū)別:×√642)函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名、實際參數(shù)加上分號“;”組成。執(zhí)行函數(shù)語句就是調(diào)用函數(shù)體(在后面函數(shù)中再詳細介紹)。其一般形式為:
函數(shù)名(實際參數(shù)表);例如:printf("CProgram");
調(diào)用庫函數(shù),輸出字符串。
2)函數(shù)調(diào)用語句函數(shù)調(diào)用語句由函數(shù)名、實際參數(shù)加上653)空語句空語句只有分號“;”組成的語句稱為空語句??照Z句是什么也不執(zhí)行的語句。例如while(getchar()!='\n');空語句本語句的功能是,只要從鍵盤輸入的字符不是回車則重新輸入。3)空語句空語句只有分號“;”組成的語句稱為空語句663.復合語句復合語句把多個語句用括號{}括起來組成的一個語句稱復合語句。在程序中應把復合語句看成是單條語句,而不是多條語句。例如:{x=y+z;a=b+c;printf(“%d%d”,x,a);}是一條復合語句。復合語句內(nèi)的各條語句都必須以分號“;”結(jié)尾,在括號“}”外不能加分號。3.復合語句復合語句把多個語句用括號{}括起來組成的674.2printf函數(shù)(格式輸出函數(shù))1.printf(······)功能:按格式控制所指定的形式(向用戶屏)輸出輸出項的值。C不提供輸入輸出語句,只調(diào)用printf(······)函數(shù)4.2printf函數(shù)(格式輸出函數(shù))1.prin68例:voidmain(){inta,b,sum;a=123;b=456;sum=a+b;printf(”a=%d,b=%d,c=%d\n”,a,b,sum);}結(jié)果:a=123,b=456,c=579
原樣輸出格式控制符與輸出項表列一一對應例:原樣格式控制符與輸出項表列一一對應69
2.格式:
printf(格式控制,輸出項表列)
輸出項表列:由一個或多個輸出項組成(若多個、它們之間用逗號隔開),常量、變量、函數(shù)、表達式、字符數(shù)組名等均可做輸出項。
格式控制:是用雙引號括起來的字符串,用來表示格式說明,也稱為轉(zhuǎn)換控制字符串。其中字符可由下面3類組成:普通字符(原樣輸出)轉(zhuǎn)義字符(輸出所表示的字符或?qū)崿F(xiàn)其功能)格式說明:控制對應輸出項的輸出形式"a=""%d""\n"2.格式:"a=""%d""\n"70#include<math.h>voidmain(){intk=68;floatt=56.3;
printf(”%d\t%d\t%f\n”,k,k+123,sqrt(t));}結(jié)果:681917.503333轉(zhuǎn)義字符,跳到下一區(qū)917轉(zhuǎn)義字符,回車格式控制符,對應輸出格式#include<math.h>轉(zhuǎn)義字符,跳到下一區(qū)917轉(zhuǎn)713.格式說明:控制對應輸出項的輸出形式(每個格式說明按先后順序與輸出項一一對應),輸出結(jié)果中格式說明被對應的輸出項值取代。(1)
格式說明基本形式:
①%d(或%i)、%o、%x(或%X)、%u、%c對應的輸出項類型為字符型和整型。帶符號十進制帶符號八進制帶符號十六進制無符號十進制字符3.格式說明:帶符號帶符號帶符號無符號字72例:
voidmain(){inta=65;charc=’!’;printf(”%d,%c\n”,a,a);
printf(”c=%c,ItsASCIIcode=%d\n”,c,c);}結(jié)果:65,Ac=!,ItsASCIIcode=33例:
73main(){inta=-1;printf("%d,%o,%x,%u",a,a,a,a);}
/*假設int占2個字節(jié)*/-1的原碼:1000,0000,0000,0001。-1在內(nèi)存中的補碼表示為:1111,1111,1111,1111=1,111,111,111,111,111=1,7,7,7,7,7=ffff輸出:-1,177777,ffff,65535-1是十進制,177777是八進制,ffff是十六進制。%o、%x(或%X)、%u按unsigned型輸出,且不帶前導符號“o”和“x”main()%o、%x(或%X)、%u按unsigne74
②%s對應的輸出項為字符串或字符數(shù)組例:
voidmain(){charname[]=”Jone”;
printf(”%s%s%c\n”,”Whois”,name,’?’);}結(jié)果:WhoisJone?字符串字符②%s對應的輸出項為字符串或字符數(shù)組字符串字符75③%f、%e(或%E)、%g(或%G)對應float型輸出項%lf、%le(或%E)、%lg(或%G)對應double型輸出項%f——小數(shù)形式(6位小數(shù))%e(或%E)——標準化指數(shù)形式(尾數(shù)的小數(shù)點前有一位且只有一位非零、6位小數(shù))%g(或%G)——讓系統(tǒng)自動選取%f(去掉小數(shù)點后多余的零)或%e中較短者——6位有效例:main(){floatf;f=123.46;printf(”%f,%e,%g\n”,f,f,f)}結(jié)果:123.459999,1.234600e+002,123.46數(shù)字③%f、%e(或%E)、%g(或%G)對應floa76(2)在格式說明基本形式中加附加格式說明符①若輸出項為long型或unsignedlong型,則用下面格式說明控制:%ld、%lx、%lo、%lu若輸出項為short型或unsignedshort型,則用下面格式說明控制:%hd、%hx、%ho、%hu②在格式說明%后加一個整數(shù)m——指定寬度為|m|位:若實際需要的位數(shù)>|m|位、則此m失效若m為無符號整數(shù),則左邊填空格若m為負整數(shù),則右邊填空格若m為帶正號整數(shù),則左邊填空格且所輸出的數(shù)據(jù)前有正負號(2)在格式說明基本形式中加附加格式說明符77例:
voidmain(){inta=12;longb=12345678;printf(”%6d\n”,a);printf(”%-6d\n”,a);printf(”%+6d\n”,a);printf(”%12ld\n”,b);printf(”%+8s\n”,”book”);}
1212+1212345678book字符串負數(shù)本身肯定帶負符號,帶正號必須這樣寫例:1212+1212345678book字符串負數(shù)本身78③在%s中間插入m.n:m含義同②,此m可省略、若省略則m=n。n為無符號整數(shù)、表示只輸出對應字符串中左邊n個字符。例:
voidmain(){printf(”%8.3s\n”,”book”);printf(”%.3s\n”,”book”);}輸出:booboo寬度就是3③在%s中間插入m.n:m含義同②,此m可省略、若省略則m=79④在%f、%e(或%E)、%g(或%G)中間插入m.n:m含義同②,此m可省略、若省略則m=n。n為無符號整數(shù)、表示n位小數(shù),其余四舍五例8:printf(”a=%+10.3lf\n”,123.45678);
輸出:注:若②與④中m為正整數(shù)且m前加0,則輸出的左邊空位填0例9:printf(”a=%+010.3lf\n”,123.45678);輸出:a=+123.457a=+00123.457四舍五入④在%f、%e(或%E)、%g(或%G)中間插入m.n80⑤在%x、%o、%lx、%lo的%后加#輸出帶前導的八進制或十六進制數(shù)據(jù)例10:voidmain(){intx=7281;printf(”%o,%#o\n”,x,x);printf(”%x,%#x\n”,x,x);}輸出:16161,0161611c71,0x1c71注:格式控制中,連續(xù)的兩個%表示一個%(不是格式說明符)
(16161)8(1c71)16⑤在%x、%o、%lx、%lo的%后加#輸出帶前導的八進制81C語言順序結(jié)構程序設計資料課件82C語言順序結(jié)構程序設計資料課件83Printf函數(shù)輸出列表的運算順序程序示例main(){inti=1,j=2;printf("%d%d%d",i+j,++i,i);}421求值順序自右至左Printf函數(shù)輸出列表的運算順序程序示例42844.3
scanf函數(shù)(格式輸入函數(shù))1格式scanf(格式控制,輸入項地址表列)地址:1)變量名前加&——變量在內(nèi)存中的地址;2)數(shù)組名——數(shù)組在內(nèi)存中的首地址。例如:&a,&b分別表示變量a和變量b的地址。這個地址就是編譯系統(tǒng)在內(nèi)存中給a,b變量分配的地址。一個或多個地址組成(若多個之間用逗號隔開)4.3scanf函數(shù)(格式輸入函數(shù))1格式s85變量的地址和變量值的關系如下:1、在賦值表達式中給變量賦值:如:a=5672、scanf函數(shù)在本質(zhì)上也是給變量賦值,但要求寫變量的地址:
如:scanf(”%d”,&a);
3、這兩者在形式上是不同的。&是一個取地址運算符,&a是一個表達式,其功能是求變量的地址。變量名,不能寫地址變量的值變量a的地址變量的地址和變量值的關系如下:變量名,不能寫地址變量變量a的864.6.2功能:系統(tǒng)切換到用戶屏、要求并等待用戶按格式控制形式和順序輸入要賦給輸入項的常量,按回車鍵結(jié)束,系統(tǒng)立即把所輸入的賦給相應輸入項。它是一個標準庫函數(shù),與printf函數(shù)相同,使用scanf函數(shù)之前不必包含stdio.h文件。4.6.3注意:格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運算符“&”后跟變量名組成的。不能是符號常量,不加單撇號或雙撇號,直接輸入一定要有4.6.2功能:系統(tǒng)切換到用戶屏、要求并等待用戶按格式控制87
例:
voidmain(){inta,b,sum;scanf(”%d,%d”,&a,&b);sum=a+b;printf(“sum=%d\n”,sum);}執(zhí)行程序時應輸入123,456↙如果要輸入a=123;b=456;
例:
如果要輸入88
使用scanf函數(shù)還必須注意以下幾點:1)scanf函數(shù)中沒有精度控制,如:scanf("%5.2f",&a);是非法的。不能用此語句輸入小數(shù)為2位的實數(shù)。2)scanf中要求給出變量地址,如給出變量名則會出錯。如scanf("%d",a);是非法的,應改為scnaf("%d",&a)。3)在輸入多個數(shù)值數(shù)據(jù)時,若格式控制串中沒有非格式字符作輸入數(shù)據(jù)之間的間隔則可用空格,TAB或回車作間隔。C編譯在碰到這些符號即認為該數(shù)據(jù)結(jié)束。
使用scanf函數(shù)還必須注意以下幾點:894)在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有輸入的字符均為有效字符。如:
scanf("%c%c%c",&a,&b,&c);輸入為:則賦值:如果在格式控制中加入空格作為間隔,如:scanf("%c%c%c",&a,&b,&c);輸入時數(shù)據(jù)之間可加空格。d
ef↙bcabcad
ef↙bca空格,輸入多少個無關def↙4)在輸入字符數(shù)據(jù)時,若格式控制串中無非格式字符,則認為所有905)如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符。
scanf("%d,%d,%d",&a,&b,&c);輸入時應為:
scanf("a=%d,b=%d,c=%d",&a,&b,&c);則輸入應為:非格式符“,”作間隔符5,6,7↙a=5,b=6,c=7↙“a=“、”,”、“b=“、
”c=“為間隔符5)如果格式控制串中有非格式字符則輸入時也要輸入該非格式字符916)如輸入的數(shù)據(jù)與輸出的類型不一致,scanf("a=%d,b=%d,c=%d",&a,&b,&c);輸入:雖然編譯能夠通過,但結(jié)果將不正確。scanf(”%d:%d”,&a,&b);應輸入:
a=5;b=6;c=7↙123:456↙6)如輸入的數(shù)據(jù)與輸出的類型不一致,a=5;b=6;c=792
scanf(”%d,%d\n”,&a,&b);應輸入:scanf(”%d%d”,&a,&b);應輸入:123,456↙1↙按格式控制符輸入123
456↙數(shù)據(jù)分割,多少個無關123,456↙按格式控制符輸入123456↙數(shù)據(jù)分割,93scanf(”%d”,&a);scanf(”%d”,&b);應輸入:或輸入:scanf(”%d\n”,&a);scanf(”%d”,&b);應輸入:或輸入:123↙456↙123
456↙多少個無關123↙456↙123
456↙多少個無關scanf(”%d”,&a);scanf(”%d”,&b)94voidmain(){chara,b;
scanf("%c%c",&a,&b);printf("%c%c\n",a,b);
scanf("%c%c",&a,&b);printf("\n%c%c\n",a,b);}輸入:顯示:
輸入:顯示:MN↙MMN↙MNvoidmain()MN↙MMN↙MN95說明1.格式控制中不包含附加格式說明符m.n,一般不包含轉(zhuǎn)義字符(\n可以)。2.double型輸入項必須使用如下格式說明:%lf、%le、%lg(輸出一樣)3.*
——在格式說明%后插入*表示跳過它所指定的列數(shù),如:scanf(”%d%*5%d\n”,&a,&b);輸入:結(jié)果:用%f只能輸出6位小數(shù),輸出10位用%20.10lf
12398765456↙a值:123b值:456如果只有%*d則表示本輸入項再度入后不賦給相應的變量說明1.格式控制中不包含附加格式說明符m.n,一般不包含96voidmain(){inta;scanf("%d",&a);printf("%ld",a);}
輸入:123顯示:8061051main(){longa;scanf("%ld",&a);printf("%ld",a);}
輸入:1234567890顯示:1234567890voidmain()974、在格式說明基本形式中加附加格式說明符①l——若輸出項為long型或unsignedlong型,則必須用下面格式說明控制:%ld、%lx、%lo、%lu②h——若輸出項為short型或unsignedshort型,則可用下面格式說明控制:%hd、%hx、%ho、%hu。4、在格式說明基本形式中加附加格式說明符984.4
其它輸入、輸出函數(shù)1.getchar函數(shù)(字符輸入函數(shù))形式:getchar()功能:c=getchar();同scanf(”%c”,&c);注意:需在文件開頭加#include”stdio.h”
輸入一個字符,賦給變量c4.4其它輸入、輸出函數(shù)1.getchar函數(shù)(字符99例:#include<stdio.h>voidmain(){chara,b,c;a=getchar();b=getchar();c=getchar();putchar(a);putchar(b);putchar(c);}
輸入:$#↙abc結(jié)果:$#輸入:$↙#↙abc結(jié)果:$#換行例:#include<stdio.h>輸入:$#↙abc結(jié)100使用getchar函數(shù)還應注意幾個問題:
1)getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字符處理。輸入多于一個字符時,只接收第一個字符。2)使用本函數(shù)前必須包含文件“stdio.h”
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 全禿的臨床護理
- 產(chǎn)力異常的健康宣教
- JJF(陜) 069-2021 氣體流量計(熱氣體法)校準規(guī)范
- JJF(陜) 020-2020 中心距卡尺校準規(guī)范
- 課外閱讀推廣與活動設計計劃
- 美術教學評價體系構建計劃
- 提升服務質(zhì)量構建和諧生活部計劃
- 資本運作投資合同三篇
- 優(yōu)化工作流程的詳細方案計劃
- 2024-2025學年年七年級數(shù)學人教版下冊專題整合復習卷28.1 銳角三角函數(shù)(一)同步測控優(yōu)化訓練(含答案)
- 電工的職業(yè)健康培訓
- 醫(yī)學教程 《小兒腹瀉》課件
- 3.2 推動高質(zhì)量發(fā)展 課件高中政治統(tǒng)編版必修二經(jīng)濟與社會
- 板框壓濾機方案
- 期末 (試題) -2024-2025學年教科版(廣州)英語四年級上冊
- 三年級數(shù)學(上)計算題專項練習附答案
- 公司品牌管理制度
- 期末練習(試題)-2024-2025學年譯林版(三起)(2024)英語三年級上冊
- 加油站消防預案和應急預案
- 解讀國有企業(yè)管理人員處分條例課件
- 2024消防維保投標文件模板
評論
0/150
提交評論