版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
誰做的好事。四人中只有一人做了好事,有下面一段對話,有三個人說了真話,判斷是誰做的好事:A:不是我;B:是C;C:是D;D:他胡說。
5.1關(guān)系運算符和關(guān)系表達(dá)式1.關(guān)系運算符及其優(yōu)先次序<(小于)<=(小于或等于)>(大于)>=(大于或等于)==(等于)!=(不等于)優(yōu)先級相同(高)優(yōu)先級相同(低)[例]c>a+bc>(a+b)a>b!=c(a>b)!=ca==b<ca==(b<c)a=b>ca=(b>c)
關(guān)系運算注意:例假設(shè)a=0;b=0.5;x=0.3;那么a<=x<=b的值為例5>2>7>8在C++中是允許的,值為例‘a(chǎn)’>0結(jié)果為‘A’>100結(jié)果為5.1關(guān)系運算符和關(guān)系表達(dá)式邏輯運算符運算運算符表達(dá)式邏輯“與”&&operand1&&operand2邏輯“或”||operand1||operand2邏輯“非”!!operand1邏輯運算符用于連接一個或多個條件,判斷這些條件是否成立邏輯運算符的類型為:5.2邏輯運算符和邏輯表達(dá)式邏輯運算符總結(jié)所有學(xué)科及格考勤率達(dá)到75%&&天氣NOT陰天只有當(dāng)兩個條件都為真時才執(zhí)行操作只要任何一個條件為真時就執(zhí)行操作對原條件取反,即:如果原條件為假時就執(zhí)行操作||!〔2〕運算規(guī)那么1〕&&:當(dāng)且僅當(dāng)兩個運算量的值都為“真”時,運算結(jié)果為“真”,否那么為“假”?!踩婕日妗?〕||:當(dāng)且僅當(dāng)兩個運算量的值都為“假”時,運算結(jié)果為“假”,否那么為“真”?!惨徽婕日妗?〕!:當(dāng)運算量的值為“真”時,運算結(jié)果為“假”;當(dāng)運算量的值為“假”時,運算結(jié)果為“真”?!踩》础?.2邏輯運算符和邏輯表達(dá)式1.邏輯運算符及運算規(guī)那么ab!a!ba&&ba||b真假真假假假真真真假假假假假真真假假真真真假真真例如,假定x=5,那么(x>=0)&&(x<10)的值(x<-1)||(x>5)的值
5.2邏輯運算符和邏輯表達(dá)式2.邏輯表達(dá)式用邏輯運算符將關(guān)系表達(dá)式或邏輯量連接起來的式子邏輯表達(dá)式的值應(yīng)該是一個邏輯量“真”或“假”。例:設(shè)a=4,b=5:!a的值為0a&&b的值為1a||b的值為1!a||b的值為14&&0||2的值為1任何非零的數(shù)值被認(rèn)作“真”5.2邏輯運算符和邏輯表達(dá)式例:5>3&&8<4-!0
自左向右運算
1&&0邏輯值為08<3邏輯值為04-1值為3!0邏輯值為15>3邏輯值為1表達(dá)式值為05.2邏輯運算符和邏輯表達(dá)式
用邏輯表達(dá)式來表示閏年的條件能被4整除,但不能被100整除。能被100整除,又能被400整除。?答(year%4==0&&year%100!=0)||year%400==0案值為真(1)是閏年,否那么為非閏年。三種根本結(jié)構(gòu)的使用順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)1、順序結(jié)構(gòu)考慮交換兩個數(shù)?inta,b;inttemp;cin>>a>>b;temp=a;a=b;b=temp;998899abtemp88995.3if語句1.if語句的三種根本形式(1)if〔表達(dá)式〕語句例:if(x>y)cout<<y;表達(dá)式語句真(非0)假(0)#include<iostream.h>voidmain(){intnum1,num2,sum;cout<<"請輸入兩個數(shù):\n;cin>>num1>>num2;sum=num1+num2;if(sum>100) cout<<"兩數(shù)的和大于100"}內(nèi)存num1num2sum5678134請輸入兩個數(shù):5678兩數(shù)的和大于100輸入兩個數(shù)據(jù),求和,如果和大于一百,那么輸出相應(yīng)信息5.3if語句(2)if(表達(dá)式)語句1else語句2例:if(x>y)cout<<x;elsecout<<y;
條件
語句1
語句2YN問題描述:要求用戶輸入一個字符,用程序判斷該字符是否為小寫字母,并輸出相應(yīng)的信息。#include<iostream.h>voidmain(){ chara; cout<<"請輸入一個字符:"; cin>>a; if(a>='a'&&a<='z') cout<<"您輸入的字符是小寫字母\n"; else cout<<"您輸入的字符不是小寫字母\n";}內(nèi)存aT請輸入一個字符:T您輸入的字符不是小寫字母問題描述:接受用戶輸入的商品的價格。如果購置的商品的價格大于50那么折扣率為15%,否那么折扣率為0,計算并顯示用戶應(yīng)付的錢數(shù)。#include<iostream.h>voidmain(){floatprice;doublediscount;cout<<"請輸入商品的價格:";cin>>price;if(price>50)
{ discount=0.15*price; price=price-discount; cout<<"折后總價為:\n“<<price;}else cout<<"總價為:\n“<<price);}輸出:請輸入商品的價格:60折后總價為:51.00問題描述:輸入一個5位數(shù),判斷它是不是回文數(shù)。例如:12321是回文數(shù),個位與萬位相同,十位與千位相同。
#include<iosteam.h>voidmain(){ longge,shi,qian,wan,x; cout<<"\n請輸入一個五位整數(shù):"; cin>>x;
wan=x/10000;//分解出萬位數(shù)
qian=x%10000/1000;//分解出千位數(shù)
shi=x%100/10;//分解出十位數(shù)
ge=x%10;//分解出個位數(shù)
if(ge==wan&&shi==qian)
cout<<"這個數(shù)是回文數(shù)\n"; else cout<<"這個數(shù)不是回文數(shù)";}如:if(a==b&&x==y)cout<<“a=b,x=y”;intx=3,y;if(x=5)y=3;if(3)cout<<“OK”;if(‘a(chǎn)’)cout<<’a’;說明:if后面的表達(dá)式類型任意不能上菜有胡蘿卜嗎?有黃瓜嗎?制作胡蘿卜沙拉有有可以上菜制作黃瓜沙拉制作沙拉沒有沒有多重if〔階梯式〕要處理多重條件判斷的情況,需要使用多重條件結(jié)構(gòu)多重條件結(jié)構(gòu)嵌套ifswitch結(jié)構(gòu)多重條件結(jié)構(gòu)5.3if語句(3)if〔表達(dá)式1〕語句1elseif(表達(dá)式2)語句2elseif(表達(dá)式3)語句3……elseif(表達(dá)式m)語句melse語句n例如:商場促銷,購物500元以上,8折;購物300元以上,85折;購物100元以上,9折;購物50元以上,95折;購物50元以下,不打折。根據(jù)消費量,計算優(yōu)惠率。
設(shè):消費量為money;折扣為cost;實際花費priceif(money>500)cost=0.2;elseif(money>300)cost=0.15;elseif(money>100)cost=0.1;elseif(money>50)cost=0.05;elsecost=0;price=money-(money*cost);
5.3if語句
例5.2輸入三個數(shù)a,b,c,要求按由小到大的順序輸出。ifa>b將a和b對換ifa>c將a和c對換ifb>c將b和c對換a>ba>cb>ca和b交換a和c交換c和b交換yyynn
5.3if語句
#include<iostream.h>
voidmain()
{floata,b,c,t;
cin>>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;}
cout<<a<<b<<c;
}5.3if語句2.if語句的嵌套在if語句中又包含一個或多個if語句稱為if語句的嵌套形式:if() if()語句1 else語句2else if()語句3 else語句4內(nèi)嵌if#include<iostream.h>voidmain(){ inta,b; cout<<"請輸入
A和
B的值:"; cin>>a>>b; if(a!=b) if(a>b) cout<<"A>B\n"; else cout<<"A<B\n"; else cout<<"A=B\n";}內(nèi)存ab6893輸出:A<Bif(x>0)if(y>1)z=1;else/*這個else局部屬于哪個if?*/z=2;C語言規(guī)定,每個else局部總屬于前面最近的那個缺少對應(yīng)的else局部的if語句。提倡使用大括號括起來以防止看起來有二義性。?編寫程序。有一函數(shù):
用cin輸入x的值(分別為x<2,2~20,>=20三種情況),求y值。分析:y是一個分段表達(dá)式。要根據(jù)x的不同區(qū)間來計算y的值。所以應(yīng)使用if語句。y=xx<28x+62=<x<2010x-20x>=20#include<iostream.h>voidmain(){ intx,y; cin>>x;
if(x<2)y=x;
if(x>=2&&x<20)y=8*x+6;
if(x>=20)y=10*x-20; cout<<y;}#include<iostream.h>voidmain(){ intx,y; cin>>x;
if(x<2)y=x;
elseif(x>=2&&x<20)y=8*x+6;
elseif(x>=20)y=10*x-20; cout>>y;}#include<iostream.h>voidmain(){intx,y;cin>>x;
if(x<2)y=x;else{
if(x>=2&&x<20)y=8*x+6;
else y=10*x-20;
}cout<<y;}7、輸入某學(xué)生的成績,經(jīng)處理后給出學(xué)生的等級,等級分類如下:90分以上〔包括90〕:A80至90分〔包括80〕:B70至80分〔包括70〕:C60至70分〔包括60〕:D60分以下:E#include<iostream.h>voidmain(){ intscore; cin>>score;
if(score>=90) cout>>"等級為A\n"; elseif(score>=80) cout>>"等級為B\n";elseif(score>=70) cout>>"等級為C\n"; elseif(score>=60) cout>>"等級為D\n"; else cou>>"等級為E\n";}#include<iostream..h>voidmain(){ intscore; cin>>score; if(score>=90) cout<<"等級為A\n"; if(score>=80&&score<90) cout<<"等級為B\n";if(score>=70&&score<80) cout<<"等級為C\n"; if(score>=60&&score<70) cout<<"等級為D\n"; if(score<60) cout<<"等級為E\n";1、雞兔同籠問題:雞和兔子的總數(shù)量為n,總腿數(shù)為m。輸入n和m,依次輸出雞的數(shù)目和兔子的數(shù)目。如果無解,那么輸出"沒有解"。例如:輸入:1432輸出:122或者輸入:1016無解/#include<iostream.h>voidmain(){ intchicken,rubbit;//分別存放小雞和兔子的數(shù)量 intn,m; cin>>n>>m; rubbit=(m-2*n)/2; chicken=n-rubbit; if(m%2==0&&rubbit>0&&chicken>0) cout<<chicken<<rubbit; else cout<<"noanswer\n";}簡單的計算器
if語句編程設(shè)計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:操作數(shù)1運算符op操作數(shù)2計算表達(dá)式的值,指定的算術(shù)運算符為加〔+〕、減〔-〕、乘〔*〕、除〔/〕。#include<iostream.h>voidmain(){ intop1,op2,result; charch; cout<<"請輸入要計算的表達(dá)式\n"; cin>>op1>>op2;cin>>ch; if(ch=='+') result=op1+op2; elseif(ch=='-') result=op1-op2; elseif(ch=='*') result=op1*op2; elseif(ch=='/') result=op1/op2; elseif(ch=='%')result=op1%op2; cout<<op1<<ch<<op2<<“=”<<result);}printf(“這是邁克爾,身高180cm,加利福尼亞第12大街”);printf(“這是丹尼爾,身高193cm,現(xiàn)居住地不明,1998年12月12日在佛羅里達(dá)被捕”);printf(“這是吉姆,身高175cm,墨西哥州海鷗路弗羅拉公寓,于2003年11月1日在新澤西因搶銀行被捕”);default:printf(“未發(fā)現(xiàn)匹配項。對不起!”);停止搜索停止搜索停止搜索停止搜索警察記錄嫌疑犯照片不是這是吉姆,身高175cm,墨西哥州海鷗路弗羅拉公寓,于2003年11月1日在新澤西因搶銀行被捕不是是switch-case語句是多路判斷語句switch語句計算條件表達(dá)式并對照多個常數(shù)值進(jìn)行檢查switch結(jié)構(gòu)switch(表達(dá)式){case常量1:
語句; break;case常量
2:
語句; break;
default:
語句;}計算表達(dá)式的值如果等于常量1
如果等于常量2
如果沒有找到匹配的值
main(){intscore;cin>>score:switch(score){case5:cout<<“Verygood!”;case4:cout<<“Good!”;case3:cout<<“Pass!”;case2:cout<<“Fail!”;default:cout<<“dataerror!”;}}運行結(jié)果:score為5時,輸出:Verygood!Good!Pass!Fail!dataerror!switch結(jié)構(gòu)例如問題描述:要求用戶輸入一個字符值并檢查它是否為元音字母。charin_char;cout<<"\n請輸入一個小寫字母:
";cin>>in_char;switch(in_char){case'a':cout<<"\n您輸入的是元音字母
a\n"; break;case'e':cout<<"\n您輸入的是元音字母
e\n"; break;case'i':cout<<"\n您輸入的是元音字母
i\n"; break;case'o':cout<<"\n您輸入的是元音字母
o\n"; break;case'u':cout<<"\n您輸入的是元音字母
u\n"; break;default:cout<<"\n您輸入的不是元音字母
\n";}內(nèi)存in_chare請輸入一個小寫字母:e您輸入的是元音字母e多重if結(jié)構(gòu)和switch結(jié)構(gòu)都可以用來實現(xiàn)多路分支多重if結(jié)構(gòu)用來實現(xiàn)兩路、三路分支比較方便,而switch結(jié)構(gòu)實現(xiàn)三路以上分支比較方便在使用switch結(jié)構(gòu)時,應(yīng)注意分支條件要求是整型表達(dá)式,而且case語句后面必須是常量表達(dá)式有些問題只能使用多重if結(jié)構(gòu)來實現(xiàn),例如要判斷一個值是否處在某個區(qū)間的情況比較多重if和switch結(jié)構(gòu)例如問題描述:要求判別鍵盤輸入字符的類別??梢愿鶕?jù)輸入字符的ASCII碼來判別類型。由ASCII碼表可知ASCII碼值小于32的為控制字符。在0~9之間的為數(shù)字,在A~Z之間為大寫字母,在a~z之間為小寫字母,其余那么為其它字符。main(){ charc; cout<<"\n請輸入一個字符:"; c=getchar(); if(c<32) cout<<"\n該字符是一個控制字符。\n"; elseif(c>='0'&&c<='9') cout<<"\n該字符是一個數(shù)字。\n"; elseif(c>='A'&&c<='Z') cout<<"\n該字符是一個大寫字母。\n"; elseif(c>='a'&&c<='z') cout<<"\n該字符是一個小寫字母。\n"; else cout<<"\n該字符是其他字符。\n";}內(nèi)存cE請輸入一個字符:E該字符是一個大寫字母簡單的計算器
switch語句編程設(shè)計一個簡單的計算器程序,要求根據(jù)用戶從鍵盤輸入的表達(dá)式:操作數(shù)1運算符op操作數(shù)2計算表達(dá)式的值,指定的算術(shù)運算符為加〔+〕、減〔-〕、乘〔*〕、除〔/〕。循環(huán)結(jié)構(gòu)為什么要使用循環(huán)結(jié)構(gòu)?intresult1,result2,result3;intresult4,result5;result1=1*10;cout<<"1×10=“<<result1;result2=2*10;cout<<“2×10=“<<result2;result3=3*10;cout<<“3×10=“<<result3;result4=4*10;cout<<“4×10=“<<result4;result5=5*10;cout<<“5×10=“<<result5;1×10=102×10=203×10=304×10=405×10=50輸出結(jié)果重復(fù)語句1×10=102×10=203×10=304×10=405×10=50i=1i+1i+1上個數(shù)字+1...重復(fù)(上個數(shù)字+1)×10
6.1概述什么是循環(huán)?為什么要使用循環(huán)?問題1:問題2:求學(xué)生平均成績
分?jǐn)?shù)相加后除以課數(shù)在許多問題中需要用到循環(huán)控制。循環(huán)結(jié)構(gòu)是結(jié)構(gòu)化程序設(shè)計的根本結(jié)構(gòu)之一,它和順序結(jié)構(gòu)、選擇結(jié)構(gòu)共同作為各種復(fù)雜程序的根本構(gòu)造單元。C++語言可實現(xiàn)循環(huán)的語句:while語句do~while語句for語句6.3while循環(huán)語句一、while循環(huán)語句的格式while(表達(dá)式){語句塊}while(表達(dá)式)語句一條語句while循環(huán)語句二、while循環(huán)的執(zhí)行過程循環(huán)初始化語句(塊)注意:1.循環(huán)初始化是必須的2.在C語言中,可以用0來代表假,而用非0來代表真例如:while(1){}表達(dá)式?YNwhile循環(huán)語句三、例:1+2+3+4+…+100=?解決方案:累加求和………sum21100=0=5050While循環(huán)語句voidmain{intsum=0;sum=sum+1;sum=sum+2;..sum=sum+100;}sum=sum+datadata=1,2,3…100while循環(huán)語句voidmain(){intsum=0,data=1;
while(){sum=sum+data;
}cout<<“thesum=”<<sum;}inti=1;i<=100i++;data++;Ysum=0;i=1;data=1i<=100?sum+=datai++;data++Nwhile循環(huán)語句voidmain(){intsum=0;inti=1;while(i<=100){sum=sum+i;i++;}cout<<“thesum=”<<sum;}循環(huán)初始化僅執(zhí)行一次,不參與循環(huán)循環(huán)條件控制循環(huán)的執(zhí)行,i叫循環(huán)變量循環(huán)體工作的主體局部修改循環(huán)變量,使循環(huán)趨于結(jié)束while循環(huán)語句四、循環(huán)程序設(shè)計總結(jié):1.對循環(huán)進(jìn)行必要的初始化2.合理的設(shè)置循環(huán)條件計數(shù)循環(huán)條件循環(huán)3.設(shè)計循環(huán)體4.修改循環(huán)變量使循環(huán)趨于結(jié)束注:在條件循環(huán)中也應(yīng)合理設(shè)置使循環(huán)趨于結(jié)束的語句五、練習(xí):
while循環(huán)語句+++…+=voidmain(){intsum=0;inti=1;while(i<=100){sum=sum+sqrt(i);i++;}cout<<“thesum=”<<sum;}?
6.3用while語句實現(xiàn)循環(huán)注意:循環(huán)體如果包含一個以上的語句,應(yīng)該用花括弧括起來,以復(fù)合語句形式出現(xiàn)。在循環(huán)體中應(yīng)有使循環(huán)趨向于結(jié)束的語句。如果無此語句,那么i的值始終不改變,循環(huán)永不結(jié)束。循環(huán)體有可能一次也不執(zhí)行 #include<iostream.h>main(){ inti=1,sum=0; while(i<=100) cout<<“i=”<<i<<“sum=”<<sum; i++; cout<<”Sum=”<<sum;} 結(jié)果:程序?qū)⒉煌5拇蛴 癷=1,sum=...”。無法正常終止的程序,稱為“死循環(huán)”。 結(jié)論:在while語句循環(huán)體中,一定要有能夠?qū)ρh(huán)控制條件產(chǎn)生影響的語句。防止出現(xiàn)“死循環(huán)”現(xiàn)象。{}
6.9程序舉例
例6.7求Fibonacci數(shù)列前40個數(shù)。這個數(shù)列有如下特點:第1,2兩個數(shù)為1,1。從第3個數(shù)開始,該數(shù)是其前面兩個數(shù)之和。即:F(1)=1(n=1)F(2)=1(n=2)F(n)=F(n-1)+F(n-2)(n≥3)算法如下圖:例6.7求Fibonacci數(shù)列前40個數(shù)。
#include<iostream.h>
voidmain()
{longintf1,f2;
inti;
f1=1;f2=1;
for(i=1;i<=20;i++)
{
cout<<f1<<f2;
if(i%2==0)cout<<endl;
f1=f1+f2;
f2=f2+f1;
}
}
例7-1:用數(shù)組來處理,求解Fibonacci數(shù)列。Fibonacci數(shù)列公式::a1=a2=1 ,an=an-1+an-2即:1,1,2,3,5,8,13#include<iostream.h>voidmain(){inti;
intf[20]={1,1};
for(i=2;i<20;i++)f[i]=f[i-2]+f[i-1];
for(i=0;i<20;i++){if(i%5==0) cout<<endl;cout<<“”<<f[i];}}f[0]f[1]f[2]f[3]f[4]f[5]f[19]……...11f[19]01452319235題目:猴子吃桃問題:猴子第一天摘下假設(shè)干個桃子,當(dāng)即吃了一半,還不癮,又多吃了一個;第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以后每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。#include<iostream.h>
main()
{
intday,x1,x2;
day=9;
x2=1;
while(day>0)
{x1=(x2+1)*2;/*第一天的桃子數(shù)是第2天桃子數(shù)加1后的2倍*/
x2=x1;
day--;
}
cout<<"thetotalis\n“<<x1;
}
6.4用do-while語句實現(xiàn)循環(huán)do-while語句的特點:先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立。一般形式:
do循環(huán)體語句
while(表達(dá)式);執(zhí)行過程:先執(zhí)行一次指定的循環(huán)體語句,然后判別表達(dá)式,當(dāng)表達(dá)式的值為非零(“真”)時,返回重新執(zhí)行循環(huán)體語句,如此反復(fù),直到表達(dá)式的值等于0為止,此時循環(huán)結(jié)束。注意:至少執(zhí)行一次循環(huán)體例6.3求1到100的和
#include<iostream.h>
voidmain()
{inti,sum=0;
i=1;
do
{sum=sum+i;
i++;
}
while(i<=100);
cout<<"\n″<<sum;
}運行結(jié)果:5050
6.4用do-while語句實現(xiàn)循環(huán)while語句和用do-while語句的比較:在一般情況下,用while語句和用do-while語句處理同一問題時,假設(shè)二者的循環(huán)體局部是一樣的,它們的結(jié)果也一樣。但是如果while后面的表達(dá)式一開始就為假(0值)時,兩種循環(huán)的結(jié)果是不同的。問題描述:猜數(shù)游戲。要求猜一個介于1~10之間的數(shù)字,根據(jù)用戶猜測的數(shù)與標(biāo)準(zhǔn)值進(jìn)行比照,并給出提示,以便下次猜測能接近標(biāo)準(zhǔn)值,直到猜中為止。main(){intnumber=5,guess;cout<<"猜一個介于1與10之間的數(shù)\n";do{cout<<"請輸入您猜測的數(shù):";cin>>guess;if(guess>number)cout<<"太大\n";elseif(guess<number)cout<<"太小\n";}while(guess!=number);cout<<"您猜中了!答案為“<<number;}猜一個介于1與10之間的數(shù)請輸入您猜測的數(shù):3太小請輸入您猜測的數(shù):5您猜中了!答案為5輸入數(shù)字5后,do…while循環(huán)中的條件為假,輸出結(jié)果消息后,程序終止。
6.5用for語句實現(xiàn)循環(huán)C語言中的for語句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語句。一般形式:
for(表達(dá)式1;表達(dá)式2;表達(dá)式3)語句
6.5用for語句實現(xiàn)循環(huán)表達(dá)式2?執(zhí)行語句成立不成立執(zhí)行for循環(huán)之后的語句執(zhí)行表達(dá)式3執(zhí)行表達(dá)式1循環(huán)初始條件循環(huán)控制條件循環(huán)體for語句等價于以下語句:表達(dá)式1;while〔表達(dá)式2〕{語句;表達(dá)式3;}
循環(huán)變量增值語句例用for循環(huán)求
#include<iostream.h>main(){inti,sum=0;for(i=1;i<=100;i++)sum+=i;cout<<sum;}#include<iostream.h>voidmain(){intnumber,i,fac=1;cout<<"\n請輸入任意一個正整數(shù):";cin>>number;for(i=1;i<=number;i++) fac=fac*i;cout<<"\n階乘=“<<fac;}請輸入任意一個正整數(shù):5內(nèi)存numberifac51121206循環(huán)執(zhí)行五次5的階乘=120問題描述:從鍵盤輸入一個數(shù)并計算其階乘
6.6循環(huán)的嵌套一個循環(huán)體內(nèi)又包含另一個完整的循環(huán)結(jié)構(gòu)稱為循環(huán)的嵌套。內(nèi)嵌的循環(huán)中還可以嵌套循環(huán),這就是多層循環(huán)。三種循環(huán)(while循環(huán)、do-while循環(huán)和for循環(huán))可以互相嵌套。
6.6循環(huán)的嵌套下面幾種都是合法的形式:(1)
while()(2)do(3)for(;;){…{…{while()dofor(;;){…}{…}{…}}while();}}while();
6.6循環(huán)的嵌套(4)
while()(5)for(;;)(6)do{…{…{…do{…}while()for(;;){}while(){}…{…}…}}}while()
程序舉例main(){inti,j;for(i=1;i<=2;i++){cout<<i;for(j=1;j<=3;j++)cout<<j;}}程序舉例內(nèi)層循環(huán)終止j=2j=3j=4main(){inti,j;for(i=1;i<=2;i++){cout<<i);
for(j=1;j<=3;j++)printf(“j=%d,”,j);}}程序舉例運行結(jié)果:循環(huán)全部終止i=2i=3main(){inti,j;for(i=1;i<=2;i++){cout<<i;for(j=1;j<=3;j++)cout<<j;}} <例>:輸出下三角形乘法九九表。123456789---------------------------------------12436948121651015202561218243036714212835424981624324048566491827364554637281假設(shè):行號為i,列號為ji=6j=5i*j(1<=i<=9)(1<=j<=i)那么:第i行中要輸出j個乘積輸出項aij和行(i)、列(j)的關(guān)系#include<iostream.h>Voidmain(){inti=1,j;/*i:行計數(shù)器j:列計數(shù)器*/while(i<=9)/*控制打印表頭*/printf("%4d",i++);printf("\n------------------------------------\n");i=1;while(i<=9)/*行控制*/{j=1;/*列計數(shù)器置1*/while(j<=i)/*嵌套的二重循環(huán)。輸出第i行*/ {printf("%4d",i*j);j++;/*列計數(shù)器+1*/}printf("\n");/*一行輸出結(jié)束后,輸出\n*/i++;/*行計數(shù)器+1*/}}外層循環(huán)體執(zhí)行1次,內(nèi)層循環(huán)要輸出1行#include<iostream.h>voidmain(){ inti,j;/*i:行計數(shù)器j:列計數(shù)器*/ for(i=1;i<=9;i++)/*控制打印表頭*/ printf("%d",i); printf("\n----------------\n"); for(i=1;i<=9;i++)/*行控制*/ { for(j=1;j<=i;j++)/*列計數(shù)器置1*/ printf("%d*%d=%d",j,i,i*j); printf("\n");/*一行輸出結(jié)束后,輸出\n*/ }}外層循環(huán)體執(zhí)行1次,內(nèi)層循環(huán)要輸出1行考慮如何編寫程序打印如以下圖案#include<iostream.h>voidmain(){inti,j;for(i=1;i<=5;i++)for(j=1;j<=5;j++)cout<<'*';cout<<'\n';}考慮如何編寫程序打印如以下圖案#include<iostream.h>voidmain(){inti,j,n=5;
for(i=1;i<=5;i++){
for(j=1;j<=n-i;j++)
cout<<"";
for(j=1;j<=2*i-1;j++)
cout<<"*";cout<<endl;}}編寫程序打印以以下圖案#include<iostream.h>voidmain(){inti,n,m;
for(i=1;i<=4;i++)
{
for(n=1;n<=i;n++)
{cout<<'*';
for(m=1;m<=i-1;m++)
{cout<<'.'; } } cout<<endl;}}6.7三種循環(huán)的比較(1)三種循環(huán)都可以用來處理同一問題,一般情況下它們可以互相代替。(2)在while循環(huán)和do-while循環(huán)中,在循環(huán)體中包含使循環(huán)趨于結(jié)束的語句(如i++,或i=i+1等)。for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作,甚至可以將循環(huán)體中的操作全部放到表達(dá)式3中6.7幾種循環(huán)的比較
(3)用while和do-while循環(huán)時,循環(huán)變量初始化的操作應(yīng)在while和do-while語句之前完成。而for語句可以在表達(dá)式1中實現(xiàn)循環(huán)變量的初始化。
6.8break語句和continue語句
6.8.1break語句
break語句可以用來從循環(huán)體內(nèi)跳出循環(huán)體,即提前結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語句一般形式:
break;注意:break語句不能用于循環(huán)語句和switch語句之外的任何其他語句中。
6.8break語句和continue語句
continue和break的區(qū)別
break語句那么是結(jié)束整個循環(huán)過程,不再判斷執(zhí)行循環(huán)的條件是否成立。continue語句的作用是跳過循環(huán)體中剩余的語句而執(zhí)行下一次循環(huán)例6.5把100~200之間的不能被3整除的數(shù)輸出。
#include<iostream.h>
voidmain()
{
intn;
for(n=100;n<=200;n++)
{
if(n%3==0)
continue;
cout<<n;
}
}說明:當(dāng)n能被3整除時,執(zhí)行continue語句,結(jié)束本次循環(huán)<例>:求555555的約數(shù)中最大的三位數(shù)是多少?main(){intj;longn=555555;/*所求的約數(shù)的可能取值是從999到100,j從大到小*/for(j=999;j>=100;j--)if(n%j==0)/*假設(shè)能夠整除j,那么j是約數(shù)*/ {cout<<j; break;/*控制退出循環(huán)*/}}輸入一個數(shù),判斷是不是素數(shù)#include<iostream.h>#include<math.h>voidmain(){intm,i,k;cin>>m;
k=sqrt(m);for(i=2;i<=k;i++)if(m%i==0)break;if(i>k)cout<<m<<"isaprimenumber\n";elsecout<<m<<"isnotaprimenumber\n";}#include<iostream.h>#include<math.h>voidmain(){ int
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 面陣ccd課程設(shè)計
- 河南省商丘市民權(quán)縣2023-2024學(xué)年六年級上冊期中英語試卷(含解析)
- 輕醫(yī)美注射類課程設(shè)計
- 2024年國際建筑工程施工總承包合同
- 課程設(shè)計需要注意的問題
- 紅外音頻信號課程設(shè)計
- 2024年供應(yīng)鏈管理合同變更版
- 紅外發(fā)射器課程設(shè)計
- 2(2024版)超導(dǎo)材料研發(fā)與應(yīng)用合同
- 合股經(jīng)營鋼材合同范例
- DB43∕T 412-2008 煙花爆竹企業(yè)防雷裝置檢測技術(shù)規(guī)范
- 風(fēng)景名勝區(qū)保護(hù)管理執(zhí)法檢查評分表
- 5.2電動汽車上電與下電功能控制課件
- 7帽子設(shè)計ppt課件(76頁PPT)
- 平行四邊形和梯形整理與復(fù)習(xí)
- 大學(xué)課程《中國哲學(xué)史》完整word版教案
- 麥克斯韋速率分布律
- 4-6歲數(shù)學(xué)思維能力診斷測試題
- 肉牛屠宰公司組織機(jī)構(gòu)加各個崗位職責(zé)
- 小學(xué)英語人教PEP三年級起點四年級上冊英語全冊
- 3角的初步認(rèn)識(課件) 數(shù)學(xué)二年級上冊 (共14張PPT)人教版
評論
0/150
提交評論