




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第3章C語言的基本控制結(jié)構(gòu)學習目的與要求:掌握C語言的格式輸入與輸出函數(shù)scanf和printf。熟練掌握選擇結(jié)構(gòu)的使用方法熟練掌握三種循環(huán)結(jié)構(gòu)的使用方法根據(jù)給定的問題,給出相應(yīng)的解決方法基本內(nèi)容選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)本章小結(jié)順序結(jié)構(gòu)順序結(jié)構(gòu)是選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)的基礎(chǔ)。C順序結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計中最簡單和最常用的結(jié)構(gòu)。順序結(jié)構(gòu)要求按照各語句的書寫順序一條一條地執(zhí)行。C語句一個C函數(shù)包含聲明部分和執(zhí)行部分,執(zhí)行部分是由語句組成的,語句的作用是向計算機系統(tǒng)發(fā)出操作指令,要求執(zhí)行相應(yīng)的操作。C語言中的語句主要有控制語句、表達式語句、空語句、復合語句、函數(shù)調(diào)用語句等C語句——控制語句
用于完成一定的控制功能。C語言有以下9種控制語句:①if()…else… (條件語句)②for()… (循環(huán)語句)③while()… (循環(huán)語句)④do…while() (循環(huán)語句)⑤break (中斷switch或循環(huán)語句)⑥continue (結(jié)束當前循環(huán)語句)⑦switch (多分支選擇語句)⑧return (返回語句)⑨goto (轉(zhuǎn)向語句)C語句——表達式語句表達式是通過運算符號連接操作數(shù)得到的式子,表達式可以是算術(shù)運算表達式、關(guān)系運算表達式、邏輯運算表達式、賦值表達式等。一個表達式加上分號就構(gòu)成表達式語句。例如:x=1;a=3*b-c/4;++i;c=a>b?a:b;都是合法的表達式語句。C語句——空語句空語句??照Z句是只由一個分號“;”構(gòu)成的語句。空語句不執(zhí)行任何操作,通常與while和for語句一起使用,作為循環(huán)語句的循環(huán)體(循環(huán)體什么也不執(zhí)行)例如:while((c=getchar())=='');
C語句——復合句用大括號“{}”將多條語句括起來得到的語句,又稱為分程序。復合語句通常用于條件分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu)中。例如:if(x>y){temp=x;x=y;y=temp;}C語句——函數(shù)調(diào)用句在函數(shù)調(diào)用之后加上分號形成的命令語句。例如:調(diào)用輸出函數(shù)printf("a=%d\n",a);數(shù)據(jù)的輸入輸出C語言沒有提供專門的輸入輸出語句,所有輸入和輸出的操作都是由函數(shù)調(diào)用來實現(xiàn)的。在C語言的函數(shù)庫中提供了用來進行輸入輸出的函數(shù),這些函數(shù)被稱為“標準輸入輸出函數(shù)”。它是以標準的計算機輸入輸出設(shè)備(一般為終端設(shè)備)作為輸入輸出對象的。數(shù)據(jù)的輸入輸出C語言提供的所有函數(shù)都是存放在C語言的函數(shù)庫中,要使用這些函數(shù)時,需要通過預編譯命令#include將以“.h”為擴展名的相應(yīng)庫文件包含到源文件中。例如,如果要使用標準輸入輸出函數(shù),需要在源文件的開頭包含如下命令:
#include<stdio.h>
或
#include"stdio.h"
字符輸出函數(shù)putchar若從計算機向顯示器輸出一個字符,可以調(diào)用系統(tǒng)函數(shù)庫中的putchar函數(shù)。函數(shù)的一般形式為:putchar(ch)功能:將參數(shù)ch的值以字符類型輸出到系統(tǒng)的標準輸出設(shè)備(通常是顯示器),如果函數(shù)調(diào)用成功,則返回參數(shù)字符。putchar函數(shù)應(yīng)用舉例編寫程序用putchar函數(shù)輸出字符串“China”。#include<stdio.h>intmain(){charch1='C',ch2='h',ch3='i';putchar(ch1);putchar(ch2);putchar(ch3);putchar('n');putchar(97);putchar('\n');return0;}putchar(ch)函數(shù)中的ch可以是字符常量、字符變量、字符允許范圍內(nèi)的整數(shù)以及表達式。字符輸入函數(shù)getchar向計算機輸入一個字符,可以調(diào)用系統(tǒng)函數(shù)庫中的getchar函數(shù)。函數(shù)的一般形式為:getchar()功能:獲得用戶從系統(tǒng)的標準輸入設(shè)備(通常是鍵盤)輸入的一個字符,并返回該字符的ASCII碼。getchar函數(shù)應(yīng)用舉例接收用戶輸入的字符串,并將其打印出來。#include<stdio.h>intmain(){charch1,ch2,ch3,ch4,ch5;printf("輸入一個字符串:\n");ch1=getchar();ch2=getchar();ch3=getchar();ch4=getchar();ch5=getchar();putchar(ch1);putchar(ch2);putchar(ch3);putchar(ch4);putchar(ch5);putchar('\n');return0;}getchar函數(shù)是一個無參函數(shù),若要獲得該函數(shù)的值,需賦給一個字符變量或整型變量。格式輸出函數(shù)printfC語言提供的printf函數(shù)可以用參數(shù)設(shè)置格式化輸出,并將結(jié)果顯示到標準輸出設(shè)備上。printf函數(shù)的一般形式為:printf(格式控制字符串,輸出對象列表)例如:printf(“a=%d,b=%d\n",a,b);格式輸出函數(shù)printfprintf(格式控制字符串,輸出對象列表)格式控制字符串普通字符:原樣輸出格式說明:%+格式控制符轉(zhuǎn)義字符其它符號:修飾符,改變輸出形式“輸出對象列表”指定需要輸出的數(shù)據(jù),可以是常量、變量、表達式或函數(shù)調(diào)用。對象列表中可以有多個表達式,多個表達式之間用逗號分隔。printf函數(shù)的一般形式可以表示為:printf(參數(shù)1,參數(shù)2,參數(shù)3,…,參數(shù)n)printf函數(shù)中的格式字符含義格式字符d,iox或Xucsfe或Eg或G按整型數(shù)據(jù)的實際長度輸出帶符號的十進制整數(shù)以八進制形式輸出無符號整數(shù)(無前導0)以十六進制形式輸出無符號整數(shù)(無前導0x)以十進制形式輸出unsigned型數(shù)據(jù)將參數(shù)轉(zhuǎn)換為一個字符輸出輸出一個字符串,直到遇到‘\0’為止以小數(shù)形式輸出單、雙精度的實數(shù)以指數(shù)形式輸出實數(shù)用來輸出實數(shù),根據(jù)數(shù)值的大小,自動選f格式或e格式(選擇輸出占寬度較小的一種),不輸出無意義的零printf函數(shù)中的修飾符含義附加字符lhm.n(m、n表示正整數(shù))-輸出long型數(shù)據(jù)輸出短整型數(shù)據(jù)m表示數(shù)據(jù)最小寬度,對于實數(shù),n表示小數(shù)位數(shù),對于字符串,n表示截取的字符個數(shù)輸出的數(shù)字或字符在域內(nèi)左對齊printf函數(shù)應(yīng)用舉例#include<stdio.h>intmain(){shorta=2,c=-6,d=32768;unsignedshortm=65535;intb=32768;floatf=29.3683;doublex=1.583,y=0.992;charch='B';printf("a=%hd,a=%4hd\n",a,a);printf("b=%d,b=%-10d,b=%4d\n",b,b,b);printf("c=%hd,c=%ho,c=%hx,c=%hu\n",c,c,c,c);printf("d=%hd,d=%ho,d=%hx,d=%hu\n",d,d,d,d);printf("m=%hd,m=%ho,m=%hx,m=%hu\n",m,m,m,m);printf函數(shù)應(yīng)用舉例printf("f=%f,f=%6.2f,f=%6f,f=%d\n",f,f,f,f);printf("ch=%c,ch=%d\n",ch,ch);printf("\n%6.2f",x);printf("\n+%5.2f",y);printf("\n-------");printf("\n%6.2f\n",x+y);return0;}注意:printf函數(shù)中參數(shù)列表中的對象必須與格式控制命令的個數(shù)和類型一一對應(yīng),兩者如果不匹配則無法輸出正確結(jié)果。格式輸入函數(shù)scanfscanf函數(shù)的功能是在程序運行過程中接收用戶輸入的數(shù)據(jù),并將其賦值給已經(jīng)定義的變量。scanf函數(shù)的一般形式為:scanf(格式控制字符串,變量地址列表)例如:intvar;scanf("%d",&var);scanf函數(shù)中的格式字符f含義格式字符doxcs輸入十進制整數(shù)輸入八進制整數(shù)輸入十六進制整數(shù)輸入單個字符,接收空白字符輸入字符串輸入浮點數(shù),轉(zhuǎn)換字符e和f同義。輸入的數(shù)值可以含有正負號、小數(shù)點和包含e或E的指數(shù)部分。scanf函數(shù)中的修飾符用于輸入長整型數(shù)據(jù)(如%ld或%lo)或雙精度浮點數(shù)據(jù)(如%lf或%le)用于輸入短整型數(shù)據(jù)(如%hd、%ho或%hx)含義附加字符lhm*用于指定輸入數(shù)據(jù)所占列數(shù),m必須為一個正整數(shù)用于說明跳過該輸入值scanf函數(shù)應(yīng)用舉例用scanf函數(shù)輸入數(shù)據(jù)。#include<stdio.h>intmain(){inta,b,x,y;floatf;charch1,ch2,ch3;printf("輸入數(shù)據(jù):\n");scanf("a=%d,b=%d",&a,&b);scanf("%d%d",&x,&y);scanf("%f%c%c%c",&f,&ch1,&ch2,&ch3);printf("a=%d,b=%d\n",a,b);printf("x=%d,y=%d\n",x,y);printf("f=%.2f,ch1=%c,ch2=%c,ch3=%c\n",f,ch1,ch2,ch3);return0;}scanf函數(shù)使用說明“變量地址列表”中的各變量名前必須加上“&”符號。如果“格式控制字符串”中除了格式聲明外還有其它字符,則在輸入時在對應(yīng)位置上應(yīng)輸入與這些字符相同的字符。例如:scanf(“%d%d”,&x,&y);√scanf("%d%d",x,y);×例如:scanf("a=%d,b=%d",&a,&b);輸入時應(yīng)按照下面的格式進行輸入:a=5,b=9scanf函數(shù)使用說明若scanf函數(shù)中有不同類型的數(shù)據(jù)輸入時,要注意數(shù)據(jù)的輸入格式。若輸入項是數(shù)值型數(shù)據(jù),各輸入項之間可以使用空格、制表符(Tab)和回車隔開。例如:scanf("%d%d",&x,&y);下面的輸入格式都是正確的5□9↙(□表示空格,↙表示回車)5 9↙(中間使用制表符)5↙9↙例如:scanf("%f%c%c%c",&f,&ch1,&ch2,&ch3);若輸入12.5□A□B□C,則ch1、ch2和ch3的值分別是“□”,“A”和“□”若輸入項中包含字符型數(shù)據(jù),空格和回車等都作為有效字符。輸入時一定要注意,否則得不到正確的結(jié)果。順序結(jié)構(gòu)程序舉例輸入三角形的三條邊,編寫程序求三角形的面積(保留2位小數(shù))。#include<stdio.h>#include<math.h>intmain(){floata,b,c,s,area;printf("請輸入三角形的三條邊:\n");scanf("%f%f%f",&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf("三角形的面積:area=%.2f\n",area);//保留兩位小數(shù)return0; }基本內(nèi)容選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)本章小結(jié)選擇結(jié)構(gòu)選擇結(jié)構(gòu)用于根據(jù)條件的成立與否選擇下一步要執(zhí)行的動作,可以從兩種或多種候選動作中選擇一種執(zhí)行。C語言中的選擇語句可以根據(jù)表達式的值選擇要執(zhí)行的分支語句,從而實現(xiàn)流程控制。C語言中,提供兩種選擇語句實現(xiàn)流程的控制:if語句——單分支選擇,也可以通過一系列嵌套的if-else語句實現(xiàn)多分支選擇。switch語句——多分支選擇,其中表達式的值與一組常量比較。簡單if語句簡單if語句的一般形式為:if(表達式)
語句段例如:if(x>y) printf("x>y");if語句括號中的表達式一般是關(guān)系表達式或邏輯表達式,也可以是其它表達式。簡單if語句舉例通過鍵盤輸入三個整數(shù)a、b、c,按從小到大的順序輸出這三個整數(shù)。#include<stdio.h>intmain(){inta,b,c,temp;printf("請輸入三個整數(shù):\n");scanf("%d%d%d",&a,&b,&c);if(a>b){temp=a;a=b;b=temp;}if(a>c){temp=a;a=c;c=temp; }if(b>c){temp=b;b=c;c=temp;}printf("三個整數(shù)按從小到大的排序結(jié)果為:\n");printf("%5d%5d%5d\n",a,b,c);return0;}if-else語句if-else語句的一般形式為:if(表達式)
語句段1else
語句段2例如:if(x>y) printf("x>y");
else printf("x<=y");if-else語句舉例求兩個數(shù)值之間的最小值。#include<stdio.h>{inta,b;intmin1,min2;printf("請輸入兩個整數(shù)值:");scanf("%d%d",&a,&b);if(a>b)//用if語句得到最小值min1=b;elsemin1=a;min2=(a>b)?b:a;//用條件運算得到最小值printf("if語句求出的a、b中的最小值為:%d\n",min1);printf("條件表達式求出的a、b中的最小值為:%d\n",min2);return0;}
if語句的嵌套在if-else語句中可以執(zhí)行一條語句,也可以包含任何有效的C語言語句塊,當該語句塊又是一個if-else語句時,則形成了if-else語句的嵌套。使用嵌套的if-else語句可以實現(xiàn)按照不同條件選擇兩個以上的分支流程。if語句的嵌套舉例從鍵盤輸入一個x的值,編寫程序計算下列函數(shù)的值。#include<stdio.h>{intx,y;printf("請輸入x的值:");scanf("%d",&x);if(x>=0)if(x>0)y=-1+3*x;elsey=-1;elsey=-1+2*x;printf("函數(shù)值y=%d\n",y);return0;}if語句的嵌套說明else總是與if成對出現(xiàn)??梢詥为毷褂胕f語句,但是不能單獨使用else語句。else總是與它上面最近的未配對的if匹配。例如:y=-1+2*x;if(x!=0)if(x>0)y=-1+3*x;elsey=-1;printf,scanf函數(shù)的使用;putchar,getchar函數(shù);%的應(yīng)用if-elseprintf函數(shù)應(yīng)用舉例#include<stdio.h>intmain(){shorta=2,c=-6,d=32768;unsignedshortm=65535;intb=32768;floatf=29.3683;doublex=1.583,y=0.992;charch='B';printf("a=%hd,a=%4hd\n",a,a);printf("b=%d,b=%-10d,b=%4d\n",b,b,b);printf("c=%hd,c=%ho,c=%hx,c=%hu\n",c,c,c,c);printf("d=%hd,d=%ho,d=%hx,d=%hu\n",d,d,d,d);printf("m=%hd,m=%ho,m=%hx,m=%hu\n",m,m,m,m);printf函數(shù)應(yīng)用舉例printf("f=%f,f=%6.2f,f=%6f,f=%d\n",f,f,f,f);printf("ch=%c,ch=%d\n",ch,ch);printf("\n%6.2f",x);printf("\n+%5.2f",y);printf("\n-------");printf("\n%6.2f\n",x+y);return0;}注意:printf函數(shù)中參數(shù)列表中的對象必須與格式控制命令的個數(shù)和類型一一對應(yīng),兩者如果不匹配則無法輸出正確結(jié)果。if語句的嵌套說明常用的if-else語句嵌套,其嵌套的一般形式是:if(表達式1)語句段1elseif(表達式2)語句段2elseif(表達式3)語句段3…elseif(表達式n)語句段nelse語句段n+1這種嵌套形式又稱作else~if結(jié)構(gòu)。else~if結(jié)構(gòu)舉例編寫程序判定學生成績,實現(xiàn)從鍵盤輸入一個百分制的成績,輸出相應(yīng)的等級:優(yōu)(90≤score≤100)、良(80≤score<90)、中等(70≤score<80)、及格(60≤score<70)、差(score<60)。#include<stdio.h>{intscore;printf("請輸入學生的成績:");scanf("%d",&score);if(score<0||score>100)printf("輸入的成績非法\n");elseif(score<60)printf("該學生的成績類別為:差\n");else~if結(jié)構(gòu)舉例elseif(score<70)printf("該學生的成績類別為:及格\n");elseif(score<80)printf("該學生的成績類別為:中等\n");elseif(score<90)printf("該學生的成績類別為:良\n");elseprintf("該學生的成績類別為:優(yōu)\n");return0;}多分支選擇結(jié)構(gòu)——switch語句switch語句又稱為開關(guān)語句,是C語言提供的專門用于處理多分支結(jié)構(gòu)的條件選擇語句。switch語句的一般形式:switch(表達式){ case常量表達式1:語句段1[break;] case常量表達式2:語句段2[break;] … case常量表達式n:語句段n[break;] [default:語句段n+1]}switch語句的執(zhí)行過程計算表達式的值若表達式的值等于某個case后常量表達式的值,則程序控制轉(zhuǎn)向該case后面的語句。若沒有與表達式值相同的值,則執(zhí)行default后面的語句。switch語句說明switch后面的表達式類型只能是整型、字符型或枚舉型。case后面的常量表達式必須是與表達式相對應(yīng)的整型、字符型或枚舉型常量,不能是變量和表達式,并且case和常量表達式之間要有空格。每一個case后面的常量表達式的值必須互不相同,否則會出現(xiàn)互相矛盾的現(xiàn)象。語句段可以是簡單語句也可以是復合語句,且大括號可以省略。switch語句說明如果表達式的值與所有常量表達式的值都不匹配,就執(zhí)行default后面的語句。如果沒有default,則流程轉(zhuǎn)到switch語句的下一個語句。case和default可以出現(xiàn)在任何位置,其前后次序不影響執(zhí)行結(jié)果。若語句段中break語句,執(zhí)行完此語句段后,終止switch的執(zhí)行。否則,流程控制轉(zhuǎn)到下一個case(包括default)中的語句繼續(xù)執(zhí)行。case提供了執(zhí)行某一語句段的入口,起著標號的作用;多個case可以執(zhí)行同一語句段。switch語句應(yīng)用舉例編寫程序判定學生成績,實現(xiàn)從鍵盤輸入一個百分制的成績,輸出相應(yīng)的等級:優(yōu)(90≤score≤100)、良(80≤score<90)、中等(70≤score<80)、及格(60≤score<70)、差(score<60)。#include<stdio.h>{intscore;printf("請輸入學生的成績:");scanf("%d",&score);if(score<0||score>100){printf("輸入的不是一個合理百分成績\n");return0;}switch(score/10){switch語句應(yīng)用舉例case0:case1:case2:case3:case4:case5:printf("學生成績?yōu)椋翰頫n");break;case6:printf("學生成績?yōu)椋杭案馶n");break;case7:printf("學生成績?yōu)椋褐械萛n");break;case8:printf("學生成績?yōu)椋毫糪n");break;case9:case10:printf("學生成績?yōu)椋簝?yōu)\n");break;}return0;}選擇結(jié)構(gòu)應(yīng)用舉例輸入一個年份,判斷該年是否為閏年。#include<stdio.h>{intyear,leap;printf("請輸入年份:");scanf("%d",&year);if(year%4==0)//能被4整除{if(year%100==0){if(year%400==0)leap=1;//能被400整除elseleap=0;//能被100整除,不能被400整除}選擇結(jié)構(gòu)應(yīng)用舉例elseleap=1;//能被4整除,不能被100整除}elseleap=0;//不能被4整除if(leap)printf("%d年是閏年\n",year);elseprintf("%d年不是閏年\n",year);return0;}
判斷閏年的條件是:year能被400整除或者year能被4整除,但不能被100整除,就是閏年,則可通過邏輯運算將條件組合判斷,程序修改如下:選擇結(jié)構(gòu)應(yīng)用舉例#include<stdio.h>{intyear,leap;printf("請輸入年份:");scanf("%d",&year);
if(year%4==0&&year%100!=0||year%400==0)printf("%d年是閏年\n",year);elseprintf("%d年不是閏年\n",year);return0;}選擇結(jié)構(gòu)應(yīng)用舉例編寫程序,實現(xiàn)四則運算的簡單計算器功能。#include<stdio.h>{floata,b;charoper;//定義操作符printf("輸入a、運算符和b:\n");scanf("%f%c%f",&a,&oper,&b);printf("運行結(jié)果為:\n");printf("%.2f%c%.2f=",a,oper,b);switch(oper){case'+':printf("%.2f\n",a+b);break;case'-':printf("%.2f\n",a-b);break;case'*':printf("%.2f\n",a*b);break;case'/':printf("%.2f\n",a/b);break;}return0;}基本內(nèi)容選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)本章小結(jié)循環(huán)結(jié)構(gòu)在解決實際問題時,程序中除了使用前面介紹的輸入、輸出和分支選擇語句外,還需要重復執(zhí)行相同的某些操作,C語言提供了三種循環(huán)語句:while語句、do-while語句和for語句。構(gòu)成循環(huán)的基本要素循環(huán)控制表達式及循環(huán)控制變量循環(huán)體語句初始條件設(shè)置語句循環(huán)變量修改語句while語句while循環(huán)也稱為當型循環(huán),當型循環(huán)的特點是“先判斷再執(zhí)行”,即首先判斷循環(huán)控制表達式,當循環(huán)控制表達式為真時,程序控制流執(zhí)行循環(huán)體語句,直到循環(huán)條件不成立為止。while語句的一般形式是:while(表達式)語句while語句應(yīng)用舉例輸入兩個整數(shù),采用“輾轉(zhuǎn)相除法”求這兩個數(shù)的最大公約數(shù)。#include<stdio.h>{intm,m1,n,n1,r;printf("請輸入兩個正整數(shù)m和n:\n");scanf("%d%d",&m,&n);m1=m;n1=n;//保留m和n的值r=m%n;while(r!=0){m=n;n=r;r=m%n;}printf("正整數(shù)%d和%d的最大公約數(shù)是:%d\n",m1,n1,n);return0;}do~while語句do~while循環(huán)也稱為直到型循環(huán),直到型循環(huán)的特點是“先執(zhí)行,后判斷”。即先執(zhí)行循環(huán)體,再判斷循環(huán)條件是否成立,如果循環(huán)條件為真則繼續(xù)執(zhí)行循環(huán)體,直到循環(huán)條件變?yōu)榧?。do~while語句的一般形式是:do{語句}while(表達式);do~while語句應(yīng)用舉例用公式求π的近似值,直到最后一項的絕對值小于10-6為止。#include<stdio.h>#include<math.h>{intsign=1;floatn,term,pi;pi=0;term=1;n=1;//變量賦初值do{pi+=term;n=n+2;sign=-sign;term=sign/n;}while(fabs(term)>=1e-6);pi*=4;printf("pi=%f\n",pi);return0;}for語句C語言提供的for循環(huán)語句使用很靈活,既可以用于已知循環(huán)次數(shù)的情況,也可以用于循環(huán)次數(shù)不確定而只有循環(huán)結(jié)束條件的情況,可以代替while和do~while循環(huán)。for語句的一般形式是:for(表達式1;表達式2;表達式3) 語句for語句執(zhí)行流程(1)計算<表達式1>的值。(2)計算<表達式2>的值,若為真(非0),則執(zhí)行循環(huán)體,然后轉(zhuǎn)向第(3)步。若為假(0)則轉(zhuǎn)向第(5)步。(3)執(zhí)行循環(huán)體(4)計算<表達式3>的值,然后轉(zhuǎn)向第(2)步。(5)結(jié)束循環(huán),執(zhí)行for循環(huán)后的語句。for(表達式1;表達式2;表達式3) 語句for語句應(yīng)用舉例利用for語句求1~100之間的和。#include<stdio.h>{inti,sum=0;for(i=1;i<=100;i++)sum+=i;printf("sum=%d\n",sum);return0;}for語句最容易理解、最常用的形式是:
for(循環(huán)變量賦初值;循環(huán)條件;循環(huán)變量增值)循環(huán)體順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)main(){ intnum=0; while(num<=2) { num++;printf(“%d\n”,num); }}main(){ inti,m=1; for(i=5;i>=1;i--) { m=(m+1)*2; printf(“m=%d\n”,m); }}for語句使用說明可以將for語句的形式改寫成while語句的形式。for語句中的表達式1、表達式2、表達式3每一個都可以省略,甚至三個表達式都可以同時省略,但是起分隔作用的“;”不能省略。for(;;)printf("%d\n",i);等價于:while(1)printf("%d\n",i);for(表達式1;表達式2;表達式3)語句改成while語句:表達式1;while(表達式2){語句表達式3;}for(i=1;i<=100;i++)sum+=i;改成while語句:i=1;while(i<=100){sum+=i;i++3;}如果省略表達式1,表示不在for語句中給循環(huán)變量賦初值,為了能正常執(zhí)行循環(huán),應(yīng)在for語句前給循環(huán)變量賦初值。例如:fac=1.0;i=1;for(;i<=n;i++) fac=fac*i;例如:for(i=1,fac=1.0;;i++)//省略表達式2{ fac=fac*i; if(i==n) break;//終止循環(huán)}for語句使用說明如果省略表達式2,即不存在判斷循環(huán)終止的條件,也就是認為表達式2恒為“真”,此時的循環(huán)是“死循環(huán)”。若要終止循環(huán),應(yīng)在循環(huán)體中設(shè)置終止循環(huán)的機制。如果省略表達式3,即不在此位置進行循環(huán)變量的修改,則應(yīng)在其它位置(如循環(huán)體中)設(shè)置使循環(huán)趨于結(jié)束的操作。如果省略了表達式1和表達式3,只給出表達式2,則表達式1和表達式3的值應(yīng)在相應(yīng)的位置進行賦值。例如:for(i=1,fac=1.0;i<=n;){fac=fac*i;i++;//此處改變循環(huán)變量的值}表達式2一般是關(guān)系表達式或邏輯表達式,也可以是數(shù)值表達式或字符表達式,只要其值非0,就執(zhí)行循環(huán)體。例如:for(sum=0;i<=100;i++)sum+=i;再例:for(i=1,fac=1.0;i<=n;fac*=i,i++);例如:
for(i=0;(ch=getchar())!='\n';i+=c);for語句使用說明表達式1可以是與循環(huán)變量無關(guān)的其它表達式;表達式3也可以是與修改循環(huán)變量無關(guān)的表達式。并且表達式1和表達式3可以是簡單表達式,也可以是逗號表達式。循環(huán)嵌套一個循環(huán)語句的循環(huán)體內(nèi)如果包含另一個完整的循環(huán),這種循環(huán)之間的層次關(guān)系就構(gòu)成了循環(huán)的嵌套。內(nèi)嵌循環(huán)的循環(huán)體中還可以再嵌套循環(huán),由此可以構(gòu)成多層循環(huán)。C語言提供的三種循環(huán)語句之間可以實現(xiàn)相互嵌套。編寫程序,以三角的形式打印九九乘法表。#include<stdio.h>intmain(){inti,j;for(i=1;i<10;i++){for(j=1;j<=i;j++)printf("%d*%d=%d\t",j,i,i*j);printf("\n");}return0;}循環(huán)嵌套舉例循環(huán)嵌套循環(huán)嵌套說明理論上循環(huán)嵌套的深度不受限制,但在實際應(yīng)用中不提倡使用嵌套層次太多的循環(huán)結(jié)構(gòu)。使用嵌套結(jié)構(gòu)時,要注意嵌套不能交叉。嵌套的內(nèi)外層循環(huán)不能使用同名的循環(huán)變量,而并列結(jié)構(gòu)的循環(huán)允許使用同名的循環(huán)變量。break和continue語句C語言提供break和continue語句用于中斷正常的控制流。break語句強制從switch語句和循環(huán)語句中退出。而continue語句是強制結(jié)束本次循環(huán),開始下一次循環(huán)。在循環(huán)中break語句通常和if條件語句搭配使用,用于檢測當某個條件成立時跳出循環(huán)。而continue語句和if條件語句配合使用,判斷是否退出循環(huán)的當前迭代。break和continue語句說明break語句只能用于switch語句和循環(huán)語句。而continue語句只能用于循環(huán)語句break語句只能用于循環(huán)體內(nèi),不能用于循環(huán)表達式內(nèi)。break語句只能跳出一層循環(huán),即當前的循環(huán)。continue和break語句的區(qū)別:break語句是中斷所在的整個循環(huán),把控制轉(zhuǎn)移到緊隨循環(huán)之后的語句,而continue語句并沒有使整個循環(huán)終止,只是終止了循環(huán)的當前迭代。break語句應(yīng)用舉例隨機產(chǎn)生兩個兩位數(shù),進行加法測試,由用戶回答,直到回答正確為止。#include<stdio.h>#include<stdlib.h>#include<time.h>intmain(){inta,b,result,answer;srand(time(0));//利用系統(tǒng)時間產(chǎn)生一個隨機數(shù)種子a=rand()%89+10;//產(chǎn)生10到99之間的隨機整數(shù)b=rand()%89+10;result=a+b;break語句應(yīng)用舉例while(1){scanf("%d",&answer);if(answer==result){printf("回答正確\n");printf("%d+%d=",a,b);break;}elseprintf("回答錯誤,請重新計算。
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 風險管理在全球化企業(yè)戰(zhàn)略面對的挑戰(zhàn)試題及答案
- 風險管理的動態(tài)調(diào)整策略試題及答案
- 2025年軟考網(wǎng)絡(luò)管理員挑戰(zhàn)應(yīng)對試題及答案
- 人力資本與戰(zhàn)略發(fā)展的關(guān)系試題及答案
- 四川省遂寧市大英縣2025屆數(shù)學七下期末綜合測試模擬試題含解析
- 2025至2030年中國一次性冷杯行業(yè)投資前景及策略咨詢研究報告
- 2025年軟考戰(zhàn)略性復習的試題及答案
- 2025年中國鋁儲液器市場調(diào)查研究報告
- 2025年中國螺栓擰緊機市場調(diào)查研究報告
- 風疹防控培訓試題及答案
- 12J3-3蒸壓加氣混凝土砌塊墻
- 2023年版《安寧療護實踐指南(試行)》解讀課件
- 7《玩磁鐵》(教學設(shè)計)-一年級上冊科學青島版
- 2024建筑工程施工承包人工費合同書
- 四川省成都市2024年七年級下學期期末數(shù)學試題附答案
- 思辨與創(chuàng)新智慧樹知到期末考試答案章節(jié)答案2024年復旦大學
- 2024年湖北水利發(fā)展集團有限公司招聘筆試沖刺題(帶答案解析)
- MOOC 算法設(shè)計與分析-武漢理工大學 中國大學慕課答案
- 2024春期國開電大思政課《中國近現(xiàn)代史綱要》在線形考(專題檢測一至八)試題及答案
- (正式版)JBT 9229-2024 剪叉式升降工作平臺
- 2024貓砂行業(yè)調(diào)研報告(比億奇、LORDE)-解數(shù)咨詢
評論
0/150
提交評論