




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
C語言程序設(shè)計湖北民族學院信息工程學院張zhang_hbmy@第3章程序的控制結(jié)構(gòu)3.1算法與語句
3.1.1算法及其特征一個程序包括以下兩方面的內(nèi)容:(1)數(shù)據(jù)的描述和組織形式。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。(2)對操作的描述,即操作步驟,也就是算法。瑞士計算機科學家N?沃思(NikiklausWirth)教授提出了程序定義的著名公式:程序=數(shù)據(jù)結(jié)構(gòu)+算法
程序設(shè)計需解決兩個問題:程序按什么順序或步驟執(zhí)行——算法使用什么語句實現(xiàn)1.算法的概念計算機解決問題的方法和步驟就是計算機算法,即算法是對某一特定問題的求解步驟的一種描述。2.算法的特性1)有窮性:一個算法必須保證執(zhí)行有限步之后結(jié)束;2)確定性:算法的每一個步驟必須具有確切的定義;3)有效性:算法的每一步都必須是計算機能進行的有效操作;4)輸入:一個算法有零個或多個輸入;5)輸出:一個算法有一個或多個輸出。3.1算法與語句
3.1算法與語句
3.1.2算法和程序結(jié)構(gòu)
算法含有兩大組成要素:1.操作
C語言所描述的操作主要包括算術(shù)運算、邏輯運算、關(guān)系運算、函數(shù)運算、位運算和I/O操作等。2.控制結(jié)構(gòu)控制結(jié)構(gòu)控制算法所描述的各種操作的執(zhí)行順序。順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)算法設(shè)計中,由三種基本結(jié)構(gòu)可組成任何復雜結(jié)構(gòu)的算法。3.1.3算法的描述自然語言描述傳統(tǒng)流程圖描述用N-S圖描述偽代碼描述3.1算法與語句
1.用自然語言描述算法例:用自然語言描述算法求5!(1)原始方法:①:求1×2,得到結(jié)果2;②:將①中的結(jié)果乘以3,得到新的結(jié)果6;③:將②中的結(jié)果乘以4,又得到新的結(jié)果24;④:將③中的結(jié)果乘以5,得到最后的結(jié)果120。(2)改進方法①:定義整型變量facto,初始值置為1;②:定義整型變量i,初始值置為2;③:使facto×i,將乘積賦值給變量facto;④:使i+1,將結(jié)果賦值給i;⑤:判斷i的值是否小于或等于5,如果是,返回③并重復③④,否則輸出facto的值。1.用自然語言描述算法2.用傳統(tǒng)流程圖描述算法流程圖是對給定算法的一種圖形解法。也稱框圖,用規(guī)定的一系列圖形、流程線及文字說明表示算法。具體例子見教材用傳統(tǒng)流程圖表示求5!的算法FTfac=fac*ii<=5?開始結(jié)束fac=1;i=2;i=i+13.用N-S圖描述算法N-S圖也是一種流程圖形式,它摒棄了流程線,算法描述在一個矩形框內(nèi)。
例:用N-S圖描述求5!的算法fac=1直到i>5fac=fac×ii=i+1
輸出faci=24.用偽代碼描述算法Begin(算法開始)fac=1i=2whilei<=5{fac=fac*1i=i+1}printfacEnd(算法結(jié)束)例:用偽代碼描述求5!的算法書本例子錯誤!語句說明語句表達式語句空語句控制語句復合語句條件控制語句跳轉(zhuǎn)控制語句循環(huán)控制語句3.1.4C語言的語句分類1.說明語句
說明語句是對變量或被調(diào)函數(shù)的聲明,不產(chǎn)生機器指令,其作用是描述程序中被處理數(shù)據(jù)(變量或函數(shù))的名稱和類型,供編譯程序使用。說明語句可以出現(xiàn)在程序中任何塊(即函數(shù)或復合語句)的外面(稱為外部說明)或塊中(稱為局部說明)。例:inta;/*定義變量a為整型*/floatz; /*定義變量z為浮點型*/floatadd(floatx,floaty);/*函數(shù)的聲明*/3.1.4C語言的語句分類2.表達式語句
一般形式:表達式;例:x=10后面無分號,是賦值表達式,但不是語句x=10;后面有分號,是賦值語句3.1.4C語言的語句分類3.控制語句控制語句用于控制程序的執(zhí)行流程,實現(xiàn)各種控制結(jié)構(gòu)。C語言提供9種控制語句,可劃分為三類。見教材。3.1.4C語言的語句分類4.復合語句把多條語句用一對花括號{}組成的一個語句稱為復合語句。例:{intx,a=3,b=5;x=a;a=b;b=x;}注意:
“}”后不加分號;復合語句在語法上等價于一個語句。3.1.4C語言的語句分類5.空語句一般形式為:;
它在語法上占有一個簡單語句的位置,執(zhí)行該語句不做任何操作。空語句常用于循環(huán)語句中,構(gòu)成空循環(huán)。3.1.4C語言的語句分類C語言程序設(shè)計湖北民族學院信息工程學院張zhang_hbmy@1.數(shù)據(jù)類型轉(zhuǎn)換:自動轉(zhuǎn)換、賦值轉(zhuǎn)換、強制轉(zhuǎn)換2.算法的概念:對操作的描述,即操作步驟3.算法的描述方法:自然語言、流程圖、N-S圖以及偽代碼4.C語言語句分類:說明、表達式、控制、復合以及空語句習題2中錯誤修正以及第三大題第四大題講解上一堂課知識點回顧例a&&b例a||b例a=1;b=2;c=3;d=4;m=1;n=1;(m=a>b)&&(n=c>d)短路特性:邏輯表達式求解時,并非所有的邏輯運算符都被執(zhí)行,只是在必須執(zhí)行下一個邏輯運算符才能求出表達式的解時,才執(zhí)行該運算符2.3運算符與表達式//只在a為真時,才判別b的值;//只在a為假時,才判別b的值;//結(jié)果m=0,n=12.3.4邏輯運算符和表達式(4)第3章程序的控制結(jié)構(gòu)3.2數(shù)據(jù)的輸入與輸出
C語言無I/O語句,I/O操作由庫函數(shù)實現(xiàn)#include<stdio.h>本節(jié)介紹用于鍵盤輸入和顯示器輸出的庫函數(shù)一、字符的輸入與輸出函數(shù)
1.字符輸出函數(shù)putchar()
調(diào)用格式:
putchar(參數(shù));
功能:在顯示器上輸出單個字符
參數(shù):可以是字符常量、字符型變量或整型變量,即將一個整型數(shù)作為ASCII編碼輸出相應(yīng)的字符。
返回值:輸出成功返回輸出字符的ASCII碼值;出錯,為EOF(-1)【例】輸出單個字符。
#include<stdio.h>main(){inti=97;charch='a';putchar(i);putchar('\n'); putchar(ch); }程序運行結(jié)果為:aa一、字符的輸入與輸出函數(shù)2.字符輸入函數(shù)getchar()
調(diào)用格式:getchar();
功能:從鍵盤上讀入一個字符。
返值:若讀入成功,返回讀入字符的ASCII碼值;
出錯,返回EOF(-1)通常把讀入的字符賦予一個字符變量,構(gòu)成賦值語句。例:
charc;c=getchar();一、字符的輸入與輸出函數(shù)【例3.2】輸入單個字符。
#include<stdio.h> main() {intch; ch=getchar(); putchar(ch); }程序運行結(jié)果如下:
a↙a執(zhí)行g(shù)etchar()時輸入字符以回車結(jié)束輸入。
一、字符的輸入與輸出函數(shù)二、格式化輸入/輸出函數(shù)
1.格式輸出函數(shù)printf()
調(diào)用格式:printf(“格式控制字符串”,輸出項列表)
功能:按格式控制字符串指定格式,向顯示器輸出所列出的輸出項
返回值:若輸出成功,返回輸出字節(jié)數(shù);出錯,返回EOF(-1)
printf(“a=%4d,b=%4d”,a,b);格式控制字符串輸出項表列1.格式輸出函數(shù)printf()格式控制字符串格式說明:用于指定輸出格式,由“%”、格式控制字符、附加格式修飾符組成。普通字符或轉(zhuǎn)義序列:原樣輸出輸出項表列:要輸出的數(shù)據(jù),可以沒有,多個時以“,”分隔。輸出項的個數(shù)必須與格式說明的個數(shù)一致,位置一一對應(yīng)。printf(“a=%4d,b=%4d”,a,b);格式控制字符串輸出項表列1.格式輸出函數(shù)printf()格式說明:
%[flags][width][.prec][F|N|H|L]type
標志輸出最小寬度精度長度類型(1)type類型表示格式控制字符,用來說明對應(yīng)輸出項的輸出格式d以帶符號的十進制形式輸出整數(shù)(正數(shù)不輸出符號)o以8進制無符號形式輸出整數(shù)(不輸出前導符O)x(X)以16進制無符號形式輸出整數(shù)(不輸出前導符Ox)u以無符號10進制形式輸出整數(shù)c以字符形式輸出一個字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),默認輸出6位小數(shù)e(E)以標準指數(shù)形式輸出單、雙精度數(shù),小數(shù)位數(shù)為6位g(G)選用%f或%e格式中輸出寬度較短的一種格式1.格式輸出函數(shù)printf()格式說明:
%[flags][width][.prec][F|N|H|L]type
標志輸出最小寬度精度長度類型(2)附加格式修飾符:可根據(jù)輸出格式要求進行取舍。
Flags標志字符常用的:
-:為左對齊,系統(tǒng)默認右對齊
+:正數(shù)輸出+,負數(shù)輸出-
空格:正數(shù)輸出空格,負數(shù)輸出-Width寬度指示符:用十進制數(shù)來設(shè)置輸出值的最少輸出個數(shù),少則補空格,多則按實際輸出,缺省則按實際輸出。.prec精度指示符:用小數(shù)點加十進制正整數(shù)構(gòu)成,用來限制輸出數(shù)的精度,對于實數(shù),指定輸出的小數(shù)位數(shù)(四舍五入)。[F|N|h|L]長度修飾符:見教材例inta=1234;floatf=123.456;charch=‘a(chǎn)’;printf(“%8d,%2d\n”,a,a);printf(“%f,%8f,%8.1f,%.2f,%.2e\n”,f,f,f,f,f);printf(“%3c\n”,ch);運行1234,1234結(jié)果:123.456000,123.456000,123.5,123.46,1.23e+2
a1.格式輸出函數(shù)printf()2.格式化輸入函數(shù)scanf()調(diào)用格式:scanf("格式控制字符串",地址表列)功能:按格式控制字符串指定的格式,從鍵盤讀入數(shù)據(jù),并存入地址表指定的內(nèi)存單元。返回值:返回輸入數(shù)據(jù)個數(shù)例:scanf(“%d,%d,%f”,&a,&b,&c);地址表列:由一個或多個地址組成,若有多個以逗號隔開。常用取地址運算符&得到變量地址。格式控制字符串:
格式說明:說明需輸入數(shù)據(jù)的類型。普通字符:輸入數(shù)據(jù)時要原樣輸入。二、格式化輸入/輸出函數(shù)格式說明:%[*][width][F|N][h|L]typeType類型:是必須的,表示需輸入數(shù)據(jù)的類型。d(D)十進制整數(shù)o(O)八進制整數(shù)x(X)十六進制整數(shù)i(I)自動根據(jù)數(shù)頭分辨十、八、十六進制u(U)無符號十進制整數(shù)c單個字符s字符串f(e,g,G)實數(shù)n不輸入數(shù)據(jù),將已讀入的字符輸送到對應(yīng)的地址中%百分號2.格式化輸入函數(shù)scanf()格式說明:
%[*][width][F|N][h|L]type*輸入賦值抑制字符:輸入數(shù)據(jù)但不賦給對應(yīng)變量,跳過該輸入。width寬度指示符:表示最多可輸入的字符個數(shù)。F|N地址大小修飾符:FfarNnearh|L輸入數(shù)據(jù)類型:h短整型,l長整或雙精度2.格式化輸入函數(shù)scanf()例:scanf("%d%*d%d",&a,&b);輸入:567時把5賦予a,6被跳過,7賦予b。2.格式化輸入函數(shù)scanf()說明:(1)scanf()的格式控制字符串中的普通字符必須原樣輸入。例:scanf(“x=%d”,&x);(2)輸入分隔符的指定一般以空格、TAB或回車鍵作為分隔符其它字符做分隔符:格式串中兩個格式符間字符(3)scanf函數(shù)中沒有精度控制,如:scanf(“%5.2f”,&a);是非法的。例scanf(“%d,%d,%d”,&a,&b,&c);
輸入12,24,362.格式化輸入函數(shù)scanf()例scanf(“%d%d%d”,&a,&b,&c);
輸入122436例:輸入圓的半徑,輸出圓的周長和面積。分析:1.定義實型變量r、c、s用于存放半徑、周長、面積;2.調(diào)用輸入函數(shù),輸入r:3.分別利用周長公式和面積公式求出c、s;4.調(diào)用輸出函數(shù)輸出c、s。3.2基本輸入/輸出函數(shù)#include<stdio.h>voidmain(){floatr,c,s;
scanf(“%f”,&r);/*輸入一個浮點數(shù)據(jù),存入地址&r*/c=2*3.14159*r;/*計算周長,賦值給c*/s=3.14159*r*r;/*計算面積,賦值給s*/printf(“\nc=%8.4f”,c);/*周長占8個字符寬,4位小數(shù)*/printf(“\ns=%8.4f”,s);
/*輸出面積,數(shù)據(jù)共占8個字符寬,4位小數(shù)*/}3.2基本輸入/輸出函數(shù)C語言程序設(shè)計湖北民族學院信息工程學院張zhang_hbmy@分析:1.輸入小寫字母存入變量a;2.轉(zhuǎn)換成大寫a=a-32;3.輸出a。例:從鍵盤輸入一個小寫字母,用大寫形式輸出該字母。3.2基本輸入/輸出函數(shù)#include<stdio.h>main(){chara;printf("Inputalowercaseletter:");a=getchar();a=a-32;/*將大寫字母轉(zhuǎn)換成對應(yīng)的小寫字母*/printf("%c\n",a);}
思考:如何使程序可以處理任何字符的輸入。即判斷輸入的是小寫字母,才轉(zhuǎn)換成大寫;如果輸入的其他字符,則直接輸出。
3.2基本輸入/輸出函數(shù)結(jié)構(gòu)化程序設(shè)計基本思想:任何程序都可以用三種基本結(jié)構(gòu)表示,限制使用無條件轉(zhuǎn)移語句(goto)結(jié)構(gòu)化程序:由三種基本結(jié)構(gòu)反復嵌套構(gòu)成的程序優(yōu)點:結(jié)構(gòu)清晰,易讀,提高程序設(shè)計質(zhì)量和效率三種基本結(jié)構(gòu)結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)3.3順序結(jié)構(gòu)特點:程序按照語句編排的先后順序依次執(zhí)行有點:程序簡單明了,按順序執(zhí)行缺點:功能有限,很難處理復雜問題教材例題prog03_08.cAB●●ab二分支選擇結(jié)構(gòu)多分支選擇結(jié)構(gòu)特點:通過對某個給定條件的判斷,自動選擇要執(zhí)行的語句PAB真假●●baA1A2AiAnk=k2k=k1k=knk=ki......●ab●3.4選擇結(jié)構(gòu)例如分段函數(shù)分析:首先判斷x,如果x<0,則y=3-x;否則,y=2*x;需要根據(jù)x的值進行流程選擇(分支)3.4選擇結(jié)構(gòu)
C語言的選擇語句有兩種:if語句、switch語句main(){floatx,y;scanf(“%f”,&x);y=2*x;if(x<0)y=3-x;printf(“y=%6.2f”,y);}1.(單分支選擇結(jié)構(gòu)):格式:if(表達式)語句執(zhí)行過程:表達式語句真假表達式語句1語句2真假2.(雙分支選擇結(jié)構(gòu)):格式:if(表達式)
語句1else
語句2執(zhí)行過程:3.4.1
if語句main(){floatx,y;scanf(“%f”,&x);
if(x<0)y=3-x;
elsey=2*x;printf(“y=%6.2f”,y);}main(){floatx,y;scanf(“%f”,&x);y=2*x;
if(x<0)y=3-x;printf(“y=%6.2f”,y);}3.4選擇結(jié)構(gòu)例:輸入兩個數(shù),比較其大小,將較大的數(shù)輸出。算法分析:(1)輸入兩個數(shù)據(jù)a,b;(2)如果a>b則輸出a;否則,輸出b。#include<stdio.h>main(){floata,b;scanf(“%f,%f”,&a,&b);if(a>b)printf(“%f”,a);elseprintf(“%f”,b);}3.4選擇結(jié)構(gòu)表達式1語句1真假表達式2表達式3語句n語句3語句2真真假假3.(多分支選擇結(jié)構(gòu)):格式:
if(表達式1)
語句1
elseif(表達式2)
語句2elseif(表達式3)
語句3…...else
語句n
執(zhí)行過程:例:if(salary>1000)index=0.4;elseif(salary>800)index=0.3;elseif(salary>600)index=0.2;elseif(salary>400)index=0.1;elseindex=0;
3.4選擇結(jié)構(gòu)if語句中的表達式一般為關(guān)系或邏輯表達式,也可以為任何數(shù)值類型的表達式。執(zhí)行語句可以是一條簡單語句、空語句或復合語句,也可以嵌套其它流程控制語句。
if(x)if(x!=0)if(!x)if(x==0)例考慮下面程序的輸出結(jié)果:#include<stdio.h>main(){intx,y;scanf(“%d,%d”,&x,&y);if(x>y)x=y;y=x;elsex++;y++;printf(“%d,%d\n”,x,y);}CompileError!3.4選擇結(jié)構(gòu)3.4.2if語句的嵌套當if語句中的執(zhí)行語句又是if語句時,則構(gòu)成了if語句嵌套的情形。例如:if(表達式1)if(表達式2)
語句1;if(表達式1)if(表達式2)
語句1;else
語句2;3.4選擇結(jié)構(gòu)#include<stdio.h>main(){intx,y;printf("Enterintegerx,y:");scanf("%d,%d",&x,&y);if(x!=y)if(x>y)printf("X>Y\n");elseprintf("X<Y\n");
elseprintf("X==Y\n");}運行:Enterintegerx,y:12,23X<YEnterintegerx,y:12,6X>YEnterintegerx,y:12,12X==Y例
:輸入兩整數(shù)并判斷其大小關(guān)系3.4選擇結(jié)構(gòu)缺省{}時,else總是和它上面離它最近的未配對的if配對if(……)if(……)if(……)else…...else…...else…...if~else配對原則:3.4選擇結(jié)構(gòu)例:if(a==b)if(b==c)printf(“a==b==c”);elseprintf(“a!=b”);修改:if(a==b){if(b==c)printf(“a==b==c”);}elseprintf(“a!=b”);實現(xiàn)if~else正確配對方法:加{}3.4選擇結(jié)構(gòu)例考慮下面程序輸出結(jié)果:main(){intx=100,a=10,b=20;intv1=5,v2=0;if(a<b)if(b!=15)if(!v1)x=1;elseif(v2)x=10;x=-1;printf(“%d”,x);}結(jié)果:-13.4選擇結(jié)構(gòu)一般形式:switch(表達式){case常量表達式1:語句組1;
[break;]case常量表達式2:語句組2;
[break;]…….case常量表達式n:語句組n;
[break;][default:語句組n+1;]}執(zhí)行過程:switch表達式語句組1語句組2語句組n語句組…...E1E2Endefaultcase3.4.3switch…case語句說明:語句中的表達式可以是數(shù)字型或字符型,表達式的值,稱為開關(guān)值語句結(jié)構(gòu)中各個case后常量表達式的值必須互不相同;否則執(zhí)行時將出現(xiàn)矛盾,即同一個開關(guān)值,對應(yīng)多種執(zhí)行方案當表達式的值與某一個常量相等時,就執(zhí)行后面的語句;若無break語句,執(zhí)行該語句后,流程控制轉(zhuǎn)移到下一個分支:繼續(xù)執(zhí)行這一個分支的語句,一至到最后一個語句執(zhí)行完當表達式的值與所有常量表達式的值不相等時,執(zhí)行default:后面的語句case后可包含多個可執(zhí)行語句,且不必加{}多個case可共用一組執(zhí)行語句switch可嵌套如:……case‘A’:case‘B’:case‘C’:printf(“score>60\n”);break;……..3.4.3switch…case語句switch(grade){case‘A’:printf(“85~100\n”);case‘B’:printf(“70~84\n”);case‘C’:printf(“60~69\n”);case‘D’:printf(“<60\n”);default:printf(“error\n”);}運行結(jié)果:若grade為A則輸出:85~10070~8460~69<60error3.4.3switch…case語句例:按照考試成績的等級打印出百分制分數(shù)段,可以用switch語句實現(xiàn)例:按照考試成績的等級打印出百分制分數(shù)段,可以用switch語句實現(xiàn)3.4.3switch…case語句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”);}運行結(jié)果:若grade為A則輸出:85~100運行結(jié)果:若grade為E則輸出:error例voidmain(){intx=1,y=0,a=0,b=0;switch(x){case1:switch(y){case0:a++;break;case1:b++;break;}case2:a++;b++;break;case3:a++;b++;}printf(“\na=%d,b=%d”,a,b);}運行結(jié)果:a=2,b=13.4.3switch…case語句例,根據(jù)輸入的學生百分制成績判斷等級并輸出。3.4.3switch…case語句score0——5960——6970——7980——8990——100score/10score/100,1,2,3,4,56789,10default使用switch解題的關(guān)鍵是通過分析找到表達式然后將問題分幾種情況3.4.3switch…case語句case4:case5:y='E';break;case6:y='D';break;case7:y='C';break;case8:y='B';break;case9:case10:y='A';break;default:y='';}if(y=='')printf("Scoreerror!");elseprintf("Grade=%c",y);}#include<stdio.h>main(){intx;chary;printf("\nx:");scanf("%d",&x);switch(x/10){case0:case1:case2:case3:3.4.3switch…case語句switch和else-if的比較else-if比switch的條件控制更強大一些else-if可以依照各種邏輯運算的結(jié)果進行流程控制switch只能進行==判斷,并且只能是整數(shù)判斷switch比else-if更清晰兩者都要盡量避免用得過多、過長,尤其不要嵌套得太多,它們大大增加程序的分支,使邏輯關(guān)系顯得混亂,不易維護,易出錯3.4.3switch…case語句C語言程序設(shè)計湖北民族學院信息工程學院張zhang_hbmy@當型循環(huán)結(jié)構(gòu)直到型循環(huán)結(jié)構(gòu)PA假真●●baAP假真b●●a循環(huán)結(jié)構(gòu)3.5循環(huán)結(jié)構(gòu)
C語言有while、do-while、和for語句三種循環(huán)結(jié)構(gòu)語句。前兩個稱為條件循環(huán),即根據(jù)條件來決定是否繼續(xù)循環(huán);后一個稱為計數(shù)循環(huán),即根據(jù)設(shè)定的執(zhí)行次數(shù)來執(zhí)行循環(huán)。3.5循環(huán)結(jié)構(gòu)一般形式:while(表達式)
循環(huán)體語句;執(zhí)行流程:表達式循環(huán)體假(0)真(非0)while3.5.1
while語句3.5循環(huán)結(jié)構(gòu)特點:先判斷表達式,后執(zhí)行循環(huán)體說明:如果表達式的值一開始就為0,則循環(huán)體一次也不執(zhí)行循環(huán)體可為任意類型語句循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句While語句特點和說明3.5循環(huán)結(jié)構(gòu)用while循環(huán)求1至100的和.3.5循環(huán)結(jié)構(gòu)解決“累加”類型問題基本方法:
兩個變量:累加和,當前項(1)先給累加和賦初值(一般為0);(2)用循環(huán)語句實現(xiàn)累加;(3)循環(huán)體語句的設(shè)計:累加和當前值=累加和原值+當前項;例:用while循環(huán)求1至100的和#include<stdio.h>main(){inti,sum=0;i=1;while(i<=100){sum=sum+i;i++;}printf("%d",sum);}循環(huán)初值循環(huán)終值循環(huán)變量增值循環(huán)條件循環(huán)體3.5循環(huán)結(jié)構(gòu)#include<stdio.h>main(){inti=1;while(i<=10){printf("%d*%d=%d\n",i,i,i*i);i++;}}運行結(jié)果:1*1=12*2=43*3=94*4=165*5=256*6=367*7=498*8=649*9=8110*10=100例輸出1~10的平方3.5循環(huán)結(jié)構(gòu)一般形式:do
循環(huán)體語句;
while(表達式);執(zhí)行流程:do循環(huán)體表達式假(0)真(非0)while3.5.2
do-while語句3.5循環(huán)結(jié)構(gòu)特點:先執(zhí)行循環(huán)體,后判斷表達式說明:至少執(zhí)行一次循環(huán)體do~while可轉(zhuǎn)化成while結(jié)構(gòu)表達式循環(huán)體假(0)真(非0)循環(huán)體While循環(huán)do~while語句特點和說明3.5循環(huán)結(jié)構(gòu)例:用do-while循環(huán)求1至100的和。#include<stdio.h>main(){inti,sum=0;i=1;
do{sum=sum+i;i++;}while(i<=100)printf("%d",sum);}#include<stdio.h>main(){inti,sum=0;i=1;
while(i<=100){sum=sum+i;i++;}printf("%d",sum);}
運行結(jié)果:5050
運行結(jié)果:50503.5循環(huán)結(jié)構(gòu)一般形式:for([表達式1];[
表達式2];[
表達式3])
循環(huán)體語句;執(zhí)行流程:3.5.3
for語句表達式2循環(huán)體假(0)真(非0)for表達式1表達式33.5循環(huán)結(jié)構(gòu)for語句一般應(yīng)用形式:for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值){
循環(huán)體語句;}例:用for循環(huán)求1至100的和。#include<stdio.h>main(){inti,sum=0;for(i=1;i<=100;i++)sum=sum+i;printf("%d",sum);}3.5循環(huán)結(jié)構(gòu)for語句中表達式1;表達式2
;表達式3
類型任意,都可省略,但分號;不可省。(1)省略了“表達式1(循環(huán)變量賦初值)”,表示不對循環(huán)控制變量賦初值(2)省略了“表達式2(循環(huán)條件)”,則不做其它處理時便成為死循環(huán)(3)省略了“表達式3(循環(huán)變量增量)”,則不對循環(huán)控制變量進行操作,這時可在語句體中加入修改循環(huán)控制變量的語句for語句說明3.5循環(huán)結(jié)構(gòu)逗號表達式
逗號運算符的主要應(yīng)用就在for語句中。for語句中的表達式1和表達式3可以是逗號表達式,特別是有兩個循環(huán)變量參與對循環(huán)的控制時。表達式1和表達式3為逗號表達式,將使程序顯得非常清晰。
例:for(i=1,j=10;i<=j;i++,j--)3.5循環(huán)結(jié)構(gòu)例:求1/100+2/99+…+50/51floats=0.0;for(i=1,j=100;i<j;i++,j--)s=s+i/j;3.5循環(huán)結(jié)構(gòu)選擇三種循環(huán)的一般思路:如果循環(huán)次數(shù)已知,用for如果循環(huán)次數(shù)未知,用while如果循環(huán)體至少要執(zhí)行一次,用do-while只是思路,不是定律3.5循環(huán)結(jié)構(gòu)在一個循環(huán)結(jié)構(gòu)中又嵌入另一個或幾個完整的循環(huán)結(jié)構(gòu),稱為循環(huán)的嵌套。嵌套在內(nèi)的循環(huán)體稱為
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 搞笑結(jié)婚協(xié)議書合同圖片
- 貴州國考筆試試題及答案
- 合同作廢補償協(xié)議書模板
- 旅游公司合同協(xié)議書
- 數(shù)字文化產(chǎn)業(yè)商業(yè)模式創(chuàng)新:2025年數(shù)字影視與新媒體營銷策略研究報告
- 地皮轉(zhuǎn)讓定金合同協(xié)議書
- 2025年電子產(chǎn)品租賃合同樣本
- 2025二手汽車買賣合同2
- 2025合作合同范本:兩人合伙協(xié)議書模板
- 2025年直播電商主播影響力與品牌忠誠度營銷策略研究報告
- 2024年廣東省廣州市越秀區(qū)中考二模數(shù)學試題(含答案)
- 2025屆各地名校4月上旬高三語文聯(lián)考作文題目及范文12篇匯編
- 【9語一模】2025年4月天津市和平區(qū)九年級中考一模語文試卷(含答案)
- 骨科科室工作總結(jié)匯報
- 青少年網(wǎng)絡(luò)安全知識講座
- 2025年高考物理大題突破+限時集訓(含解析)
- 三基中醫(yī)培訓試題及答案
- GB 28050-2025食品安全國家標準預包裝食品營養(yǎng)標簽通則
- 河北省石家莊市2025屆普通高中畢業(yè)年級教學質(zhì)量檢測(二)數(shù)學試卷(含答案)
- 成人重癥患者顱內(nèi)壓增高防控護理專家共識(2024版)解讀課件
- 防機械傷害培訓課件
評論
0/150
提交評論