




版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
C語言程序設計主講:徐曉蓉E-mail:rortyrong@163.com第三章最簡單的C程序設計
—順序程序設計第三章最簡單的C程序設計
—順序程序設計內(nèi)容:
算法及其描述
程序的三種基本結構C語句概述數(shù)據(jù)的輸入和輸出
順序程序設計方法及舉例重點:程序的三種基本結構數(shù)據(jù)的輸入與輸出順序程序設計方法著名的計算機科學家沃斯提出:
數(shù)據(jù)結構+算法=程序算法的概念
做事情都有方法--方法步驟順序--決定事情成敗1,算法:計算機求解某一問題而采用的具體的方法、步驟2,計算機算法分為兩類:數(shù)值算法(求數(shù)值解)和非數(shù)值算法(事物管理等)。3,算法的特性:有窮性,有效性,確定性4,算法的組成要素:操作,控制結構(順序,選擇和循環(huán)結構)5,算法描述:描述算法的方法有多種:1,文字2,圖形描述數(shù)據(jù)的類型、組織形式,描述對數(shù)據(jù)操作的步驟3.1算法及其描述常用的算法描述方法:1,帶序號的自然語言描述2,流程圖描述算法3,N-S圖(盒圖)完全去掉帶箭頭的流程線,算法的所有處理步驟都寫在一個大矩形框,表示方法簡單,符合結構化思想)
處理判斷循環(huán)4,偽代碼:用介于自然語言和計算機語言之間的文字或符號描述算法方便,易懂,便于向計算機語言過度)
APTFABA當P為真A當P為真舉例:計算寫出其算法自然語言描述:1,0s2,1->i3,s+i->s4,i+1->i5,判斷i<=100是,轉(zhuǎn)3,否則轉(zhuǎn)66,輸出s的值流程圖描述開始0->s1->is+i->si+1->ii<=100?輸出s結束TN-S描述:0->s1->ii<=100?s+i->si+1->i輸出s的值偽代碼描述:0s1->iifi<=100s+i->si+1->iprintsC語言提供三種結構化語句來控制程序的執(zhí)行流程:順序結構:選擇結構:循環(huán)結構:一種按書寫順序執(zhí)行的結構。根據(jù)運行時的情況自動選擇要執(zhí)行的語句。根據(jù)情況自動重復執(zhí)行有關語句。3.2程序的三種基本結構順序結構即按照語句書寫順序執(zhí)行的程序結構。AB順序結構3.2.1順序結構AB3.2.2選擇結構選擇結構又稱為分支結構,是指有條件地選擇要執(zhí)行的程序段。選擇結構示意圖真(非0)假(0)AB條件pPTFAB多分支選擇結構由選擇結構所派生根據(jù)k的值(k1,k2,-----Kk)不同,而決定執(zhí)行A1,A2,-----Ak,B之一.…k=k2k≠k1…kkk=kkk=k1kA1A2BAk
圖3-6多分支選擇結構3.2.3循環(huán)結構當條件成立(為“真”或非0)時,反復執(zhí)行程序段A,否則不執(zhí)行程序段A。1.當型循環(huán)結構假(0)真(非0)A條件pA當P為真先執(zhí)行程序段A,再判斷條件p是否為“真”(非0);若為“真”(非0),再執(zhí)行A,如此反復,直到條件為“假”(0)為止。2.直到型循環(huán)結構真(0)假(0)A條件pA當P為真
3.3C語句概述
C程序結構:C語句
1,C程序?qū)?shù)據(jù)的處理是通過“語句”的執(zhí)行來實現(xiàn)的。2,一條語句完成一項操作(或功能)。3,一個為實現(xiàn)特定目的的程序應包含若干條語句。
C程序結構表達式語句(表達式;)
函數(shù)調(diào)用語句(函數(shù)名(參數(shù)表);)空語句(;)C語言數(shù)據(jù)操作復合語句({一條或多條語句})語句條件語句(if語句,switch語句)結構化語句while語句循環(huán)語句do_while語句for語句流程控制語句break語句限定轉(zhuǎn)向語句continue語句非結構化語句return語句非限定轉(zhuǎn)向語句(goto語句)C語言的語句分類:組成:表達式;功能:計算表達式或改變變量的值注意:任何表達式都可以加上分號成為語句,如:i++;
x=y+z;
x=2;
b=3,a=5+b;組成:函數(shù)名(參數(shù)列表);如:printf(“a=%d”,a);分類:1,標準庫函數(shù).需加頭文件2,用戶定義的函數(shù).
格式:;功能:執(zhí)行該語句不做任何操作.
組成:{
[數(shù)據(jù)說明部分;]/*局部變量*/
執(zhí)行語句部分;}注意:1,“}”之后,不需要分號。2,復合語句中最后一條語句的分號不能省略§
3.4賦值表達式和賦值語句簡單賦值運算符符號:=格式:變量標識符=表達式作用:將一個數(shù)據(jù)(常量或表達式)賦給一個變量復合賦值運算符:由”=“之前加上其他雙目運算符構成種類:+=-=*=/=%=<<=>>=&=^=|=含義:
exp1op=exp2exp1=exp1opexp2優(yōu)點:簡化程序,提高編譯效率賦值表達式定義:由賦值運算符將一個變量和一個表達式連接起來的式子,如”a=3”是一個賦值表達式一般形式:<變量>=<表達式>求解過程:將賦值運算符右側的”表達式”的值賦給左側變量賦值表達式的值:是被賦值的變量的值a+=3a=a+3x*=y+8x=x*(y+8)x%=3x=x%3例a=3;d=func();c=d+2;說明:結合方向:自右向左優(yōu)先級:低于算術運算符賦值表達式可嵌套例:
a=b=5等價于a=(b=5)a=5+(c=6)a=12;a+=a-=a*a//表達式值為5,
b=5;a=5//表達式值11,c=6,a=11//表達式值為-264,a=a+(a=a-a*a)例:x=y+z;/*計算y+z的和并賦值給變量x.。*/
x=2;y=3;×賦值語句組成:賦值表達式后跟一個分號(;)組成賦值表達式可以包括在其他表達式中:例:if((a=b)>0)t=a;注意:在其它語句中只能用賦值表達式,不能用賦值語句。如:if((a=b;)>0)t=a;
b后邊不能有“;”§3.5數(shù)據(jù)輸入輸出的概念輸入輸出是相對于計算機主機而言的輸出:從計算機向外部輸出設備(顯示屏,打印機,磁盤)輸出數(shù)據(jù)輸入:從外部向輸入設備(如鍵盤,磁盤,光盤,掃描儀等)輸入數(shù)據(jù)C不提供輸入輸出語句,輸入輸出通過函數(shù)實現(xiàn)注意:不把輸入輸出作為C語言的提供的語句的目的是:使C語言編譯系統(tǒng)簡單,避免在編譯階段處理與硬件有關的問題,這可使編譯系統(tǒng)簡化,通用性強,可移植性好.在使用C的庫函數(shù)時,要用預編譯命令”#include”將有關的”頭文件”包含到用戶的源文件中
如:在調(diào)用標準輸入輸出庫函數(shù)時,文件開頭應有預編譯命令:
#include<stdio.h>
或
#include“stdio.h”§3.6字符數(shù)據(jù)輸入輸出內(nèi)容putchar函數(shù)(字符輸出函數(shù))getchar函數(shù)(字符輸入函數(shù))3.6.1putchar函數(shù)(字符輸出函數(shù))功能:向終端輸出一個字符。一般形式:
putchar(c)
可輸出字符的類型:c可以是字符型變量或整型變量控制字符轉(zhuǎn)義字符例3.2:#include<stdio.h>main(){intbell=7;putchar(bell);putchar(65);}
運行結果:A例3.4:#include<stdio.h>main(){putchar(‘\101’);putchar(‘\’’);
putchar(‘\015’);/*回車不換行*/}例3.3:#include<stdio.h>main(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(‘\n’);putchar(b);putchar(‘\n’);
putchar(c);putchar(‘\n’);}例3.1:#include<stdio.h>voidmain(){chara,b,c;a=‘B’;b=‘O’;c=‘Y’;putchar(a);putchar(b);putchar(c);}功能:從終端輸入一個字符。一般形式:
getchar()注意:由getchar()得到的字符可給字符變量或整型變量,也可以不賦給任何變量,而作為函數(shù)參數(shù)或表達式的一部分;如:
putchar(getchar());
printf(“%d”,getchar()+4);在使用getchar()時,必須在函數(shù)前加上
#include<stdio.h>。
執(zhí)行
getchar()函數(shù)時,雖然是讀入一個字符,但并不是從鍵盤按一個字符,該字符就被讀入送給一個字符變量,而是等輸入完一
行按回車鍵后,才將該行的字符輸入緩沖區(qū),然后getchar()函數(shù)從緩沖區(qū)中取一個字符給一個字符變量。3.6.2getchar函數(shù)(字符輸入函數(shù))例:#include“stdio.h”main(){charc;c=getchar();/*getchar()無參數(shù)*/putchar(c);}
§3.7格式輸入輸出內(nèi)容printf函數(shù)(格式輸出函數(shù))scanf函數(shù)(格式輸入函數(shù))3.7.1printf函數(shù)(格式輸出函數(shù))功能:按照指定的格式,向終端輸出若干個任意類型的數(shù)據(jù)一般格式:
printf(格式控制,輸出列表)如printf(“i=%d,c=%c\n”,i,c);(1)”格式控制”是用雙引號括起來的字符串,也稱”轉(zhuǎn)換控制字符串”,它包括兩種信息:
格式說明,%[修飾符]格式字符,如%d,%c,%f等,它的作用是將輸出的數(shù)據(jù)轉(zhuǎn)換為指定的格式輸出,格式說明總是由”%”字符開頭
普通字符,即需要原樣輸出的字符.(2)”輸出列表”:要輸出的數(shù)據(jù),(可以沒有,可以多個,多個時以“,”分隔)可以是常量,變量或表達式printf(“a=%d,b=%c\n”,a,b)格式說明輸出列表輸出結果:
a=3,b=4d,ix,Xoucse,Efg%%格式字符:十六進制無符號整數(shù)不帶符號十進制整數(shù)十進制整數(shù)指數(shù)形式實數(shù)單一字符字符串八進制無符號整數(shù)小數(shù)形式實數(shù)e和f中較短一種百分號本身inta=567;printf(“%d”,a);inta=255;printf(“%x”,a);inta=65;printf(“%o”,a);inta=567;printf(“%u”,a);chara=65;printf(“%c”,a);printf(“%s”,“ABC”);floata=567.789;printf(“%e”,a);floata=567.789;printf(“%f”,a);floata=567.789;printf(“%g”,a);printf(“%%”);567ff101567AABC5.677890e+002567.789000567.789%說明
格式字符要用小寫格式字符與輸出項個數(shù)應相同,按先后順序一一對應輸出轉(zhuǎn)換:格式字符與輸出項類型不一致,自動按指定格式輸出例
main(){unsignedintu=65535;printf(”u=%d\n",u);}
輸出結果:u=-1111111111111111165535附加格式說明符(修飾符).n對實數(shù),指定小數(shù)點后位數(shù)(四舍五入)對字符串,指定實際輸出位數(shù)修飾符功能m輸出數(shù)據(jù)域?qū)?數(shù)據(jù)長度<m,左補空格;否則按實際輸出輸出數(shù)據(jù)在域內(nèi)左對齊(缺省右對齊)-指定在有符號數(shù)的正數(shù)前顯示正號(+)+輸出數(shù)值時指定左面不使用的空位置自動填00在八進制和十六進制數(shù)前顯示前導0,0x#在d,o,x,u前,指定輸出精度為long型在e,f,g前,指定輸出精度為double型l例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);運行
1234,1234結果:
123.456001,123.456001,123.5,123.46,1.23e+02
a例staticchars[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n\n”,s,s,s,s,s);運行結果:Hello,world!
Hello,world!
HelloHelloHel
例m.n3.7.2scanf函數(shù)(格式輸入函數(shù))
一般形式:
scanf(格式控制,地址表列)
例:voidmain(){inta,b,c;scanf(“%d%d%d”,&a,&b,&c);printf(“%d,%d,%d\n”,a,b,c);}
運行:輸入:345回車輸出:3,4,5
格式說明:
1、格式符:d,i、o、u、x,X,s、c、f、e
由若干個地址組成的列表,可以是變量地址,或字符串的首地址含義同printf函數(shù)說明:
&a,&b,&c
中的”&”是”地址運算符”,&a指a在內(nèi)存中的地址.3、4、5之間可以是多個空格,也可以是回車、tab鍵,但不能為其它字符。scanf函數(shù)的作用:按照a,b,c在內(nèi)存的地址將a,b,c的值存進去2、附加的格式說明符共4種:l,h,m,*
l:用于輸入長整型數(shù)據(jù)(%ld、%lo、%lx)和double實型數(shù)據(jù)(%lf
或%le)
h:用于輸入短整型數(shù)據(jù)(%hd、%ho、%hx)m:指定輸入數(shù)據(jù)所占的寬度(列數(shù)),系統(tǒng)自動按它截取所需的數(shù)據(jù),其中m0。*:表示本輸入項讀入后不賦給相應的變量注意:輸入數(shù)據(jù)時不能指定精度。
如:scanf(%3d%3d”,&a,&b);
輸入:123456,
結果
a為123,b為456又如:scanf(“%3c%3c”,&c1,&c2);
輸入:abcdefg,結果c1為a,c2為d如:scanf(“%7.2f”,&a);如:scanf(“%2d%*3d%2d”,&a,&b);
輸入:1234567,結果:a為12,b為67
3、scanf函數(shù)執(zhí)行中應注意的問題(1)“格式控制”后面應為變量地址,不是變量名。(2)如果“格式控制”字符串中有非格式字符,在輸入時在相應位置輸入這些字符。(3)在用%c格式輸入字符時,空格字符和轉(zhuǎn)義字符都作為有效字符輸入。(4)在輸入數(shù)據(jù)時,遇到以下情況時認為數(shù)據(jù)結束:遇空格、回車或跳格(TAB)鍵;遇寬度結束,如%3d,只取3列;遇到非法輸入。
若:scanf(“a=%d,b=%d”,&a,&b);
則應輸入:a=3,b=4如:scanf(“%c%c%c”,&c1,&c2,&c3);輸入:abc結果c1為‘a(chǎn)’,c2為‘’,c3為‘b’如:scanf(“%d%c%f”,&a,&b,&c);若輸入:1234a123o.26結果a為1234,b為‘a(chǎn)’,c為123如:scanf(“%d,%d”,&a,&b);§3.8順序結構程序設計舉例內(nèi)容:1、順序結構程序設計的方法2、順序程序設計舉例
順序結構程序的設計方法1、分析應用的輸入量、輸出量2、確定輸入、輸出的變量(類型,命名)3、確定輸入輸出的算法4、模塊化編程1、確定輸入量的編程2、確定中間量的編程3、確定運算算法的C語言編程4、確定輸出量的編程5,調(diào)試程序例3.7輸入三角形的三條邊,求三角形的面積。
提示:利用公式area=sqrt(s(s-a)(s-b)(s-c)),s=(a+b+c)/2#include<math.h>"/*為使用求平方根函數(shù)sqrt()*/voidmain(){doublea,b,c,s,area;printf(“PleaseInputthreenumbers:\n");scanf(“%lf,%lf,%lf”,&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,a=%7.2f\n”,a,b,c,s);printf(“area=%7.2f\n”,area);}例3.8從鍵盤輸入一大寫字母,要求改用小寫字母輸出。#include"stdio.h"voidmain(){charc1,c2;printf("Inputauppercaseletter:\n");c1=getchar();printf(“%c,%d\n",c1,c1);c2=c1+(’a’-’A’); /*將大寫字母轉(zhuǎn)換成對應的小寫字母*/printf("%c,%d\n",c2,c2);} #include<stdio.h>voidmain(){printf(“%c”,getchar()+32);printf(“%c”,getchar()+32);printf(“%c”,getchar()+32);}putchar(getchar()+32);例3.9
求ax2+bx+c=0方程的根,a、b、c從鍵盤輸入,設b2-4ac>0#include<stdio.h>#include<math.h>/*為使用求平方根函數(shù)sqrt(),包含math.h頭文件*/voidmain(){doublea,b,c,delta,x1,x2;printf("Inputa,b,c:");scanf(“a=%lf,b=%lf,c=%lf",&a,&b,&c);delta=b*b-4*a*c; /*求判別式的值賦給delta*/x1=(-b+sqrt(delta))/(2*a);x2=(-b-sqrt(delta))/(2*a);printf("\nx1=%6.2f\nx2=%6.2f\n",x1,x2);} 在順序結構程序中,一般包括以下幾個部分:1.程序開頭的編譯預處理命令。2.順序結構程序的函數(shù)體中,是完成具體功能的各個語句和運算,主要包括:(1)變量類型的說明。(2)提供數(shù)據(jù)語句。(3)運算部分。(4)輸出部分。良好的源程序書寫風格
──順序程序段左對齊
順序程序段中的所有語句(包括說明語句),一律與本順序程序段的首行左對齊。
本章小結1,算法及其描述2,程序的三種基本結構3,C語句概述4,賦值表達式和賦值語句5,數(shù)據(jù)的輸入和輸出6,順序程序設計舉例
作業(yè)P87:3,6思考題:7說明:結合方向:自右向左優(yōu)先級:低于算術運算符左側必須是變量,不能是常量或表達式賦值表達式可嵌套賦值轉(zhuǎn)換規(guī)則:例
floatf;inti;i=10;f=i;則
f=10.00000例inti;i=2.56;//結果i=2;例:
a=b=5等價于a=(b=5)a=5+(c=6)a=12;a+=a-=a*a//表達式值為5,
b=5;a=5//表達式值11,c=6,a=11例doubled;
floatf;d=123.456789;f=d;則
f=123.45677;若:d=123.456789e100;f=d;則:Floatingpointerror:overflow//表達式值為-264,a=a+(a=a-a*a)實型數(shù)據(jù)賦值給整型變量時,先對實型取整,然后賦值給整型變量整型賦值給實型時,數(shù)值不變,但以實型形式存儲到變量中將double型賦值給float變量時,截取前7位有效數(shù)字,存放到float變量的存儲單元中,但應注意數(shù)值范圍不能溢出.float型賦值給double變量時,數(shù)值不變,有效位數(shù)擴展到16位將一個占字節(jié)多的整型賦給一個字節(jié)少的整形變量或字符型變量,只將其低位字節(jié)原封不動地送到該變量(即截斷高字節(jié)部分)例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);運行
1234,1234結果:
123.456001,123.456001,123.5,123.46,1.23e+02
a例staticchars[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n\n”,s,s,s,s,s);運行結果:Hello,world!
Hello,world!
HelloHelloHel
例m.n例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%-8d,%8d\n”,a,a);printf(“%-10.2f,%10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);運行結果:1234,1234123.46,123.5
Hello,Hel例-例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“0+10.2f\n”,f);例0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);
例#例longa=65536;printf(“%d,%8ld\n”,a,a);
例l00000000000000010000000000000000//00001234//0000123.46//000+1234//000+123.56//173,0173,7B,0X7B//0,65536例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);運行
1234,1234結果:
123.456001,123.456001,123.5,123.46,1.23e+02
a例staticchars[]=“Hello,world!”printf(“%s\n%15s\n%10.5s\n%2.5s\n%.3s\n\n”,s,s,s,s,s);運行結果:Hello,world!
Hello,world!
HelloHelloHel
例m.n例inta=1234;floatf=123.456;staticcharc[]=“Hello,world!”;printf(“%-8d,%8d\n”,a,a);printf(“%-10.2f,%10.1f\n”,f,f);printf(“%10.5s,%-10.3s\n”,c,c);運行結果:1234,1234123.46,123.5
Hello,Hel例-例inta=1234;floatf=123.456;printf(“%08d\n”,a);printf(“%010.2f\n”,f);printf(“%0+8d\n”,a);printf(“0+10.2f\n”,f);例0、+例inta=123;printf(“%o,%#o,%X,%#X\n”,a,a,a,a);
例#例longa=65536;printf(“%d,%8ld\n”,a,a);
例l00000000000000010000000000000000//00001234//0000123.46//000+1234//000+123.56//173,0173,7B,0X7B//0,65536例3.1
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子脂肪秤項目合作計劃書
- 氣象預報系統(tǒng)歷史數(shù)據(jù)存儲策略
- 教育寓言類故事的解析
- 軟件應用教程
- 紅海行動寓言故事中的成長啟示
- Isoxepac-Standard-生命科學試劑-MCE
- 2025年劇裝道具相關工藝美術品合作協(xié)議書
- 4-epi-Edoxaban-tosylate-4-epi-DU-176b-生命科學試劑-MCE
- 金融投資行業(yè)理財產(chǎn)品投資風險免責協(xié)議
- 小學生學習方法探討征文
- 人教版八年級數(shù)學下冊課件【全冊】
- 物聯(lián)網(wǎng)管理平臺的設計與實現(xiàn)
- 1例妊娠糖尿病的個案護理
- 《排球正面雙手傳球》課件
- 光伏發(fā)電職業(yè)病危害預評價方案方案
- 財務報表涉稅分析
- 五官科眼耳鼻咽喉科醫(yī)療常用器械的認識
- 企業(yè)清產(chǎn)核資報表
- 淺談建筑工程機電安裝施工技術運用論文
- 2023年新改版教科版四年級下冊科學練習題(一課一練+單元+期中+期末)
- 婦產(chǎn)科護理學課程標準
評論
0/150
提交評論