C程序設(shè)計(jì)課件_第1頁
C程序設(shè)計(jì)課件_第2頁
C程序設(shè)計(jì)課件_第3頁
C程序設(shè)計(jì)課件_第4頁
C程序設(shè)計(jì)課件_第5頁
已閱讀5頁,還剩461頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

C程式設(shè)計(jì)

第1章C語言概述

C語言出現(xiàn)的歷史背景通用的程式設(shè)計(jì)語言可開發(fā)系統(tǒng)軟體和應(yīng)用軟體既具有高級(jí)語言的功能,又具有低級(jí)語言的許多功能什麼是C語言?組合語言的速記形式低級(jí)語言的高級(jí)形式高級(jí)語言的低級(jí)形式C語言的發(fā)展ALGOL60(1960)國際委員會(huì)精緻遠(yuǎn)離硬體CPL複合程式(1963)英國劍橋大學(xué)規(guī)模較大,難以實(shí)現(xiàn)

BCPL(1967)英國劍橋大學(xué)濃縮CPLB(1970)美國貝爾實(shí)驗(yàn)室太簡(jiǎn)單,接近硬體C(1972~1973)美國貝爾實(shí)驗(yàn)室最初為UNIX隨著UNIX的日益廣泛使用,C語言也迅速得到了發(fā)展。C標(biāo)準(zhǔn)標(biāo)準(zhǔn)C

1978年發(fā)表ANSIC

1983年發(fā)表87ANSIC

1987年發(fā)表C語言的特點(diǎn)語言簡(jiǎn)潔、緊湊,使用方便、靈活運(yùn)算符豐富數(shù)據(jù)結(jié)構(gòu)豐富具有結(jié)構(gòu)化的控制語句語法限制不太嚴(yán)格可直接訪問物理地址生成目標(biāo)代碼品質(zhì)高可移植性好簡(jiǎn)單的程式介紹例1.1#include"stdio.h"main(){printf("Thisisacprogram.\n");}運(yùn)行結(jié)果:Thisisacprogram.例1.2#include"stdio.h"main()/*求兩數(shù)之和*/{inta,b,sum;/*定義變數(shù)*/a=123,b=456;sum=a+b;printf("\nsumis%d\n",sum);}運(yùn)行結(jié)果:sumis579例1.3main(

)/*主函數(shù)*/{inta,b,c;scanf("%d,%d",&a,&b);c=max(a,b);printf("\nmax=%d\n",c);}intmax(intx,inty)/*定義max函數(shù)*/{intz;if(x>y)z=x;運(yùn)行結(jié)果:

elsez=y;入:8,5

returnz;出:max=8}一個(gè)程式包含兩方面的內(nèi)容1.對(duì)數(shù)據(jù)的描述類型、數(shù)據(jù)的組織形式

數(shù)據(jù)結(jié)構(gòu)2.對(duì)操作的描述操作步驟

演算法認(rèn)真考慮和設(shè)計(jì):數(shù)據(jù)結(jié)構(gòu)和演算法什麼是程式?沃思公式:數(shù)據(jù)結(jié)構(gòu)+演算法=程式具體化:程式=演算法+數(shù)據(jù)結(jié)構(gòu)+程式設(shè)計(jì)方法+語言工具和環(huán)境演算法解決的問題是

做什麼和怎麼做(電腦)演算法的概念做任何事都有一定的次序和步驟如:召開會(huì)議,報(bào)考大學(xué),購物等為解決一個(gè)問題而採取的方法和步驟就稱為“演算法”解決同一個(gè)問題可以有不同的方法和步驟,方法有有劣之分採用簡(jiǎn)單的和運(yùn)算步驟少的方法為優(yōu)電腦演算法分兩大類別數(shù)值運(yùn)算演算法目的是求數(shù)值解,演算法成熟非數(shù)值運(yùn)算演算法種類繁多,要求各異,難以規(guī)範(fàn)

簡(jiǎn)單演算法舉例例2.1求1×2×3×4×5原始方法:1×2,2×3,6×4,24×5通用的方法:設(shè)兩個(gè)變數(shù)(被乘數(shù)p,乘數(shù)i)S1:1=>pS2:2=>iS3:p×i=>pS4:i+1=>iS5:若i≤5,返回s3;否則結(jié)束如果題目該為求1×3×5×7×9×11?S1:1=>pS2:3=>iS3:p×i=>pS4:i+2=>iS5:若i≤11,返回s3;否則結(jié)束用這種方法表示的演算法具有通用性、靈活性例2.2有50個(gè)學(xué)生,要求將他們之中成績(jī)?cè)?0分以上者列印出來.用n表示學(xué)生學(xué)號(hào),n1代表第一個(gè)學(xué)生學(xué)號(hào),ni代表第i個(gè)學(xué)生的學(xué)號(hào),g代表學(xué)生成績(jī)

gi代表第i個(gè)學(xué)生成績(jī).演算法如下:S1:1=>iS2:若gi≥80則列印ni和gi,否則不列印S3:i+1=>iS4:若i≤50返回s2,否則演算法結(jié)束例2.3判斷2000-2500年中的每一年是否閏年,將結(jié)果輸出閏年的條件:①能被4整除,但不能被100整除的年份都是閏年,如1996,2004年是閏年;②能被100整除,又能被400整除的年份是閏年,如1600,2000年是閏年。不符合這兩個(gè)條件的年份不是閏年。演算法如下:設(shè)y為被測(cè)的年份y不能被4整除①y能被4整除但不能被100整除②閏年非閏年③y能被100整除又能被400整除閏年④其他非閏年

S1:2000=>yS2:若y不能被4整除則轉(zhuǎn)到S5S3:若y能被4整除,不能被100整除,則輸 出y“是閏年”,轉(zhuǎn)S6S4:若y能被100整除,又能被400整除,則輸出y“是閏年”,轉(zhuǎn)S6,(否則順序執(zhí)行)S5:輸出y“不是閏年”S6:y+1=>yS7:當(dāng)y≤2500時(shí)轉(zhuǎn)S2,否則演算法結(jié)束例2.4求1-1/2+1/3-1/4+…+1/99-1/100演算法:S1:sign=1S2:sum=1S3:deno=2S4:sign=-signS5:term=sign×(1/deno)S6:sum=sum+termS7:deno=deno+1S8:若deno≤100返回S4,否則演算法結(jié)束例2.5對(duì)一個(gè)大於等於3的正整數(shù),判斷它是否為素?cái)?shù).素?cái)?shù):除了1和該數(shù)本身之外,不能被其他任何整數(shù)整除的數(shù).如:13判斷素?cái)?shù)的方法:將一個(gè)大於等於3的正整數(shù)n作為被除數(shù),將2到n-1各個(gè)數(shù)輪流作為除數(shù),如果都不能被整除,則n為素?cái)?shù).S1:輸入n的值S2:2=>i

S3:n被i整除,得餘數(shù)rS4:若r=0,表示n能被i整除,則n不是素?cái)?shù),否則順序執(zhí)行到S5S5:i+1=>iS6:若i≤n-1,返回S3;否則n是素?cái)?shù),演算法結(jié)束或S6:若i≤n/2或若i≤2.3演算法的特性一個(gè)演算法應(yīng)具有以下特點(diǎn):有窮性確定性有零個(gè)或多個(gè)輸入有一個(gè)或多個(gè)輸出有效性程式設(shè)計(jì)人員設(shè)計(jì)演算法,並根據(jù)演算法編寫程式怎樣表示一個(gè)演算法用自然語言表示演算法用流程圖表示演算法用N-S流程圖表示演算法用三種基本結(jié)構(gòu)(順序,選擇,迴圈)起止輸入/出判斷處理流程線連接點(diǎn)Begin2=>iInputnRemainderofn/i=>rr=0?i+1=>ii>n1/2?Printn“isprime”EndPrintn“isnotprime”NYNY1=>iprintni,gigi>=80YNi+1=>iUntilI>50用偽代碼表示演算法偽代碼是用介於自然語言和電腦語言之的文字和符號(hào)來描述演算法例如,“列印x的絕對(duì)值”.IFxispositiveTHENprintxELSE print-x也可以用漢字偽代碼:若x為正列印x否則列印-x還可以中英文混用IFx為正

printxELSEprint-x例2.16求5!開始置t的初值為1置i的初值為2

當(dāng)i≤5,執(zhí)行下麵操作使t=t×i使i=i+1(迴圈到此結(jié)束)

列印t的值結(jié)束也可以寫成以下形式:

BEGIN (演算法開始)1=>t2=>iwhilei<=5{t×i=>ti+1=>i}printtEND(演算法結(jié)束)

用電腦語言表示演算法設(shè)計(jì)演算法和實(shí)現(xiàn)演算法例2.20求5!用c語言表示.main(

){inti,t;t=1;i=2;while(i<=5){t=t*i;

/*120*/i=i+1;}printf("%d",t);}例2.21求級(jí)數(shù)1-1/2+1/3-1/4+…+1/99-1/100main(){intsign=1;floatdeno=2.0,sum=1.0,term;while(deno<=100){sign=-sign;term=sign/deno;sum=sum+term;

/*0.688172*/deno=deno+1;}printf("%f",sum);}結(jié)構(gòu)化程式設(shè)計(jì)方法一個(gè)結(jié)構(gòu)化程式就是用高級(jí)語言表示的結(jié)構(gòu)化演算法用三種基本結(jié)構(gòu)組成的程式必然是結(jié)構(gòu)化程式結(jié)構(gòu)化程式的特點(diǎn):(1)自頂向下(2)逐步細(xì)化(3)模組化設(shè)計(jì)(4)結(jié)構(gòu)化編碼課堂練習(xí)用傳統(tǒng)流程圖或N-S圖表示求解問題的演算法有兩個(gè)瓶子A和B,分別盛放醋和醬油,要求將它們互換有3個(gè)數(shù),找出其中最大的一個(gè).判斷一個(gè)數(shù)n能否同時(shí)被3和5整除1.設(shè):0代表醋,1代表醬油,T為空瓶開始0=>AT=>B1=>BA=>TB=>A列印A,B結(jié)束2.max=Amax=bTmax>CFmax=C輸出max的值輸入三個(gè)整數(shù)A,B,CTA<BFTB<CFTA<CF輸出輸出輸出輸出最大最大最大最大值C值B值C值A(chǔ)輸入三個(gè)數(shù)A,B,CTA>BFC的數(shù)據(jù)類型C語言中的數(shù)據(jù)分常量和變數(shù)程式中用到的數(shù)據(jù)都必須指定其類型C語言中的數(shù)據(jù)結(jié)構(gòu)是以數(shù)據(jù)類型形式出現(xiàn)C的數(shù)據(jù)類型如下

整型字元型基本類型單精確度型實(shí)型(浮點(diǎn)型)

雙精度型枚舉類型

數(shù)據(jù)類型數(shù)組類型構(gòu)造類型結(jié)構(gòu)體類型共用體類型

指針類型空類型常量與變數(shù)常量與符號(hào)常量在程式運(yùn)行過程中,其值不能改變的量稱為常量±123±0123±0x123±123L±0123L±0x123L0(整型常量)±1.23±1.05E±10(實(shí)型常量)‘x’‘1’(字元型常量)“abc”“1”(字串常量)符號(hào)常量符號(hào)常量是給常量命名,用名稱代表常量例3.1符號(hào)常量的使用。#definePRICE30main(){intnum,total;num=10;total=num*PRICE;printf("total=%d",total);}運(yùn)行結(jié)果:total=300注:符號(hào)常量不同於變數(shù),不能賦值

PRICE=40; 錯(cuò)!優(yōu)點(diǎn):含義清楚,見名知意。規(guī)範(fàn)的程式中不提倡使用很多的常量,如:sum=15*30*43*0.15

常量究竟代表什麼?sum=price*weight*distance*discountzongjia=danjia*zhongliang*juli*zhekou

2.方便改動(dòng)如:#definePRICE44變數(shù)程式運(yùn)行中其值可以改變的量為變數(shù)3變數(shù)值存儲(chǔ)單元a變數(shù)名名字:字母、數(shù)字和下劃線三種字元組成,且第一個(gè)字元必須是字母或下劃線。合法變數(shù)名:sum,average,_total,class,day,month,student_name,tan,lotus_1_2_3,li_ming不合法的識(shí)別字:1_2_3,M.DJohn,$23,3D64,a>b識(shí)別字變數(shù)先定義後使用優(yōu)點(diǎn)正確性按類型分配存儲(chǔ)單元檢查變數(shù)的運(yùn)算合法性如:a%b*****整型常量的表示方法十進(jìn)位整數(shù):±123,0,987(0~9)八進(jìn)制整數(shù):±0123(0~7)十六進(jìn)制整數(shù):±0x12ef(0~f)將十六進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)位數(shù):

1*163+2*162+14*161+15*160=>4847*****整型變數(shù)整型數(shù)據(jù)在內(nèi)存中的存放形式inti;/*定義i為整型變數(shù)*/i=10;/*給i賦以整數(shù)10*/i:i:數(shù)值-10的補(bǔ)數(shù)表示:10的原碼:

取反:

加1得-10的補(bǔ)數(shù):

100000000000001010000000000000101011111111111101011111111111110110表示為二進(jìn)位數(shù)整型變數(shù)的分類基本整型int短整型short或shortint長整型long或longint無符號(hào)型unsigned前三種都可以加修飾符unsigned例:inta;unsignedintb;整型數(shù)範(fàn)圍:-32768~+32767無符號(hào)整型數(shù)範(fàn)圍:0~65535a:b:整型變數(shù)的定義強(qiáng)制類型定義位置,在函數(shù)的開頭部分,也可以在函數(shù)中的某個(gè)分程式內(nèi)的開頭部分,還可以在函數(shù)外11111111111111110111111111111111main(){inta,b,c,d;unsignedu;a=12;b=-24;u=10;c=a+u;d=b+u;printf("a+u=%d,b+u=%d\n",c,d);}

運(yùn)行結(jié)果:a+u=22,b+u=-14整型數(shù)據(jù)的溢出32767+1=?迴圈記數(shù)例3.3main(){inta,b;a=32767;b=a+1;printf("%d,%d",a,b);}運(yùn)行結(jié)果:32767,-32768*****變數(shù)a,b在內(nèi)存中的形式:a:

215-1

b:-215整型常量的類型int/short:-32768~32767longint:-2147483648~2147483647

也可以:123L,0L3.unsignedint:0~6553501111111111111111000000000000000實(shí)型數(shù)據(jù)實(shí)型常量的表示方法實(shí)數(shù)又稱浮點(diǎn)數(shù)有兩種表示形式十進(jìn)位小數(shù)形式指數(shù)形式如:123e3或1.23E5->123×103注:e之前必須有數(shù)字,且e後的指數(shù)必須為整數(shù)例:123.456可以表示為:123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e5

規(guī)範(fàn)化的指數(shù)形式

1.23456e002實(shí)型變數(shù)實(shí)型變數(shù)在內(nèi)存中的存放形式*****一個(gè)實(shí)型數(shù)據(jù)一般在內(nèi)存中占4個(gè)位元組實(shí)型變數(shù)的分類+.314159+1數(shù)符小數(shù)部分指數(shù)符指數(shù)實(shí)數(shù):3.14159名稱類型比特?cái)?shù)有效位數(shù)值範(fàn)圍單精確度float326~710-37~1038雙精度double6415~1610-307~10308長雙精度longdouble

12818~1910-4931~104932

實(shí)型變數(shù)的定義floatx,y;doublez;longdoubletemp;實(shí)型數(shù)據(jù)的舍入誤差有效位以外的數(shù)字將被舍去例3.4實(shí)型數(shù)據(jù)的舍入誤差main(){floata,b;a=123456.789e5;b=a+20;printf("\na=%f\nb=%f\n",a,b);}運(yùn)行結(jié)果:a=12345678848.000000b=12345678848.000000結(jié)論:應(yīng)當(dāng)避免一個(gè)很大的數(shù)和一個(gè)很小的數(shù)直接相加或相減*****實(shí)型常量的類型如:1.65f,654.87F,1234.56789實(shí)型常量的運(yùn)算一個(gè)實(shí)型常量可以賦給一個(gè)float型、double型或longdouble型變數(shù)實(shí)型常量首先按雙精度常量處理然後截取七位賦給float型變數(shù),截取16位賦給double型變數(shù)…例:floata;doubleb;a=123456.789;最後兩位小數(shù)不精確!

b=123456.789;精確接收字元型數(shù)據(jù)字元常量‘A’,‘a(chǎn)’,‘1’,‘$’,’\n’C還允許用一種特殊形式的字元常量,以\開頭的字元或一個(gè)八進(jìn)制、十六進(jìn)制的數(shù)表示如:\101,\x41都是65,也就是A1x82+1x80=65,4X161+1x160=65

轉(zhuǎn)義字元及含義

字元形式含義ASCII代碼\n回車換行10\t跳9位9\b退格8\r回車13\f換頁12\\反斜杠字元“\”92\’單引號(hào)字元39\”雙引號(hào)字元34\ddd8進(jìn)制數(shù)ASCII碼\xhh16進(jìn)制數(shù)ASCII碼*****例3.5轉(zhuǎn)義字元的使用main(){printf(“abc\tde\rf\tg\n");printf("h\ti\b\bjk");}列印結(jié)果:123456789012

fabcgdehjik螢?zāi)伙@示:fgdehjk字元變數(shù)字元型變數(shù)可以存放一個(gè)字元一個(gè)字元存放在一個(gè)位元組中(0~255)字元變數(shù)的定義形式charc1,c2;intc3,c4;字元變數(shù)的賦值c1=‘a(chǎn)’;c2=‘1’;c3=‘b’;c4=‘2’;字元數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法字元常量放到字元變數(shù)中是將該字元的相應(yīng)ASCII代碼放到存貯單元中

c1c2c3c4

9749985001100001001100010110001000110010

以二進(jìn)位形式存放ASCII

AmericanNationalStandardCodeforinformationInterchange字元數(shù)據(jù)以ASCII碼存貯就與整數(shù)存貯形式類似C語言使字元型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用例3.6向字元變數(shù)賦以整數(shù)main()97:{charc1,c2;c1=97,c2=98;printf("%c,,%c\n",c1,c2);printf("%d,,%d\n",c1,c2);}運(yùn)行結(jié)果:a,,b97,,9801100001%c%da97輸出格式顯示例3.7大小寫字母的轉(zhuǎn)換main(){charc1,c2;c1='a';c2='b';c1=c1-32;c2=c2-32;printf("%c%c",c1,c2);}運(yùn)行結(jié)果:AB*****說明:

將字元處理成帶符號(hào)的整數(shù)(取值範(fàn)圍為-128~127其中0~127,%d為正。28-1)如果使用ASCII碼在128~255之間的字元%d輸出時(shí)為負(fù)值,最高位為1例:charc=130;----->10000010=128+2printf(“%d”,c);*****有符號(hào)處理:將10000010減1變反01111110得-126無符號(hào)處理:unsignedcharc=130;printf(“%d”,c);結(jié)果為:130字串常量字串常量是一對(duì)雙引號(hào)括起來的字元序列‘a(chǎn)’與“a”的區(qū)別:printf(“Howdoyoudo.”);“CHINA”6個(gè)字元易錯(cuò)情況:c=“a”;aa\0各類數(shù)值型數(shù)據(jù)間的混合運(yùn)算整型、實(shí)型、字元型、邏輯型數(shù)據(jù)間可以混合運(yùn)算如:(a>b)+10+’1’-1.5*’b’不同類型間的轉(zhuǎn)換規(guī)則:高doublefloat

longunsigned低intcharshort*****常用類型從左到右數(shù)據(jù)長度增加char<int<unsignedint<long<float<double例:設(shè)i為整型,f為單精確度型,d為雙精度型,e為長整型

10+’a’+i*f-d/e整1雙2雙4雙3雙5算術(shù)運(yùn)算符和算術(shù)運(yùn)算式C運(yùn)算符簡(jiǎn)介C運(yùn)算符有以下幾類:算術(shù)運(yùn)算符+,-,*,/,%關(guān)係運(yùn)算符>,<,==,>=,<=,!=邏輯運(yùn)算符!,&&,||位運(yùn)算符<<,>>,~,|,^,&賦值運(yùn)算符=及擴(kuò)展賦值運(yùn)算符條件運(yùn)算符?:7.逗號(hào)運(yùn)算符,8.指針運(yùn)算符*,&求位元組數(shù)運(yùn)算符sizeof

強(qiáng)制類型轉(zhuǎn)換運(yùn)算符(類型)分量運(yùn)算符.->下標(biāo)運(yùn)算符[]其他函數(shù)調(diào)用運(yùn)算符()算術(shù)運(yùn)算符和算術(shù)運(yùn)算式例:1/2.=0.51/2=0向零取整:-5/3=-1規(guī)定%兩側(cè)均為整數(shù)%的應(yīng)用:5%3=26%3=016%3=1問:1%2=?算術(shù)運(yùn)算式和運(yùn)算符的優(yōu)先順序與結(jié)合性算術(shù)運(yùn)算式:用算術(shù)運(yùn)算符和括弧將運(yùn)算對(duì)象連接起來的、符合C語法規(guī)則的式子一個(gè)運(yùn)算對(duì)象兩側(cè)的運(yùn)算符的優(yōu)先順序相同,則按規(guī)定的結(jié)合方向處理強(qiáng)制類型轉(zhuǎn)換運(yùn)算符一般形式:(類型名)(運(yùn)算式)例:(double)a錯(cuò):double(a)(int)(x+y)(int)x+y(float)(5%3)(float)5%3例3.8強(qiáng)制類型轉(zhuǎn)換main(

){floatx;inti;x=3.6;i=(int)x;

/*有同樣效果:i=x;賦值轉(zhuǎn)換*/printf("x=%f,i=%d",x,i);}運(yùn)行結(jié)果:x=3.600000,i=3問:x變數(shù)的類型?課堂練習(xí)寫出程式運(yùn)行結(jié)果:main(){intx,y;doublea;floatb;a=6.34;b=2.1;a=a+b;y=a-b;x=(int)(a)%(int)(b);printf(“x=%d,y=%d”,x,y);}運(yùn)行結(jié)果:x=0,y=6C具有兩種類型轉(zhuǎn)換:系統(tǒng)自動(dòng)進(jìn)行類型轉(zhuǎn)換強(qiáng)制類型轉(zhuǎn)換自增自減運(yùn)算(右結(jié)合)作用:使變數(shù)的值增1或減1首碼:++i,--i尾碼:i++,i--++i或i++可以解釋為:i=i+1首碼運(yùn)算符與尾碼運(yùn)算符的差別例:設(shè)i為3觀察j與i的值j=++i;等效:i=i+1;j=i;結(jié)果:j為4,i為42.j=i++;等效:j=i;i=i+1;結(jié)果:j為3,i為4問:printf(“%d”,++i);輸出?注:1.自增自減運(yùn)算符只能用於變數(shù);

2.結(jié)合方向是至右向左3.-i++相當(dāng)於-(i++)4.a+++b解釋為(a++)+b5.a---b解釋為(a--)-b6.i=3,(i++)+(i++)+(i++)=?12/9?討論7.printf(“%d,%d”,i,i++)從左3,3從右4,3討論最好寫成:j=i++此後j為3,i為4printf(“%d,%d”,j,j)3,3printf(“%d,%d”,i,j)4,3課堂練習(xí)讀程式寫出運(yùn)行結(jié)果main(){intx,y,z;x=1;y=2;z=3;z=++x%y;printf("\n%3d%3d%3d\n",x,y,z);x=x+(z+++++y);printf("%3d%3d%3d\n",x,y,z);y=++x+z;printf("%3d%3d%3d\n",x,y,z);}答案220531671*****賦值運(yùn)算符和賦值運(yùn)算式格式:<變數(shù)>=運(yùn)算式;類型轉(zhuǎn)換實(shí)型賦給整型截取整型賦個(gè)實(shí)型擴(kuò)展當(dāng)數(shù)值範(fàn)圍超出時(shí)會(huì)出現(xiàn)失真例3.9main(){unsigneda;intb=-1;a=b;printf(“%u”,a);}運(yùn)行結(jié)果:65535複合的賦值運(yùn)算符使程式簡(jiǎn)化,提高編譯效率共有10個(gè)複合的賦值運(yùn)算符:+=,-=,*=,/=,%=,<<=,>>=,&=,|=,^=使用:a+=3等價(jià)於a=a+3x*=y+8等價(jià)於x=x*(y+8)例:設(shè)a為6a+=a-=a*a等價(jià)於a=a+(a=a-(a*a))結(jié)果:a=-60設(shè)m1=m2=m3=m4=10討論運(yùn)算後m1,m2,m3,m4的值?m1+=m2-=m3*=m4/=2m1=m1+(m2=m2-(m3=m3*(m4=m4/2)))-30-40505逗號(hào)運(yùn)算符和逗號(hào)運(yùn)算式逗號(hào)運(yùn)算符又稱順序求值運(yùn)算符其形式為:運(yùn)算式1,運(yùn)算式2,運(yùn)算式3……運(yùn)算式n3.它的值為運(yùn)算式n的值4.逗號(hào)優(yōu)先順序最低例:設(shè)a為3a=3*5,a*4結(jié)果:a=15運(yùn)算式值為60a=(3*5,a*4)結(jié)果:a=12C語言中逗號(hào)有兩種用途分隔符號(hào)順序求值運(yùn)算符如:printf(“%d%d”,(a,b,c),e);C語言40C語言概述C語言的語句用來向電腦系統(tǒng)發(fā)出操作指令一個(gè)C語句經(jīng)編譯後產(chǎn)生若干條機(jī)器指令一個(gè)實(shí)際的程式應(yīng)當(dāng)包含若干語句函數(shù)是具有執(zhí)行特定功能的副程式C程式結(jié)構(gòu)如圖:C語言40C程式根源程式檔2預(yù)處理命令全局變數(shù)聲明函數(shù)1函數(shù)n函數(shù)首部函數(shù)體執(zhí)行語句局部變數(shù)聲明根源程式檔1根源程式檔n…………C語言40C語句可以分為5類:控制語句,有9種if()~else~條件語句for()~迴圈語句while()~迴圈語句do~while()迴圈語句continue結(jié)束本次迴圈語句break終止執(zhí)行switch或迴圈語句switch多分支選擇語句goto轉(zhuǎn)向語句return從函數(shù)返回語句C語言40函數(shù)調(diào)用語句max(a,b);運(yùn)算式語句x>y;a=x+y;空語句;複合語句又稱分程式{}例:main(){inta,b,c;…{z=x+y;t=z/100;printf(“%f”,t);}…}C語言40數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)輸入輸出是以電腦主機(jī)為主體C語言不提供輸入輸出語句3.在使用C語言庫函數(shù)時(shí),要用預(yù)編譯命令“#include”將有關(guān)的“頭檔”包含到用戶根源程式檔中C語言40在調(diào)用標(biāo)準(zhǔn)輸入輸出庫函數(shù)時(shí),檔開頭應(yīng)有以下預(yù)編譯命令:#include<stdio.h>或#include“stdio.h”printf,scanf除外C語言40字元數(shù)據(jù)的輸入輸出putchar函數(shù)字元輸出函數(shù)格式:putchar(c);作用:向終端輸出一個(gè)字元其中:c是字元變數(shù)、字元常量或整型變數(shù)C語言40例4.1輸出單個(gè)字元#include<stdio.h>main(

){chara,b,c;a='B';b='O';c='Y';putchar(a);putchar(b);putchar(c);}運(yùn)行結(jié)果:BOY問:如何將輸出BOY該為輸出BOYC語言40#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’);}運(yùn)行結(jié)果:BOYC語言40getchar函數(shù)字元輸入函數(shù)格式:getchar();作用:從鍵盤輸入一個(gè)字元(只接收一個(gè)字元)例4.2輸入單個(gè)字元#include“stdio.h”main(

){charc;c=getchar();

putchar(getchar());putchar(c);}運(yùn)行時(shí)輸入:a輸出變數(shù)c的值為:aC語言40格式輸入與輸出printf函數(shù)格式輸出函數(shù)格式:printf(格式控制,輸出表列)作用:輸出任何類型的多個(gè)數(shù)據(jù)括弧內(nèi)包括兩部分:C語言401.格式控制①格式說明符,由%和格式字元組成如:%6.2f,%4d②普通字元,即需要原樣輸出的如:printf(“a=%4d,

b=%6.2f\n”,a,b);注:%x.yf

x代表數(shù)的占位寬度,y代表小數(shù)位數(shù)C語言402.輸出表列需要輸出的一些數(shù)據(jù),可以是運(yùn)算式如:printf(“%f,%d,%s\n”,a+b,c,“hello”);格式字元嚴(yán)格按照不同類型的數(shù)據(jù)用不同的格式字元程式中常用的輸出格式如下:①帶符號(hào)整型%d②不帶符號(hào)整型%u③帶符號(hào)長整型%ld④不帶符號(hào)長整型%lu⑤實(shí)型%m.nf⑥字元型%c⑦字串%s⑧八進(jìn)制整數(shù)%o⑨十六進(jìn)制整數(shù)%x(⑧⑨輸出的數(shù)據(jù)不帶符號(hào))C語言40*****舉例:位數(shù)大於m,按實(shí)際位數(shù)輸出inta=123,b=12345;printf(“%4d,%4d”,a,b);結(jié)果:123,12345舉例:類型須一致longa=123456;printf(“%ld”,a);結(jié)果:123456C語言40*****舉例:八進(jìn)制、十六進(jìn)制數(shù)輸出不帶符號(hào)inta=-1;printf(“%d,%o,%x”,a,a,a);結(jié)果:-1,177777,ffff例4.3無符號(hào)數(shù)據(jù)的輸出main(

){unsignedinta=65535;intb=-2;printf("a=%d,%o,%x,%u\n",a,a,a,a);printf("b=%d,%o,%x,%u\n",b,b,b,b);}運(yùn)行結(jié)果:a=-1,177777,ffff,65535

b=-2,177776,fffe,65534

C語言40例4.4字元數(shù)據(jù)的輸出main(){charc='a';inti=97;printf("%c,%d\n",c,c);printf("%c,%d\n",i,i);}運(yùn)行結(jié)果:a,97a,97C語言40例4.5字串的輸出main(

){printf("%3s,%7.2s,%.4s,%-5.3s\n","CHINA",

"CHINA","CHINA","CHINA");}運(yùn)行結(jié)果:CHINA,-----CH,CHIN,CHI--

超m=n-左例4.6輸出實(shí)數(shù)時(shí)的有效位數(shù)main(

){floatx,y;x=111111.111;y=222222.222;printf("%f",x+y);}運(yùn)行結(jié)果:333333.328125

(7位精確)C語言40例4.7輸出雙精度數(shù)時(shí)的有效位main(){doublex,y;x=1111111111111.111111111;y=2222222222222.222222222;printf("%f",x+y);}運(yùn)行結(jié)果:3333333333333.333010超過16位無意義,單精確度與雙精度都用%fC語言40例4.8輸出實(shí)數(shù)時(shí)指定小數(shù)位main(

){floatf=123.456;printf("%f%10f%10.2f%.2f%-10.2f\n",f,f,f,f,f);}運(yùn)行結(jié)果:123.456001--123.456001------123.46--123.46--123.46----C語言40在用printf函數(shù)輸出時(shí)注意:類型匹配可包含轉(zhuǎn)義字元分清格式符與普通字元用兩個(gè)%號(hào)printf(“%f%%”,1.)輸出一個(gè)%輸出1.000000%scanf函數(shù)(格式輸入函數(shù))一般格式:scanf(格式控制,地址表列)作用:輸入任何類型的多個(gè)數(shù)據(jù)格式控制同printf函數(shù)基本相同地址表列C語言40包括:變數(shù)的地址、指針變數(shù)、數(shù)組名、字串的首址(&變數(shù)名)例4.9用scanf函數(shù)輸入數(shù)據(jù)main(

){inta,b,c;scanf("%d%d%d",&a,&b,&c);printf("%d,%d,%d\n",a,b,c);}運(yùn)行時(shí)輸入:345運(yùn)行時(shí)輸出:3,4,5C語言40在用scanf函數(shù)輸出時(shí)注意:“&”是地址運(yùn)算符“%d%d%f”格式符間無分隔符號(hào)輸入數(shù)據(jù)時(shí),在兩數(shù)之間以一個(gè)或多個(gè)空格分隔數(shù)據(jù),也可以用回車鍵、跳格鍵tab。雙精度型數(shù)據(jù)用%lf說明(不能用%f)%e、%g、%f作用相同C語言40說明:不用轉(zhuǎn)義字元格式符中的普通字元,應(yīng)照原樣輸入如:scanf(“a=%d,b=%f”,a,b);輸入時(shí)鍵入:a=5,b=3.3若語句改變:scanf(“a:%d;b:%f”,a,b);則輸入時(shí)鍵入:a:5;b:3.3C語言40順序結(jié)構(gòu)程式舉例例4.10輸入三角形的三個(gè)邊長,求三角形面積公式:area=s(s-a)(s-b)(s-c)其中:s=(a+b+c)/2#include<math.h>main(){floata,b,c,s,area;scanf("%f,%f,%f",&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,s=%7.2f\n",a,b,c,s);printf("area=%7.2f\n",area);}C語言40運(yùn)行時(shí)輸入:3,4,6結(jié)果:a=---3.00,--b=---4.00,--c=---6.00,--s=---6.50area=---5.33例4.11從鍵盤輸入一個(gè)大寫字母,要求用小寫字母輸出#include<stdio.h>main(){charc1,c2;c1=getchar();printf("%c,%d\n",c1,c1);c2=c1+32;printf("%c,%d\n",c2,c2);}C語言40運(yùn)行時(shí)輸入:A輸出:A,65a,97課堂練習(xí):讀程式寫出運(yùn)行結(jié)果main(){intx=-668,n1,n2,n3;charsign;sign=x>0?'+':'-';x=x>0?x:-x;n1=x/100;x-=n1*100;n2=x/10;x-=n2*10;n3=x;printf("%c%d%d%d",sign,n1,n2,n3);}選擇結(jié)構(gòu)是三種基本結(jié)構(gòu)之一作用是,根據(jù)所指定的條件是否滿足,決定從給定的兩組操作選擇其一實(shí)現(xiàn)程式分支如:if(x>0)y=1;elsey=-1;關(guān)係運(yùn)算符和關(guān)係運(yùn)算式關(guān)係運(yùn)算符是邏輯運(yùn)算中比較簡(jiǎn)單的一種關(guān)係運(yùn)算就是比較運(yùn)算如:設(shè)a=5

a>3,a==2,a<1+3

真假假關(guān)係運(yùn)算符及其優(yōu)先次序<<=優(yōu)先順序相同(高)>>===!=優(yōu)先順序相同(低)優(yōu)先次序:算術(shù)運(yùn)算符高關(guān)係運(yùn)算符賦值運(yùn)算符低例:c>a+b等效於c>(a+b)a>b==c等效於(a>b)==ca==b<c等效於a==(b<c)a=b>c等效於a=(b>c)關(guān)係運(yùn)算式用關(guān)係運(yùn)算符將兩個(gè)運(yùn)算式連接起來的式子,稱關(guān)係運(yùn)算式下麵是合法的關(guān)係運(yùn)算式a>b>c,a+b>b+c,(a=3)>(b=5),(a>b)>(b<c)關(guān)係運(yùn)算式的值是一個(gè)邏輯值邏輯判斷的結(jié)果:以“0”代表“假”以“1”代表“真”邏輯運(yùn)算符和邏輯運(yùn)算式用邏輯運(yùn)算符將關(guān)係運(yùn)算式或邏輯量連接起來的式子就是邏輯運(yùn)算式邏輯運(yùn)算符及其優(yōu)先次序&&邏輯與||邏輯或!邏輯非(單目)如:(a>b)&&(x>y)a+b||b-c!a<0&&b+!c例如:設(shè)a=3,b=2,c=1a>b為“真”d=a>bd的值是1a>b==c為“真”d=a>b==cd的值是1b+c<a為“假”d=b+c<ad的值是0a>b>c為“假”f=a>b>cf的值是0課堂練習(xí)設(shè)inta=2;charc=‘a(chǎn)’;floatf=3.0求運(yùn)算式的值a+2!=c-100f/3<=a-ca<=(f<=c)(a>c)>=(f>4)!a==!f(!a&&1)!=(!c||1)(a=2)<=(f=1)(c=‘A’)!=(f=100.5)(1,2)!=(2,1)(1,2,3)==(3,3,3)答案a+2!=c-100f/3<=a-c1、0a<=(f<=c)(a>c)>=(f>4)0、1!a==!f(!a&&1)!=(!c||1)1、1(a=2)<=(f=1)(c=‘A’)!=(f=100.5)0、1(1,2)!=(2,1)(1,2,3)==(3,3,3)1、1邏輯運(yùn)算規(guī)則:a&&b若a、b均為真,則a&&b為真a||b若a、b之一為真,則a||b為真!a若a為假,則!a為真請(qǐng)思考:a、b如何表示真、假?邏輯運(yùn)算符的優(yōu)先次序

!&&||

優(yōu)先順序!算術(shù)運(yùn)算符關(guān)係運(yùn)算符

&&和||

賦值運(yùn)算符例如:x=(a+b)&&(b<c)||!(d=1)

問:括弧都能去掉嗎?高低邏輯運(yùn)算式邏輯運(yùn)算式的值是一個(gè)邏輯量“真”或“假”C規(guī)定,邏輯運(yùn)算的結(jié)果:以數(shù)值1代表“真”以數(shù)值0代表“假”邏輯運(yùn)算時(shí)判斷一個(gè)量是“真”是“假”:以0代表“假”以非0代表“真”邏輯運(yùn)算符兩側(cè)的運(yùn)算對(duì)象可以是任何類型的數(shù)據(jù)例:設(shè)a=3,b=4,c=5求運(yùn)算式的值‘c’&&’d’&&!(a=3)&&(b=4)||b-a-1a-3||b+c&&b-ca<=c||a>c機(jī)內(nèi)邏輯運(yùn)算執(zhí)行原則a&&b&&ca||b||c討論:設(shè)a=1,b=2,c=3,d=4,m=n=1問:m=?n=?(m=a>b)&&n=c>d)邏輯運(yùn)算式表達(dá)複雜條件判別是否閏年year%4==0&&year%100!=0||year%400==0if語句if語句也稱條件語句,用於實(shí)現(xiàn)程式分支結(jié)構(gòu),根據(jù)判斷條件是否滿足決定執(zhí)行給出的兩種操作之一。if語句的三種形式if(運(yùn)算式)語句例如:if(x>y)printf(“%d”,x);if(x>y&&x<10)printf(“%d”,x);if(x)printf(“%d”,x);等效於if(x!=0)~運(yùn)算式語句假0真非0運(yùn)算式語句1語句2假真圖a圖b2.if(運(yùn)算式)語句1else語句2例如:if(x>y)printf(“%d”,x);elseprintf(“%d”,y);if(運(yùn)算式1)語句1elseif(運(yùn)算式2)語句2elseif(運(yùn)算式3)語句3

……elseif(運(yùn)算式m)語句melse語句n運(yùn)算式3運(yùn)算式4運(yùn)算式2運(yùn)算式1語句5語句4語句3語句2語句1假假假假真真真真圖c例如if(number>500)cost=0.15;elseif(number>300)cost=0.10;elseif(number>100)cost=0.075;elseif(number>50)cost=0.05;elsecost=0;說明運(yùn)算式分號(hào);{}例5.1輸入兩個(gè)實(shí)數(shù),按代數(shù)值從小到大的次序輸出這兩個(gè)實(shí)數(shù)main(){floata,b,t;scanf("%f,%f",&a,&b);if(a>b){t=a;a=b;b=t;}printf("%5.2f,%5.2f",a,b);}運(yùn)行時(shí)輸入:3.6,-3.2輸出結(jié)果:-3.20,3.60例5.2輸入3個(gè)數(shù)a,b,c,要求按由小到大順序輸出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);}ya>bnabya>cnacyb>cnbc運(yùn)行時(shí)輸入:3,7,1輸出結(jié)果:1.00,3.00,7.00if語句語句的嵌套在一個(gè)if語句中又包含一個(gè)或多個(gè)if語句稱if語句的嵌套一般形式如下:if()

if()語句1

else語句2

else

if()語句3else語句4內(nèi)嵌if內(nèi)嵌if注意if與else的配對(duì)關(guān)係else總是與它上面最近的沒有else的if配對(duì)if()

if()語句1

else

if()語句2

else語句3if(){if()語句1}(實(shí)現(xiàn)內(nèi)嵌if)else內(nèi)嵌if內(nèi)嵌if例5.3有一函數(shù):

-1(x<0)y=

0(x=0)1(x>0)演算法1:演算法2:輸入x輸入x若x<0y=-1若x<0y=-1

若x=0y=0否則若x>0y=1若x=0y=0輸出y若x>0y=1

輸出y判斷哪個(gè)是正確的程式一main(){intx,y;scanf("%d",&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf("x=%d,y=%d\n",x,y);}程式二main(){intx,y;scanf("%d",&x);if(x>=0)if(x>0)y=1;elsey=0;elsey=-1;printf("x=%d,y=%d\n",x,y);}程式三main(){intx,y;scanf("%d",&x);y=-1;if(x!=0)if(x>0)y=1;elsey=0;printf("x=%d,y=%d\n",x,y);}

程式四main(){intx,y;scanf("%d",&x);y=0;if(x>=0)if(x>0)y=1;elsey=-1;printf("x=%d,y=%d\n",x,y);}條件運(yùn)算符條件運(yùn)算符要求3個(gè)操作對(duì)象(右結(jié)合)一般格式:運(yùn)算式1?運(yùn)算式2:運(yùn)算式3說明:條件運(yùn)算符的執(zhí)行順序如:max=(a>b)?a:b運(yùn)算式1取運(yùn)算式2的值取運(yùn)算式3的值假(0)真(非0)條件運(yùn)算符的優(yōu)先順序,高於賦值運(yùn)算符如:max=a>b?a:b結(jié)合方向?yàn)椤白杂抑磷蟆比纾篴=1,b=2,c=3,d=4a<b?a:c>d?c:d右結(jié)合:a<b?a:(c>d?c:d)結(jié)果:1左結(jié)合:(a<b?a:c)>d?c:d結(jié)果:4不能完全取代if語句,但可靈活應(yīng)用if(a>b)printf(“%d”,a);printf(“%d”,a>b?a:b)elseprintf(“%d”,b);運(yùn)算式1的類型可以與運(yùn)算式2

或運(yùn)算式3的類型不同例5.4將大寫字母轉(zhuǎn)換成小寫字母main(){charch;scanf("%c",&ch);ch=(ch>='A'&&ch<='Z')?(ch+32):ch;printf("%c",ch);}運(yùn)行結(jié)果:A

輸出結(jié)果:aswitch語句switch語句是多分支選擇語句,又稱開關(guān)語句,if語句只有兩個(gè)分支可供選擇,而實(shí)際問題中常常需要用到多分支的選擇如,成績(jī)分類、人口統(tǒng)計(jì)分類、工資統(tǒng)計(jì)分類、銀行存款分類…當(dāng)然這些都可以用嵌套的if語句來處理,但分支較多可讀性下降一般形式:switch(運(yùn)算式){case常量運(yùn)算式1:語句1

case常量運(yùn)算式2:語句2

…case常量運(yùn)算式n:語句ndefault:語句n+1}例如,按照考試成績(jī)的等級(jí)列印出百分制分?jǐn)?shù)段main(){chargrade;scanf(“%c”,&grade);運(yùn)行時(shí)輸入:Aswitch(grade)結(jié)果:85~100{case’A’:printf(“85~100\n”);70~84case’B’:printf(“70~84\n”);60~69case’C’:printf(“60~69\n”);<60case’D’:printf(“<60\n”);errordefault:printf(“error\n”);}}break不可少main(){chargrade;scanf(“%c”,&grade);switch(grade){case’A’:printf(“85~100\n”);break;case’B’:printf(“70~84\n”);break;case’C’:printf(“60~69\n”);break;case’D’:printf(“<60\n”);break;default:printf(“error\n”);}}說明每個(gè)常量運(yùn)算式的值必須互不相同用break語句進(jìn)行分割case和default出現(xiàn)的次序不影響運(yùn)行結(jié)果程式舉例例5.5判斷某一年是否閏年真y被4整除假真y被100整除假真y被400假l=1l=0真l=1假輸出“閏年”輸出“非閏年”l=0l=1main()

{intyear,leap;

scanf("%d",&year);if(year%4==0){if(year%100==0){if(year%400==0)運(yùn)行時(shí)輸入:2000leap=1;運(yùn)行結(jié)果:2000isaleapyear.elseleap=0;}elseleap=1;}elseleap=0;if(leap)printf("%dis",year);elseprintf("%disnot",year);printf("aleapyear.\n");}課堂練習(xí)讀程式寫出運(yùn)行結(jié)果:main(){inta=2,b=-1,c=2;

if(a<b)

/*a>b*/if(b<0)c++;/*b>0*/elsec+=3;printf(“c=%d\n”,c);}運(yùn)行結(jié)果c=5若改if(a>b)結(jié)果為:c=3若改if(b>0)結(jié)果為:c=5若改if(a>b)if(b>0)結(jié)果為:c=2課堂練習(xí)讀程式寫出運(yùn)行結(jié)果:main(){intyear;scanf(“%d”,&year);if((year%4!=0)||(year%100==0&&year%400!=0))printf(“123”);elseprintf(“456”);}運(yùn)行時(shí)輸入:2000運(yùn)行結(jié)果456例5.7運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi).路程s越遠(yuǎn),每公里運(yùn)費(fèi)越低標(biāo)準(zhǔn)如下:

s<250km沒有折扣

250≤s<500

2%折扣

500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣總運(yùn)費(fèi)的計(jì)算公式:f=p×w×s×(1-d)其中:基本運(yùn)費(fèi)p,貨物重量w,距離s,折扣d

折扣d(%)2501500100050020002500300002468101416122121046810csmain(){intc,s;floatp,w,d,f;scanf("%f,%f,%d",&p,&w.&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;運(yùn)行時(shí)輸入:100,20,300case1:d=2;break;運(yùn)行結(jié)果:freight=588000.0000case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf("freight=%15.4f",f);}main(){intc,s;floatp,w,d,f;scanf("%f,%f,%d",&p,&w.&s);if(s>=3000)c=12;elsec=s/250;switch(c){case0:d=0;break;運(yùn)行時(shí)輸入:100,20,300case1:d=2;break;運(yùn)行結(jié)果:freight=588000.000000case2:case3:d=5;break;case4:case5:case6:case7:d=8;break;case8:case9:case10:case11:d=10;break;case12:d=15;break;}f=p*w*s*(1-d/100.0);printf("freight=%15.4f",f);}習(xí)題講解給一個(gè)不多於5位的正整數(shù),要求:①求出它是幾位數(shù);②分別列印出每一位數(shù)字;③按逆序#include"stdio.h"main(){longintnum;intge,shi,bai,qian,wan,place;printf("enteranumber(0~9999:)");scanf("%ld",&num);if(num>9999)place=5;elseif(num>999)place=4;elseif(num>99)place=3;elseif(num>9)place=2;elseplace=1;迴圈結(jié)構(gòu)是重複執(zhí)行某段程式,直到某個(gè)條件滿足為止的一種程式結(jié)構(gòu)。很多問題的解決需要用到迴圈控制。迴圈結(jié)構(gòu)、順序結(jié)構(gòu)、選擇結(jié)構(gòu)是構(gòu)成複雜程式的基本單元。C提供四種迴圈goto~ifwhiledo~whileforgoto語句以及用goto語句構(gòu)成迴圈無條件轉(zhuǎn)向語句一般形式:goto語句標(biāo)號(hào);兩種用途與if語句構(gòu)成迴圈從多層迴圈的最內(nèi)層跳出例6.1求∑n求:1+2+3+4……+100100n=1main(){

inti,sum=0;注意:初值的設(shè)置

i=1;loop:if(i<=100) {sum=sum+i; i++; gotoloop;} printf("%d",sum); }運(yùn)行結(jié)果:5050while語句while語句可以實(shí)現(xiàn)當(dāng)型迴圈格式:while(運(yùn)算式)語句;執(zhí)行過程:計(jì)算運(yùn)算式值,為真(非0)則執(zhí)行語句;反復(fù)執(zhí)行上述操作,直到運(yùn)算式值為假時(shí)止思考:變!什麼在改變!循環(huán)體語句N-S結(jié)構(gòu)流程圖當(dāng)運(yùn)算式為真例6.2求∑nmain(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}問:sum和i都在變,誰的變化使迴圈結(jié)束?100n=1N-S結(jié)構(gòu)流程圖i=1sum=sum+ii=i+1當(dāng)i≤100例求7!main(){intt=1,i=2;while(i<=7){t=t*i;i++;}printf(“7!=%d\n”,t);}運(yùn)行結(jié)果:5040(1x2x3x4x5x6x7)思考修改程式使運(yùn)算順序?yàn)?x6x5x4x3x2x1main(){intt=7,i=6;while(i>0){t=t*i;i--;}printf(“7!=%d\n”,t);}課堂練習(xí)讀程式寫出運(yùn)行結(jié)果main(){longx;intn=0;scanf(“%ld”,&x);運(yùn)行時(shí)輸入:-10203040x=x>0?x:-x;運(yùn)行結(jié)果:while(x!=0){n++;x=x/10;}printf("%d\n",n);}運(yùn)行結(jié)果:8問:循環(huán)體內(nèi)增加printf("%d\n",x);運(yùn)行結(jié)果是:102030410203010203102010210108do-while語句do-while語句可以實(shí)現(xiàn)直到型迴圈格式:do語句;

while(運(yùn)算式);執(zhí)行過程:先執(zhí)行語句,後計(jì)算運(yùn)算式值,為0(假)則退出迴圈;否則返回do處,繼續(xù)迴圈循環(huán)體語句N-S結(jié)構(gòu)流程圖當(dāng)運(yùn)算式為真例6.3用do-while語句求∑nmain(){intsum=0,i=1;do {sum=sum+i;i++;}while(i<=100); printf("%d",

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論