C語言程序設計教案內容_第1頁
C語言程序設計教案內容_第2頁
C語言程序設計教案內容_第3頁
C語言程序設計教案內容_第4頁
C語言程序設計教案內容_第5頁
已閱讀5頁,還剩105頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

C語言概述【教學目的】使學生對計算機語言有一定的認識,激發(fā)學生學習程序設計的興趣。【教學重點】程序設計中的若干術語。【教學難點】理解程序設計中的若干術語。【教學方法】講授式、討論式、案例分析式?!拘抡n內容】1、計算機語言2、計算機程序設計什么是程序?為了解決某一特定問題用某一種計算機語言編寫的指令序列稱為程序。什么是程序設計?程序是程序設計的結果,在執(zhí)行程序前必須先排定程序,排定以時間為進程必須完成的各種操作叫程序設計。用高級語言進行程序設計時要注意以下三個概念:語法,每種計算機語言都有自己的語法規(guī)則。語義,即某一語法成分的含義。語用,即正確使用語言。3、C語言的由來規(guī)模較大,難以實現(xiàn)無數(shù)據(jù)類型接近硬件,但過于簡單,功能有限用其編寫了UNIX操作系統(tǒng)功能更強大,面向對象功能更強大,面向對象4、C語言的特點語言簡潔、緊湊,使用靈活運算符豐富豐富的數(shù)據(jù)類型結構化的控制語句語法限制不嚴格能進行位操作語言生成的代碼質量高可移植性好具有預處理功能5、簡單C程序介紹main(){inta,b,sum;a=123;b=456;sum=a+b;printf("Sumis%d\n",sum);}intmax(intx,inty){intz;if(x>=y)z=x;elsez=y;return(z);}main(){inta,b,c;scanf("%d%d",&a,&b);c=max(a,b);printf(”max=%d\n",c);}6、作業(yè)說明C語言的由來。算法【教學目的】使學生對計算機算法有一定的認識,激發(fā)學生學習程序設計的興趣?!窘虒W重點】NS圖的基本知識【教學難點】算法的特性與設計【教學方法】講授式、討論式、案例分析式?!拘抡n內容】1、算法的概念廣義地說,為解決一個問題采取的方法和步驟。計算機算法分類數(shù)值算法求方程的根求函數(shù)的定積分非數(shù)值算法圖書檢索人事管理2、簡單算法舉例求閏年的算法求素數(shù)的算法3、算法的特性有窮性算法要包含有限的步驟確定性每一步必須明確有零個或多個輸入需要從外界獲取必要的信息有一個或多個輸出需要把求得得解進行輸出有效性每一步都能有效地執(zhí)行4、算法的表示方法設計算法自然語言傳統(tǒng)流程圖改進的流程圖N-S圖(盒圖)偽代碼實現(xiàn)算法計算機語言傳統(tǒng)流程圖優(yōu)點:描繪直觀,容易掌握缺點:對流程線沒有嚴格控制三種基本結構N-S圖(盒圖)I.Nassi和B.Shneiderman提出取消流程線,不能任意轉移控制使用N-S符號設計出來的程序必然是結構化程序容易表示嵌套關系容易確定局部和全局數(shù)據(jù)的作用域N-S的基本符號3.6PDL(過程設計語言—偽碼)用結構化程序設計語言的語法控制框架,在內部卻可靈活使用自然語言來表示各種操作比流程圖更靈活,可以使用普通的正文編輯程序進行修改可以作為注釋直接插在源程序中,提高文檔質量有自動處理程序存在,可以自動生成程序代碼缺點:不如圖形工具直觀BEGINinputm,nifm<nexchangemandnm%nrwhiler≠0{nmrnm%nr}printnEND計算機語言BEGINinputm,nifm<nexchangemandnm%nrwhiler≠0{nmrnm%nr}printnENDmain(){intm,n,r,t;scanf(“%d,%d”,&m,&n);if(m<n){t=m;m=n;n=t;}r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf(“n=%d”,n);}4、結構化程序設計方法原理:用三種基本控制結構,通過組合和嵌套可實現(xiàn)任何單入口、單出口的程序。方法:自頂向下逐步細化模塊化5、作業(yè)畫簡單程序的NS圖和PDL代碼。數(shù)據(jù)類型【教學目的】使學生對程序設計數(shù)據(jù)類型的較全面而深入的掌握?!窘虒W重點】數(shù)據(jù)類型的存儲空間、長度【教學難點】常量與變量的概念【教學方法】講授式、討論式、讀書指導案例分析式?!拘抡n內容】1、基本類型整型字符型實型(浮點型)單精度、雙精度構造類型數(shù)組類型結構體類型共用體類型指針類型空類型2、常量與變量符號常量用一個標識符代表一個常量#definePI3.14159main(){floatr,s,area;scanf("%f",&r);s=2*PI*r;area=PI*r*r;printf("s=%7.2f,area=%7.2f",s,area);}變量的概念程序運行過程中其值可以改變的量,系統(tǒng)為程序中的每一個變量開辟一個存儲單元,如:main(){inta,b;a=2;printf("a=%d\n",a);b=4;printf(“b=%d\n",b);}變量名標識符:用來標識變量名、符號常量名、數(shù)組名、函數(shù)名、文件名的有效字符序列。關鍵字預定義標識符用戶定義標識符字母或下劃線開頭,后跟字母、數(shù)字和下劃線組成。變量要先定義后使用3、整型常量三種形式表示:十進制:如123-600八進制:以0開始,如0123十六進制:以0x開始,如0x123main(){inta=0123;printf(“a=%d\n”,a);}整型變量分類int整型shortint(或short)短整型 longint(或long)長整型 unsignedint 無符號整型 unsignedshort 無符號短整型unsignedlong 無符號長整型各類型數(shù)據(jù)長度、取值范圍所占位數(shù)取值范圍 int 16-32768~32767short16-32768~32767long 32-21億~21億unsignedint160~65535 unsignedshort160~65535 unsignedlong320~42億 4、整型變量的定義所有的變量需先定義類型inta,b,c;/*指定a,b,c為整型變量*/unsignedcount;/*指定lower為無符號整型變量*/longs;有些變量可以預先設置初值:inta=0,b,c;/*指定a,b,c為整型變量,a的初值為0*/inta=0,b=0,c=0;/*指定a,b,c為整型變量,a、b、c的初值為0*/5、整型數(shù)據(jù)的溢出main(){inta,b;a=32767;b=a+1;printf(“%d,%d\n”,a,b);}main(){inta=70000;printf(“a=%d\n”,a);}整型常量的類型main(){unsigneda;a=-1u;printf(“a=%u\n”,a);}6、作業(yè)計算正方形面積浮點等數(shù)據(jù)類型【教學目的】使學生對程序設計數(shù)據(jù)類型的較全面而深入的掌握。【教學重點】數(shù)據(jù)類型的存儲空間、長度【教學難點】常量與變量的概念【教學方法】講授式、討論式、讀書指導案例分析式。【新課內容】1、實型常量小數(shù)形式:如123.0.1230.012.5

指數(shù)形式:如123e2123E2

main(){floata;a=123e3;printf(“a=%e\n”,a);}實型變量1、分類所占位數(shù)取值范圍float單精度32-3.4*10-38~3.4*1038double雙精度 64-1.7*10-308~1.7*10308longdouble長雙精度 128-1.2*10-4932~1.2*1049322、變量的定義floatx,y;/*指定x,y為單精度實型變量*/doublez;/*指定z為雙精度實型變量*/3、字符型常量單引號括起來的一個字符。如:'a'字符常量可以象整數(shù)一樣參與運算。 字符常量還有另外一種形式

——轉義字符形式。轉義字符功能轉義字符功能\a 響鈴\\反斜杠字符 \b 退一格\' 單引號字符 \f走紙換頁\" 雙引號字符 \n 換行\(zhòng)? 問號 \r 回車\ooo1~3位8進制數(shù)代表的字符\t橫向跳格\xhh1~2位16進制數(shù)代表的字符 4、字符變量變量的定義charc1,c2;/*指定c1,c2為字符型變量*/2、字符型數(shù)據(jù)的存儲以ASCII碼存儲,存儲形式與整型一樣,可以和整數(shù)進行運算main(){charc1,c2;c1=‘a’;c2=‘b’;c1=c1-32;c2=c2-32;printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);}字符數(shù)據(jù)在內存中的存儲形式及使用方法main(){charc1,c2;c1=97;c2=98;printf(“%c,%c\n”,c1,c2);printf(“%d,%d\n”,c1,c2);c2=c2+1;printf(“%c,%d\n”,c2,c2);5、字符串常量雙引號括起來的字符序列。如"Howareyou","0"等字符串在存儲時末尾被自動加上字符'\0'字符常量與只包含一個字符的字符串常量的區(qū)別例:不屬于字符常量的是‘A’“B”‘\n’‘\x72’例:合法的字符常量是“abc”‘\x43’‘ab’“\0”例:字符串“ab\n\012\\\””的長度是34612變量賦初值例:inta=3;floatb=2.5;charc=‘a’;例:inta,b,c=5;7、作業(yè)計算圓的面積,PI=3.14159各類數(shù)據(jù)間的混合運算【教學目的】掌握各種數(shù)據(jù)間混合計算類型轉換的方法。【教學重點】強制類型轉換【教學難點】轉換優(yōu)先級次序【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、C語言允許數(shù)據(jù)值從一種類型轉換成另一種類型。在進行運算時,不同類型的數(shù)據(jù)要先轉換成同一類型,然后進行運算。轉換的規(guī)則按圖所示。高doublefloatlongunsigned低intchar,short說明:橫向向左的箭頭表示當運算對象為不同類橫向向左的箭頭表示必定的轉換,如字符型(char)數(shù)據(jù)和短整型(short)數(shù)據(jù)必定先轉換成整型(int),以提高運算精度。縱向的箭頭表示當運算對象為不同類型時轉換的方向型時轉換的方向。數(shù)據(jù)總是由低級別向高級別轉換。算術運算符和算術表達式基本算術運算符運算符的優(yōu)先級和結合性自增、自減運算符算術運算符+(加法運算或正號運算符)-(減法運算或負號運算符)*(乘法運算符)/(除法運算符)%(求余運算符,或稱模運算符)例:5%3結果:22、運算符的優(yōu)先級和結合性算術表達式用算術運算符和括號將運算量連接起來的式子稱為算術表達式。運算符有優(yōu)先級和結合性在求表達式的值時,要按照優(yōu)先級的高低依次計算如果運算符兩側優(yōu)先級相同,則按規(guī)定的結合方向進行。結合性例:main(){intm=7,n=5;floata=49,b=10,x;x=m/2+n*a/b+1/2;printf(“x=%f\n”,x);}3、C語言提供一種“強制類型轉換”運算符,將一個類型的變量強制轉換為另一種類型。一般形式為:(類型標識符)(表達式)例如:k=(int)((int)x+(float)i)/*得到整型數(shù)*/(float)(x=85)/*得實型單精度數(shù)*/例:main(){floatx=3.6;inta;a=(int)x;printf(“x=%f,a=%d\n”,x,a);}例:main(){floatx=2.6,y=3.5,z;inta;z=(int)x+y;a=(int)(x+y);printf(“z=%f,a=%d\n”,a,z);}4、作業(yè)P663.93.10各運算符【教學目的】掌握各種運算符的使用方法?!窘虒W重點】++與――運算符的使用【教學難點】復合賦值運算符【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、自增、自減運算符++運算符的作用是使變量的值增1。--運算符的作用是使變量的值減1。常見的用法有:++i,--i在使用i前,使i的值加(減)1i++,i--在使用i后,使i的值加(減)1已知i=5(1)j=i++;例i=3;j=-i++;注意:1)、自增和自減運算符只能用于變量,表達式(x+y)++是不合法的。2)、自增和自減運算符的結合方向是“自右向左”。如表達式-i++等價于-(i++)。3)、(i++)+(i++)+(i++)結果?4)、(++i)+(++i)+(++i)結果?5)、i+++j是(i++)+j還是i+(++j)?6)、printf(“%d”,i,i++)結果例:i=3;j=4;k=5;m=(++i)+(--j)+(k--);2、賦值運算符和賦值表達式賦值運算符復合的賦值運算符賦值表達式賦值運算符簡單的賦值就是把一個表達式的值賦給一個變量。例如:i=5j=i+1類型轉換(1)float,doubleint舍去小數(shù)部分,也不進行四舍五入。例:inti=3.56;則i的值為3。(2)intfloat,double數(shù)值不變,但以浮點數(shù)形式存儲。例:floatf=23;f的值為23.0000(3)doublefloat截取其前面7位有效數(shù)字,但應該注意數(shù)值范圍不能溢出。floatdouble數(shù)值不變,在內存中以64位存儲。(4)charint有兩種情況:A:如果系統(tǒng)將字符處理為無符號數(shù),或對unsignedchar型變量賦值,則將字符的8位放在int型的底8位,高8位為0。例:main(){unsignedcharc;c=‘\376’;printf(“%c,%d,%u\n”,c,c,c);}B.如果系統(tǒng)將字符處理為帶符號的量,若字符的最高位為0,則整型變量高8位補0;若字符最高位為1,則整型變量高8位補1。(即ASCII碼在0~127之間,值不變;128~254之間,值為負值。)例:main(){charc;c=‘\376’;printf(“%c,%d,%u\n”,c,c,c);}(5)long,short,intchar只須將低8位原封不動送到char型變量。main(){inti=289;charc=‘a’;c=i;printf(“%c,%d\n”,c,c);}(6)intlongintint為正數(shù)時,longint的高16位補0;int為負數(shù)時,longint的高16位補1;longintint則int只取長整型的低16位。main(){inta;longintb=65536;a=b;printf(“a=%d\n”,a);}(7)unsignedintlongint只需將高位補0,數(shù)值不變。unsignedintintunsignedlonglongunsignedshortshort因為字節(jié)數(shù)相同,所以內容原封不動不變;但應注意,當unsignedxx型的最高位為1時,賦給xx型時,由于xx型的最高位為符號位,所以數(shù)據(jù)將變?yōu)樨撝?。main(){unsignedinta=32768;intb;b=a;printf(“b=%d\n”,b);}(8)intunsignedintlongunsignedlongshortunsignedshort因為字節(jié)數(shù)相同,所以內容原封不動不變;但非unsigned型的符號位將做為unsigned型的數(shù)值計算。main(){unsignedinta;intb=-1;a=b;printf(“b=%d\n”,a);}3、復合的賦值運算符在賦值符“=”之前加上其它運算符,可以構成復合的運算符。例如:i+=2等價于i=i+2a*=b+5等價于a=a*(b+5)x%=3等價于x=x%34、賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為賦值表達式。形式:〈變量〉〈賦值運算符〉〈表達式〉例如:x=3y=x+3對賦值表達式求解的過程是:將賦值運算符右側的表達式的值賦給左側的變量。賦值表達式的值就是被賦值的變量的值。結合性注意:一般形式的賦值表達式中的“表達式”又可以是一個賦值表達式。如:a=b=8按照從右到左的結合性等價于a=(b=8)賦值表達式也可以包含復合的賦值運算符。設a的值為6,計算a+=a-=a*a先進行a*a的計算,結果為36再進行a-=36的計算,相當于a=a-36=-30最后進行a+=-30的計算,相當于a=a-30=-60例:main(){inta,b,c,d,e;a=b=c=d=e=5;b+=a+3*a;c%=a-3;e=d*=a+3;a-=a*=a;printf(“a=%d,b=%d,c=%d,d=%d,e=%d\n”,a,b,c,d,e);5、逗號運算符和逗號表達式在逗號表達式中,逗號是一種運算符。形式如下表達式1,表達式2由逗號隔開的一對表達式從左向右進行計算,其求解過程為:先求解表達式1,再求表達式2,整個逗號表達式的值是表達式2的值。逗號運算符是所有運算符中級別最低的。例如a=4*6,a+5整個逗號表達式的值為29。注意一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式,例如:(a=4*6,a+5),a+6整個表達式的值為30。例:intn=3,m=3;執(zhí)行語句m=n++,m++,++n;后n的值---,m的值---。34566、作業(yè)P673.113.12順序程序設計【教學目的】掌握順序程序設計的方法【教學重點】格式化輸入與輸出【教學難點】格式化輸入的使用方法【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、賦值語句由賦值表達式加上一個分號構成,作用是將一個確定的值賦給一個變量。格式:變量名=表達式;說明先計算,后賦值。賦值語句中的“=”是賦值號而不是數(shù)學意義上的等號。賦值號兩側的內容不能任意調換。2、字符數(shù)據(jù)的輸入輸出字符輸出函數(shù)格式:putchar(c)功能:將c值所對應的字符輸出到標準輸出設備上(一般為顯示器)。c可以是整型或字符型。一次只能輸出一個字符,也可以輸出控制符,如

putchar('\n')輸出一個換行符,即光標移到下一行。例:putchar(‘a\n’);錯改為putchar(‘a’);putchar(‘\n’);putchar(a,b);錯改為putchar(a);putchar(b);例:#include"stdio.h"main(){charch1,ch2;ch1=‘A’;ch2=‘B’;putchar(ch1);putchar(ch2);putchar(‘\n’);}運行程序,運行結果為ABputchar()函數(shù)也可以輸出轉義字符,如:putchar(‘\101’)即輸出字符‘A字符輸入函數(shù)格式:getchar()、功能:從標準設備(一般是鍵盤)輸入一個字符。字符輸入函數(shù)沒有參數(shù),函數(shù)值就是從設備輸入的字符。應注意空格和回車符也是字符,也可以被接受例:#include<stdio.h>main(){chara,b,c,d;a=getchar();b=getchar();c=getchar();d=getchar();putchar(a);putchar(b);putchar(c);putchar(d);}例3從鍵盤輸入三個大寫字母,將其轉換成小寫字母輸出。#include"stdio.h"main(){charc1,c2,c3;c1=getchar();c2=getchar();c3=getchar();c1=c1+32;c2=c2+32;c3=c3+32;putchar(c1);putchar(c2);putchar(c3);}3、格式輸入輸出1、格式輸出函數(shù)格式:printf(格式控制,輸出表列)功能:printf函數(shù)可以將任意類型的多個數(shù)據(jù)輸出到標準輸出設備上(一般為顯示器)。格式字符 含義 d 十進制形式輸出帶符號整數(shù)(正數(shù)輸出不帶符號) o 八進制形式輸出無符號整數(shù)(不輸出前導0) x 十六進制形式輸出無符號整數(shù)(不輸出前導0x) u 十進制形式輸出無符號整數(shù) c 輸出一個字符 s 輸出一個字符串 f 小數(shù)形式輸出單、雙精度實數(shù)(隱含輸出6位小數(shù)) e 指數(shù)形式輸出單、雙精度實數(shù)(數(shù)字部分有6位小數(shù)) g 當指數(shù)小于-4或大于給定的精度時用%e格式,否則用%f格式。附加格式說明符格式字符 含義 字母l 用于長整型,可加在格式符d,o,x,u之前 m(整數(shù))數(shù)據(jù)最小寬度 .n(整數(shù))對實數(shù),表示輸出n位小數(shù);對字符串,表示截取的字符個數(shù)— 輸出的數(shù)字或字符在域內向左靠例:main(){inta,b;a=3;b=4;printf(“a=%db=%d\n”,a,b);printf(“a=%d,b=%d\n”,a,b);printf(“%d,%d\n”,a,b);printf(“%d%d\n”,a,b);}例:main(){inta=123;b=4567;printf(“%d%d\n”,a,b);printf(“%2d%2d\n”,a,b);printf(“%4d%6d\n”,a,b);printf(“%-4d,%6d\n”,a,b);printf(“%-4d,%-6d,\n”,a,b);}除了X、E、G外,其它格式字符要求小寫例:main(){inta=-654;printf(“|%6D|\n”,a);printf(“|%6d|\n”,a);}例:main(){inta=97;charb=‘b’;printf(“%%da=%d\n%%ca=%c\n”,a,a);printf(“%%db=%d\n%%cb=%c\n”,b,b);printf(“%%3cb=%3c\n”,b);}%da=97%ca=a%db=98%cb=b%3cb=b例4main(){inta,b;floatx;charc;a=123;b=-1;x=3.14;c='A';printf("%d,%4d\n",a,a);printf("%d,%x,%o,%u\n",b,b,b,b);printf("%c,%d\n",c,c);printf("%f,%6.1f\n",x,x);}4、格式輸入函數(shù)格式:scanf(格式控制,地址表列)功能:scanf函數(shù)可以從標準輸入設備輸入任意類型的多個數(shù)據(jù)(一般為顯示器)。注意:輸入數(shù)不能規(guī)定精度當輸入一串數(shù)據(jù)時,系統(tǒng)如何區(qū)分每個數(shù)據(jù)呢?(1)根據(jù)格式字符的含義分隔字符。sacnf("%d%c%f",&a,&b,&c);若輸入數(shù)據(jù):120a45.6則a=120,b='a',c=45.6(2)系統(tǒng)按格式串指定的長度截取所需的數(shù)據(jù)。scanf("%3d%2d",&a,&b);輸入數(shù)據(jù)12345則a=123,b=45例:main(){inta;charb,c;scanf(“%3d%c%c”,&a,&b,&c);printf(“a=%db=%cc=%c\n”,a,b,c);}例:main(){chara,b;scanf(“%3c%3c”,&a,&b);printf(“%3c%3c\n”,a,b);}(3)用隱含的分隔符。在輸入數(shù)據(jù)中用空格或換行符分隔數(shù)據(jù)。scanf("%d%d%d",&a,&b,&c);輸入數(shù)據(jù)345或輸入34(回車)5(回車)則a=3,b=4,c=5(4)%后的“*”附加說明符,用來表示跳過它相應的數(shù)據(jù)。scanf("%d,%*d,%d",&a,&b);如果輸入3,4,5則a=3,b=5,第二個數(shù)據(jù)跳過不賦給任何變量。(5)使用顯示分隔符。在格式說明符中還可以有其它字符,在輸入字符時應輸入與這些字符相同的字符。scanf("%d,%d,%d",&a,&b,&c);輸入數(shù)據(jù)3,4,5scanf(”a=%d,b=%d,c=%d",&a,&b,&c);輸入數(shù)據(jù)a=3,b=4,c=5(6)用“%c”格式輸入字符時,空格字符和轉義字符都作為有效字符輸入:scanf("%c%c%c",&c1,&c2,&c3);如果輸入abc則字符‘a’送給c1,空格送給c2,字符’b’送給c3注意:(1)輸入時不能規(guī)定精度,如scanf(“%6.1f”,&a)是不合法的。(2)格式控制之后是地址表列而不是變量表列scanf(“%d,%d”,&a,&b);是正確的,而scanf(“%d,%d”,a,b);是錯誤的。6、作業(yè)P884.44.64.94.10選擇結構程序設計【教學目的】掌握選擇結構程序設計的方法?!窘虒W重點】IF語句的語法與使用【教學難點】表達式的邏輯值判斷結果【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、關系運算符和關系表達式關系運算符關系表達式用關系運算符將兩個表達式(可以是算術表達式、關系表達式、賦值表達式或邏輯表達式)連接起來的式子,稱為關系表達式。關系表達式的值為邏輯值“真”或“假”,以1代表“真”,以0代表“假”。結合性例如:關系表達式“8==4”的值為“假”,表達式的值為0。關系表達式“5>0”的值為“真”,表達式的值為1。若a=5,b=3,c=1,則a>b>c的計算過程是:先計算a>b,結果為真,值為1再計算1>c,結果為假,值為0f=b>c!=a的計算過程是:先計算b>c,結果為1再計算1!=a結果為1最后將1賦值給f例:main(){inta;a=5;printf(“%d\n”,a<0);}例:a=3;b=2;c=1;f=a>b>cf的值是多少?例:main(){inta;a=0;printf(“%d\n”,-1<a<1);}2、邏輯運算符和邏輯表達式邏輯運算符!(邏輯非)&&(邏輯與)||(邏輯或)運算符的優(yōu)先級邏輯表達式邏輯表達式的值是一個邏輯量“真”或“假”。C語言編譯系統(tǒng)在給出邏輯結果時,以數(shù)值1代表“真”,以0代表“假”;但是在判斷一個量是

為“真”時,以非0代表“真”,以0代表“假”。例如:若x=10,則!x的值為0。若a=3,b=2,則a&&b的值為1。5&&0||8的值為1。結合性例:a=4;b=‘B’;寫出下列表達式是值!aa&&ba||ba&&!b||2邏輯運算符特點在邏輯表達式的求解中并不是所有的運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行下一個運算符。例如:1、a&&b&&c2、a||b||c當a=5,b=3,c=2,d=1,x=1,y=1則表達式(x=a<b)&&(y=c<d)首先計算“a<b”,結果為0,則x=0,因此“y=c<d”不被執(zhí)行,所以y的值仍為1而不是0。例:a=1;b=2;c=3;d=4;m=1;n=1;z=(m=a>b)&&(n=c<d);z=(m==a>b)&&(n==c>d);z=(m=a>b)||(n=c>d);z=(m=a<b)&&(n=c>d);z=(m=a<b)&&(n=c<d);m=0,n=1,z=0m=1,n=1,z=0m=0,n=0,z=0m=1,n=0,z=0m=1,n=1,z=1例:x=4;y=5;z=(++x==5)||(y++==6)例:x=4;y=5;z=(x++==5)||(y++==6)注意:表達式應滿足題目的要求寫出能滿足當x的值在-10到10,100到200之間時值為“真”,否則為“假”的表達式。正確:x>-10&&x<10||x>100&&x<200錯誤:-10<x<10||100<x<200當x=20時,-10<20為真,值為1,1<10為真,整個表達式為真,結果出錯。例:a=10;b=15;c=1;d=2;e=0;求下列表達式的值c==b>e!e&&(e==b)==(++c)!e&&e==(b==++c)a++&&e++&&e++a++&&e++||e++(a+c==b)==(b+d==a)||(c=b+a)>(d=c+d)(a+c==b)>(b+d==a)||(c=b+a)>(d=c+d)3、if語句1)、if語句的三種形式:if-else形式:if(表達式)語句1;else語句2;例如:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);if形式:if(表達式)語句;例如:if(x>y)printf(“%d”,x);else-if形式if(表達式1)語句1;elseif(表達式2)語句2;……else語句n;例如:if(x>0)y=1;elseif(x==0)y=0;elsey=-1;例:從鍵盤輸入兩個整數(shù),輸出最大值。main(){inta,b,max;printf(“pleaseinputa,b:”);scanf(“%d%d”,&a,&b);if(a>b)max=a;elsemax=b;printf(“max=%d\n”,max);}例:輸入兩個實數(shù),由小到大輸出。main(){floata,b,t;scanf("%f%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f\n",a,b);}例:輸入三個實數(shù),按由小到大順序輸出。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\n",a,b,c);}例:對求三角形面積的程序進行改進,要求判斷輸入的三邊能否構成三角形。如果能構成三角形則計算面積,否則給出相應信息。#include"math.h"main(){floata,b,c,s,area;scanf("%f,%f,%f",&a,&b,&c);if(a+b>c&&b+c>a&&a+c>b){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%7.2f\n",area);}elseprintf(“inputdataerror”);}例:判斷從鍵盤輸入的一個字符是什么樣的字符。#include“stdio.h”main(){charc;printf(“pleaseinputacharacter:”);c=getchar();if(c>=‘a’&&c<=‘z’)printf(“l(fā)ower\n”);elseif(c>=‘A’&&c<=‘Z’)printf(“upper\n”);elseprintf(“NOLetter\n”);}例5給一個成績,要求輸出成績等級。90分及以上為‘A’,80-89分為’B’,70-79分為’C’,60-69分為’D’,60分以下為’E’。

main(){ints;scanf(“%d”,&s);if(s>=90)printf(“A\n”);elseif(s>=80)printf(“B\n”);elseif(s>=70)printf(“C\n”);elseif(s>=60)printf(“D\n”);elseprintf(“E\n”);}例:main(){inta=1,b=2,c=3;if(a>b)a=b,b=c;c=a;printf(“%d,%d,%d\n”,a,b,c);}例:main(){inta=1,b=2,c=3;if(a>c);b=a;a=c;c=b;printf(“%d,%d,%d\n”,a,b,c);}例:main(){inta=1,b=2,c=3;if(a>c)b=a;a=c;c=b;printf(“%d,%d,%d\n”,a,b,c);}2)、嵌套的if語句在一個if語句中又包含了另一個if語句,稱為if語句的嵌套。例:#include“stdio.h”main(){charch,c1,c2;printf(“Enteracharacter:”);ch=getchar();if(ch>=‘a’&&ch<=‘z’)ch-=32;c1=ch-1;c2=ch+1;if(ch==‘A’)c1=ch+25;elseif(ch==‘Z’)c2=ch-25;putchar(c1);putchar(ch);putchar(c2);putchar(‘\n’);}條件運算符和條件表達式條件運算符?:條件表達式的形式為:表達式1?表達式2:表達式3先計算表達式1,若其值為非零,則結果為表達式2的值,否則就是表達式3的值。結合性:從右到左例如:設a=2,b=3,c=4,則(1)m=a>b?a:b的值為3(2)m=a>b?a:b>c?b:c先計算b>c?b:c,結果為4再計算m=a>b?a:4,結果為4則m的值為4,整個表達式的值也為4。例:a=3;b=2;c=(--a==b++)?a--:++b;switch語句switch語句的基本格式:switch(表達式){case常量表達式1:語句1;[break;]case常量表達式2:語句2;[break;]……case常量表達式n:語句n;[break;]default:語句n+1;}注意:當表達式的值與某一個case后面的常量表達式的值相等時,就執(zhí)行該case后面的語句,都不相等時,就執(zhí)行default后語句。每個case的常量表達式的值必須互不相同。各個case的出現(xiàn)次序不影響執(zhí)行結果。用break語句可以跳出switch結構。例7輸入兩個運算量和一個運算符,完成加、減、乘、除運算,輸出運算結果。#include"stdio.h"main(){floatx,y,z;charch;printf(“\nEnteracalculation(x?y):”);scanf(“%f%c%f”,&x,&ch,&y);switch(ch){case'+':z=x+y;printf("x+y=%d",z);break;case'-':z=x-y;printf("x-y=%d",z);break;case'*':z=x*y;printf("x*y=%d",z);break;case'/':if(y==0)printf("divisionbyzero\n");else{z=x/y;printf("x/y=%d",z);}break;default:printf("Theerroroperator");}}用if語句if(s<250)d=0;elseif(s<500)d=0.02;elseif(s<1000)d=0.05;elseif(s<2000)d=0.08;elseif(s<3000)d=0.1;elsed=0.15;例:switch語句的嵌套main(){inta=2,b=7,c=5;switch(a>0){case1:switch(b<10){case1:printf(“@”);break;case0:printf(“!”);break;}case0:switch(c==5){case0:printf(“*”);break;case1:printf(“#”);break;default:printf(“%”);break;}default:printf(“&”);break;}printf(“\n”);}4、作業(yè)P1115.35.45.65.7循環(huán)結構程序設計【教學目的】掌握循環(huán)結構程序設計的基本方法及語句的語法與使用?!窘虒W重點】WHILE、FOR語句的使用【教學難點】循環(huán)的原理及理解【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、while語句格式:while(表達式)語句;功能:while語句用來實現(xiàn)“當型”循環(huán)執(zhí)行過程:首先判斷表達式,當表達式的值為非0時,反復執(zhí)行while中的語句。while的常見用法i=1;或i=0;while(i<=n)i<n;{~i++;}i=n;while(i>=1)或i>0{~i--;}例:編程計算1+2+...+100main(){inti=1,sum=0;while(i<=100){sum=sum+i;i++;}printf(“sum=%d\n",sum);}例:main(){intk=2;while(k!=0)printf(“%d”,k),k--;printf(“\n”);}例:k=0;while(k=0){printf(“#”);k=k-1;}例:main(){inty=3;while(y--);printf(“y=%d\n”,y);}例:main(){inty=3;while(y!=0)y--;printf(“y=%d\n”,y);}例:k=10;while(k=3)k=k-1;無限次循環(huán)統(tǒng)計小寫字母例:#include“stdio.h”main(){intcount=0;charc;c=getchar();while(c!=‘\n’){if(c>=’a’&&c<=‘z’)count++;c=getchar();}printf(“count=%d\n”,count);}2、do-while語句格式:do語句while(表達式);功能:do-while語句用來實現(xiàn)“直到型”循環(huán)執(zhí)行過程:先無條件執(zhí)行一次語句,然后再判斷表達式,當表達式的值為非0時,返回,再執(zhí)行該語句。例:i=11;while(i<=10)i++;printf(“i=%d\n”,i);例:i=11;doi++;while(i<=10);printf(“i=%d\n”,i);例用do-while語句計算1+2+…+100main(){inti=1,sum=0;do{sum=sum+i;i++;}while(i<=100);printf(“sum=%d\n",sum);}例:s=7;dos-=2;whlie(s==0);printf(“s=%d\n”,s);例4編寫滿足1+2+3+…+n<500中最大的n并求其和的程序。main(){intn=0,sum=0;do{++n;sum+=n;}while(sum<500);printf("n=%dsum=%d\n",n-1,sum-n);}統(tǒng)計從鍵盤輸入的小寫字母個數(shù)i=0;while((c=getchar())!=‘\n’)if(c>=‘a’&&c<=‘z’)i++;統(tǒng)計元音字母while((c=getchar())!=‘\n’)switch(c){case‘a’:case’A’:case‘e’:case’E’:case‘i’:case’I’:case‘o’:case’O’:case‘u’:case’U’:v2++;default:v1++;}例:main(){intx=0,y=0;while(x<20)y++,x+=3;printf(“x=%dy=%d\n”x,y);}3、for語句格式:for(表達式1;表達式2;表達式3)語句執(zhí)行過程:首先計算表達式1的值,給循環(huán)變量賦初值,再測試表達式2的值,若其值非0,則執(zhí)行循環(huán)體語句,并計算表達式3的值,自動修改

循環(huán)變量的值,再測試表達式2的值,直到表達式2的值為0(假)則退出循環(huán)。三個表達式都可以省略。常用方法inti;for(i=1;i<=n;i++)或for(i=0;i<n;i++)~inti;for(i=n;i>=1;i--)或for(i=n;i>0;i++)例5用for語句計算1+2+...+10main(){inti,sum=0;for(i=1;i<=10;i++)sum=sum+i;printf("%d",sum);}4、循環(huán)的嵌套一個循環(huán)體內又包含另一個完整的循環(huán)結構,稱為循環(huán)的嵌套。內嵌的循環(huán)中還可以嵌套循環(huán),這就是多重循環(huán)。例如,for(i=1;i<=3;i++){...for(j=1;j<=5;j++){...}…}5、三種循環(huán)可以相互嵌套,如:例:main(){inti,j,n,m;n=3;m=4;for(i=1;i<=n;i++){for(j=1;j<=m;j++)printf(“#”);printf(“\n”);}}例:main(){inti,j;charc;for(i=1,c=‘a’;i<=5;i++){for(j=1;j<=4;j++)printf(“%c%d”,c,j);printf(“\n”);c++;}}a1a2ab1b2b3b4c1c2cd1d2d3d4e1e2e3e4例:#include<stdio.h>main(){inti,j;for(i=4;i>=1;i--){for(j=i;j>=1;j--)putchar(‘#’);for(j=1;j<=4-i;j++)putchar(‘*’);putchar(‘\n’);}}#######*##**#***例打印乘法“九九表”。12436948121651015202561218243036714212835424981624324048566491827364554637281main(){inti,j; for(i=1;i<=9;i++){for(j=1;j<=i;j++)printf("%d*%d=%-3d",j,i,i*j);}printf("\n");}}6、break和continue語句break語句:break語句用于循環(huán)語句和switch語句,作用是跳出循環(huán)語句和switch語句,如:while(){...if()break;...}例使用break終止循環(huán)。#include“stdio.h”main(){inti,sum=0;for(i=1;;i++){if(i>100)break;sum+=sum;}printf(“sum=%d\n”,sum);}例輸入一個整數(shù)m,判斷是否是素數(shù)。main(){intm,i,j;scanf("%d",&m);j=m-1;for(i=2;i<=j;i++)if(m%i==0)break;if(i>j)printf("%disaprimenumber",m);elseprintf("%disnotaprimenumber",m);}例求100-200之間的全部素數(shù)。#include"math.h"main(){intm,i,j;for(m=101;m<200;m++){j=sqrt(m);for(i=2;i<=j;i++)if(m%i==0)break;if(i>j)printf("%disaprimenumber",m);elseprintf("%disnotaprimenumber",m);}}continue語句:continue語句類似于break語句,但不是退出循環(huán),而是跳過循環(huán)體下面未執(zhí)行的語句,接著執(zhí)行循環(huán)下一次迭代。如:while(){…if()continue;…}例使用continue語句示例#include"stdio.h"main(){intn;while(1){scanf("%d",&n);if(n%2==1){printf("Isaid");continue;}break;}printf("Thanks.Ineededthat!");}例:main(){intk=0;charc=‘A’;do{swith(c++){case‘A’:k++;break;case‘B’:k--;case‘C’:k+=2;break;case‘D’:k%=2;continue;case‘E’:k*=10;break;default:k/=3;}k++;}while(c<‘G’)printf(“k=%d\n”,k);}例:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;printf(“x=%d\n”,x);}例用近似公式求e≈1+1/1!+1/2!+…+1/n!分析:設term分別代表求和公式中的每一項,則第i項總可以用第i-1項推算出來,即term=term/i。用單循環(huán)編寫的程序片段:e=1.0;term=1.0;for(i=1;i<=n;i++){term/=i;e+=term;}例求fibonacci數(shù)列的前40個數(shù)。分析:設當前項為f,前一項為f1,前二項為f2。首先根據(jù)f1和f2推出f,再將f2作為f1,f作為f2,再推出f,如此一直遞推下去:11235第一次f1+f2→f↓↓第二次f1+f2→f↓↓第三次f1+f2→f遞推法:遞推是指在一個數(shù)的序列值中,下一項的值是在前一項的基礎上推算出來的,即下一項對前一項有某種依賴關系。f1=1.0;f2=1.0;n=2;printf(“%10.0f%10.0f”,f1,f2);for(i=3;i<=40;i++){f=f1+f2;if(n%4==0)printf("\n");printf("%10.0f",f);f1=f2;f2=f;n++;}f1=1.0;f2=1.0;n=2;for(i=1;i<=20;i++){printf(“%10.0f%10.0f”,f1,f2);f1=f1+f2;f2=f2+f1;if(n%4==0)printf("\n");n++;}求Fibonacci數(shù)列中第一個大于1000的數(shù)main(){intf,f1,f2;f1=0;f2=1;for(;;){f=f1+f2;if(f>1000)break;f1=f2;f2=f;}printf(“f=%d\n”,f);}例破譯密碼。按以下規(guī)律翻譯密碼:將每一個字母變成它后面的字母,如將A變成B,Z變成A,非字母字符不變,‘!’作為電文結束標志。例如,有一電文“right”,翻譯成

“sjhiu”。例百錢買百雞問題。公雞每只5元,母雞每只3元,小雞3只一元,問一百元買一百只雞有幾種解法(各種雞都要)。枚舉法:枚舉法是計算機中常用的一種方法,它的基本思路是:一一列舉各種可能的情況并判斷哪一種情況是符合要求的解。for(x=1;x<=19;x++)for(y=1;y<=33-x;y++){z=100-x-y;if(z%3==0&&5*x+3*y+z/3==100)printf(“cock=%dhen=%dchick=%d",x,y,z);}結果:cock=4hen=18chick=78cock=8hen=111chick=81cock=12hen=4chick=84課后題牛頓迭代法:1)x1←x0-f(x)0/f’(x0)2)WHILE|x1-x0|≥εDO3)x0←x14)x1←x0-f(x0)/f’(x0)END5)OUTPUTx1二分法算法:區(qū)間[a,b]有且只有一個實根1)取c=(a+b)/2;2)若f(c)=0,則c即為根,過程結束;3)若f(a)?f(c)<0,則b←c;4)否則a←c,f(a)←f(c);5)若|a-b|<ε,則過程結束,(a+b)/2即為根的近似值,否則重復執(zhí)行1).#include“math.h”main(){floatx1,x2,x,f1,f2,f;do{scanf(“%f,%f”,&x1,&x2);f1==((x1-5.0)*x1+16.0)*x1-80.0;f2==((x2-5.0)*x2+16.0)*x2-80.0;}while(f1*f2>=0);do{x=(x1*f2-x2*f1)/(f2-f1);f=((x-5.0)*x+16.0)*x-80.0;if(f*f1>0){f1=f;x1=x;}else{f2=f;x2=x;}}while(fabs(f)>=0.0001);printf(“Arootofequationis%8.4f”,x);}7、作業(yè)P1527.77.87.117.12數(shù)組【教學目的】掌握數(shù)組的概念及使用方法【教學重點】一維數(shù)組的原理與使用方法及在程序設計中的使用【教學難點】多維數(shù)組的原理與使用【教學方法】講授式、討論式、讀書指導、案例分析式?!拘抡n內容】1、數(shù)組的有關概念數(shù)組是具有一定順序關系的若干相同類型變量的集合,特點:數(shù)組具有有序性數(shù)組具有同一性數(shù)組具有整體性組成數(shù)組的每個分量稱為數(shù)組的元素;數(shù)組的維數(shù)(一維,二維,三維)定義類型說明符數(shù)組名[常量表達式];inta[5];charc[20];floatx[10];注意:數(shù)組名定名規(guī)則與變量名相同;數(shù)組名后是方括號,而不是小括號;常量表達式表示元素的個數(shù),下標從零開始。數(shù)組的大小是固定的,不能動態(tài)定義。例如:intn;scanf(“%d”,&n);inta[n];是錯誤的。2、引用數(shù)組必須先定義,后使用。只能逐個引用數(shù)組元素。引用形式:數(shù)組名[下標];其中下標可以是整型常量、變量或表達式;數(shù)組長度為M時,下標值為0,1,2…M-1例如,定義數(shù)組inta[3],數(shù)組元素為a[0]a[1]a[2]a[0]=10;a[1]=25;a[2]=a[0]+a[1];初始化順序指定全部元素的初始值[static]inta[5]={1,2,3,4,5};新標準可以對auto進行初始化。指定部分元素的初始值inta[5]={0,0,1};以上語句只給數(shù)組a的前面三個元素賦了初始值,未賦初值的元素的值在此默認為0;常見錯誤1).inta[5]={0,1,2,3,4,5};多了一個初值。2).inta(5);inta[5];3).inta[5]=0;inta[5]={0};4).inta[5]=(0,1,2,3,4);inta[5]={0,1,2,3,4};5).inta={0,1,2,3,4};6).inta[5];a={0,1,2,3,4};或a[5]={0,1,2,3,4};3、輸入和輸出C語言規(guī)定,對數(shù)組的使用只能逐個引用數(shù)組元素,不能一次引用整個數(shù)組。同樣,對數(shù)組的輸入和輸出也是依次對每個元素進行的。例如,輸入10個數(shù),并將它們輸出。main(){inta[10],i;for(i=0;i<10;i++)scanf("%d",&a[i]);for(i=0;i<10;i++)printf("%d",a[i]);}常見錯誤inta[10];for(i=1;i<=10;i++)a[i]=i;改正:for(i=0;i<10;i++)a[i]=i;說明:在循環(huán)體內利用循環(huán)控制變量作為下標輸入輸出數(shù)組元素,因此數(shù)組元素輸入輸出的次序和數(shù)量可以控制。例如,下面的程序段將一個數(shù)組按照逆序打印數(shù)組元素的值。for(i=9;i>=0;i--)printf("%d",a[i]);下面的程序段只打印一個數(shù)組的前五個元素的值。for(i=0;i<5;i++)printf("%d",a[i]);4、一維數(shù)組應用舉例例有一個一維數(shù)組,有10個整數(shù)存放其中,找出其中最大的一個數(shù)。main(){inti,max,x[10];printf("enterdata:\n");for(i=0;i<10;i++)scanf("%d",&x[i]);max=x[0];for(i=1;i<10;i++)if(x[i]>max)max=x[i];printf("max=%d\n",max);}例有一個一維數(shù)組,有10個整數(shù)存放其中,找出其中最大的一個數(shù)及其下標。main(){inti,max,x[10],k;printf("enterdata:\n");for(i=0;i<10;i++)scanf("%d",&x[i]);max=x[0];k=0;for(i=1;i<10;i++)if(x[i]>max){max=x[i];k=i;}printf("max=%d,k=%d\n",max,k);}從鍵盤上輸入一個學生五門功課的成績,求平均分main(){inti;floatsum=0,a[5];printf("enterdata:\n");for(i=0;i<5;i++)scanf("%f",&a[i]);for(i=0;i<5;i++)sum+=a[i];printf(“average=%.2f\n",sum/5);}例使用數(shù)組編程,計算出前10項fibonacci數(shù)列,要求一行打印5個數(shù)。應用舉例(排序:冒泡法)假定有5個無序的數(shù)21,13,90,32,-1應用舉例(排序:冒泡法)續(xù)應用舉例(排序:冒泡法)續(xù)for(i=1;i<=n-1;i++)for(j=0;j<n-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;}冒泡法優(yōu)化for(i=1;i<=n-1;i++){flag=1;for(j=0;j<n-i;j++)if(a[j]>a[j+1]){t=a[j];a[j]=a[j+1];a[j+1]=t;flag=0;}if(flag)break;}5、應用舉例(排序:選擇法)例4用選擇法對n個數(shù)從小到大排序。假定有5個無序的數(shù)21,13,90,32,-1應用舉例(排序:選擇法)續(xù)應用舉例(排序:選擇法)續(xù)for(i=0;i<n-1;i++){min=i;for(j=i+1;j<n;j++)if(a[j]<a[min])min=j;if(min!=i){t=a[i];a[i]=a[min];a[min]=t;}}冒泡法:兩個相鄰的數(shù)依次進行比較;比較完立刻進行交換,最多交換n(n-1)/2次選擇法:用當前比較過的數(shù)中最小的數(shù)依次與后面的數(shù)進行比較;一輪比較完進行一次交換,最多交換n-1次二維數(shù)組二維數(shù)組的定義二維數(shù)組的引用二維數(shù)組的輸入輸出二維數(shù)組的初始化6、應用舉例定義類型說明符數(shù)組名[常量表達式][常量表達式];inta[2][3];charc[20][7];floatx[50][3];注意:二維數(shù)組的元素在數(shù)組中的是按行排列的。引用引用形式:數(shù)組名[下標][下標];其中下標可以是整型常量、變量或表達式;例如,定義數(shù)組inta[2][3],數(shù)組元素為a[0][0]a[0][1]

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論