版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第一節(jié)循環(huán)的基本概念
第二節(jié)while語句
第三節(jié)do-whi1e語句
第四節(jié)for語句
第五節(jié)break、continue>goto語句
第六節(jié)幾種循環(huán)語句比較
第七節(jié)循環(huán)的嵌套
第八節(jié)程序舉例
第一節(jié)循環(huán)的基本槐念
提出問題
提問:求整數(shù)I到10的連加,怎么編程?
回答:在程序中寫入1+2+3+.......+10o
提問:求整數(shù)1到10000的連加,怎么編程?
回答:這個,寫1+2+3…+100+???o
第一節(jié)糖環(huán)的基本就念
分析:讓我們換一個角度來看待這些問題。
找出哪些是重復(fù)的,哪些是變化的。
1+2+3+...+100=?
加法(操作)是重復(fù)的,
加數(shù)是有規(guī)律地變化的。
解決這樣的問題可以采用循環(huán)語句。
用循環(huán)
反復(fù)執(zhí)行同一段程序,直到滿足一定的條
件后才停止執(zhí)行該段程序。
BC語言中控制循環(huán)的語句:
while語句
for語句
do-while語句
e與循環(huán)相關(guān)的控制程序流程的語句:
break語句
continue語句
goto語句
例:求1到100的連加。
ttinclude<stdio.h>例C6_2oi
main()
{inti,sum;/*i:計數(shù)器,sum:存放累加和*/
i=l;
sum=0;
while(i<=100)/*循環(huán)控制條件*/
{sum+=i;/*循環(huán)體*/
i++;
)
printf("Sum=%d\n〃,sum);
丁儂/診
例:分析程序的運行結(jié)果
例C6-201b
ttinclude<stdio.h>
main()
{inti=l,sum=O;
while(i<=100)
printf("i=%d,sum=%d,\i,sum+=i);
i++;
printf("Sum二%d\n〃,sum);
結(jié)果:程序?qū)⒉煌5拇蛴 癷=1,sum=?.丁。
?無法正常終止的程序,稱為“死循環(huán)”。
結(jié)論:在while語句循環(huán)體中,一定要有能夠?qū)ρh(huán)控制
條件產(chǎn)生影響的語句。避免出現(xiàn)“死循環(huán)”現(xiàn)象。
第二節(jié)以&語句
例:從鍵盤中讀入一系列字符,直到輸入字母a
時才停止。
由于不知道要輸入的字符數(shù)量,只知道
停止條件是輸入字母a,則只能將循環(huán)控制條件
設(shè)為ch!二匕屋
循環(huán)體
ttinclude<stdio.h>為空語
main()句
{charch;
while((ch=getch())!=’a');
例C6_202
第二節(jié)以&語句
例:對輸入的行和字符進行計數(shù)。
分析:\n作為行結(jié)束標記的,DOS中有[CTRL+Z作為文
件結(jié)束標記
#defineEOF-1/*定義文件結(jié)束標記*/
ttinclude<stdio.h>
main()
{intc,nl=0,nc=0;/*nl行計數(shù)器、nc字符計數(shù)器*/
while((c=getchar())!=EOF)
{++nc;/*進行字符計數(shù)*/
if(c二二'\n)
++nl;/*如果找到\n,則行計數(shù)*/
printf(z/chars=%d,lines=%d\n”,nc,nl);
例C6.203
第二節(jié)以&語句
Bwhile使用注意事項
while(0){???.}由于循環(huán)的條件表達
式恒等于0,循環(huán)體永遠也不會執(zhí)行,是編程
者的錯誤。
while(1){???.}由于循環(huán)的條件表達
式恒等于1,所以不可能通過循環(huán)控制條件來
結(jié)束循環(huán)體的執(zhí)行,稱為“死循環(huán)”。
3.為了保證循環(huán)正常運行,應(yīng)該特別注意:
>循環(huán)控制條件
>控制條件的初始狀態(tài)(初始值)
>循環(huán)體內(nèi)部對控制條件的影響
第三節(jié)4-小/語句
Rdo-while與while的區(qū)別:
do-while語句先執(zhí)行循環(huán)體然后再判斷
循環(huán)控制條件,而while是先判斷條件之后再
執(zhí)行循環(huán)體。
使用do-while循環(huán),循環(huán)體部分至少要
執(zhí)行一次;而采用while循環(huán),循環(huán)體部分有
可能一次也不會執(zhí)行。
第三節(jié)4-小/語句
main()
{inti=l,sum=O;
do
{sum+=i;
i++;
}while(i<=100)
main()printf("Sum二%d\n〃,sum);
{inti=l,sum=O;
while(i<=100)
sum+=i;
i++;
printf("Suin=%d\n〃,sum);
第三節(jié)4-小/語句
例:輸入一個正整數(shù),要求以相反的順序輸出該
數(shù)。例如:輸入12345,則輸出為54321。
基本思路:從個位開始,按位輸出整數(shù)的每一位
main()例C6_301
{unsignedintnumber;
printf("Inputthenumber:,z);
scanf(〃%d〃,&number);
doo
o
\printf(〃%d〃,number%10);
1234)^>number/=10;/*number縮小10倍*/
}while(number!=0);
第三節(jié)4-小/語句
例:從鍵盤輸入任意的字符,按下列規(guī)則進行分類計數(shù)。
第一類:
'0','1','2','3','4','5','6','7'
J8、9,
第二類:
,,,/,/U,
第三類:
其它字符
當輸入字符'\'時先計數(shù)然后停止接收輸入。
第三節(jié)4-小/語句
main()
intclassl=O,class2=0,class3=0;charch
例C6_302
do
putchar(ch=getch());
switch(ch)
{case'O':case1:case2:case3:
case'4':case,5匚,:.caseb:case7:
case’8':case'9':
classl++;break;/*對分類1計數(shù)*/
case+:case-:case*:case/:
case‘:case---?*
class2++;break;/*對分類2計數(shù)*/
defaul:class3++;break;/*對分類3計數(shù)*/
)
}while(ch!=’\\');
printf(z,classl=%d,class2=%d,class3=%d\r/z,
classl,class2,class3);
例:求1到10的階乘。
遞推公式:n!=1當n=0時
n!=(nT)1*n當n〉l時
ttinclude<stdic循環(huán))
條件A循環(huán)
main()增量
初始-intn=l;
■o
條件I1;______
1orli=u1<=10jCi++)
n=n*i;/*求N!*/
printf(〃%2d!=%ld\n〃,i,n);
例C6.401
Bfor語句的變化形式
1.省略表達式2:
for(表達式1;;表達式3)
形成死循環(huán)。
2.省略表達式1和表達式3:
for(;表達式2;)
等同于:while(表達式)
3.表達式1、2、3全省略:
for(;;)
等同于:while(1)
注意:分號不能省略。
例:求菲波那奇數(shù)列第N項的值。
數(shù)列遞推通項公式為:
5=U2=1
JL乙
Un=UnT+Un_2(n>=3)
即:1、1、2、3、5、8、13、21、...
根據(jù)遞推通項公式,可用遞推法編寫程序,計
算第N項的值。
第四節(jié)您語句
位遞推法:
由初始的已知條件,先計算出第(N—1)步的
結(jié)果,再利用前面已知的(N—1)項結(jié)果,按照遞
推公式(或遵照遞推規(guī)則),推出第N步結(jié)果。
遞推法是程序設(shè)計中最常用的方法之一,使
用遞推法必須有明確的遞推初始值和遞推公式。
第一項:1s第六項:8S第H^一項:=
第二項:1]第七與,所./r
第三項:2I第夕爾21
第四項:3H項:3^L/..?…JL
第五項:5V-十項:55丫/……V
ttinclude<stdio.h>
main()例C6-4O2
{intn,i,uni,un2,un;
for(;;)
{printf(z,Inputn=?〃);scanf(〃%d〃,&n);
if(n>=3)break;
elseprintf("\nlnputniserror!\n〃);
}/*控制輸入正確的N值*/
un=un2=1;/*設(shè)置遞推初始值*/
for(i=3;i<=n;i++)/*用遞推法計算第N項的值*/
{uni=un2;un2=un;un=uni+un2;
printf(〃No.%dis%d\n〃,n,un);
第五節(jié)成、韜*句
break、continue、goto是轉(zhuǎn)移語句,作用是
改變程序的運行流程。
一、break語句
Gbreak語句格式
break;
Gbreak語句功能
在switch語句中結(jié)束case子句,使控制轉(zhuǎn)到switch
語句之外。
2?在循環(huán)語句的循環(huán)體中使用,結(jié)束循環(huán)過程,使控
制轉(zhuǎn)移到整個循環(huán)語句之外的下一條語句處。
C(MtbMe>外的語句
用break語句的注意事項
1■.在嵌套循環(huán)中,break語句僅能退出一層(當
前)循環(huán)。
2.若在循環(huán)語句中包含了switch語句,那么
switch語句中的break語句僅能使控制退出
switch語句。
3.break語句并不是程序設(shè)計中必不可少的語
句,可以通過改變程序的結(jié)構(gòu)去掉。
修改例C6_501
C(MtbMe>外的語句
二、continue語句
^continue語句格式
continue;
Bcontinue語句的功能
只能在循環(huán)語句中使用。它的作用不是結(jié)
束循環(huán),而是開始一次新的循環(huán)。
對于for語句,將控制轉(zhuǎn)到表達式3,對于
while和do-while語句,將控制轉(zhuǎn)到條件測
試部分。
C(MtbMe>外的語句
Rcontinue語句的流程]
|表一式1
不成立.
------
表達式3
執(zhí)行后續(xù)語句
第五節(jié)版成、語句
例:輸入10個整數(shù),求其中正數(shù)的個數(shù)及平均值,精
確到小數(shù)點后兩位。
main()
{inti,count=0,j,sum=0;例C6_502
for(i=1;i〈=10;i++)
{printf(/zInputinteger:z,);
scanf(z/%dz/,&j);
if(j<=0)/*若為負數(shù)*/
-continue;/*則結(jié)束本次循環(huán),不進行后續(xù)逐作*/
count++;/*計數(shù)器*/
sum+=j;/*求累加和*/
if(count)
printf("Plusnumer:%d,averagevalue:%.2fz,,
count,1.O*sum/count);
elseprintf(,zPlusnumer:0,averagevalue:0");
第五節(jié)版成、語句
A從邏輯上講,改變if語句的條件表達式所表示
的條件,就可以不需要使用continue語句。
for(i=l;i<=10;i++)
{printf("Inputinteger:,z);
scanf(〃%d”,&j);
if(j<=0)
continue;
count++;°o
sum+=j;if(j>0)
count++;
C(MtbMe>外的語句
二、goto語句
Bgoto語句格式
goto標號;
Bgoto語句的功能
將程序控制轉(zhuǎn)移到標號所指定的語句處繼續(xù)
執(zhí)行。標號的唯一功能就是作為goto語句的目
標。標號的作用域是它所在的整個函數(shù)。
注意:為了保證程序的結(jié)構(gòu)化,不允
許使用向上GOTO語句
第五節(jié)成、韜*句
例:已知一個首項大于0的等差數(shù)列的前四項和為26,
前四項的積為880,求這數(shù)列。
E分析
設(shè)數(shù)列的第一項為a(a〉0),公差為d(d〉O)。則該
數(shù)列滿足條件:
a+(a+d)+(a+2*d)+(a+3*d)=4*a+6*d=26
a*(a+d)*(a+2*d)*(a+3*d)=880
則可以推出,首項a和公差d的取值范圍為:
1<=a<=51<=d<=3
可以使用窮舉的方法,在首項a和公差d的取值
范圍內(nèi)進行判斷。
C(MtbMe>外的語句
main()
例C6.503
{inta,b,c,d,i;
for(a=l;a<=5;++a)/*在a的范圍內(nèi)窮舉*/
for(d=l;d<=3;++d)/*在d的范圍內(nèi)窮舉*/
{b=a+(a+d)+(a+2*d)+(a+3*d);/*前四項的和*/
c=a*(a+d)*(a+2*d)*(a+3*d);/*前四項的積*/
if(b==26&&c==880)/*若滿足條件*/
gotoout;/*退出二重循環(huán)*/
:for(i=0;i<=20;++i)/*輸出運行結(jié)果*/
printf("%d,〃,a+i*d);
第益節(jié)幾種循球語句比較
eC語言三種循環(huán)語句的特點如下:
1.for和while先判斷循環(huán)條件后執(zhí)行循環(huán)體,
do-while語句先執(zhí)行循環(huán)體后判斷循環(huán)條件。
2.while和do-while語句的條件表達式只有一個,
for語句有三個表達式。
3.while、do-while>for可以相互替換使用。
4.while語句多用于不需要賦初值的或循環(huán)次數(shù)不定的
情況。
for語句多用于要賦初值或循環(huán)次數(shù)固定的情況。
do-while語句多用于至少要運行一次的循環(huán)控制。
5.循環(huán)語句可以嵌套,循環(huán)可以并列,但不能交叉。
第益節(jié)幾種循球語句比較
G為了保證循環(huán)體正常運行,應(yīng)該特別注意:
循環(huán)控制條件
控制條件的初始狀態(tài)(初始值)
循環(huán)體內(nèi)部對控制條件的影響
以上三個方面相互配合,相互影響,共同完成
循環(huán)控制。
第七節(jié)循環(huán)的嵌套
G循環(huán)嵌套
在循環(huán)體中,又包含有循環(huán)語句,構(gòu)成循環(huán)嵌套。
例:輸出下三角形乘法九九表。
123456789
1輸出項沏和行⑴、列⑴的關(guān)系
24
369
481216i二6
510152025j=5
6121824306i*j
7142128354249
816243240485664
91827364554637281
假設(shè):行號為i(l<=i<=9),列號為j(1〈=j〈二i)
貝U:第i行中要輸出j個乘積
第七節(jié)循環(huán)的嵌套
ttinclude<stdio.h>例]C6_70i
main()
{int=1,j;/*::;計數(shù)器j:列計數(shù)器*/
while(i<=9)/*控制打印表頭*/
printf(〃%4d〃,i++);
printf(〃\n-------------------------------\n〃);
i=1;
.while(<=9)/*控缶1J*/
>{j=1;/*列計數(shù)器置1*/
while(j<=)/*嵌套的二重循環(huán)。輸出第i行*1
,{printf(〃%4d〃,i*j);
、j++;/*列計數(shù)器+1*/
printf(〃\n〃);/*一行輸出結(jié)束后,輸出\n*/
|i++;/*行計數(shù)器+1*/
]外層循環(huán)體執(zhí)行1次,內(nèi)層循環(huán)要輸出1行
第七節(jié)循環(huán)的嵌套
例:怎樣存錢利最大
假設(shè)銀行整存整取存款不同期限的月息利率分別為:
0.315%期限=一年
0.330%期限=二年
0.345%期限=三年
0.375%期限=五年
0.420%期限=八年
利息=本金X月息利率X12X存款年限
現(xiàn)在某人手中有2000元,請通過計算選擇一種存錢方
案,使得錢存入銀行二十年后得到的息最多(假定銀行
對超過存款期限的那部分時間不付利息)。
第七節(jié)循環(huán)的嵌套
G問題分析與算法設(shè)計
由于存款的利率不同,所以不同的存款方
法(年限組合)得到的利息也是不一樣的。
2000元存20年,則:
1年存il次,
2年存i2次,
3年存i3次,
5年存i5次,
8年存i8次。
到期時本息合計:
2000*(1+rl)(l+r2)i2*(l+r3)i3*(l+r5)i5*(l+r8)i8
第七節(jié)循環(huán)的嵌套
G根據(jù)題意還可得到以下限制條件:
0<=18<=2
0<=i5<=(20-8*18)/5
0<=13<=(20-8*i8-5*i5)/3
0<=i2<=(20-8*i8-5*i5-3*i3)/2
0<=il=20-8*i8-5*i5-3*i3-2*i2
G可用窮舉法窮舉所有的i8、i5、i3、i2和il
的組合,代入求本利的公式計算出最大值,就
是最佳存款方案。
第七節(jié)循環(huán)的嵌套
ttinclude<math.h>
main()
{inti8,i5,i3,12,il,n8,n5,n3,n2,nl;
floatmax=0,term;
for(18=0;i8<3;i8++)/*窮舉全部可能的存款方式*/
for(i5=0;i5<=(20-8*i8)/5;i5++)
for(i3=0;i3<=(20-8*i8-5*i5)/3;i3++)
for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
{i1=20-8*i8-5*i5-3*i3-2*i2;
term=2000.0*pow(l+0.00315*12,(double)il)
*pow(l+0.00330*12,(double)i2)
*pow(l+0.00345*12,(double)i3)
*pow(l+0.00375*12,(double)i5)
*pow(l+0.00420*12,(double)i8);
if(term>)/*若為最大值,記錄存款方式*/
=term;nl=i1;n2=i2;n3=i3;n5=i5;n8=i8;
printf(z/%d,%d,%d,%d,%d\n〃,n8,n5,n3,n2,nl);
printf(/zTotal:%.2f\n〃,max);/*輸出存款方式*/
第七節(jié)循環(huán)的城套
for(i8=0;18<3;i8++)/*窮舉全部可能的存款方式*/
for(i5=0;i5<=(20-8*i8)/5;i5++)例C6」O2
for(i3=0;i3〈二(20-8*i8-5*i5)/3;i3++)
for(i2=0;i2<=(20-8*i8-5*i5-3*i3)/2;i2++)
{il=20-8*i8-5*i5-3*i3-2*i2;
term=2000.0*pow(l+0.00315*12,(double)il)
*pow(l+0.00330*12,(double)i2)
*pow(l+0.00345*12,(double)i3)
*pow(l+0.00475*12,(double)i5)
*pow(l+0.00420*12,(double)i8);
if(term>max)/*若為最大值,記錄存款方式*/
{max=term;nl=il;n2=i2;n3=i3;n5=i5;n8=i8;
第,?節(jié)程格舉例
程序設(shè)計的一般步驟
1.分析題意,明確問題的性質(zhì)
數(shù)值問題/非數(shù)值問題
2.建立問題的描述模型
數(shù)學(xué)模型/過程模型
3.設(shè)計/確定算法
數(shù)學(xué)問題:數(shù)值分析
非數(shù)學(xué)問題:
數(shù)據(jù)結(jié)構(gòu)/算法分析與設(shè)計
一般方法:窮舉/遞推/遞歸/
4,編程調(diào)試
5.分析運行結(jié)果
第,?節(jié)程格舉例
第,?節(jié)程格舉例
例:判斷輸入的整數(shù)是否是素數(shù)
?算法使用,從2開始嘗試能否整除整數(shù)m。
ttinclude''stdio.h〃
main()
{intm,i;
scanf&m);
for(i=2;i<m;i++)
if(m%i==0)
break;
if(i>=m)
printf(AX%disaprinmenumber.\n〃,m);
else
printf(、'%disnotaprinmenumber.\nz,,m);
第,?節(jié)程格舉例
?程序的優(yōu)化
對于來說,為了提高程序的效率,就要減少
ttinclude''math.h〃15=3*5;
main()嘗試15%3以后,沒有
{intm,i,k;必要再嘗試15%5。
scanf(、'%d匕@0X4k是嘗試的中點。
k=sqrt(m);
for(i=2;i<=k;i++)例C6.801
if(m%i==0)break;
if(i>=k+l)printf('x%disaprimenumber.\n,A,m);
elseprintf(Ay%disnotaprimenumber.\nff,m);
}
第,?節(jié)程格舉例
例:如何判斷一個整數(shù)是另一個整數(shù)的平方
從鍵盤上任意輸入一個正整數(shù),要求判斷該
正整數(shù)是否是另一個整數(shù)的平方。
?問題分析與算法設(shè)計
設(shè):輸入的正整數(shù)為i,若i滿足:
i==m*m(m為整數(shù)〉0)
貝Ui為整數(shù)m的平方。
main()
{inti,m;
scanf(“%d",&i);
for(m=1;m++);
if(i==m*m)
printf("%d*%d=%d\n",i,i,m);
第,?節(jié)程格舉例
例:抓交通肇事犯
一輛卡車違犯交通規(guī)則,撞人后逃跑?,F(xiàn)場有三人目
擊事件,但都沒有記住車號,只記下車號的一些特征:
甲說:牌照的前兩位數(shù)字是相同的;
乙說:牌照的后兩位數(shù)字是相同的,但與前兩位不同;
丙是位數(shù)學(xué)家,說:四位的車號剛好是一個整數(shù)的平方。
請根據(jù)以上線索求出車號。
?問題分析與算法設(shè)計
按照題目的要求造出一個前兩位數(shù)(i)相同、后兩位數(shù)
(j)相同且相互間又不同的整數(shù)。得到:
(1)0<i<=90<=j<=9
(2)i!=j
(3)1100*i+11*j=m*m(m為整數(shù)〉二31)
第,?節(jié)程格舉例
main()
{inti,j,k,m;
for(i=l;i<=9;i++)/*i:車號前二位的取值*/
for(j=0;j<=9;j++)Aj:車號后二位的取值*/
if(i!=j)/*判斷兩位數(shù)字是否相異*/
{k=i*1000+i*100+j*10+j;
for(m=31;m*m<;m++)
if(m*m=)/*判斷是否為整數(shù)的平方*/
printf(/zLorry_No.is%d?\n〃,k);
?運行結(jié)果:Lorry_No.is.
第,?節(jié)程格舉例
例:百錢百雞問題
中國古代數(shù)學(xué)家張丘建在他的《算經(jīng)》中提出了著
名的“百錢百雞問題”:
雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢
一;百錢買百雞,翁、母、雛各幾何?
?問題分析與算法設(shè)計
設(shè):要買X只公雞,y只母雞,Z只小雞,可得到方程:
x+y+z=100①
5x+3y+z/3=100②
取值范圍:0〈二x、y、z<=100
可以采用窮舉法求解。
第,?節(jié)程格舉例
main()
{intx,y,z,j=0;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++)
for(z=0;z<=100;z++)
if(x+y+z==100&&5*x+3*y+z/3==100)
printf(z,%2d:cock=%2dhen=%2dchicken=%2d\n〃,
++j,x,y,z);
運行結(jié)果:
1:cock=0hen=25chicken=75
2:cock=3hen=20chicken=77
7:cock=12hen=4chicken=84
第,?節(jié)程格舉例
?丟失重要條件:應(yīng)該能夠被
main()
{intx,y,z,j=0;
for(x=0;x<=100;x++)
for(y=0;y<=100;y++)
for(z=0;z<=100;z++)
if(z%3==0&&x+y+z==l00&&5*x+3*y+z/3==100)
printf(z/%2d:cock=%2dhen=%2dchicken=%2d\n/z,
++j,x,y,z);
)
?運行程序,正確的結(jié)果:
1:cock=0hen=25chicken=75
2:cock=4hen=18chicken=78
3:cock=8hen=llchicken=81
4:cock=12hen=4chicken=84
第,?節(jié)程格舉例
?優(yōu)化程序:
main()
{intx,y,z,j=0;
for(x=0;x<=20;x++)
for(y=0;y<=33;y++)
for(z=0;z<=100;z++)
if(z%3==0&&x+y+z==100&&5*x+3*y+z/3=100)
printf(z,%2d:cock=%2dhen=%2dchicken=%2d\nz/,
}++j,x,y,z);
?再優(yōu)化程序:例C6_804
for(x=0;x<=20;x++)
for(y=0;y<=(100-5*x)/3;y++)
{z=100-x-y;
if(z%3==0&&5*x+3*y+z/3=100)
printf(,z%2d:cock=%2dhen=%2dchicken=%2d\n〃,
++j,x,y,z);
第,?節(jié)程格舉例
x=0y=0z=01
2
3
二^
JV-z0
1
2
3
二
:二?
TO
X--JVz0
I1
2
3
二^
JV-Z0
1
2
3
第,?節(jié)程格舉例
窮舉法的關(guān)鍵
?數(shù)學(xué)模型
■適宜進行窮舉的數(shù)學(xué)模型
■決定程序是否正確
?窮舉的范圍
■明確的窮舉終止條件
■決定窮舉的效率,范圍過大,則效率太低。
第,?節(jié)程格舉例
圖形
第,?節(jié)程格舉例
例:打印邊長為m的正方型
要求:從鍵盤輸入值,輸出行每行個*號。
例:輸入=4,輸出的圖形如下:
****
****
****
****
⑴屏幕輸出一個字符?
⑵屏幕輸出一行n個字符?
⑶屏幕輸出n行字符?
第,?節(jié)程格舉例
for(k=0;k<n;k++)
for(j=0;j<n;j++)
printf("*");
?分析
逐步求精法。對于復(fù)雜問題,不可能一下得
到程序,可以先將簡單的部分明確出來,再逐
步對復(fù)雜部分進行細化,一步一步推出程序。
第,?節(jié)程格舉例
ttinclude<stdio.h>
main()
{intk,n,j;
scanf("%d",&n);
for(k=l;k<=n;k++)/*控制打印m行*/
{for(j=l;j<=n;j++)/*打印一行中的m個*號*/
printf("*”);
printf("\n");
第,?節(jié)程格舉例
例:打印平行四邊形要求:從鍵盤輸入值,
輸出行用*號組成平行四邊形。
例:輸入二,輸出的圖形如下:
sixvizsi*
>rS^T%
sixsixsixvtz
?r%>Tx#TS^T%XT%
sixviz>1^six
?r%#T%xjx?Tx
vlzsixviz
*xjxXJXZTX
第,?節(jié)程格舉例
ttinclude<stdio.h>*****
main()*****
{inti,j,n;*****
scanf("%d",&n);*****
for(i=l;i<=n;*****
{for(j=l;j<i;j++)printf("
for(j=l;j<=n;j++)
printf("*");
printf\n");
第,?節(jié)程格舉例
ttinclude<stdio.h>*****
main()*****
{inti,j,n;*****
scanf("%d",&n);*****
for(i=l;i<=n;*****
{for(j=l;j<n-i;j++)
printf(,,
for(j=l;j<=n;j++)
printf("*");
printf\n");
第,?節(jié)程格舉例
ttinclude<stdio.h>*
main()***
**,
{inti,j,n;***
scanf("%d",&n);*******
for(i=l;i<=n;i++)I!*********
{for(j=l;j<n-i;j++)
“,,
printf(9
for(j=l;j<=2*i-l;j++)
printf("*");
printf("\n");
第,?節(jié)程格舉例
ttinclude<stdio.h>*********
main()*******
{inti,j,n;*****
scanf("%d",&n);***
for(i=l;i<=n;i++)*
{for(j=l;j<1j++)
“,,
printf(9
for(j=l;j<=2*(n-i)+l;j++)
printf("*");
printf("\n");
第,?節(jié)程格舉例
上下部
分規(guī)律不一*
致的圖形分***
開處理m行
^TX^JX^TX^TX^TX^TX^TX
^TS^TX^TX^TXXT^^T%XT^
XTX^T%^TX
]
*********
*******
*****
***>m?l行
*
第,?節(jié)程格舉例
打印字符圖形總結(jié)
外層循環(huán)控制打
main()
匚口閔必的片麻r7由鉉
{intk,m,j;
scanf(〃%d”一種連續(xù)字符用一
—■
for(k,7,字符的個數(shù)用
特殊情況特O
殊處理
prinw
for(j二N
printf
printf(u\n,J);循環(huán)體內(nèi)
循環(huán)體內(nèi)最后二條語句是回車換
行,決定以上內(nèi)容為一行。
第,?節(jié)程格舉例
main()
{intk,m,j;
scanf(“%d",&m);
for(k=1;k<=m;k++)
{if(k==l||k==m)
for(j=l;j<=2*k-l;j++)printf("*");
else
for(j=l;j<=m-k;j++)printf(u“);
printf(“*");
for(j=l;j<=2*k-1-2;j++)
printf("*
printf(“*");**
**
)**
printf("\n");**
***vtz
第,?節(jié)程格舉例
例:打印回形方陣:
要求:從鍵盤輸入邊長,輸出回形方陣。
例:輸入,1=6,輸出的圖形如下:
1111111111
1222122221
12321123321
12221n=5123321m=6
11111122221
111111
G分析:關(guān)鍵是找出小j與行i和列j的關(guān)系
第,?節(jié)程格舉例
main()
{inti,j,m;
scanf(“%d",&m);
第,?節(jié)程格舉例
main()
{inti,j,m;上三角元素的行
scanf("%d",&m);號小于列號,輸出
for(i=1;i<=m;i++)與行號一致
{for(j=1;j—
printf(u%z
輸出數(shù)字是12346
printf(“\n");I
111111
22222
1333
下三角元素的行124
號大于列號,輸出5123
與列號一致61234
第,?節(jié)程格舉例
main()
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024年鐵路機車項目建議書
- Unit 7 單詞變形及練習(xí) 人教版英語八年級上冊
- Tenacissoside-E-生命科學(xué)試劑-MCE
- Sulfuric-34S-acid-disodium-生命科學(xué)試劑-MCE
- Sucrose-octaacetate-Standard-生命科學(xué)試劑-MCE
- 2024-2025學(xué)年新教材高中英語Unit5Revealingnature單元素養(yǎng)評估課時作業(yè)含解析外研版選擇性必修第一冊
- 三年級英語下冊Module4Unit2DoesLinglinglikeoranges說課稿外研版三起
- 2024-2025學(xué)年新教材高中英語Unit4HistoryandtraditionsReadingforWriting同步基礎(chǔ)練習(xí)新人教版必修第二冊
- 統(tǒng)考版2025屆高考地理二輪復(fù)習(xí)專題闖關(guān)導(dǎo)練熱點3精準扶貧與鄉(xiāng)村振興含解析
- 2024年家用電器批發(fā)服務(wù)項目建議書
- 氣體流量和流速及與壓力的關(guān)系
- 混凝攪拌實驗操作方法
- 銀行代理國庫資格申請
- M75漿砌片石護坡施工方案
- 拌混凝土拌合站管理辦法
- 文明如廁講衛(wèi)生PPT課件
- 證券公司年度營業(yè)部經(jīng)營管理業(yè)績考核辦法
- 電子工程師必備基礎(chǔ)知識
- 網(wǎng)站建設(shè)與運營課程標準
- 用戶運營基礎(chǔ)知識
- 國家電網(wǎng)有限公司電網(wǎng)建設(shè)項目檔案管理辦法
評論
0/150
提交評論