版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言基礎(chǔ)軟體、程式與指令之間的關(guān)係軟體程式2程式1命令命令命令C
語言的起源C–DennisRitchie(1972-1973年)
B–KenThompson
(1970年)BCPL–MartinRichards(1967年)
中級語言結(jié)構(gòu)化編程語言C
語言允許分割代碼和數(shù)據(jù)可以使用函數(shù)或代碼塊來實現(xiàn)這種特性代碼塊是邏輯上連接在一起的一組程式語句,可以當作一個單元來使用強類型語言C語言是什麼-What高級語言C語言組合語言演算法——解決問題方法演算法是在有限步驟內(nèi)求解某一問題所使用的一組定義明確的規(guī)則範例
足量的水,3ml、5ml的容器各一,量出4ml的水。?演算法:3ml的容器裝滿水倒入5ml容器中再用3ml的容器裝滿水將5ml的容器倒?jié)M將5ml容器的水倒出將3ml容器中剩餘的1ml水倒入5ml容器中再用3ml容器裝滿水倒入5ml的容器裏。5ml的容器中,就是4ml的水演算法——解決問題方法演算法的重要特徵有窮性確切性輸入輸出可行性課堂練習寫出下麵問題的演算法:1、計算兩個數(shù)之和2、判斷一個數(shù)的奇偶性課堂練習演算法
1、輸入兩個數(shù)x,y2、計算x+y 3、輸出(x+y)的結(jié)果偽代碼BeginInputx,yDisplayx+yend開始輸入x,y顯示x+y結(jié)束自然語言偽代碼流程圖語句1語句2語句1語句2一般流程圖N-S流程圖流程圖符號符號說明程式的開始或結(jié)束計算步驟輸入/輸出指令判斷和分支連接符流程線繪製流程圖的注意事項 抓住解決問題的主線只有一個入口與一個出口流程圖中每一個步驟都有機會被執(zhí)行根據(jù)不同結(jié)構(gòu)考慮不同流程結(jié)構(gòu)結(jié)構(gòu)內(nèi)部不能出現(xiàn)“死迴圈”結(jié)構(gòu)化程式設(shè)計順序結(jié)構(gòu)分支結(jié)構(gòu)迴圈結(jié)構(gòu)順序結(jié)構(gòu)範例:求兩數(shù)之和1、輸入一個數(shù)a2、輸入一個數(shù)b3、計算a+b4、輸出(a+b)的結(jié)果兩數(shù)相加的流程圖StartINPUTC=A+BDISPLAYCStop起止框:這裏是程式的開始輸入輸出框:這裏用來輸入兩個數(shù)處理框:這裏用來兩個數(shù)相加輸入輸出框:這裏用來顯示和起止框:這裏是程式的結(jié)束順序結(jié)構(gòu)(課堂練習)求三個數(shù)的平均值有兩個瓶子A和B,分別盛放醋和醬油,要求將它們互換分支結(jié)構(gòu)例題:輸出兩個數(shù)中最大的一個數(shù)?分支結(jié)構(gòu)演算法1、輸入兩個數(shù)X,Y。2、當X>Y時,輸出X3、否則輸出Y開始結(jié)束X>Y?輸出x否是輸入X,Y結(jié)束輸出Y分支結(jié)構(gòu)輸入一個數(shù),判斷其是否大於1000,若是大於1000輸出1,否則輸出0,判斷一個數(shù)的奇偶性輸出三個數(shù)中最大的一個數(shù)迴圈結(jié)構(gòu)5!開始結(jié)束定義兩個變數(shù)sum=1,i=1i<=5?輸出sumSum=sum*i是否i+1課堂練習1+2+3……+99+100的和。C語言的基本結(jié)構(gòu)#include<stdio.h>//命令行部分voidmain() { inta; intb; intsum; printf("請輸入a的值:"); scanf("%d",&a); //給a賦值
printf("請輸入b的值:"); scanf("%d",&b); //給b賦值
sum=a+b; printf("sum=%d\n",sum);/*輸出sum的值*/}主函數(shù)函數(shù)體定義部分執(zhí)行部分課堂練習#include<stdio.h>voidmain()//計算圓的面積{ doubles=3.1415926; floatr; doublearea; printf("請輸入圓的半徑:"); scanf("%f",&r); area=s*r*r; printf("area=%lf\n",area);}開始編程打開編程環(huán)境添加原始檔案編寫根源程式編譯根源程式連接目標檔執(zhí)行可執(zhí)行檔(.exe)編譯和運行程式#include檔庫檔原始檔案#編譯器目標檔鏈接器可執(zhí)行檔其他用戶生成的目標檔程式文本用戶可以閱讀將擴展的源代碼轉(zhuǎn)換成機器語言將目標代碼與函數(shù)鏈接成可執(zhí)行代碼怎樣學好C語言-How端正學習態(tài)度——態(tài)度決定一切課前預(yù)習——有目的課後復習——溫故知新認真完成作業(yè)——檢驗學習成果多做練習——熟能生巧參考課外書籍——它山之石互相交流——兼聽則明數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型實型字元型數(shù)組型結(jié)構(gòu)體類型程序中對所有的數(shù)據(jù)都要指定數(shù)據(jù)類型常量與變數(shù)常量:程式中,其值不能被改變的量。變數(shù)程式中,其值可以改變的量。常量範例#include<stdio.h>voidmain(){ doubler,area; printf("請輸入圓半徑:"); scanf("%lf",&r); area=3.1415926*r*r; printf("%lf\n",area);}常量類型常量整型常量實型常量字元型常量2,85,-562.175,8.563,-56.1254‘a(chǎn)’、’9’變數(shù)15記憶體中的數(shù)據(jù)數(shù)據(jù)15記憶體應(yīng)用程式要為每一項數(shù)據(jù)分配記憶體
需要多少記憶體數(shù)據(jù)被存儲在哪個通過變數(shù),可以為記憶體中的位置提供一個有意義的名稱變數(shù)變數(shù)的組成要素變數(shù)名變數(shù)值例如:max=1010變數(shù)值max記憶體單元變數(shù)範例#include<stdio.h>voidmain(){Intx,y,z;X=5;Y=6;Z=x+y;Printf(“%d”,z);}識別字什麼是識別字? 用戶對語言中的變數(shù)名、函數(shù)名進行自定義的對象名稱。識別字的命名規(guī)則有效字元:字母、數(shù)字和下劃線三部分,識別字必須以字母與下劃線開始。例如:area、s_name、_name、sum4、4letter有效字元長度:一般不超過8位(turboC)。例如:student_name與student_code是一樣的識別字。區(qū)分大小寫例如:name與NAME是不一樣的識別字識別字的命名規(guī)則不能使用C語言中的關(guān)鍵字例如:include、if、int、float等32個關(guān)鍵字儘量不要使用l與o例如:num1良好的習慣:見名知意。變數(shù)使用前必須先聲明例如:intarea關(guān)鍵字:程式中一種具有特殊含義的單詞。課堂練習找出下列合法的識別字:Void a3_b3 for 2a define_123 -abc do word ifcase sigeof _sum 3Dmax 變數(shù)聲明數(shù)據(jù)類型變數(shù)名[=初始值]變數(shù)類型整型 #include<stdio.h>voidmain(){ inta; intb; intc;/*定義三個變數(shù)a,b,c也可以寫成inta,bc;-*/ a=10; b=20;/*給a,b賦值*/ c=a*b; printf("c=%d\n",c);}整型存儲數(shù)字數(shù)據(jù)聲明方式:intnum;不能存儲類似於“Alan”
或“abc”等任何其他類型的數(shù)據(jù)分配16
位(2
個位元組)的記憶體空間,整數(shù)的範圍是從-32768
到32767
示例:12322、0、-232實型變數(shù)浮點型存儲整數(shù)或包含小數(shù)位的值聲明方式:floatnum;最高精度是6-7
位分配32
位(4個位元組)的記憶體空間
示例:23.05、56.5、32雙精度型存儲超出float類型大小的限制的值聲明方式:doublenum;最高精度是13-14位分配64位(8
個位元組)的記憶體空間示例:23.34232324整型、實型之間的區(qū)別數(shù)據(jù)類型描述尺寸(位元組)整形-32768≤x≤327672長整形-2147483648≤x21474836474單精確度-3.402823E38≤x-1.401298E-45,1.401298E-45≤x3.402823E384精度是6位。
注:根據(jù)電腦系統(tǒng)的不同,精度和尺寸有所不同。char類型存儲一個字元資訊聲明方式:
chargender; gender=‘m';分配8位(1
個位元組)的記憶體空間示例:'a'、'm'、'$'、'%'、'1'、'5'字元型變數(shù)舉例#include<stdio.h>voidmain(){ charch1,ch2; ch1='a'; ch2='b'; printf("%c\n",ch1-32); printf("%c\n",ch2+1);}數(shù)據(jù)類型及其範圍2-1類型近似大?。ㄎ唬┳钚」爣鷆har8-128
到127unsigned80到255signedchar8-128到127int16-32,768到32,767unsignedint160到65,535signedint16與int相同shortint16與int相同unsignedshortint80到65,535變數(shù)聲明舉例Voidmain(){ charabc; /*聲明abc*/ intxyz; /*聲明xyz*/ floatlength; /*聲明length*/ doublearea; /*聲明area*/ longliteyrs; /*聲明liteyrs*/ shortarm; /*聲明arm*/}課堂練習聲明一個整型變數(shù)sum_1聲明一個浮點型變數(shù)sum_2聲明一個雙精度型變數(shù)sum_3聲明一個整型變數(shù)sum_4聲明一個長整型變數(shù)5_sum變數(shù)初始化聲明時初始化Intsum_1=5;Floatsum_2=3.0;Charsum_3=‘a(chǎn)’;過程初始化Intsum_1;Charsum_3;Sum_1=10;Sum_3=‘b’;算術(shù)運算符什麼是運算符能作用於數(shù)據(jù)上的符號代表作用於數(shù)據(jù)上的一種特定操作運算符類型:執(zhí)行如下的操作算術(shù)運算比較(關(guān)係)運算邏輯運算算術(shù)運算符一元運算符操作二元運算符操作-一元減+加++遞增-減--遞減*乘%模/整除或除法“/”的用法#include<stdio.h>voidmain(){ inti=5; printf("%d\n",i/3); printf("%f\n",5/3.0);}算術(shù)運算符的優(yōu)先順序算術(shù)運算符中,(-)求負運算級別最高,(*、/、%)次之,(+、-)最後。在相同優(yōu)先順序中,-(取負)這一級按從右到左的順序結(jié)合;其餘的算術(shù)運算符按從左到右的順序結(jié)合.算術(shù)運算符的優(yōu)先順序(續(xù))考慮下麵的例子:-4+3*-6/2-5+5-4+3*[-6]/2-5+5-4+[-18/2]-5+5-[4+-9]-5+5-[-5]-5+5--5課堂練習1.已有定義語句:inta=1,b=2,c=3;floatd=4;以下能正確表示數(shù)學式的C語言運算式.A)a/(b+c)*d;B)a/(b+c)*1/d;C)a/(c+b)/d;D)a/d/(b+c)2.求運算式3.6/6+1/2+55%10的計算結(jié)果;++和—用法概念:++和—是一種在本身的前提下+1和-1的操作。例如:a++、++a代表a=a+1;A--、--a代表a=a-1使用方法:前置用法
++a、--a後置用法
a++、a—++a與—a優(yōu)先順序別最高,a++和a—優(yōu)先順序別最低。++與—的運算方向是“從右到左”++的用法舉例++用法的例子設(shè)A=1A++,++A執(zhí)行後A=2;B=A++執(zhí)行後B=1,A=2;B=++A執(zhí)行後B=2,A=2;++和—舉例例題設(shè)a=3,c=2;1.求b=(a++)-c的值
b=3-2b=1;a=3+1=4;2.求b=(++a)-c的值
a=3+1=4;b=4-2b=2;課堂練習設(shè)a=3,c=2;1.求b=(a--)-c的值b=?;a=?;2.求b=(--a)-c的值b=?;a=?;3求b=(++a)-(--a)的值b=?;a=?;4求b=(++a)-(--a)+a--的值b=?;a=?;運算符和運算式什麼是運算符?對數(shù)據(jù)進行特定操作的符號。例如:c=a+b什麼是運算式?運算符與運算元的有效結(jié)合。例如:a+b,5*6,a/8等運算符類型算術(shù)
關(guān)係邏輯位一元、二元運算符都是算術(shù)運算符用於對包含關(guān)係運算符的運算式進行合併或取非測試兩個變數(shù)或一個變數(shù)和一個常量之間的關(guān)係將數(shù)字按位進行計算賦值運算符一般格式:變數(shù)名=運算式例如:a=5,a=b;a=2*6,a=a+b多重賦值:例如:a=b=c=10複合賦值格式:說明:a+=5,a=a+5a-=5 a=a-5a*=5 a=a*5a/=5a=a/5A%=5a=a%5變數(shù)名雙目運算符=運算式賦值運算的順序:從右到左課堂練習a=8時;下列運算式的值a+=a-=a*=a-5關(guān)係運算符和邏輯運算符2-1用於測試兩個變數(shù)或一個變數(shù)和一個常量之間的關(guān)係運算符關(guān)係運算>大於>=大於等於<小於<=小於等於==等於!=不等於高低關(guān)係運算舉例當a=3,b=4,c=5時a<b的值為1a>b的值為0a>=c的值為0(a>b)!=c的值為1(a<b)==c的值為0課堂練習當a=3,b=4,c=5時(a<b)+c的值是多少?關(guān)係運算符和邏輯運算符2-2
邏輯運算符用於對包含關(guān)係運算符的運算式進行合併或取非使用邏輯運算符的運算式,返回0表示假,返回1表示真
示例:if((a>10)&&(a<20))運算符邏輯運算&&與||或!非邏輯與運算符--&&課堂練習求下列運算式的答案1.(2>2)&&(4>2)2.(2>=2)&&(5>2)邏輯或運算符--||用於只要一個條件為‘真’就返回‘真’的情況.課堂練習求下列運算式的答案1.(2>2)||(4>2)2.(3>1)||(1>2)邏輯非運算符--!把判斷的結(jié)果取反只有一個運算元運算符之間的優(yōu)先順序別!>算術(shù)運算>關(guān)係運算>&&>||>賦值運算運算符之間的優(yōu)先順序範例2*3+4/2>3AND3<5OR10<9計算如下:[2*3+4/2]>3AND3<5OR10<9[[2*3]+[4/2]]>3AND3<5OR10<9[6+2]>3AND3<5OR10<9[8>3]AND3<5OR10<9TrueANDTrueORFalse[TrueANDTrue]ORFalseTrueORFalseTrue首先計算算術(shù)運算符比較運算符,計算總左到右進行最後計算邏輯運算符課堂練習10*3%6*6+5-2&&(2*2+6/3>1||2>8)12%3/2+3*6>10&&!真||!真位運算符2-1
將數(shù)字轉(zhuǎn)換成等價的二進位形式後再處理數(shù)據(jù)(按位表示法)運算符描述按位與(x&y)如果兩個運算元的相應(yīng)位均為1,則該位的結(jié)果值為1按位或(x|y)如果兩個運算元的相應(yīng)位有一個為1,則該位的結(jié)果值為1按位取反
(~x)將運算元按位取反
(0到1和1到0)按位異或(x^y)如果參加運算的兩個運算元的相應(yīng)位同號,則結(jié)果為0,異號則為1位運算符2-2運算元位操作位運算式數(shù)字10&151010&1111
10101010|151010|11111111
1510^151010^111101015~10~10100101-11位運算符將數(shù)字視為二進位值,並按位進行相應(yīng)運算,運算完成後再重新轉(zhuǎn)換為數(shù)字混合運算與數(shù)據(jù)轉(zhuǎn)換
運算符的運算元屬於不同的數(shù)據(jù)類型,運算時通常會將這些運算元轉(zhuǎn)換為同一類型charch;inti;floatf;doubled;result=(ch/i)+(f*d)-(f+i);
intdoublefloat
doubledouble數(shù)據(jù)強制轉(zhuǎn)換轉(zhuǎn)換格式(數(shù)據(jù)類型)運算式範例#include<stdio.h>voidmain(){ doublea=3.784; printf("%d\n",(int)a);}順序結(jié)構(gòu)printf()輸出函數(shù)scanf()輸入函數(shù)putchar()函數(shù)getchar()函數(shù)printf()函數(shù)作用:在標準輸出設(shè)備(顯示器)控制臺上顯示數(shù)據(jù)語法格式:
printf(“格式控制符”,參數(shù)列表);
都需要一個格式命令-與參數(shù)列表需要在數(shù)量、類型和順序上匹配
需要由“”括起來。由文本字元和空格、格式命令和非列印字元組成Printf()函數(shù)的例題#include<stdio.h>voidmain(){ printf("靜以修身,\n儉以養(yǎng)德。\n非淡泊無以明志;\n%s\n","非寧靜無以致遠!!!");}printf()函數(shù)
格式控制符由三類專案中的一項或多項組成:文本字元:由可列印字元組成格式命令:以%符號開始,隨後緊跟與資料項目相應(yīng)的格式代碼非列印字元:包括跳位字元、空格和新行文本與空格範例:#include<stdio.h> voidmain() { printf("謀事在人,成事在天"); }常用的格式控制符%d
—十進制整數(shù)。%f或%e
—浮點型數(shù)字%c
—單字符型%s
—字符串型格式控制符範例#include<stdio.h>voidmain(){ intnumber_1=65; charnumber_2='b'; printf("number_1=%d\n",number_1); printf("number_1=%c\n",number_1); printf("number_2=%c\n",number_2); printf("number_2=%d\n",number_2); }常用的格式控制符(續(xù))“-”
修飾符資料項目在範圍內(nèi)向左對齊,從範圍最左側(cè)的位置開始輸出資料項目字元寬度修飾符
可以用於浮點型、雙精度型和字元數(shù)組型(字串)。範圍寬度修飾符是一個整數(shù),定義了資料項目的最大範圍寬度。精度修飾符可以用在浮點型、雙精度型或字元數(shù)組型(字串)中。如果用在浮點型或雙精度型數(shù)據(jù)中,數(shù)字字串表示小數(shù)右側(cè)最多可輸出的數(shù)字位數(shù)printf()中的修飾符的使用的示例#include<stdio.h>voidmain(){ printf("Thenumber555invariousforms:\n"); printf("Withoutanymodifier:\n"); printf("[%d]\n",555); printf("With–modifier:\n"); printf("[%-d]\n”,555); printf("Withdigitstring10asmodifier:\n"); printf("[%10d]\n”,555); printf("With0asmodifier:\n"); printf("[%0d]\n”,555); printf("With0anddigitstring10asmodifiers:\n"); printf("[%010d]\n”,555); printf("With-,0anddigitstring10asmodifiers:\n"); printf("[%-010d]\n",555);}Printf()函數(shù)注意事項(一)輸出的數(shù)據(jù)可以是常量、變數(shù)和運算式,但必須與格式控制符一一對應(yīng)。#include<stdio.h>voidmain(){ inti=5; floatj=3.5; printf("%c,%d,%f,%lf\n",'a',i,j,i*j);}printf()函數(shù)注意事項(二)%d,%f,%e,%c,%s,一般為小寫。而其他的d,f,s,c等字元作為普通字元處理。#include<stdio.h>voidmain(){ intf=5; floatd=3.5; printf("%c,f=%d,d=%f,%lf\n",'a',f,d,f*d);}非列印字元(轉(zhuǎn)義字元)\n——換行\(zhòng)t——跳位字元鍵(右移四個位元組的位置)課堂練習定義一個字元型變數(shù)a=‘b’;請在螢?zāi)簧陷敵鯾:方法1:Printf(“b”);方法2:Printf(“%c”,a);scanf()函數(shù)作用:從外部輸入設(shè)備(鍵盤)接受數(shù)據(jù)語法格式scanf("controlstring",argumentlist);控制字串地址列表printf()語句中的使用的格式極其語法同樣適用與scanf()語句scanf()函數(shù)作用:從外部輸入設(shè)備(鍵盤)接受數(shù)據(jù)語法格式scanf("controlstring",argumentlist);控制字串參數(shù)列表printf()語句中的使用的格式極其語法同樣適用與scanf()語句scanf()函數(shù)使用說明使用scanf()時,對於參數(shù)列表應(yīng)遵循以下規(guī)則:
如果希望讀取基本數(shù)據(jù)類型變數(shù)的值,應(yīng)在變數(shù)名的前面加上符號&
當讀取指針變數(shù)指向的值時,在變數(shù)名前不能使用&單字符輸出函數(shù)putchar()作用:向螢?zāi)坏挠螛颂庉敵鲆粋€字元。格式putchar(參數(shù));單個字元轉(zhuǎn)義序列字元變數(shù)putchar()
函數(shù)的參數(shù)putchar()示例#include<stdio.h>voidmain(){ charch_1='9'; putchar('B'); putchar('o'); putchar('y'); putchar('\t'); putchar(ch_1); putchar('\n');}字元輸入函數(shù)getchar()作用:從系統(tǒng)輸入一個字元。語法格式:getchar();()沒有任何參數(shù)getchar()示例#include<stdio.h>voidmain(){ charch; ch=getchar(); putchar(ch); putchar('\n');}分支結(jié)構(gòu)分支條件運算式條件運算符>、<、>=、<=、!=、==邏輯運算符!、&&、||運算符之間的關(guān)係算術(shù)運算符>關(guān)係運算符>邏輯運算符>賦值關(guān)係符分支運算式If語句If…else語句多重If…else語句If語句嵌套Swithc…case語句if語句格式:If(條件運算式){語句}if示例輸入兩個整數(shù),從大到小輸出。(只能使用一個printf語句)#include<stdio.h>voidmain(){ inta,b; inttemp; printf("請輸入兩個整數(shù):"); scanf("%d,%d",&a,&b); if(a<b) { temp=a; a=b; b=temp; } printf("%d,%d\n",a,b);}課堂練習輸入一個數(shù),判斷是否能被3整除,若能被3整除,輸出這個數(shù)。If…else語句格式If(條件運算式1){語句1;}Else{語句2;}If…else語句示例輸入兩個整數(shù),從大到小輸出。#include<stdio.h>voidmain(){ inta,b; printf("請輸入兩個整數(shù):"); scanf("%d,%d",&a,&b); if(a>b) { printf("a=%d,b=%d\n",a,b); } else { printf("b=%d,a=%d\n",b,a); }}
課堂練習輸入兩個數(shù),輸出其中最大的一個數(shù)。輸入一個數(shù),判斷這個數(shù)的奇偶性。多重if…else語句格式:If(條件運算式1){語句1}elseif(條件運算式2){語句2}elseif……if…else示例#include<stdio.h>voidmain(){ intx,y; printf("請輸入X的值:"); scanf("%d",&x); if(x>0) { y=1; printf("y=%d\n",y); } elseif(x==0) { y=0; printf("y=%d\n",y); } elseif(x<0) { y=-1; printf("y=%d\n",y); }}y=10-1X>0X=0X<0課堂練習輸入學生成績,來評定學生等級。要求:成績>=90分,顯示是“A”成績>=80分,顯示是“B”成績>=70分,顯示是“C”成績>=60分,顯示是“D”成績<60分,顯示是“E”If語句的嵌套格式:If(運算式1){If(運算式2){語句1}If(運算式3){語句2}……}If語句嵌套示例#include<stdio.h>voidmain(){ intx,y; printf("請輸入X的值:\n"); scanf("%d",&x); if(x>=0) { if(x>0) { y=1; printf("y=%d\n",y); } else { y=0; printf("y=%d\n",y); } } else { y=-1; printf("y=%d\n",y); }}課堂練習輸入三個數(shù),輸出其中最大的一個數(shù).Switch語句格式switch(運算式)case常量1:語句1;break;case常量2:語句2;break;……default:語句n;Break;Switch語句示例#include<stdio.h>voidmain(){ intscore; printf("請輸入你的成績:"); scanf("%d",&score); switch(score/10){ case10: case9: putchar('A'); break; case8: putchar('B'); break; case7: putchar('C'); break; case6: putchar('D'); break; default: putchar('E'); break; }}課堂練習一周食譜:星期一:青菜星期二:雞星期三:魚星期四:肉星期五:雞蛋星期六:海鮮星期七:豆製品要求:輸入一個1-7數(shù)字,顯示食譜內(nèi)容.迴圈結(jié)構(gòu)什麼是迴圈結(jié)構(gòu)?—在程式中反復執(zhí)行某系列語句,直到不滿足指定條件才終止代碼。迴圈結(jié)構(gòu)的主要用到邏輯運算符和關(guān)係運算符。迴圈語句for
迴圈while迴圈do...while
迴圈迴圈基本結(jié)構(gòu)?計算是否while語句基本格式while(條件運算式){語句;}while範例在螢?zāi)簧狭杏?次accp#include<stdio.h>voidmain(){ inti=1; while(i<=5) { printf("ACCP\n"); i++; }}while結(jié)構(gòu)1)求解“迴圈繼續(xù)條件”運算式。如果其值為非0,轉(zhuǎn)2);否則轉(zhuǎn)3)。2)執(zhí)行循環(huán)體語句組,然後轉(zhuǎn)1)。3)執(zhí)行while語句的下一條。條件運算式?執(zhí)行語句是否While範例計算1+2+3…+99+100的和範例代碼include<stdio.h>voidmain(){ inti=1; intsum=0; while(i<=100) { sum+=i; i++; } printf("sum=%d\n",sum);}while語句注意事項計數(shù)器變數(shù)的初始化。計數(shù)器變數(shù)在執(zhí)行語句中要發(fā)生變化。條件最終必須為假,來結(jié)束語句,從而避免“死迴圈”。見上述範例課堂練習輸出1~10十個整數(shù)。計算1~100之間所有奇數(shù)的和。do…while迴圈基本格式do{
語句;}while(條件);計算?do…while範例在螢?zāi)簧狭杏?次accp#include<stdio.h>voidmain(){ inti=1; do { printf("ACCP\n"); i++; }while(i<=5);}do…while注意事項do...while
迴圈中先執(zhí)行一次語句,然後再交給while進行判斷,當條件為假時退出迴圈。do...while
迴圈中的控制權(quán)是在語句後方的while。while語句後方的;與while語句的主要區(qū)別課堂練習輸出1~10十個整數(shù)。計算1+2+3…+99+100的和for迴圈基本格式for(迴圈變數(shù)初始化;條件運算式;迴圈變數(shù)增值){語句;}for範例在螢?zāi)簧狭杏?次accp#include<stdio.h>voidmain(){ inti; for(i=1;i<=5;i++) { printf("ACCP\n"); }}for迴圈的執(zhí)行過程1、迴圈變數(shù)賦初值2、求解“迴圈繼續(xù)條件”運算式。如果其值非0,執(zhí)行(3);否則,轉(zhuǎn)至(4)。3、執(zhí)行循環(huán)體語句組,並求解“迴圈變數(shù)增值”運算式,然後轉(zhuǎn)向(2)。4、執(zhí)行for語句的下一條語句。賦初值條件運算式執(zhí)行語句變數(shù)增值for範例計算1+2+3…+99+100的和for範例(續(xù))#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; } printf("sum=%d\n",sum);}for迴圈注意事項1、for迴圈條件語句中有三部分組成,三部分必須用“;”隔開。2、for迴圈中“迴圈變數(shù)初始值”可以為空,此時必須在for迴圈之前對其定義初始值。例如:for(;i<101;i++)3、for迴圈中“條件運算式”可以省略,此時程式會成為“死迴圈”。4、for迴圈中“迴圈變數(shù)增值”可以省略,介必須在for迴圈語句中添加,保證程式正常運行。例:for(I=1;i<101;) {
…… I++; }for範例#include<stdio.h>voidmain(){ inti=1; intsum=0; for(;i<=100;i++) { sum+=i; } printf("sum=%d\n",sum);}for範例#include<stdio.h>voidmain(){ inti=1; intsum=0; for(;i<=100;) { sum+=i; i++; } printf("sum=%d\n",sum);}課堂練習輸出1~10十個整數(shù)。計算1~100之間所有奇數(shù)的和。迴圈語句的嵌套#include<stdio.h>voidmain(){ inti,j; for(i=1;i<=5;i++) { for(j=1;j<=i;j++) { printf("*"); } putchar('\n'); }}迴圈嵌套(續(xù))for(var1=初值;var1<=範圍;var1+=每次迴圈的增值) {
for(var2=初值;var2<=範圍;var2+=每次迴圈的增值)
{…}}………...break語句
功能:Switch語句中終止case語句。強制性結(jié)束迴圈。格式For(運算式1){If(運算式2)Break;……}break範例#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; if(sum>2500)/*當和大於2500時,停止迴圈*/ { break; } } printf("sum=%d,i=%d",sum,i);}課堂練習計算當半徑為1~10時圓的面積,直到面積大於100時,停止計算,將此時的半徑和麵積的值顯示出來。Continue語句功能結(jié)束本次迴圈,停止本次迴圈中其他的語句,直接進入下一次的迴圈。格式For(運算式1){If(運算式2)continue;……}continue範例#include<stdio.h>voidmain(){ inti; for(i=1;i<=100;i++) { if(i%3==0) { continue; } else printf("%d\n",i); }}跳轉(zhuǎn)語句——goto
goto語句將控制權(quán)傳遞給C程式中同一函數(shù)內(nèi)的其他語句它實際上違背了嚴格的結(jié)構(gòu)化程式設(shè)計語言的原則它們降低了程式的可靠性,並使得程式難以維護goto標籤;通用語法:goto語句功能:將控制權(quán)交給C語言中的任意一條語句。#include<stdio.h>voidmain(){ inti; intsum=0; for(i=1;i<=100;i++) { sum+=i; if(sum>=2500) { gotoleap; } }leap:printf("sum=%d,i=%d\n",sum,i);}選擇一個迴圈寫程式時選擇一個迴圈的形式是人為決定的while迴圈可以代替
for迴圈,反之亦然for迴圈每次更新迴圈計數(shù)變數(shù)的值後,檢查條件運算式,如果是真,循環(huán)體被執(zhí)行一次,直到條件運算式為假do…while執(zhí)行循環(huán)體至少一次選擇一個迴圈寫程式時選擇一個迴圈的形式是人為決定的while迴圈可以代替
for迴圈,反之亦然for迴圈每次更新迴圈計數(shù)變數(shù)的值後,檢查條件運算式,如果是真,循環(huán)體被執(zhí)行一次,直到條件運算式為假do…while執(zhí)行循環(huán)體至少一次課後作業(yè)編寫一個程式,在螢?zāi)簧巷@示出100,95,90……10,5。求5!輸入一個整數(shù),求這個整數(shù)的階層.輸入兩個數(shù),求出兩數(shù)之間所有奇數(shù)的和。求5個整數(shù)的和。#include<stdio.h>voidmain(){ inta1,a2,a3,a4,a5; intsum=0; printf("請輸入a1的值:"); scanf("%d",&a1); printf("請輸入a2的值:"); scanf("%d",&a2); printf("請輸入a3的值:"); scanf("%d",&a3); printf("請輸入a4的值:"); scanf("%d",&a4); printf("請輸入a5的值:"); scanf("%d",&a5); sum=a1+a2+a3+a4+a5; printf("sum=%d\n",sum);}#include<stdio.h>voidmain(){ inta,sum=0; inti; for(i=1;i<=5;i++) { printf("請輸入a%d的值:",i); scanf("%d",&a); sum+=a; } printf("sum=%d\n",sum);}變數(shù)的不足之處程式中變數(shù)過多,使程式不夠靈活程式中重複代碼比較多,造成工作冗餘。迴圈結(jié)構(gòu)與數(shù)組的結(jié)合使工作簡單化範例#include<stdio.h>voidmain(){ inta[5]; inti,sum=0; for(i=0;i<5;i++) { printf("請輸入a[%d]的值:",i); scanf("%d",&a[i]); sum+=a[i]; } for(i=0;i<5;i++) { printf("a[%d]=%d\n",i,a[i]); } printf("sum=%d\n",sum);}數(shù)組什麼是數(shù)組?即相同類型的數(shù)據(jù)元素的集合。變數(shù)與數(shù)組之間的區(qū)別:變數(shù)只能存儲一個數(shù)據(jù)。數(shù)組可以存儲一組數(shù)據(jù)。數(shù)組內(nèi)的元素具有相同的數(shù)據(jù)類型數(shù)組中的元素存儲在一個連續(xù)的記憶體區(qū)域中。數(shù)組與變數(shù)的區(qū)別一維數(shù)組一維數(shù)組的聲明格式:數(shù)據(jù)類型數(shù)組名[常量運算式]例如:intsum[10],chara[6]一維數(shù)組聲明注意事項數(shù)據(jù)類型:int、float、double、char數(shù)組名與變數(shù)名相同,聲明必須符合識別字的有關(guān)規(guī)定。常量運算式中可以是常量或常量運算式,絕不能是變數(shù)。其決定了數(shù)組元素的個數(shù)。課堂練習定義一個有8個元素的整型數(shù)組定義一個有12個元素的浮點型數(shù)組定義一個有3個元素的字元型數(shù)組一維數(shù)組的初始化在數(shù)組聲明時初始化Inta[5]={1,2,3,4,5}在使用時進行初始化Inta[5];int[0]=1;int[1]=2部分初始化Inta[5]={1,2,3}直接初始化Inta[]={1,2,3,4}數(shù)組元素的引用引用格式數(shù)組名[下標]例如:a[0]、a[5]數(shù)組元素引用說明每個數(shù)組元素就是一個變數(shù),數(shù)組元素只能逐個引用。只能引用數(shù)組中的元素,不能整體引用數(shù)組。不能使用越界的數(shù)組元素數(shù)組的下標必須以0開始,到N-1結(jié)束。例如:a[10]下標:a[0],a[1]……a[8],a[9]數(shù)組的引用(續(xù))例:inta[3]={4,8,9};a[0]=4;a[1]=8;a[2]=9;charb[]={‘c’,’h’,’i’,’n’,’a’};b[0]=‘c’b[1]=’h’,b[2]=’i’,b[3]=’n’,b[4]=’a’數(shù)組引用範例#include<stdio.h>voidmain(){ inta[5];//定義一個有5個元素的整型數(shù)組
inti; for(i=0;i<5;i++) { printf("a[%d]:",i); scanf("%d",&a[i]); }//為數(shù)組賦初值
printf("-----------\n"); for(i=4;i>=0;i--) { printf("a[%d]=%d\n",i,a[i]); }//將數(shù)組元素轉(zhuǎn)置顯示}課堂練習定義一個有5個元素(數(shù)組元素:10,20,30,40,50)的整型數(shù)組,顯其每個元素顯示出來。輸入5個整數(shù),顯示其平均值。(用數(shù)組)接受5個整數(shù)進行排序二維數(shù)組什麼是二維數(shù)組?—有兩個下標的數(shù)組。相當於多個一維數(shù)組。二維數(shù)組聲明:數(shù)據(jù)類型數(shù)組名[常量運算式][常量運算式]例如:inta[2][3]二維數(shù)組初始化1、分組初始化 例如:a[2][3]={{1,2,3},{4,5,6}}2、一次性初始化 例如:a[2][3]={1,2,3,4,5,6}3、對數(shù)組中部分元素初始化 例如:a[2][3]={{5},{6}}二維數(shù)組引用引用格式:數(shù)組名[行標][列標]課堂練習定義一個4*3的二維表格,數(shù)組元素為下圖:指出下列的值:(數(shù)組聲明:inta[4][3])a[0][0];a[1][2];a[3][3];a[4][1]二維數(shù)組範例顯示一個二維數(shù)組(如下圖),並將其數(shù)組元素進行列互換。123456142536ab範例#include<stdio.h>voidmain(){ inta[2][3]={{1,2,3},{4,5,6}};//初始化數(shù)組
inti,j; for(i=0;i<2;++i) { for(j=0;j<3;j++) { printf("%d\t",a[i][j]); }//原樣輸出二元數(shù)組
putchar('\n'); } putchar('\n'); for(j=0;j<3;j++) { for(i=0;i<2;i++) { printf("%d\t",a[i][j]); }//轉(zhuǎn)置輸出二元數(shù)組
putchar('\n'); }}課堂練習輸出下方二維表格。(無邊框)618753294字元數(shù)組什麼是字元數(shù)組?用來存放字元數(shù)據(jù)的數(shù)組。聲明格式char數(shù)組名[常量運算式]例如:charch[10]字元數(shù)組的初始化1、charch[9]={‘a(chǎn)’,’b’,’c’,’d’,’e’,’f’,’g’,’h’};2、charch[8]=“chinese”;字串數(shù)組範例#include<stdio.h>voidmain(){charary[5];inti;printf("\nEnterstring:");scanf(“%s”,ary);//為字元數(shù)組賦值
printf(“\nThestringis%s\n\n”,ary);//輸出字串
for(i=0;i<5;i++)printf("\t%d",ary[i]);}空字元什麼是空字元?—以叫結(jié)束字元,是對一個字串輸入的結(jié)束標誌。例如:charch[]=“china”(注記憶體圖)字元數(shù)組的使用說明#include<stdio.h>voidmain(){charname[10]; charsex[3]; printf("請輸入姓名:"); scanf("%s",name); printf("性別:"); scanf("%s",sex); printf("姓名:%s\t",name); printf("性別:%s\n",sex);}
二維字元型數(shù)組定義格式char[5][10]5:
數(shù)組中有5個字串10:
每個字串有10個字元字串函數(shù)puts輸出函數(shù)格式puts(字元數(shù)組)gets輸入函數(shù)格式gets(字元數(shù)組)#include<stdio.h>#include<string.h>voidmain(){ charch[20]; gets(ch); puts(ch);}字串函數(shù)(續(xù))strcpy函數(shù)格式:Strcpy(數(shù)組1,數(shù)組2)功能:將數(shù)組2的字元複製到數(shù)組1中範例:include<stdio.h>#include<string.h>voidmain(){ chara[10],[b]={"china"}; strcpy(a,b); puts(a);}字串函數(shù)(續(xù))strcat函數(shù)格式:strcat(數(shù)組1,數(shù)組2)功能:連接兩個數(shù)組,將數(shù)組2的字元連接到數(shù)組1中範例#include<stdio.h>#include<string.h>voidmain(){ chara[12]={"leaf"}; charb[6]={"apple"}; strcat(a,b); puts(a);}字串函數(shù)(續(xù))Strcmp函數(shù)格式Strcmp(數(shù)組1,數(shù)組2)功能數(shù)組1與數(shù)組2之間的大小比較(ASCII碼)注意事項:數(shù)組1>數(shù)組2,返回值>0數(shù)組1=數(shù)組2,返回值=0數(shù)組1<數(shù)組2,返回值<0strcmp範例 #include<stdio.h>#include<string.h>voidmain(){ chara[10]="china"; charb[6]="apple"; intc; c=strcmp(a,b); printf("%d\n",c);}字串函數(shù)(續(xù))strlen函數(shù)格式:strlen(字串)功能測試字串長度(不包括空字元)strupr函數(shù)格式strupr(字串)功能將小寫字母轉(zhuǎn)換成大寫字母。數(shù)據(jù)的存儲機制記憶體地址—記憶體中存儲單元的編號。變數(shù)地址—系統(tǒng)標識變數(shù)在內(nèi)存中的起始位置。數(shù)據(jù)的存儲機制(續(xù))直接訪問#include<stdio.h>voidmain(){ inta,b,sum; printf("請輸入a和b的值:"); scanf("%d,%d",&a,&b); sum=a+b; printf("sum=%d\n",sum);}間接訪問#include<stdio.h>voidmain(){ inta,b,sum=0; int*p_1,*p_2; printf("請輸入a和b的值:"); scanf("%d,%d",&a,&b); p_1=&a; p_2=&b; sum=*p_1+*p_2; printf("sum=%d\n",sum);}指針的功能方便一個函數(shù)向另一個函數(shù)的過渡。能通過指針的移動來改變指針所指向的數(shù)據(jù),不需要去移動變數(shù)或數(shù)組??梢詫崿F(xiàn)動態(tài)記憶體的更新。指針與指針變數(shù)什麼是指針?變數(shù)的記憶體地址。指針變數(shù)用來存放變數(shù)地址的變數(shù)。56a變數(shù)名1000(記憶體地址)變數(shù)值1000b指針指針變數(shù)指針聲明格式數(shù)據(jù)類型*指針變數(shù)名;聲明注意事項“*”表示聲明的指針變數(shù),不是代表指針運算符。“*”前必須指定數(shù)據(jù)類型(基類型),其主要功能是指指針所指向?qū)ο蟮臄?shù)據(jù)類型。基類型:指針所指向的數(shù)據(jù)類型。決定了指針每次移動的步長。指針的賦值與引用指針運算符&——求址運算符(……的地址)*——指針運算符(……地址中的值)範例inta=10;int*p;p=&a;ap1010100inta=10,int*pp=&a地址地址100104100104指針賦值2-1通過&運算符為指針賦值
ptr_var=&var;通過另一個指向相同類型資料項目的指針變數(shù)對指針進行賦值
ptr_var2=ptr_var;指針賦值2-2通過指針為變數(shù)賦值
*ptr_var=10;如果ptr_var指向var,則把10賦給var課堂練習寫出下列計算結(jié)果inta=5;/*a的記憶體地址為3000*/ int*p; p=&a;(1):p; (2)&p (3)*p(4):a (5)&a課堂練習寫出下列計算結(jié)果intnum1=2,num2,*pnt;pnt=&num1;num2=*pnt;(1)num1 (2)num2 (3)*pnt
例題輸入兩個數(shù),按從大到小的順序排列。#include<stdio.h>voidmain(){ inta,b; int*p_1,*p_2,*max; p_1=&a;p_2=&b; printf("請輸入a和b的數(shù):"); scanf("%d,%d",&a,&b); if(a<b) { max=p_1;p_1=p_2;p_2=max; } printf("%d,%d\n",*p_1,*p_2);}數(shù)組指針與數(shù)組的指針變數(shù)什麼是數(shù)組指針?數(shù)組在內(nèi)存中的地址。數(shù)組的指針變數(shù)存放數(shù)組元素地址的變數(shù)。指針與一維數(shù)組3-1數(shù)組元素的地址可以用兩種方式表示在數(shù)組元素前面加“&”符號
&ary[2]數(shù)組名+下標
ary+2指針與一維數(shù)組3-2#include<stdio.h>voidmain(){staticintary[10]={1,2,3,4,5,6,7,8,9,10};inti;for(i=0;i<10;i++){printf(“\ni=%d,ary月[i]=%d,*(ary+i)=%d",i,ary[i],*(ary+i));printf("&ary[i]=%X,ary+i=%X",&ary[i],ary+i);}}值地址指針與一維數(shù)組3-3演示:執(zhí)行程式,觀察並分析輸出結(jié)果使用指針引用數(shù)組元素數(shù)組的方法#include<stdio.h>voidmain(){ inta[5]={6,7,8,9,10}; inti; for(i=0;i<5;i++) { printf("a[%d]:%d\n",i,a[i]); }}指針的方法#include<stdio.h>voidmain(){ inta[5]={6,7,8,9,10}; int*p; for(p=a;p<a+5;p++) { printf("%d\n",*p); }}使用指針變數(shù)的注意事項只能進行加法和減法運算
intvar,*ptr_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- ui筆試題及答案
- 2025年重慶市繼續(xù)教育公需科目題庫及答案
- 2025年中小企業(yè)財務(wù)管理與內(nèi)控管理制度
- 中廣核安規(guī)考試題及答案
- 2025湖州市吳興區(qū)事業(yè)單位考試試題真題及答案2
- 2023年試驗檢測師之道路工程真題練習試卷B卷附答案
- 2025年湖北申論回顧真題及答案
- 2025年金融投資風險管理試題及答案詳解
- 投資有限公司招聘10人考前自測高頻考點模擬試題完整答案詳解
- 護士三基考試(招考)試題及答案
- 疑難病例討論制度落實常見問題與改進建議
- 創(chuàng)傷性脾破裂的護理
- 蓬深102井鉆井工程(重新報批)項目環(huán)境影響報告表
- 大模型金融領(lǐng)域可信應(yīng)用參考框架
- (新教材)2025年人教版七年級上冊歷史期末復習??贾R點梳理復習提綱(教師版)
- 中國全色盲診療專家共識2026
- 鋼鐵工藝流程課件
- 自流平地面施工安全方案
- 2025年小學六年級數(shù)學試題探究題
- 紋樣設(shè)計上課課件
- 密閉施工安全培訓課件
評論
0/150
提交評論