版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
C語(yǔ)言程序設(shè)計(jì)教材名稱:《C程序設(shè)計(jì)(第二版)》
譚浩強(qiáng)著清華大學(xué)出版社主講:楊
鋒前言一、計(jì)算機(jī)語(yǔ)言1、機(jī)器語(yǔ)言2、匯編語(yǔ)言3、高級(jí)語(yǔ)言4、高級(jí)語(yǔ)言向機(jī)器語(yǔ)言的過渡高級(jí)語(yǔ)言源程序機(jī)器語(yǔ)言目標(biāo)程序計(jì)算結(jié)果編譯解釋執(zhí)行——機(jī)器指令的集合——符號(hào)化的機(jī)器語(yǔ)言——通用自然的算法語(yǔ)言二、算法1、算法的概念為解決某一問題而采取的方法和步驟稱為算法例:求1+2+3+…+100的值的算法Step1:使sum的值為0,即sum=0Step2:使n的值為1,即n=1Step3:使sum和n的值相加,并將相加的結(jié)果保存到sum中,即sum+nsumStep5:使n的當(dāng)前值加1,即n+1nStep6:若n100,返回Step3;否則,結(jié)束2、算法的特性有窮性確定性有零個(gè)或多個(gè)輸入至少有一個(gè)輸出有效性3、算法的表示用自然語(yǔ)言表示如前面的例子用流程圖表示后面具體介紹用N—S流程圖表示任何一個(gè)算法都可以用三種基本結(jié)構(gòu)表示,這三種基本結(jié)構(gòu)為:順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)。前面算法的N—S流程表示如下:
sum=0
n=1
n<=100
sum+nsum
n+1n用偽代碼表示N—S流程圖畫起來(lái)費(fèi)事,特別是在算法設(shè)計(jì)階段,由于算法需要經(jīng)常修改,采用偽代碼比N—S流程圖更方便些。偽代碼是用介于自然語(yǔ)言和計(jì)算機(jī)語(yǔ)言之間的文字和符號(hào)描述算法用偽代碼描述的累加算法如下:sum和n分別初始化為0和1IFnislittlethen100orequal100sum=sum+n,n=n+1ELSE
輸出結(jié)果用計(jì)算機(jī)語(yǔ)言表示用計(jì)算機(jī)語(yǔ)言表示的算法是計(jì)算機(jī)能執(zhí)行的算法,該算法必須完全遵守相應(yīng)語(yǔ)言的語(yǔ)法規(guī)則。三、程序與程序設(shè)計(jì)——完成某一功能的計(jì)算機(jī)指令的有序集合1、程序2、程序設(shè)計(jì)——設(shè)計(jì)、編制、調(diào)試程序的過程3、程序設(shè)計(jì)的基本步驟(1)分析問題(2)確定解題思路和算法(3)編制流程圖(4)編寫源程序(5)靜態(tài)檢查(6)上機(jī)調(diào)試(7)正式運(yùn)行四、流程圖(框圖)起止框處理框判斷框輸出輸入框流程線連接點(diǎn)注釋框流程圖是算法的一種表示形式,而算法則是為解決某一問題而采取的方法和步驟。為了用流程圖表示算法,我們規(guī)定了一些表示特定功能的流程符號(hào):下面是求一元二次方程ax2+bx+c=0根的流程圖:開始計(jì)算判別式d=b2-4acd<0輸出二復(fù)數(shù)根輸入系數(shù)a,b,cd=0輸出二等根輸出二實(shí)根結(jié)束yesnoyesno第一章C語(yǔ)言概述§1.1C語(yǔ)言發(fā)展史1960ALGOL60(AlgorithmicLanguage)198787ANSIC1990ISOC1972C(取BCPL第二個(gè)字母)1970B(取BCPL第一個(gè)字母)1978標(biāo)準(zhǔn)C1983ANSIC 1967BCPL(BasicCombinedProgrammingLanguage)§1.2C語(yǔ)言特點(diǎn)1、簡(jiǎn)練、自由、結(jié)構(gòu)化2、運(yùn)算符豐富(附錄Ⅲ)3、數(shù)據(jù)結(jié)構(gòu)豐富4、可直接對(duì)硬件進(jìn)行操作5、目標(biāo)程序質(zhì)量高§1.3簡(jiǎn)單C程序分析例1.1打?。@示)一串字符運(yùn)行結(jié)果:
Thisisanexample./*example1.1*/main(){
printf(“Thisisanexample.\n”);}例1.2已知三角形三邊a,b,c,求面積
/*example1.2*/
main(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“p=%fs=%f”,p,s);}floatf(k)main()
intk; {{ intn,m;floatc;floatfac=1;inti; scanf(“%d,%d”,for(i=1;i<=k;i++) &n,&m);
fac=fac*i; c=f(m)/f(n)/f(m-n);
return(fac); printf(“%f”,c);} }mn例1.3已知整數(shù)m,n,求組合數(shù)CC程序結(jié)構(gòu)1、C程序由函數(shù)構(gòu)成C程序={一個(gè)主函數(shù)(main函數(shù))一個(gè)主函數(shù)+若干其他函數(shù)§1.3簡(jiǎn)單C程序分析例1.1打?。@示)一串字符運(yùn)行結(jié)果:
Thisisanexample./*example1.1*/main(){
printf(“Thisisanexample.\n”);}例1.2已知三角形三邊a,b,c,求面積
/*example1.2*/
main(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“p=%fs=%f”,p,s);}floatf(k)main()
intk; {{ intn,m;floatc;floatfac=1;inti; scanf(“%d,%d”,for(i=1;i<=k;i++) &n,&m);
fac=fac*i; c=f(m)/f(n)/f(m-n);
return(fac); printf(“%f”,c);} }mn例1.3已知整數(shù)m,n,求組合數(shù)CC程序結(jié)構(gòu)1、C程序由函數(shù)構(gòu)成C程序={一個(gè)主函數(shù)(main函數(shù))一個(gè)主函數(shù)+若干其他函數(shù)說明部分2、函數(shù){{函數(shù)體}數(shù)據(jù)定義執(zhí)行部分(語(yǔ)句){floatf(k)main()
intk; {{ intn,m;floatc;floatfac=1;inti; scanf(“%d,%d”,for(i=1;i<=k;i++) &n,&m);
fac=fac*i; c=f(m)/f(n)/f(m-n);
return(fac); printf(“%f”,c);} }mn例1.3已知整數(shù)m,n,求組合數(shù)CC程序結(jié)構(gòu)1、C程序由函數(shù)構(gòu)成C程序={一個(gè)主函數(shù)(main函數(shù))一個(gè)主函數(shù)+若干其他函數(shù)說明部分2、函數(shù){{函數(shù)體}{數(shù)據(jù)定義執(zhí)行部分(語(yǔ)句)3、語(yǔ)句書寫自由,后帶分號(hào)“;”4、可用/*……*/對(duì)C程序作注釋例1.2已知三角形三邊a,b,c,求面積
/*example1.2*/
main(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“p=%fs=%f”,p,s);}floatf(k)main()
intk; {{ intn,m;floatc;floatfac=1;inti; scanf(“%d,%d”,for(i=1;i<=k;i++) &n,&m);
fac=fac*i; c=f(m)/f(n)/f(m-n);
return(fac); printf(“%f”,c);} }mn例1.3已知整數(shù)m,n,求組合數(shù)CC數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實(shí)型字符型枚舉型數(shù)組型結(jié)構(gòu)體型共用體型單精度雙精度
第二章數(shù)據(jù)類型、運(yùn)算符與表達(dá)式§2.1常量與變量一、常量4、字符串常量——“”括起來(lái)的字符字符序列5、符號(hào)常量——
#define符號(hào)名常量2、實(shí)型常量小數(shù)形式(12.34、-0.65)指數(shù)形式(0.1234e2)3、字符型常量‘’括起來(lái)的一個(gè)字符或以\開頭的有特殊含義的字符序列(’a’,’\n’)1、整型常量:十進(jìn)制常量:八進(jìn)制常量:以數(shù)字0開頭(023,-014)十六進(jìn)制常量:以0x開頭(0x123,-0x2af)
#definePI
3.14159例2.1判斷下列是否是C語(yǔ)言的常量
’1’-123’internet’2/4’\141’100.0-12e2.5"t"0.4e-4’\k’(字符型)(整型)()()(字符型)(實(shí)型)()(字符串)(實(shí)型)(×)例2.2定義一個(gè)符號(hào)常量
PI,其值為二、變量1、變量名——以標(biāo)識(shí)符命名由字母、數(shù)字或下劃線組成首字符為字母或下劃線用來(lái)標(biāo)識(shí)變量、符號(hào)常量、數(shù)組、函數(shù)、文件等標(biāo)識(shí)符例:sumgood123student_name2、變量的定義用變量定義語(yǔ)句定義變量及其類型(1)變量定義語(yǔ)句的格式類型關(guān)鍵字變量名
實(shí)型字符型
char(2)類型關(guān)鍵字整型基本型
int短整型
short長(zhǎng)整型
long無(wú)符號(hào)型
unsigned單精度型
float雙精度型
double(4)說明①必須在程序執(zhí)行部分之前對(duì)程序中的所有變量進(jìn)行定義
②C語(yǔ)言中整型和字符型數(shù)據(jù)通用(3)定義變量的目的:根據(jù)變量類型的不同在內(nèi)存中分配不同字節(jié)個(gè)數(shù)的內(nèi)存空間③不同類型的變量所能表示數(shù)的范圍不同④可在定義變量的同時(shí)給其賦初值例:
inta=3,b=4,c=5;floatx,y,z=0.5;charw=‘a(chǎn)’;§2.2算術(shù)運(yùn)算符與算術(shù)表達(dá)式一、C運(yùn)算符簡(jiǎn)介算術(shù)運(yùn)算符
+-*/%++--關(guān)系運(yùn)算符
><==>=<=!=邏輯運(yùn)算符
!&&||賦值運(yùn)算符
=條件運(yùn)算符
?:逗號(hào)表達(dá)式
,指針運(yùn)算符
*&強(qiáng)制類型轉(zhuǎn)換運(yùn)算符
(類型關(guān)鍵字)二、算術(shù)表達(dá)式1、定義:用算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象連接起來(lái)且符合C語(yǔ)法規(guī)則的式子2、運(yùn)算順序3、運(yùn)算類型(1)同類型運(yùn)算結(jié)果類型不變不同類型運(yùn)算先按類型級(jí)別由低向高轉(zhuǎn)換成同一類型,再計(jì)算Double
floatlongunsignedintchar,short
高低
(類型關(guān)鍵字)(表達(dá)式)例:
(int)a(float)(5%3)(double)(x+y)三、強(qiáng)制類型轉(zhuǎn)換運(yùn)算四、自增、自減運(yùn)算1、運(yùn)算規(guī)則++i--i
使用前使i值加(減)1i++i--
使用后使i值加(減)12、注意(1)只能用于變量(2)右結(jié)合方向(3)使用時(shí)謹(jǐn)防出錯(cuò)3、例§2.3賦值運(yùn)算符和賦值表達(dá)式一、賦值運(yùn)算符及其操作=
將一個(gè)表達(dá)式的值賦給一個(gè)變量二、賦值表達(dá)式<變量><賦值運(yùn)算符><表達(dá)式>說明:(1)發(fā)生類型轉(zhuǎn)換(2)右結(jié)合例:x=-b/(2*a)a=b=c=5a=(b=4)+(c=6)三、復(fù)合賦值運(yùn)算
含復(fù)合賦值運(yùn)算符的表達(dá)式的一般形式:例:a+=3 a+=3 a=a+3a*=x+y a*=x+y a=a*(x+y) a%=b a%=b a=a%b
A=B
A=AB其中A為變量,B為C表達(dá)式,為任一雙目運(yùn)算符a+=(a-=a*a)a+=(a=a-a*a)a=a+(a=a-a*a)-12a+=a-=a*a例2.1設(shè)a=3
求下列表達(dá)式的值§2.4逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式1、逗號(hào)表達(dá)式表達(dá)式1,表達(dá)式2,,表達(dá)式n2、運(yùn)算規(guī)則依次計(jì)算各表達(dá)式的值,以表達(dá)式n的值作為最終值。(其優(yōu)先級(jí)最低)例:比較(設(shè)a=3)a=3*5,a*4a=(3*5,a*4)計(jì)算后:值60,a=15a=12
本章作業(yè)第66頁(yè)3.9、3.12§3.1C語(yǔ)句概述第三章最簡(jiǎn)單的C程序設(shè)計(jì)C語(yǔ)句控制語(yǔ)句(條件、分支、循環(huán))函數(shù)調(diào)用語(yǔ)句(函數(shù)加分號(hào))表達(dá)式語(yǔ)句(表達(dá)式加分號(hào))空語(yǔ)句(一個(gè)單獨(dú)的分號(hào))復(fù)合語(yǔ)句(用{}將若干語(yǔ)句括起)§3.2賦值語(yǔ)句語(yǔ)句格式:賦值表達(dá)式;例1.2已知三角形三邊a,b,c,求面積
/*example1.2*/
main(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);
p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“p=%fs=%f”,p,s);}§3.2賦值語(yǔ)句語(yǔ)句格式:賦值表達(dá)式;例3.1已知整型變量x,y的值分別是3和5,
試將它們的值互換。intx=3,y=5,z;z=x;x=y;y=z;zxy35§3.3數(shù)據(jù)的輸入/輸出(I/O)C語(yǔ)言中數(shù)據(jù)的I/O由函數(shù)實(shí)現(xiàn)一、字符的I/O2、語(yǔ)句功能:從指定設(shè)備讀一個(gè)字符輸出c的值1、語(yǔ)句格式輸入:getchar();輸出:putchar(c);字符變量3、說明使用標(biāo)準(zhǔn)I/O函數(shù)時(shí),應(yīng)在程序前加預(yù)編譯命令:
#include“stdio.h”例3.1輸入一個(gè)字符并把它輸出出來(lái)
#include“stdio.h”main(){charc;c=getchar();
putchar(c);}二、格式I/O1、語(yǔ)句格式輸入
scanf(格式控制,地址表列);輸出
printf(格式控制,輸出表列);2、語(yǔ)句功能按格式控制描述的格式給地址表列中的量輸入值或輸出輸出表列中各量的值3、格式控制格式控制是由“”括起來(lái)的字符序列,其中包括格式字符和普通字符。普通字符是需要原樣輸出(輸入)的字符,格式字符是用來(lái)描述對(duì)應(yīng)的輸出(輸入)項(xiàng)的輸出(輸入)形式。例:scanf(“x=%d,y=%f”,&i,&x);格式字符輸入項(xiàng)地址printf(“x=%d,y=%f\n”,13/4,12.34*6);格式字符輸出項(xiàng)4、格式字符在輸出是,可在%和格式字符之間使用l,m和n等附加的格式說明字符,具體的格式及允許使用的附加格式字符及作用見下表:
注:①對(duì)f、e而言,省略n(即%m.f或%m.e),則輸出實(shí)數(shù)的小數(shù)點(diǎn)后有6位數(shù)字。②對(duì)f、e而言,省略m(即%.nf或%.ne),則m自動(dòng)取保證正確輸出的最小的字段寬度值③若指定的m值不能保證數(shù)據(jù)的正確輸出,則輸出數(shù)據(jù)時(shí)按數(shù)據(jù)實(shí)際所占字段寬度輸出例:若i為整形,其值為-1,f為實(shí)型,其值為123.4567,則下列輸出函數(shù)的輸出結(jié)果為:1、printf(“%d,%3d,%o,%x”,i,i,i,i);2、printf(“%d,%c,%3c”,i+98,i+98,i+98);3、printf(“%f,%10.3f,%-10.3f,\n%e,%15.2e,%.4e,%15e”,f,f,f,f,f,f,f);輸出:-1,-1,177777,ffff輸出:97,a,a輸出:123.456700,123.457,123.457,
1.234567e+002,1.23e+002,1.2346e+002,1.234567e+002
#include“math.h”
main(){floata,b,c,p,s;
scanf(“%f,%f,%f”,&a,&b,&c);p=(a+b+c)/2;s=sqrt(p*(p-a)*(p-b)*(p-c));
printf(“p=%f,s=%f”,p,s);}§3.4程序舉例例3.2已知三角形三邊a,b,c,求面積2(設(shè)
b-4ac>0
)例3.3求一元二次方程
ax+bx+c=0
的解2開始d=b-4ac2求根:x1、x2x1、x2enda,b,c#include“math.h”main(){floata,b,c,d,x1,x2;
scanf(“%f%f%f”,&a,&b,&c);d=b*b-4*a*c;x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf(“x1=%8.4f\nx2=%8.4f\n”,x1,x2);}第三章作業(yè)第84頁(yè)4.4;第85頁(yè)4.6(書面)第85頁(yè)4.8;第86頁(yè)4.10(上機(jī))第三章課堂練習(xí)1、P85習(xí)題4.5inta=5,b=7;printf(“%d%d\n”,a,b);printf(“%3d%3d\n”,a,b);5757輸出結(jié)果:1、P85習(xí)題4.5floatx=67.8564,y=-789.124;printf(“%f,%f\n”,x,y);printf(“%-10f,%-10f\n”,x,y);
67.856400,-789.12402367.856400,-789.124023
輸出結(jié)果:1、P85習(xí)題4.567.86,-789.12,67.8564,-789.12406.78564e+01,-7.9e+02輸出結(jié)果:floatx=67.8564,y=-789.124;printf(“%8.2f,%8.2f,%.4f,%.4f\n”,x,y,x,y);printf(“%e,%10.2e\n”,x,y);
1、P85習(xí)題4.5charc=‘A’;printf(“%c,%d,%o,%x\n”,c,c,c,c);printf(“%s,%5.3s\n”,
“COMPUTER”,“COMPUTER”);
A,65,101,41COMPUTER,COM輸出結(jié)果:2、P85習(xí)題4.7scanf(“%5d%5d%c%c%f%f%*f,%f”,&a,&b,&c1,&c2,&x,&y,&z);
a=10,b=20,c1=‘A’,c2=‘a(chǎn)’,x=1.5,y=-3.75,z=67.8使:第四章邏輯運(yùn)算和判斷選取控制§4.1關(guān)系運(yùn)算符和關(guān)系表達(dá)式一、運(yùn)算符與優(yōu)先級(jí)<<=>>===!=同級(jí)同級(jí)高低算術(shù)運(yùn)算關(guān)系運(yùn)算賦值運(yùn)算高低二、關(guān)系表達(dá)式1、關(guān)系表達(dá)式的形式<表達(dá)式><關(guān)系運(yùn)算符><表達(dá)式>2、關(guān)系表達(dá)式的值1——真0——假下列是合法的關(guān)系表達(dá)式:a+b>c+d(a=3)<(b=5)‘a(chǎn)’!=‘A’(a>b)==(c<d)§4.2邏輯運(yùn)算符和邏輯表達(dá)式一、運(yùn)算符與優(yōu)先級(jí)!
算術(shù)運(yùn)算關(guān)系運(yùn)算
&&||高低邏輯運(yùn)算真值表二、邏輯表達(dá)式1、邏輯表達(dá)式的值1——真0——假2、邏輯運(yùn)算的對(duì)象并非僅限于邏輯量C判斷處理的原則非0——真0——假例:設(shè)
a=4
,
b=5
,則
!a
為0
(假)
a&&b-1
為1
(真)3、運(yùn)算中一旦能確定其值,終止計(jì)算如計(jì)算:
a&&b&&ca||b||c第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)50計(jì)算機(jī)教研室沈建京§4.3if語(yǔ)句(條件語(yǔ)句)一、語(yǔ)句格式123m格式1:if(e)語(yǔ)句格式2:if(e)語(yǔ)句1else語(yǔ)句2格式3:if(e)語(yǔ)句1
elseif(e)語(yǔ)句2
elseif(e)語(yǔ)句3…...
elseif(e)語(yǔ)句melse語(yǔ)句n表達(dá)式語(yǔ)句或復(fù)合語(yǔ)句第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)51計(jì)算機(jī)教研室沈建京二、語(yǔ)句功能e語(yǔ)句非00下條語(yǔ)句下條語(yǔ)句語(yǔ)句1語(yǔ)句2e非00格式1:if(e)語(yǔ)句計(jì)算
e
的值并判斷。
e值非0,則執(zhí)行語(yǔ)句;否則,執(zhí)行下條語(yǔ)句。格式2:if(e)語(yǔ)句1else語(yǔ)句2計(jì)算
e
的值并判斷。
e
值非0,則執(zhí)行語(yǔ)句1;否則,執(zhí)行語(yǔ)句2。第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)52計(jì)算機(jī)教研室沈建京格式3:if(e)語(yǔ)句1
elseif(e)語(yǔ)句2
elseif(e)語(yǔ)句3…...
elseif(e)語(yǔ)句melse語(yǔ)句n123m計(jì)算e1
的值并判斷,其值非0執(zhí)行語(yǔ)句1;否則,判斷e2
的值,其值非0執(zhí)行語(yǔ)句2;否則,判斷e3
的值,其值非0執(zhí)行語(yǔ)句3;否則,.…..判斷em
的值,其值非0執(zhí)行語(yǔ)句m
;否則,執(zhí)行語(yǔ)句n00e1e3eme2語(yǔ)句1語(yǔ)句3語(yǔ)句2語(yǔ)句m語(yǔ)句n
下條語(yǔ)句非0非0非0非000….第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)53計(jì)算機(jī)教研室沈建京例4.1輸入互不相等的三個(gè)數(shù),按從小到大順序輸出它們。分析:設(shè)已知的三個(gè)數(shù)為a,b,c.(1)可直接通過邏輯表達(dá)式和條件語(yǔ)句設(shè)計(jì)程序。(2)可通過條件語(yǔ)句和互換變量值設(shè)計(jì)程序,即經(jīng)過處理后使:a<b<c第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)54計(jì)算機(jī)教研室沈建京方法(1):main(){floata,b,c;
scanf(“%f%f%f”,&a,&b,&c);if(a<b&&b<c)printf(“%f,%f,%f”,a,b,c);if(a<c&&c<b)printf(“%f,%f,%f”,a,c,b);
if(b<a&&a<c)printf(“%f,%f,%f”,b,a,c);if(b<c&&c<a)printf(“%f,%f,%f”,b,c,a);
if(c<b&&b<a)printf(“%f,%f,%f”,c,b,a);if(c<a&&a<b)printf(“%f,%f,%f”,c,a,b);}第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)55計(jì)算機(jī)教研室沈建京方法(2):main(){floata,b,c,t;
scanf(“%f%f%f”,&a,&b,&c);if(a>b){t=a;a=b;b=t;}if(a>c){t=a;a=c;c=t;}if(b>c){t=b;b=c;c=t;}printf(“%5.2f,%5.2f,%5.2f”,a,b,c);}C語(yǔ)言程序設(shè)計(jì)56計(jì)算機(jī)教研室沈建京例4.2求一元二次方程
ax2+bx+c=0
的解求x1、x2x1、x2endd>=0無(wú)實(shí)根yn第四章邏輯運(yùn)算和判斷選取控制開始d=b-4ac2求根:x1、x2x1、x2enda,b,c開始d=b2-4aca,b,c第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)57計(jì)算機(jī)教研室沈建京main(){floata,b,c,d,x1,x2;
scanf(“%f%f%f”,&a,&b,&c);d=b*b-4*a*c;
if(d>=0){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);printf(“x1=%f,x2=%f”,x1,x2);}elseprintf(“Itisnorealroots.”);}第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)58計(jì)算機(jī)教研室沈建京例4.3某運(yùn)輸公司噸公里基本運(yùn)費(fèi)為p,根據(jù)距離s的遠(yuǎn)近計(jì)費(fèi)標(biāo)準(zhǔn)如下:
s<250km 沒有折扣 250
s<500 2%折扣 500s<1000 5%折扣 1000s<2000 8%折扣 2000s<3000 10%折扣 3000s 15%折扣根據(jù)貨物重量w和運(yùn)距s,求運(yùn)費(fèi)f。第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)59計(jì)算機(jī)教研室沈建京main(){floatp,s,w,d,f;
scanf(“%f%f%f”,&p,&s,&w);if(s>=3000)d=0.15;
elseif(s>=2000)d=0.10;
elseif(s>=1000)d=0.08;
elseif(s>=500)d=0.05;
elseif(s>=250)d=0.02;elsed=0.0;f=p*w*s*(1-d);printf(“f=%15.2f”,f);}第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)60計(jì)算機(jī)教研室沈建京三、if
語(yǔ)句的嵌套嵌套if
的一般形式if()
if()語(yǔ)句1
else語(yǔ)句2else
if()語(yǔ)句3
else語(yǔ)句4內(nèi)嵌if內(nèi)嵌if注意:else總是與它上面最近的if配對(duì)第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)61計(jì)算機(jī)教研室沈建京分析:a=0
不是二次方程。
b2-4ac=0
有兩個(gè)相等實(shí)根。b2-4ac>0
有兩不等實(shí)根。b2-4ac<0
有兩共軛復(fù)根。
#include“math.h”main(){floata,b,c,d,x,x1,x2,xr,xi;
scanf(“%f%f%f”,&a,&b,&c);編程:例4.2求一元二次方程
ax2+bx+c=0
的解C語(yǔ)言程序設(shè)計(jì)62計(jì)算機(jī)教研室沈建京第四章邏輯運(yùn)算和判斷選取控制end求x1、x2x求xr、xix1、x2xr、xiNO!d=0d>=0求xyynnd=b-4ac2yna=0開始a,b,c第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)63計(jì)算機(jī)教研室沈建京If(fabs(a)<1e-6)printf(“No!”);else{d=b*b-4*a*c;
if(fabs(d)<1e-6){x=-b/(2*a);
printf(“Twoequalroots:%f”,x);}
elseif(d>0){x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);
printf(“Tworealroots:%f,%f”,x1,x2);}else{xr=-b/(2*a);xi=sqrt(-d)/(2*a);
printf(“Complexroots:%f,%f”,xr,xi);}
}}第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)64計(jì)算機(jī)教研室沈建京四、條件運(yùn)算符與條件表達(dá)式1、條件表達(dá)式的一般形式<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>2、運(yùn)算規(guī)則先計(jì)算表達(dá)式1,若為非0,則以表達(dá)式2的值作為條件表達(dá)式的值;否則,以表達(dá)式3的值為條件表達(dá)式的值。3、優(yōu)先級(jí)算術(shù)、關(guān)系、邏輯運(yùn)算條件運(yùn)算賦值運(yùn)算高低左結(jié)合第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)65計(jì)算機(jī)教研室沈建京§4.4switch語(yǔ)句一、語(yǔ)句格式switch(表達(dá)式){case常量表達(dá)式1:語(yǔ)句1
case常量表達(dá)式2:語(yǔ)句2
……
case常量表達(dá)式n:語(yǔ)句ndefault:語(yǔ)句n+1}第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)66計(jì)算機(jī)教研室沈建京二、執(zhí)行過程當(dāng)switch后的表達(dá)式的值與某一個(gè)case后的常量表達(dá)式的值相等時(shí),執(zhí)行其后的語(yǔ)句;若無(wú)匹配,則執(zhí)行default后的語(yǔ)句。三、break語(yǔ)句使流程跳出switch結(jié)構(gòu),終止switch語(yǔ)句的執(zhí)行。第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)67計(jì)算機(jī)教研室沈建京例4.5用switch語(yǔ)句設(shè)計(jì)“例4.3運(yùn)費(fèi)程序”第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)68計(jì)算機(jī)教研室沈建京例4.3某運(yùn)輸公司噸公里基本運(yùn)費(fèi)為p,根據(jù)距離s的遠(yuǎn)近計(jì)費(fèi)標(biāo)準(zhǔn)如下:
s<250km 沒有折扣 250
s<500 2%折扣 500s<1000 5%折扣 1000s<2000 8%折扣 2000s<3000 10%折扣 3000s 15%折扣根據(jù)貨物重量w和運(yùn)距s,求運(yùn)費(fèi)f。第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)69計(jì)算機(jī)教研室沈建京main(){floatp,w,s,d,f;intc;
scanf(“%f”,&s);
scanf(“%f%f”,&p,&w);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;case1:d=0.02;break;case2:case3:d=0.05;break;case4:
case5:case6:case7:d=0.08;break;case8:case9:case10:case11:d=0.1;break;case12:d=.15;break;}f=p*w*s*(1-d);
printf(“f=%15.2f”,f);}C語(yǔ)言程序設(shè)計(jì)70計(jì)算機(jī)教研室沈建京第四章作業(yè)第104頁(yè)5.3(書面)第四章課堂練習(xí)第105頁(yè)5.5、5.6、5.7、5.10第105頁(yè)5.6,5.7,5.8(上機(jī))第四章邏輯運(yùn)算和判斷選取控制第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)71計(jì)算機(jī)教研室沈建京習(xí)題5.5已知x,求分段函數(shù)值y
main() {floatx,y;
scanf(“%f”,&x); if(x<1)y=x; if(x>=1&&x<10)y=2*x-1; if(x>=10)y=3*x-11;
printf(“x=%f,y=%f\n”,x,t);}程序1:第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)72計(jì)算機(jī)教研室沈建京
main() {floatx,y;
scanf(“%f”,&x); if(x<1)y=x; elseif(x<10)y=2*x-1; elsey=3*x-11;
printf(“x=%f,y=%f\n”,x,y);}程序2:第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)73計(jì)算機(jī)教研室沈建京習(xí)題5.6分析:設(shè)百分制成績(jī)?yōu)閤,成績(jī)等級(jí)為y‘A’ x90‘B’ 80x<90‘C’ 70x<80‘D’ 60x<70‘E’ x<60y=第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)74計(jì)算機(jī)教研室沈建京習(xí)題5.1010 a||b||c||d0 其他h=分析:設(shè)坐標(biāo)為(x,y),高度為h
設(shè):
a=(x-2)+(y-2)1 b=(x+2)+(y-2)1 c=(x+2)+(y+2)1 d=(x-2)+(y+2)122222222第四章邏輯運(yùn)算和判斷選取控制C語(yǔ)言程序設(shè)計(jì)75計(jì)算機(jī)教研室沈建京習(xí)題5.7給一個(gè)不多于5位的正整數(shù),要求:(1)求出它是幾位數(shù);(2)分別打印出每一位數(shù)字;(3)按逆序打印出各位數(shù)字;第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)76計(jì)算機(jī)教研室沈建京第五章循環(huán)控制C循環(huán)控制if-goto循環(huán)
while循環(huán)
do-while循環(huán) for循環(huán)
所謂循環(huán)是指當(dāng)滿足一定條件時(shí),程序流程重復(fù)執(zhí)行某一固定的程序段。該固定程序段稱為循環(huán)的循環(huán)體。C實(shí)現(xiàn)循環(huán)控制的語(yǔ)句有:第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)77計(jì)算機(jī)教研室沈建京§5.1goto語(yǔ)句及其構(gòu)成的循環(huán)一、goto語(yǔ)句1、語(yǔ)句格式
goto
語(yǔ)句標(biāo)號(hào)寫在語(yǔ)句前的標(biāo)識(shí)符(后加:)2、語(yǔ)句功能使流轉(zhuǎn)到語(yǔ)句標(biāo)號(hào)所標(biāo)識(shí)的語(yǔ)句執(zhí)行
gotoL1; L2:語(yǔ)句…… …...L1:語(yǔ)句 gotoL2;例:第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)78計(jì)算機(jī)教研室沈建京二、if語(yǔ)句和goto語(yǔ)句聯(lián)合實(shí)現(xiàn)循環(huán)L1:if(e) {循環(huán)體
gotoL1;}
(當(dāng)型循環(huán))L2:循環(huán)體
if(e)
gotoL2;
(直到型循環(huán))第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)79計(jì)算機(jī)教研室沈建京例5.1求s=1+2+3+….+n的值。
main(){inti=1,s=0,n;
scanf(“%d”,&n);L1:s=s+i;i++;if(i<=n)gotoL1;
printf(“s=%d”,s);}
main(){inti=1,s=0,n;
scanf(“%d”,&n);
L1:if(i<=n){s=s+i;i++;
gotoL1;}
printf(“s=%d”,s);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)80計(jì)算機(jī)教研室沈建京§5.2while語(yǔ)句—“當(dāng)型”循環(huán)一、語(yǔ)句格式While(e)循環(huán)體單語(yǔ)句或復(fù)合語(yǔ)句二、執(zhí)行過程(先判斷后執(zhí)行)當(dāng)表達(dá)式e值為非0時(shí),執(zhí)行循環(huán)體,然后重復(fù)執(zhí)行while語(yǔ)句;當(dāng)e的值為0時(shí),結(jié)束循環(huán),執(zhí)行后繼語(yǔ)句。非00循環(huán)體e第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)81計(jì)算機(jī)教研室沈建京例5.2求s=1+2+3+….+n的值(用while循環(huán))。main(){inti=1,s=0,n;
scanf(“%d”,&n);
while(i<=n){s=s+i;i++;}
printf(“s=%d”,s);}main(){inti=1,s=0,n;
scanf(“%d”,&n);
while(i<=n)s+=i++;
printf(“s=%d”,s);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)82計(jì)算機(jī)教研室沈建京§5.3do-while語(yǔ)句—“直到型”循環(huán)一、語(yǔ)句格式do循環(huán)體while(e);單語(yǔ)句或復(fù)合語(yǔ)句二、執(zhí)行過程(先執(zhí)行后判斷)先執(zhí)行do后的循環(huán)體,然后判斷表達(dá)式e的值,若為非0,重復(fù)執(zhí)行循環(huán)體,直到while中的表達(dá)式e為0,結(jié)束循環(huán)。循環(huán)體e0非0第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)83計(jì)算機(jī)教研室沈建京例5.3求s=1+2+….+n的值(用do-while循環(huán))。main(){inti=1,s=0,n;
scanf(“%d”,&n);
do{s=s+i;i++;}while(i<=n);
printf(“s=%d”,s);}main(){inti=1,s=0,n;
scanf(“%d”,&n);
dos+=i++;while(i<=n);
printf(“s=%d”,s);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)84計(jì)算機(jī)教研室沈建京§5.4for語(yǔ)句及其構(gòu)成的循環(huán)一、語(yǔ)句格式for(表達(dá)式1;表達(dá)式2;表達(dá)式3)循環(huán)體計(jì)算表達(dá)式1計(jì)算表達(dá)式3表達(dá)式2循環(huán)體下一條語(yǔ)句0非0二、執(zhí)行過程1、計(jì)算表達(dá)式1。2、判斷表達(dá)式2。若非0,執(zhí)行循環(huán)體,轉(zhuǎn)3;否則,結(jié)束循環(huán),轉(zhuǎn)4。3、計(jì)算表達(dá)式3。轉(zhuǎn)2。4、執(zhí)行for語(yǔ)句的下一條語(yǔ)句。第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)85計(jì)算機(jī)教研室沈建京三、說明1、for語(yǔ)句最簡(jiǎn)單、最常用的應(yīng)用形式for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體例5.4求s=1+2+….+n的值(用for循環(huán))。main(){inti,s=0,n;
scanf(“%d”,&n);for(i=1;i<=n;i++)s=s+i;
printf(“s=%d”,s);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)86計(jì)算機(jī)教研室沈建京2、for語(yǔ)句中的三個(gè)表達(dá)式均可省略
注意:(1)分號(hào)不能省略。(2)應(yīng)保證循環(huán)正確執(zhí)行。例main(){inti,s,n;
scanf(“%d”,&n);for(i=1,s=0;i<=n;)s+=i++;
printf(“s=%d”,s);}main(){inti=1,s=0,n;
scanf(“%d”,&n);for(;i<=n;)s+=i++;
printf(“s=%d”,s);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)87計(jì)算機(jī)教研室沈建京例5.5求Fibonacci數(shù)列:1,1,2,3,5,8,….的前30項(xiàng)。分析:f1=f2=1,fn=fn-1+fn-2(n>=3)
main(){longi=1,j=1,k;intn;printf(“%8ld%8ld”,i,j);for(n=3;n<=30;n++){k=i+j;printf(“%8ld”,k);if(n%3==0)printf(“\n”);i=j;j=k;}}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)88計(jì)算機(jī)教研室沈建京四、循環(huán)的嵌套—多重循環(huán)1、循環(huán)的嵌套概念對(duì)各種循環(huán)結(jié)構(gòu)是一樣的,即某一循環(huán)的循環(huán)體內(nèi)包含另一循環(huán)結(jié)構(gòu)。2、各種循環(huán)結(jié)構(gòu)可以互相嵌套。例for嵌套for(;;){….
for(;;){….}….}for-while嵌套for(;;){….
while(){….}….}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)88計(jì)算機(jī)教研室沈建京3、嵌套循環(huán)的循環(huán)變量應(yīng)互不相同,而并列循環(huán)的循環(huán)變量可以相同例for(i=0;i<10;i++){for(j=0;j<10;j++)
printf(“i=%d,j=%d”,i,j);
printf(“\n”);}for(i=0;i<10;i++)
printf(“i=%d”,i);printf(“\n”);for(i=0;i<10;i++)
printf(“i=%d”,i);第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)89計(jì)算機(jī)教研室沈建京§5.5break語(yǔ)句和continue語(yǔ)句一、break語(yǔ)句1、用來(lái)跳出switch結(jié)構(gòu)。2、用來(lái)跳出當(dāng)前循環(huán)。二、continue語(yǔ)句用來(lái)結(jié)束本次循環(huán),即跳過當(dāng)前循環(huán)中后繼尚未執(zhí)行的語(yǔ)句,進(jìn)行下一次循環(huán)循環(huán)break;循環(huán)continue;第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)91計(jì)算機(jī)教研室沈建京例5.6打印100以內(nèi)個(gè)位數(shù)為6,且能被3整除的數(shù)。main(){inti,j;
for(i=0;i<=9;i++){j=i*10+6;if(j%3!=0)continue;
printf("%d",j);}}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)91計(jì)算機(jī)教研室沈建京例5.7寫出下列程序的運(yùn)行結(jié)果。main(){inti,j;for(i=1;i<9;i++){for(j=1;j<=i;j++)printf(“%3d*%3d=%4d”,i,j,i*j);
printf(“\n”);}}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)92計(jì)算機(jī)教研室沈建京例5.8寫出下列程序的運(yùn)行結(jié)果。
main(){inti,j,a=0;for(i=0;i<2;i++)
{
for(j=0;j<4;j++)
{if(j%2)break;a++;}a++;
}
printf("%d\n",a);}第五章循環(huán)控制C語(yǔ)言程序設(shè)計(jì)92計(jì)算機(jī)教研室沈建京§5.6程序舉例例1:判斷一個(gè)整數(shù)m是否為素?cái)?shù)例2:輸入兩個(gè)正整數(shù)m和n,求其最大公約數(shù)和最小公倍數(shù)。例3:輸出以下圖形:
*************************C語(yǔ)言程序設(shè)計(jì)93計(jì)算機(jī)教研室沈建京第五章作業(yè)5.2,5.3,5.5,5.7,5.8(上機(jī))第五章循環(huán)控制第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)97計(jì)算機(jī)教研室沈建京第六章數(shù)組§6.1一維數(shù)組一、定義類型關(guān)鍵字?jǐn)?shù)組名[常數(shù)表達(dá)式];標(biāo)識(shí)符數(shù)組體積二、數(shù)組元素?cái)?shù)組名[下標(biāo)]下界為0,上界為常數(shù)表達(dá)式-1定義數(shù)組的目的是為了定義一批數(shù)組元素,來(lái)存儲(chǔ)一批類型相同的數(shù)據(jù)第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)98計(jì)算機(jī)教研室沈建京定義一維整型數(shù)組a和實(shí)型數(shù)組ba數(shù)組中的元素是:a[0],a[1],a[2],a[3],a[4],a[5],a[6],a[7],a[8],a[9];b數(shù)組中的元素是:b[0],b[1],b[2],b[3],b[4]
數(shù)組元素的作用和變量的作用完全相同例:
inta[10];floatb[5];第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)99計(jì)算機(jī)教研室沈建京三、數(shù)組的引用以數(shù)組元素作為引用對(duì)象例6.1求s=a1+a2+……+a10
main(){inti;floats=0,a[10];for(i=0;i<10;i++){scanf(“%f”,&a[i]);s=s+a[i];}
printf(“s=%f\n”,s);}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)100計(jì)算機(jī)教研室沈建京四、一維數(shù)組的初始化在定義數(shù)組時(shí),給數(shù)組元素賦初值1、只有靜態(tài)存儲(chǔ)(static)和外部存儲(chǔ)(extera)的數(shù)組才能初始化。例:staticinta[6]={1,2,3,4,5,6};2、可只給一部分?jǐn)?shù)組元素賦初值。
例:staticinta[6]={1,2,3};3、未賦初值的靜態(tài)數(shù)組,系統(tǒng)給各元素賦0值第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)101計(jì)算機(jī)教研室沈建京例6.2求Fibonacci數(shù)列的前30項(xiàng)。main(){staticlongf[30]={1,1};inti;for(i=2;i<30;i++)f[i]=f[i-1]+f[i-2];for(i=0;i<30;i++){printf(“%8ld”,f[i]);if(i%3==0)printf(“\n”);}}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)102計(jì)算機(jī)教研室沈建京例6.3已知一組數(shù)(n個(gè),n<=20),找出其中最小者。main(){inti,j,n;floata[20],b;
scanf(“%d”,&n);for(i=0;i<n;i++)scanf(“%f”,&a[i]);b=a[0];j=0;for(i=1;i<n;i++)if(b>a[i]){b=a[i];j=i;}
printf(“Min=%f\n”,b);}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)103計(jì)算機(jī)教研室沈建京例6.4對(duì)任意10個(gè)數(shù)按從大到小排序。main(){floata[10],t;inti,j;for(i=0;i<10;i++)scanf(“%f”,&a[i]);for(i=0;i<9;i++)for(j=i+1;j<10;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}for(i=0;i<10;i++)printf(“%f”,a[i]);}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)104計(jì)算機(jī)教研室沈建京§6.2二維數(shù)組一、定義類型關(guān)鍵字?jǐn)?shù)組名[常量表達(dá)式][常量表達(dá)式]例:inta[3][4];該語(yǔ)句也可解釋為定義了一個(gè)含三個(gè)元素的一維數(shù)組(其元素為a[0],a[1],a[2]),而其中的每一個(gè)元素本身是一含四個(gè)元素的一維數(shù)組。二、數(shù)組元素?cái)?shù)組名[下標(biāo)][下標(biāo)]三、二維數(shù)組的存放按行存放第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)104計(jì)算機(jī)教研室沈建京a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]a[2][0]a[2][1]a[2][2]a[2][3]前面定義的a數(shù)組的元素在內(nèi)存中的排列順序如右圖第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)105計(jì)算機(jī)教研室沈建京四、二維數(shù)組的初始化1、分行初始化例:staticinta[2][3]={{1,2,3},{4,5,6}};2、按存放順序整體初始化例:staticinta[3][2]={1,2,3,4,5,6};3、部分元素初始化例:staticinta[3][3]={{1},{},{4,5,6}};第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)106計(jì)算機(jī)教研室沈建京例6.5打印以下的楊輝三角形。(要求打印出10行)11112113311464115101051…….第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)107計(jì)算機(jī)教研室沈建京main(){inty[10][10],i,j;for(i=0;i<10;i++){y[i][0]=1;y[i][i]=1;}for(i=2;i<10;i++)for(j=1;j<=i-1;j++)y[i][j]=y[i-1][j]+y[i-1][j-1];for(i=0;i<10;i++){for(j=0;j<=i;j++)printf(“%5d”,y[i][j]);
printf(“\n”);}}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)108計(jì)算機(jī)教研室沈建京main(){inty[11][11],i,j;for(i=1;i<=10;i++){y[i][1]=1;y[i][i]=1;}for(i=3;i<=10;i++)for(j=2;j<=i-1;j++)y[i][j]=y[i-1][j]+y[i-1][j-1];for(i=1;i<=10;i++){for(j=1;j<=i;j++)printf(“%5d”,y[i][j]);
printf(“\n”);}}第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)109計(jì)算機(jī)教研室沈建京§6.3字符數(shù)組用來(lái)存放字符串二、初始化1、用字符常量例:staticcharc[6]={’H’,’a’,’p’,’p’,’y’,’!’};staticchard[]={’G’,’o’,’o’,’d’,’’,’B’,’y’,’e’};例:chara[15],b[20];一、定義第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)110計(jì)算機(jī)教研室沈建京注:c數(shù)組長(zhǎng)度為7,其中c[6]=’\0’d數(shù)組長(zhǎng)度為9,其中d[8]=’\0’不能用賦值語(yǔ)句將一個(gè)字符常量或字符數(shù)組直接賦給一個(gè)字符數(shù)組。c=”Happy!”;d=c;
()例:staticcharc[]={”Happy!”};staticchard[]=”GoodBye”;2、用字符串常量第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)111計(jì)算機(jī)教研室沈建京二、I/O1、用%c——逐個(gè)元素的I/O2、用%s——整個(gè)字符串I/O
例:scanf(“%s”,c);printf(“%s”,c);
c為數(shù)組名,其作為輸入項(xiàng)時(shí)不加&,
且輸入的字符串中不允許有空格字符3、用字符串I/O函數(shù)——puts(c)和gets(c)
第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)111計(jì)算機(jī)教研室沈建京例6.6從鍵盤中輸入一行文字,統(tǒng)計(jì)出其中單詞的個(gè)數(shù)(單詞間用空格分開)。voidmain(){charstr[81],c;intword=0,i,num=0;
gets(str);for(i=0;(c=str[i])!='\0';i++)if(c=='')word=0;elseif(word==0){num++;word=1;}
printf("Thereare%dwordsintheline\n",num);}三、字符串處理函數(shù)1、字符串連接函數(shù)strcat(str1,str2)2、字符串拷貝函數(shù)strcpy(str1,str2)3、字符串比較函數(shù)strcmp(str1,str2)4、求字符串長(zhǎng)度函數(shù)strlen(str)5、大寫轉(zhuǎn)換小寫函數(shù)strlwr(str)6、小寫轉(zhuǎn)換大寫函數(shù)strupr(str)第七章數(shù)組C語(yǔ)言程序設(shè)計(jì)111計(jì)算機(jī)教研室沈建京§6.4數(shù)組應(yīng)用舉例1、某班20人期末參加了數(shù)學(xué)、英語(yǔ)、政治和程序四門課程的考試。請(qǐng)按學(xué)生平均成績(jī)由高到底排序,并給出每個(gè)學(xué)生平均成績(jī)?cè)诎嗌系呐琶?。該問題的解決可分以下幾大部分:
?原始數(shù)據(jù)的輸入
?求每個(gè)學(xué)生的平均成績(jī)
?按平均成績(jī)排序
?排名次
?按一定格式輸出結(jié)果main(){floatstd_score[20][5],x;longstd_no[20],t;
intstd_order[20],i,j,k;for(i=0;i<20;i++){scanf("%ld",&std_no[i]);for(j=0;j<4;j++){scanf("%f",&x);std_score[i][j]=x;}}/*以下為求平均成績(jī)過程*/for(i=0;i<20;i++){std_score[i][4]=0;for(j=0;j<4;j++)std_score[i][4]+=std_score[i][j]/4;}/*以下為比較交換法排序過程*/for(i=0;i<19;i++)for(j=i+1;j<20;j++)if(std_score[i][4]<std_score[j][4]){t=std_no[i];std_no[i]=std_no[j];std_no[j]=t;for(k=0;k<5;k++){x=std_score[i][k];std_score[i][k]=std_score[j][k];std_score[j][k]=x;}}/*以下為排名次過程*/
std_order[0]=1,j=2;for(i=1;i<20;i++)if(std_score[i][4]==std_score[i-1][4]){std_order[i]=s
溫馨提示
- 1. 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年森林資源培育與保護(hù)承包合同3篇
- 2024外資企業(yè)股權(quán)出售與境內(nèi)投資合作合同范本3篇
- 2024年度醫(yī)療器械維修代加工及售后服務(wù)協(xié)議3篇
- 2024年度地區(qū)總代理銷售權(quán)及品牌使用權(quán)合同范本3篇
- 2024年地質(zhì)勘探服務(wù)地質(zhì)勘察服務(wù)合同樣本3篇
- 2024年度商業(yè)地產(chǎn)土地使用權(quán)永久轉(zhuǎn)讓與商業(yè)運(yùn)營(yíng)管理合同3篇
- 2024年太陽(yáng)能組件安裝及智能監(jiān)控系統(tǒng)合作協(xié)議3篇
- 2024年新能源充電設(shè)施區(qū)域代理合同3篇
- 起草銷售合同范例
- 土地搞標(biāo)居間合同范例
- app隱私協(xié)議模板
- 高職高考作文【4篇】
- 超星爾雅學(xué)習(xí)通《創(chuàng)業(yè)法學(xué)(江西財(cái)經(jīng)大學(xué))》2024章節(jié)測(cè)試含答案(一)
- 2020-2021學(xué)年湖北省武漢市江漢區(qū)七年級(jí)(下)期末英語(yǔ)試卷(附答案詳解)
- 盾構(gòu)隧道管片生產(chǎn)施工方案
- 2023年中國(guó)軟件行業(yè)基準(zhǔn)數(shù)據(jù)SSM-BK-202310
- 華為管理法讀后感
- 南京財(cái)經(jīng)大學(xué)國(guó)際服務(wù)貿(mào)易(考試重點(diǎn))
- 玻璃生產(chǎn)工藝及裝備培訓(xùn)
- 2024年國(guó)投信托有限公司招聘筆試參考題庫(kù)含答案解析
- 部編版語(yǔ)文五年級(jí)上冊(cè)第一單元大單元教學(xué)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論