c04計(jì)算機(jī)C語(yǔ)言復(fù)習(xí)課件_第1頁(yè)
c04計(jì)算機(jī)C語(yǔ)言復(fù)習(xí)課件_第2頁(yè)
c04計(jì)算機(jī)C語(yǔ)言復(fù)習(xí)課件_第3頁(yè)
c04計(jì)算機(jī)C語(yǔ)言復(fù)習(xí)課件_第4頁(yè)
c04計(jì)算機(jī)C語(yǔ)言復(fù)習(xí)課件_第5頁(yè)
已閱讀5頁(yè),還剩102頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第4章語(yǔ)句及程序流程控制

C

語(yǔ)言程序設(shè)計(jì)1本章主要掌握內(nèi)容:C語(yǔ)言的語(yǔ)句類型數(shù)據(jù)輸出數(shù)據(jù)輸入順序結(jié)構(gòu)程序設(shè)計(jì)分支結(jié)構(gòu)循環(huán)結(jié)構(gòu)2自學(xué)掌握內(nèi)容1.C語(yǔ)言的語(yǔ)句?控制語(yǔ)句、函數(shù)調(diào)用語(yǔ)句、表達(dá)式語(yǔ)句、空語(yǔ)句、復(fù)合語(yǔ)句#include<stdio.h>main(){inta=2,b=4,c=5;a+=b++;c*=a*b;printf("a=%d,b=%d,c=%d\n",a,b,c); {intc=10; a=++b+c;b=b+a;c=a=b;printf("a=%d,b=%d,c=%d\n",a,b,c); } printf("a=%d,b=%d,c=%d\n",a,b,c);}3自學(xué)掌握內(nèi)容2.順序結(jié)構(gòu)程序的一般算法描述?變量定義、變量賦值、加工處理、輸出結(jié)果假設(shè)輸入1234.567#include<stdio.h>#include<math.h>main(){doublea,b;printf("Inputreala\n");scanf("%lf",&a);b=(a*100+0.5)/100;printf("b=%.2f\n",b);}43.輸入輸出函數(shù)?putchar()、getchar();printf()、scanf()字符數(shù)據(jù)輸入輸出#include<stdio.h>main(){charc1,c2,c3;c1=getchar();c2=c1+3;c3=c1-3;putchar(c1);putchar(c2);putchar(c3);}假設(shè)輸入大寫字母G,那么輸出結(jié)果:54.printf函數(shù)中用到格式%8.2f的含義是:A.輸出一個(gè)float型數(shù)據(jù),小數(shù)局部占2位,整數(shù)局部至少占8位B.輸出一個(gè)float型數(shù)據(jù),小數(shù)局部占2位,整數(shù)局部至少占4位C.輸出一個(gè)double型數(shù)據(jù),小數(shù)局部占2位,整數(shù)局部至少占8位D.輸出一個(gè)double型數(shù)據(jù),小數(shù)局部占2位,整數(shù)局部至少占5位65.要使下面程序的輸出語(yǔ)句在屏幕上顯示1,2,34,那么從鍵盤輸入的數(shù)據(jù)格式應(yīng)為以下備選答案中的。#include<stdio.h>main(){chara,b;intc;scanf("%c%c%d",&a,&b,&c);printf("%c,%c,%d\n",a,b,c);}A〕1234 B〕1,2,34C〕’1’,’2’,34 D〕123474.1C語(yǔ)言概述C語(yǔ)言的語(yǔ)句分為:控制語(yǔ)句函數(shù)調(diào)用語(yǔ)句表達(dá)式語(yǔ)句空語(yǔ)句復(fù)合語(yǔ)句81)控制語(yǔ)句1.選擇分支控制語(yǔ)句

if()…else…

switch(){…} 2.循環(huán)控制語(yǔ)句

for()…

while()…do…while()3.其他控制語(yǔ)句

break、continue、gotoreturn92)函數(shù)調(diào)用語(yǔ)句

與表達(dá)式語(yǔ)句相似,在函數(shù)調(diào)用表達(dá)式后面加分號(hào)就構(gòu)成了函數(shù)調(diào)用語(yǔ)句。例如:#include<stdio.h>main(){charc1;scanf(“%c”,c1);}假設(shè)運(yùn)行上述程序時(shí),輸入:a↙那么變量c1得到了輸入字符a10表達(dá)式后面加一個(gè)分號(hào),構(gòu)成表達(dá)式語(yǔ)句x=3;y=y+5;x=a-b&&c||d;printf("x=%d,y=%d\n",x,y);sort(a,10);3).表達(dá)式語(yǔ)句賦值語(yǔ)句函數(shù)調(diào)用語(yǔ)句注意:①分號(hào)是語(yǔ)句必不可少的一局部②單獨(dú)的一個(gè)分號(hào)“;”構(gòu)成一個(gè)空語(yǔ)句例如:;〔空語(yǔ)句,是最簡(jiǎn)單的C語(yǔ)句〕114).空語(yǔ)句 在C語(yǔ)言中,稱僅由一個(gè)分號(hào)組成的語(yǔ)句為“空語(yǔ)句”,即:

; 編譯程序在遇到空語(yǔ)句時(shí),不會(huì)為其產(chǎn)生任何相應(yīng)的指令代碼。這就是說(shuō),空語(yǔ)句不執(zhí)行任何操作。因此,空語(yǔ)句只是C語(yǔ)言語(yǔ)法上的一個(gè)概念,它起到一個(gè)語(yǔ)句的作用,僅此而已。12復(fù)合語(yǔ)句用一對(duì)花括號(hào)“{}”括起來(lái)的假設(shè)干條語(yǔ)句花括號(hào)中可以是說(shuō)明語(yǔ)句、表達(dá)式語(yǔ)句、控制語(yǔ)句,也可以是復(fù)合語(yǔ)句例如:⑴if(a>b){max=a;min=b;}⑵for(n=1;n<10;n++){p=n+p;if(p>=100){printf(“%d\n”,p);break; }} 13復(fù)合語(yǔ)句〔續(xù)〕復(fù)合語(yǔ)句中如果有說(shuō)明性語(yǔ)句,應(yīng)該寫在可執(zhí)行語(yǔ)句的前面例如:

main(){inta,b,c;a=b=c=100;{floatc=10.23;printf("%f\n",c);}printf("%d%d%d\n",a,b,c);}要特別注意:花括號(hào)的配對(duì)花括號(hào)的位置C語(yǔ)言學(xué)習(xí)的難點(diǎn)之一144.2順序結(jié)構(gòu)程序設(shè)計(jì)順序結(jié)構(gòu)程序的一般算法描述變量定義變量賦值運(yùn)算處理輸出結(jié)果可用:變量初始化賦值語(yǔ)句輸入函數(shù)調(diào)用語(yǔ)句注意各個(gè)語(yǔ)句的順序15課堂練習(xí)1.設(shè)銀行定期存款的年利率rate為2.25%,并存款期為1年,存款本金為capital元,試編程計(jì)算1年后的本利之和deposit。要求定期存款的年利率rate是常量〔0.0225〕、存款本金capital均由鍵盤輸入。16#defineRATE0.0225#include<stdio.h>main(){floatcapital,deposit=0;scanf("%f",&capital);deposit=capital

*(1+0.0225);printf("deposit=%f\n",deposit);}172.輸入一個(gè)5位的正整數(shù),要求以相反的順序輸出該數(shù)。例如輸入12345,輸出位54321。#include<stdio.h>main(){inti,a1,a2,a3,a4,a5;scanf("%d",&i);a1=i/10000;a2=(i-a1*10000)/1000;a3=(i-a1*10000-a2*1000)/100;a4=(i-a1*10000-a2*1000-a3*100)/10;a5=i%10;printf("a5=%d,a4=%d,a3=%d,a2=%d,a1=%d\n",a5,a4,a3,a2,a1);}184.2.3數(shù)據(jù)輸入輸出的概念及在C語(yǔ)言中的實(shí)現(xiàn)

數(shù)據(jù)輸入輸出指計(jì)算機(jī)獲取數(shù)據(jù)與展示數(shù)據(jù)C語(yǔ)言使用輸入輸出函數(shù)其實(shí)是為了我們編程的方便和簡(jiǎn)潔,它們是一種固定的形式,相當(dāng)于一個(gè)模板,利用模板就可以靈活的實(shí)現(xiàn)人們對(duì)數(shù)據(jù)的處理的要求。

19字符輸入輸出函數(shù)輸出函數(shù)調(diào)用的一般形式putchar(ch)功能:在標(biāo)準(zhǔn)輸出設(shè)備〔即顯示器屏幕〕上輸出一個(gè)字符。例如:putchar('b');putchar('\n');putchar('\101');putchar(ch);20函數(shù)調(diào)用的一般形式getchar()功能:從標(biāo)準(zhǔn)輸入設(shè)備〔即鍵盤〕上交互輸入一個(gè)字符。例如:getchar();c=getchar();printf("%c\n",getchar());21【例】getchar函數(shù)的應(yīng)用。

#include"stdio.h"main(){charch;ch=getchar();printf("%c%d\n",ch,ch);printf("%c%d\n\n",ch-32,ch-32);}程序運(yùn)行時(shí)輸入:m

并按回車鍵后輸出結(jié)果是:m109M7722說(shuō)明putchar與getchar是C語(yǔ)言的標(biāo)準(zhǔn)庫(kù)函數(shù),使用時(shí)必須加編譯預(yù)處理命令:#include"stdio.h"

#include<stdio.h>【例】利用putchar函數(shù)輸出字符。#include"stdio.h"

main(){charc1,c2;c1='a';c2='b';putchar(c1);putchar(c2);putchar('\n');putchar(c1-32);putchar(c2-32);putchar('\n');}也可改為c1=97;c2=98;

輸出結(jié)果:abAB23格式輸入與輸出printf()函數(shù)printf(格式控制,參數(shù)2,…,參數(shù)n)

功能:按格式控制所指定的格式,在標(biāo)準(zhǔn)輸出設(shè)備上輸出參數(shù)2、…、參數(shù)n的值。用雙引號(hào)括起的字符串,用于指定輸出數(shù)據(jù)的類型、格式、個(gè)數(shù)包括:普通字符和格式說(shuō)明符照原樣輸出

printf("c=%d+%d=%d\n",a,b,a+b);格式說(shuō)明符:指定輸出3個(gè)十進(jìn)制整型數(shù),分別為變量a、b、a+b的值24輸出格式說(shuō)明符整型數(shù)據(jù)

%d以有符號(hào)十進(jìn)制形式輸出整型數(shù)%o以無(wú)符號(hào)八進(jìn)制形式輸出整型數(shù)%x以無(wú)符號(hào)十六進(jìn)制形式輸出整型數(shù)%u以無(wú)符號(hào)十進(jìn)制形式輸出整型數(shù)實(shí)型數(shù)據(jù)

%f以小數(shù)形式輸出實(shí)型數(shù)%e以指數(shù)形式輸出實(shí)型數(shù)%g按數(shù)值寬度最小的形式輸出實(shí)型數(shù)字符型數(shù)據(jù)

%c輸出一個(gè)字符%s輸出字符串其他

%%輸出字符%本身在%和格式符之間可以使用附加說(shuō)明符25附加格式說(shuō)明符l輸出長(zhǎng)整型數(shù)(只可與d、o、x、u結(jié)合用)m指定數(shù)據(jù)輸出的寬度(即域?qū)挘?n對(duì)實(shí)型數(shù)據(jù),指定輸出n位小數(shù);對(duì)字符串,指定左端截取n個(gè)字符輸出+使輸出的數(shù)值數(shù)據(jù)無(wú)論正負(fù)都帶符號(hào)輸出-使數(shù)據(jù)在輸出域內(nèi)按左對(duì)齊方式輸出整數(shù)位數(shù)+小數(shù)位數(shù)+小數(shù)點(diǎn)自動(dòng)對(duì)n位后小數(shù)四舍五入

例如:%ld——輸出十進(jìn)制長(zhǎng)整型數(shù)%m.nf——右對(duì)齊,m位域?qū)?,n位小數(shù)或n個(gè)字符%-m.nf——左對(duì)齊26例:整型數(shù)據(jù)的輸出main(){inta=11,b=22;intm=-1;longn=123456789;printf("%d%d\n",a,b);printf("a=%d,b=%d\n",a,b);printf("m:%d,%o,%x,%u\n",m,m,m,m);printf("n=%d\n",n);printf("n=%ld\n",n);}TC程序輸出:1122a=11,b=22m:-1,177777,ffff,65535n=-13035n=12345678927進(jìn)位記數(shù)制1.基數(shù)〔P37〕進(jìn)位計(jì)數(shù)制是指用一組特定的數(shù)字符號(hào),按照一定的進(jìn)位規(guī)那么來(lái)表示數(shù)目的計(jì)數(shù)方法。進(jìn)位計(jì)數(shù)制中所使用的不同根本符號(hào)的個(gè)數(shù)。二進(jìn)制的基數(shù):2.位權(quán)〔P37〕每一個(gè)數(shù)位上數(shù)符所具有的權(quán),它是一個(gè)乘方值。二進(jìn)制的位權(quán):2i228理解:當(dāng)前時(shí)間為9點(diǎn),假設(shè)調(diào)到4點(diǎn),可順時(shí)撥7格,即7+9=16;也可反時(shí)針撥5格,9-5=4,兩方法.時(shí)鐘為12進(jìn)制,模為12,當(dāng)數(shù)大于12時(shí),就有進(jìn)位,把進(jìn)位去掉,16-12=4,-5是原值,+7就是-5的互補(bǔ)值.如何將減法運(yùn)算轉(zhuǎn)換為加法運(yùn)算?3126912457810119-5=49+7=16=(4)1229

2.3.2數(shù)值數(shù)據(jù)的表示4.原碼、反碼和補(bǔ)碼〔P46〕01011111Y=-48

[X]原[X]反[X]補(bǔ)X=+95

101100101100110110110011[Y]原[Y]反[Y]補(bǔ)010111110101111130練習(xí):將以下十進(jìn)制數(shù)轉(zhuǎn)換為原碼、反碼、補(bǔ)碼假定計(jì)算機(jī)為16位運(yùn)算15127-1-25431例:實(shí)型數(shù)據(jù)的輸出main(){floatx=1234.56,y=1.23456789;doublez=1234567.123456789;printf("x=%f,y=%f\n",x,y);printf("z=%f\n",z);printf("z=%e\n",z);printf("z=%g\n",z);printf("z=%18.8f\n",z);printf("x=%10.3f\n",x);printf("x=%-10.3f\n",x);printf("x=%4.3f\n\n",x);}TC程序輸出:x=1234.560059,y=1.234568z=1234567.123457z=1.23457e+06z=1234570z=1234567.12345679x=1234.560x=1234.560x=1234.56032例:字符型數(shù)據(jù)的輸出main(){intm=97;charch='B';printf("m:%d%c\n",m,m);printf("ch:%d%c\n",ch,ch);printf("%s\n","student");printf("%10s\n","student");printf("%-10s\n","student");printf("%10.3s\n","student");printf("%.3s\n\n","student");}程序輸出:m:97ach:66Bstudentstudentstudentstustu33scanf()函數(shù)函數(shù)調(diào)用的一般形式scanf(格式控制,地址參數(shù)2…,地址參數(shù)n);功能:按格式控制指定的格式,從標(biāo)準(zhǔn)輸入設(shè)備(即鍵盤)交互輸入數(shù)據(jù),并依次存放到對(duì)應(yīng)地址參數(shù)指定的變量中(即將輸入值賦給變量)。

普通字符和格式說(shuō)明符scanf("a=%d,b=%d",&a,&b);格式說(shuō)明符:指定輸入2個(gè)十進(jìn)制整型數(shù)賦給變量a和b34輸入格式說(shuō)明符整型數(shù)據(jù)

%d輸入十進(jìn)制整型數(shù)%u輸入無(wú)符號(hào)的十進(jìn)制整型數(shù)%o輸入八進(jìn)制整型數(shù)%x輸入十六進(jìn)制整型數(shù)實(shí)型數(shù)據(jù)

%f輸入小數(shù)形式的單精度實(shí)型數(shù)%e輸入指數(shù)形式的單精度實(shí)型數(shù)字符型數(shù)據(jù)

%c輸入單個(gè)字符%s輸入一個(gè)字符串在%和格式符之間可以使用附加說(shuō)明符35附加格式說(shuō)明符l與d、o、x、u結(jié)合輸入長(zhǎng)整型數(shù)與f結(jié)合輸入double型數(shù)m指定數(shù)據(jù)輸入的寬度(即域?qū)挘?忽略讀入的數(shù)據(jù)(即不將讀入數(shù)據(jù)賦給相應(yīng)變量)例如:%ld、%lo——輸入十進(jìn)制、八進(jìn)制長(zhǎng)整型數(shù)%lf、%le——輸入雙精度實(shí)型數(shù)%mf——輸入m位數(shù)〔域?qū)挕?*d——忽略輸入的一個(gè)整型數(shù)36例如:scanf("%d%d%d",&a,&b,&c);輸入3個(gè)整型十進(jìn)制數(shù),以空白符〔空格、tab鍵或回車鍵〕分隔scanf("%d,%o,%f",&a,&b,&x);輸入3個(gè)數(shù),以“,”分隔scanf("a=%d,b=%d",&a,&b);輸入的形式是:a=32,b=28〔普通字符要照原樣輸入〕37scanf("%c%c%c",&ch1,&ch2,&ch3);要輸入:abc

不能輸入:a

b

c

注意數(shù)值型數(shù)據(jù)與char型數(shù)據(jù)的混合輸入格式符之間假設(shè)無(wú)普通字符,那么:輸入的數(shù)值型數(shù)據(jù)用空白符分隔輸入的char型數(shù)據(jù)不必分隔例如:scanf("%d%d",&m,&n);scanf("%c",&ch);錯(cuò)誤輸入:32

28

a

正確輸入:32

28a

38【例】三條邊a、b、c,求三角形面積。計(jì)算三角形面積的海倫公式:其中:設(shè)定義:整型變量a、b、c實(shí)型變量s、area39程序如下:#include"math.h"main(){inta,b,c;floats,area;scanf("%d,%d,%d",&a,&b,&c);s=1.0/2*(a+b+c);area=sqrt(s*(s-a)*(s-b)*(s-c));printf("area=%8.3f\n",area);}程序運(yùn)行情況如下:3,4,5

area=6.000

實(shí)際上還需要判斷a、b、c是否能構(gòu)成三角形,即應(yīng)該進(jìn)行選擇判斷處理404.3.1關(guān)系運(yùn)算符C的關(guān)系運(yùn)算符數(shù)學(xué)中的關(guān)系符含義>

>大于>=≥大于或等于<

<小于<=≤小于或等于==

=等于!=≠不等于注意:關(guān)系運(yùn)算符中的相等用“==”表示不要與賦值號(hào)“=”混淆!4.3選擇結(jié)構(gòu)程序設(shè)計(jì)41關(guān)系運(yùn)算的運(yùn)算規(guī)那么1.關(guān)系運(yùn)算符的優(yōu)先順序?yàn)?gt;、>=、<、<=

相同,==、!=相同,前組優(yōu)先于后組。2.關(guān)系表達(dá)式成立,那么結(jié)果為1,即為真值;否那么為0,即為假值。舉例:18>5

9>1848>18>81>8010423.關(guān)系運(yùn)算的操作數(shù)可為算術(shù)表達(dá)式。4.關(guān)系運(yùn)算符的優(yōu)先級(jí)低于算術(shù)運(yùn)算符的優(yōu)先級(jí)。舉例:2*5<10-710<305.外表看起來(lái)合法的關(guān)系表達(dá)式,在邏輯上并不一定是正確的。舉例:當(dāng)a=3;b=2;c=1時(shí)a>b>c?3>2>11>10434.3.2邏輯運(yùn)算符邏輯運(yùn)算符&& 邏輯與(并且)|| 邏輯或(或者)! 邏輯非44二進(jìn)制數(shù)的邏輯運(yùn)算

邏輯非運(yùn)算邏輯非的真值表 AF=A0110邏輯與運(yùn)算邏輯與的真值表 ABF=A×B00001010011145二進(jìn)制數(shù)的邏輯運(yùn)算

邏輯或運(yùn)算邏輯或的真值表 ABF=A+B00001110111146邏輯運(yùn)算的運(yùn)算規(guī)那么邏輯運(yùn)算符的優(yōu)先順序?yàn)椋?/p>

!&&||按順序遞減。算術(shù)、關(guān)系、邏輯運(yùn)算符的優(yōu)先順序?yàn)椋核阈g(shù)運(yùn)算關(guān)系運(yùn)算邏輯運(yùn)算舉例:a+b>c*d&&L1&&!L247C語(yǔ)言沒有提供“邏輯型”或“布爾型”等數(shù)據(jù)類型。只要合法,任何類型表達(dá)式都可作為判斷條件,可作邏輯量使用,表達(dá)式值為非0,即為真值,0為假!舉例:當(dāng)a=3時(shí)a+1為真值;a-3為假值。邏輯運(yùn)算的運(yùn)算規(guī)那么48邏輯表達(dá)式舉例判斷某一年year是否是閏年。能被4整除,但不能被100整除;或能被400整除;year%4==0&&year%100!=0或year%400==0(year%4==0&&year%100!=0)||(year%400==0)494.3.3條件運(yùn)算算式格式E1?E2:E3〔屬三目運(yùn)算符〕算式框圖E1為真?E2E3yesno舉例A=(x>y)?x:y又:〔++I%8)?‘’:'\n'50運(yùn)算符按照優(yōu)先級(jí)大小由上向下排列,在同一行的運(yùn)算符具有相同優(yōu)先級(jí)。第二行是所有的一元運(yùn)算符。運(yùn)算符解釋結(jié)合方式()[]->.括號(hào)(函數(shù)等),數(shù)組,兩種結(jié)構(gòu)成員訪問由左向右!~++--+-

*&(類型)sizeof否定,按位否定,增量,減量,正負(fù)號(hào),間接,取地址,類型轉(zhuǎn)換,求大小由右向左*/%乘,除,取模由左向右+-加,減由左向右<<=>=>小于,小于等于,大于等于,大于由左向右==!=等于,不等于由左向右&&邏輯與由左向右||邏輯或由左向右?:條件由右向左=+=-=*=/=

各種賦值由右向左,逗號(hào)(順序)由左向右514.3.4單項(xiàng)選擇擇結(jié)構(gòu)的框圖結(jié)構(gòu)yesno語(yǔ)句A條件成立否yesno條件語(yǔ)句A入口出口52雙選擇結(jié)構(gòu)的框圖結(jié)構(gòu)yesno程序段A程序段B條件成立否入口出口yesno條件語(yǔ)句A語(yǔ)句B53if-else擇條件語(yǔ)句選擇結(jié)構(gòu)的一種最常用形式: if(表達(dá)式)

語(yǔ)句1;

else

語(yǔ)句2;

語(yǔ)句3;執(zhí)行過程:當(dāng)括號(hào)內(nèi)表達(dá)式成立時(shí),即表達(dá)式的值是非0時(shí),執(zhí)行語(yǔ)句1,然后語(yǔ)句3;

當(dāng)表達(dá)式不成立時(shí),值等于0時(shí),執(zhí)行語(yǔ)句2,然后語(yǔ)句3,上面else局部也可以沒有。54 if(表達(dá)式)

語(yǔ)句1;

語(yǔ)句3;執(zhí)行過程:當(dāng)括號(hào)內(nèi)表達(dá)式成立時(shí)〔表達(dá)式的值是非0〕,執(zhí)行語(yǔ)句1,然后執(zhí)行語(yǔ)句3;

當(dāng)表達(dá)式不成立時(shí)〔等于0〕,直接執(zhí)行語(yǔ)句3。if條件語(yǔ)句55if-else多項(xiàng)選擇條件語(yǔ)句if的一種擴(kuò)展形式格式:

if(表達(dá)式1)

語(yǔ)句1;

elseif(表達(dá)式2)

語(yǔ)句2;

elseif(表達(dá)式3)

語(yǔ)句3;

…………

else

語(yǔ)句4;

語(yǔ)句5;功能

當(dāng)表達(dá)式1為真值時(shí),執(zhí)行語(yǔ)句1;否則,當(dāng)表達(dá)式2為真值時(shí),執(zhí)行語(yǔ)句2,否則…其中else部分可以沒有。56補(bǔ)足程序段--1例:輸入兩個(gè)整數(shù),按從小到大的順序輸出它們。t=a;a=b;b=t;#include<stdio.h>main(){inta,b,t;scanf("%d,%d",&a,&b);if(a>b){ }printf("%d,%d",a,b);}57a=a+b;b=a-b;a=a-b;條件語(yǔ)句舉例--1#include<stdio.h>main(){inta,b;scanf("%d,%d",&a,&b);if(a>b){ }printf("%d,%d",a,b);}58條件語(yǔ)句舉例--1a>b?b:a,a>b?a:b#include<stdio.h>main(){inta,b;scanf("%d,%d",&a,&b);printf("%d,%d", );}59條件語(yǔ)句舉例--2例:輸入三個(gè)整數(shù),按從小到大的順序輸出它們。#include<stdio.h>main(){inta,b,c,t;scanf("%d,%d,%d",&a,&b,&c);if(a>b){ }if(a>c){ }if(b>c){ }printf("%d,%d,%d",a,b,c);}t=a;a=b;b=t;t=a;a=c;c=t;t=b;b=c;c=t;60有一函數(shù):-1(x<0)y=0(x=0)1(x>0)編一程序,輸入一個(gè)x值,輸出y值。#include<stdio.h>main(){intx,y;scanf("%d",&x);if(x<0)y=-1;elseif(x=0)y=0;//elsey=1;printf("x=%d,y=%d",x,y);}條件語(yǔ)句舉例--3#include<stdio.h>main(){intx,y;scanf("%d",&x);if(x>=0) /*條件語(yǔ)句嵌套*/if(x==0)y=0;/*注意:內(nèi)、外重條件語(yǔ)句*/elsey=1;/*if-else配對(duì)使用原那么:*/elsey=-1;/*else總是與距離它最近的且沒有*/ /*配對(duì)的if相結(jié)合,與縮進(jìn)格式無(wú)關(guān)!*/printf("x=%d,y=%d",x,y);}61開關(guān)語(yǔ)句--switch功能格式開關(guān)語(yǔ)句就像多路開關(guān)一樣,程序可根據(jù)一個(gè)表達(dá)式可能產(chǎn)生的不同結(jié)果值,選擇其中一個(gè)——獨(dú)立分支結(jié)構(gòu),或幾個(gè)分支的語(yǔ)句——非獨(dú)立分支結(jié)構(gòu)去執(zhí)行。switch(表達(dá)式){case常量1:語(yǔ)句系列1case常量2:語(yǔ)句系列2……case常量m:語(yǔ)句系列mdefault:語(yǔ)句系列m+1}說(shuō)明⑴switch后括號(hào)內(nèi)表達(dá)式的值只能是整形、字符型或枚舉類型,每個(gè)常量的類型和表達(dá)式的類型應(yīng)相同,每個(gè)語(yǔ)句序列可以是零個(gè)或假設(shè)干個(gè)語(yǔ)句。case3:case4:printf(“%d”,d1);break;default:⑵執(zhí)行時(shí),先求表達(dá)式的值,然后自上而下依次測(cè)試每一個(gè)常量,假設(shè)與常量I相匹配,那么從其后的語(yǔ)句序列i開始執(zhí)行每個(gè)語(yǔ)句序列,假設(shè)沒有常量與之匹配,那么執(zhí)行default后面的語(yǔ)句序列——非獨(dú)立分支結(jié)構(gòu)。假設(shè)只執(zhí)行語(yǔ)句系列I,那么在語(yǔ)句系列I后加break語(yǔ)句——獨(dú)立分支結(jié)構(gòu)。switch(表達(dá)式){case常量1:語(yǔ)句系列1;break;case常量2:語(yǔ)句系列2;break;……case常量m:語(yǔ)句系列m;break;default:語(yǔ)句系列m+1;}⑶由于每個(gè)case語(yǔ)句后的常量只起語(yǔ)句標(biāo)號(hào)的作用,所以它們的值必須互不相同,否那么會(huì)出現(xiàn)互相矛盾的現(xiàn)象(C語(yǔ)言系統(tǒng)不允許,編譯出錯(cuò))。case1:case1:case3:⑷獨(dú)立分支時(shí)每個(gè)case語(yǔ)句和default語(yǔ)句的出現(xiàn)的前后次序發(fā)生改變時(shí),不影響運(yùn)行結(jié)果,但在一般情況下,常量出現(xiàn)頻率較高的放在前面。

case1:case1:default:case2:case2:case3:

case3:

deault:舉例有了if語(yǔ)句,為什么還要switch語(yǔ)句?62開關(guān)語(yǔ)句舉例獨(dú)立分支開關(guān)語(yǔ)句舉例非獨(dú)立分支開關(guān)語(yǔ)句舉例63獨(dú)立分支開關(guān)語(yǔ)句舉例

X0≤X<102X+110≤X<20Y=4120≤X<3071-X30≤X<400X<0或X≥40#include<stdio.h>main(){intxscanf("%d",&x);switch( ){case0:printf("y=%d\n",x);break;case1:printf("y=%d\n",2*x+1);break;case2:printf("y=20\n");break;case3:printf("y=%d\n",71-x);break;default:printf("y=0\n");}}x/1064非獨(dú)立分支開關(guān)語(yǔ)句舉例設(shè)有語(yǔ)句:inta=1,b=0;那么執(zhí)行下面語(yǔ)句后輸出為()switch(a){case1: switch(b): { case0:printf(“**0**”);break; case1:printf(“**1**”);break; }case2:printf(“**2**”);break;}A.**0**B.**0****2**C.**0****1****2**D.錯(cuò)誤B.**0****2**B65例switch(score){case5:printf(“Verygood!”);case4:printf(“Good!”);case3:printf(“Pass!”);case2:printf(“Fail!”);default:printf(“dataerror!”);}運(yùn)行結(jié)果:score為5時(shí),輸出:

Verygood!Good!Pass!Fail!dataerror!66

輔助控制語(yǔ)句break語(yǔ)句功能:在switch語(yǔ)句和循環(huán)語(yǔ)句中,終止并跳出開關(guān)體或循環(huán)體。說(shuō)明:break只能終止并跳出最近一層的結(jié)構(gòu)break不能用于循環(huán)語(yǔ)句和switch語(yǔ)句之外的任何其它語(yǔ)句之中。67例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);}運(yùn)行結(jié)果:a=2,b=168intx,a,b;那么以下選項(xiàng)中錯(cuò)誤的if語(yǔ)句是〔〕

A)if(a=b)x++;B)if(a=<b)x++;C)if(a-b)x++;D)if(x)x++;B)if(a=<b)x++;inti=10;那么執(zhí)行以下程序后,i的正確值是〔〕Switch(i){case9:i+=1;case10:i+=1;case11:i+=1;case12:i+=1;}A)10B)11C)12D)13A)10B)11C)12D)1369以下程序在運(yùn)行時(shí),輸入變量a的值為1,變量b的值為2,選擇運(yùn)行結(jié)果。#include<stdio.h>main(){inta,b,t=0;scanf("%d%d",&a,&b);if(a=2)t=a,a=b,b=t;printf("%d,%d\n",a,b);}2,02,22,11,22,02,22,11,270課堂練習(xí)1。設(shè)faH為其父身高,moh為其母身高,身高預(yù)測(cè)公式為:男性成人時(shí)身高=(faH+moH)*0.54(cm)女性成人時(shí)身高=(faH*0.923+moH)/2(cm)此外,如果喜愛體育鍛煉,那么可增加身高2%,如果有良好的衛(wèi)生飲食習(xí)慣,那么可增加身高1.5%。編程從鍵盤輸入預(yù)測(cè)者的性別、父身高faH,母身高moH、是否喜愛體育鍛煉sports,是否有良好的飲食習(xí)慣diet,利用給定公式和身高預(yù)測(cè)方法對(duì)你的身高進(jìn)行預(yù)測(cè)。71#include<stdio.h>main(){floatfah,moh,h;charsex,sport,diet;printf("\n請(qǐng)輸入性別代碼,m-男,f-女");sex=getchar();getchar();printf("是否愛好體育y-是n-否");sport=getchar();getchar();printf("\n是否有良好生活習(xí)慣y-是n-否");diet=getchar();printf("\n請(qǐng)輸入父親身高fah=,母親身高moh=");scanf("%f,%f",&fah,&moh);printf("sex=%c,sport=%c,custom=%c\n",sex,sport,custom);if(sex=='M'||sex=='m')h=(fah+moh)*0.54;elseh=(fah*0.923+moh)/2;if(sport=='Y'||sport=='y')h=h+h*0.02;if(diet=='Y'||diet=='y')h=h+h*0.015;printf("本人的預(yù)測(cè)身高=%fcm\n",h);}722.編程設(shè)計(jì)一個(gè)簡(jiǎn)單的計(jì)算器程序,要求根據(jù)用戶從鍵盤輸入如下形式的表達(dá)式:操作數(shù)1運(yùn)算符op操作數(shù)2

然后,計(jì)算并輸出表達(dá)式的值指定的運(yùn)算符為加〔+〕減〔-〕乘〔*〕除〔/〕73main(){ intdata1,data2;/*定義兩個(gè)操作符*/ charop;/*定義運(yùn)算符*/ printf("Pleaseentertheexpression:"); scanf("%d%c%d",&data1,&op,&data2);/*輸入運(yùn)算表達(dá)式*/ switch(op) { case'+':/*處理加法*/ printf("%d+%d=%d\n",data1,data2,data1+data2); break; case'-':/*處理減法*/ printf("%d-%d=%d\n",data1,data2,data1-data2); break; case'*':/*處理乘法*/ printf("%d*%d=%d\n",data1,data2,data1*data2); break; case'/':/*處理除法*/

if(data2==0) printf("Divisionbyzero!\n"); else printf("%d/%d=%d\n",data1,data2,data1/data2); break; default:printf("Unknownoperator!\n");}}744.4循環(huán)結(jié)構(gòu)while語(yǔ)句do~while語(yǔ)句for語(yǔ)句用goto

和if構(gòu)成循環(huán)循環(huán)結(jié)構(gòu)的嵌套break和continue語(yǔ)句的使用75循環(huán)語(yǔ)句定義在給定條件成立時(shí),重復(fù)執(zhí)行某個(gè)程序段的語(yǔ)句稱為循環(huán)語(yǔ)句,重復(fù)執(zhí)行的程序段稱為循環(huán)體。循環(huán)體循環(huán)體可以是單個(gè)C語(yǔ)句、空語(yǔ)句或復(fù)合語(yǔ)句。當(dāng)循環(huán)體中是空語(yǔ)句〔只有一個(gè)分號(hào)〕時(shí),表示在循環(huán)體中什么也不做。循環(huán)結(jié)構(gòu)while語(yǔ)句do--while語(yǔ)句for語(yǔ)句76While程序舉例用while語(yǔ)句編程求#include<stdio.h>main(){intsum,i;i=1;sum=0;/*循環(huán)初始化*/while(i<=100){sum=sum+i;}printf("%d",sum);}sum=0,i=1當(dāng)i小于等于100sum=sum+ii=i+1輸出總和sumi++;

/*修改循環(huán)變量*/77do~while語(yǔ)句程序舉例用do~while語(yǔ)句編程求#include<stdio.h>main(){intsum,i;do{sum+=i;i++; /*修改循環(huán)變量*/}while(i<=100);printf("%d",sum);}i=1;sum=0;/*循環(huán)變量賦初值*/78for語(yǔ)句程序舉例用for語(yǔ)句編程求#include<stdio.h>main(){intsum,i;sum=0;for()sum=sum+i;printf("%d",sum);}i=1;i<=100;i++79永遠(yuǎn)不會(huì)退出的循環(huán)為死循環(huán)for(;;){}while(1){}do{}while(1)一般情況下,要竭力防止死循環(huán)絕大多數(shù)程序不需要死循環(huán)。如果出現(xiàn),往往都是bug時(shí)間過長(zhǎng)的循環(huán)會(huì)造成“假死”效果,也要考慮解決死循環(huán)80for語(yǔ)句程序舉例求Fibonacci數(shù)列:1,1,2,3,5,8,……的前20項(xiàng)。即第一、二項(xiàng)都是1,第三項(xiàng)以后的每一項(xiàng)都是前兩項(xiàng)的和。81#include<stdio.h>main(){longintf1,f2;inti;f1=1;f2=1;for(i=1;i<=10;i++){printf("%12ld%12ld",f1,f2);if(i%2==0)printf("\n");f1=f1+f2;f2=f1+f2;}}82課堂舉例

單重循環(huán)問題應(yīng)用*公式計(jì)算水仙花數(shù)83程序舉例--1打印出所有的“水仙花數(shù)”,所謂“水仙花數(shù)”是指一個(gè)三位數(shù),其各位數(shù)字立方和等于該數(shù)字本身。例如:153=13+53+3384水仙花數(shù)程序?qū)嵗?include<stdio.h>main(){intl1,l2,l3,l4;for(l4=100;l4<=999;l4++){l1=l4%10; /*個(gè)位*/l2=(l4%100)/10; /*十位*/l3=l4/100; /*百位*/if(l4==l1*l1*l1+l2*l2*l2+l3*l3*l3)printf("Daffodil'snumberis%d\n",l4);}}85穩(wěn)固練習(xí):打印出所有的“玖瑰花數(shù)”,所謂“玖瑰花數(shù)”是指一個(gè)四位數(shù),其各位數(shù)字4方和等于該數(shù)字本身。例如:1634=14+64+34+4486#include<stdio.h>main(){intl1,l2,l3,l4,l5;for(l5=1000;l5<=9999;l5++){l1=l5%10; /*個(gè)位*/l2=(l5%100)/10; /*十位*/l3=(l5%1000)/100; /*百位*/l4=l5/1000; /*千位*/if(l5==l1*l1*l1*l1+l2*l2*l2*l2+l3*l3*l3*l3+l4*l4*l4*l4)printf(“Rose'snumberis%d\n",l5);}}87程序舉例--2用—≈1-—+—-—+……公式求π的近似值,直到最后一項(xiàng)的絕對(duì)值小于10-6為止。

π111

4357通項(xiàng)公式:Sign*—其中n=1,3,5,……Sign=1或-1

1

n88程序舉例--2#include<stdio.h>#includemain(){intSign=1;floatn=1.0,t=1.0,pi=0.;while(fabs(t)>=1e-6){

}pi=pi*4;printf("pi=%10.6f\n",pi);}

pi=pi+t;n=n+2;Sign=-Sign;t=Sign/n;<math.h>89嵌套循環(huán)及其應(yīng)用舉例定義在一個(gè)循環(huán)的循環(huán)體中又包含了另一個(gè)循環(huán),該結(jié)構(gòu)稱為嵌套循環(huán)。注明舉例*九·九表百錢買百雞*楊輝三角形*水仙花90九·九表----191九·九表框圖和程序----1開始forI=1to9forJ=1to9輸出I*J輸出表頭結(jié)束#include<stdio.h>main(){inti,j;for(i=1;i<=9;i++)printf("%4d",i);printf("\n");for(i=1;i<=9;i++)printf("----");printf("\n");for(i=1;i<=9;i++){for(j=1;j<=9;j++)printf("%4d",i*j);printf("\n");}}開始forI=1to9forJ=1to9輸出I*J輸出表頭結(jié)束92九·九表----293水仙花數(shù)解法2----框圖開始forl1=1to9forl2=0to9forl3=0to9輸出l4l4=?l5l4=l1*100+l2*10+l3l5=l1*l1*l1+l2*l2*l2+l3*l3*l3結(jié)束yesno94水仙花數(shù)解法1----程序#include<stdio.h>main(){intl1,l2,l3,l4;for(l1=1;l1<=9;l1++) /*百位*/for(l2=0;l2<=9;l2++)/*十位*/for(l3=0;l3<=9;l3++){/*個(gè)位*/

l4=l1*100+l2*10+l3;if(l4==l1*l1*l1+l2*l2*l2+l3*l3*l3)printf("Daffodil’snumberis%d\n",l4);}}嵌套縮進(jìn)格式95玖瑰花數(shù)解法2----程序#include<stdio.h>main(){intl1,l2,l3,l4,l5;for(l1=1;l1<=9;l1++) /*千位*/for(l2=0;l2<=9;l2++)/*百位*/for(l3=0;l3<=9;l3++){/*十位*/ for(l4=0;l4<=9;l4++){/*個(gè)位*/ l5=l1*1000+l2*100+l3*10+l4;if(l5==l1*l1*l1*l1+l2*l2*l2*l2+l3*l3*l3*l3+l4*l4*l4*l4)printf("Daffodil’snumberis%d\n",l5);}}}96楊輝三角形----框圖111121133114641151010511615201561……開始輸入輸出的行數(shù)nfori=0tonforj=0toi輸出輸出回車換行開始開始輸入輸出的行數(shù)nfori=0tonforj=0toi輸出輸出回車換行開始97楊輝三角形----程序#include<stdio.h>main(){intn,i,j,k,i1,j1,k1;printf(〞輸入輸出的行數(shù):〞);scanf(〞%d〞,&n);for(i=0;i<n;i++){for(j=0;j<=i;j++){i1=j1=k1=1;for(k=1;k<=i;k++)i1*=k;for(k=1;k<=j;k++)j1*=k;for(k=1;k<=i-j;k++)k1*=k;printf(〞%7d〞,i1/(j1*k1));}printf(〞\n〞);}}98百錢買百雞雞翁一,值錢五;雞母一,值錢三;雞雛三,值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?99百錢買百雞----1#include<stdio.h>main(){intx,y,z,m,n;for(x=0;x<=100;x++)for(y=0;y<=100;y++)for(z=0;z<=100;z++){m=x+y+z;n=5*x+3*y+z/3;if(m==100&&n==100)printf(〞%5d,%5d,%5d\n〞,x,y,z);}}100百錢買百雞----2#include<stdio.h>main(){ x,y,z,m,n;for(x=0;x<=100;x++)for(y=0;y<=100;y++)for(z=0;z<=100;z++){m=x+y+z;n=5*x+3*y+z/3;if(m==100&&n==100)printf(〞%5.0f,%5.0f,%5.0f\n〞,x,y,z);}}float101百錢買百雞----3#include<stdio.h>main(){floatx,y,z,m,n;for(x=0;x<=20;x++)for(y=0;y<=33;y++)for(z=0;z<=99;z++){m=x+y+z;n=5*x+3*y+z/3;if(m==100&&n==100)printf(〞%5.0f,%5.0f,%5.0f\n〞,x,y,z);}02575418788118112484102轉(zhuǎn)移控制語(yǔ)句定義語(yǔ)句能夠改變程序流向的語(yǔ)句。Break,continue語(yǔ)句return語(yǔ)句goto語(yǔ)句103goto語(yǔ)句功能將控制執(zhí)行權(quán)轉(zhuǎn)移到指定的語(yǔ)句標(biāo)號(hào)處。格式goto語(yǔ)句標(biāo)號(hào);語(yǔ)句標(biāo)號(hào)用標(biāo)識(shí)符表示轉(zhuǎn)移語(yǔ)句的入口目的地址。不能用整數(shù)作語(yǔ)句標(biāo)號(hào)。舉例gotoasd;……asd:x=……loop:if(x>=0){ n++; sum+=x;scanf(“%f”,&x);gotoloop;}用goto語(yǔ)句構(gòu)成循環(huán)104break語(yǔ)句和continue語(yǔ)句功能在循環(huán)語(yǔ)句中,遇break語(yǔ)句跳出循環(huán);在開關(guān)語(yǔ)句中,遇break語(yǔ)句跳出開關(guān)語(yǔ)句;遇continue語(yǔ)句結(jié)束本次循環(huán),進(jìn)行下一次循環(huán)。格式

break;

continue;說(shuō)明一般情況下,break語(yǔ)句和continue語(yǔ)句與條件語(yǔ)句(if)在循環(huán)體中使用。循環(huán)結(jié)構(gòu)是指用while語(yǔ)句、do-while語(yǔ)句或for語(yǔ)句構(gòu)成的循環(huán),對(duì)于if和goto語(yǔ)句構(gòu)成的循環(huán),那么不起作用。在嵌套循環(huán)的情況下,break語(yǔ)句和continue語(yǔ)句只對(duì)包含它們的最內(nèi)層的循環(huán)語(yǔ)句起作用。105break和continue語(yǔ)句舉例求3~

100素?cái)?shù)求100~200間能被3整除的數(shù)*求任意為素?cái)?shù)*公式計(jì)算106Break語(yǔ)句程序舉例2求3~100的所有質(zhì)數(shù)(素?cái)?shù))。#include<stdio.h>main(){inti,j;for(i=3;i<=100;i++){for(j=2;j<i-1;j++)if(i%j==0)________;if(i==j)printf(〞%8d〞,i);}}break雙重循環(huán)嵌套,break結(jié)束內(nèi)重循環(huán)!107#include<stdio.h>main(){intflag=1,j=0,i,m;/*變量定義并賦初值*/scanf(“%d”,&m);/*&變量地址,格式控制字符串不應(yīng)*/for(i=2;i<=m-1;i++)/*包括提示信息及“\n”等轉(zhuǎn)移字符*/{if(m%i!=0)________________;flag=0;printf("%5d%c",i,(++j%8)?′′:′\n′);}if(flag)/*if(flag!=0)即表達(dá)式成立*/printf("Nodivisor%disaprimenumber.\n",m);}Continue語(yǔ)句舉例求一個(gè)是否為素?cái)?shù)。1→flag,2→i,0→j0→flag,輸出i值TF開始i<=m-1i整除m?輸出素?cái)?shù)信息結(jié)束T輸入任意數(shù)mflag=1?FTFi+1→i

continue108Continue語(yǔ)句舉例--2#include<stdio.h>main(){intn;for(n=100;n<=200;n++;){if(n%3!=0)__________;printf("%5d",n);}}求100~200之間能被3整除的數(shù)。continuecontinue語(yǔ)句結(jié)束本次循環(huán),進(jìn)行下一次循環(huán)109**********************************************110換行每行的起始位置每行的多少列圖形圖形多少行111#include<stdio.h>main(){inti,j,k;for(i=1;i<=3;i++){for(k=1;k<=i;k++)putchar(‘‘);for(j=1;j<=5;j++)putchar(‘*‘);putchar(‘\n’);}}112#include<stdio.h>main(){inti,j,k;for(i=1;i<=3;i++){for(k=1;k<=30-i;k++)putchar(‘‘);for(j=1;j<=5;j++)putchar(‘*‘);putchar(‘\n’);}}113#include<stdio.h>main(){inti,j,k;for(i=1;i<=3;i++){for(k=1;k<=30-i;k++)putchar(‘‘);for(j=1;j<=2*i-1;j++)putchar(‘*‘);putchar(‘\n’);}}114用for語(yǔ)句編寫程序輸出以下圖形。*************115#include<stdio.h>main(){ inti=1,j=1,row; for(row=1;row<=5;row++) { for(i=1;i<20-j;i++)putchar(''); for(i=1;i<=2*j-1;i++)putchar('*'); putchar('\n'); if(row<3)j++; elsej--; }}116#include<stdio.h>voidmain(){inti,j,k;for(i=0;i<=3;i++){for(j=0;j<=40-i;j++)printf("");for(k=0;k<=2*i;k++)printf("*");printf("\n");}

for(i=0;i<=2;i++){for(j=0;j<=38+i;j++)printf("");for(k=0;k<=4-(2*i-1);k++)printf("*");printf("\n");}}

例:輸出如以下圖形。*************************117#include<math.h>#include<stdio.h>main(){intb,n,i=1,j,k;printf("Pleaseinputlinenumbern");scanf("%d",&n);b=n/2+1;for(i=1;i<=n;i++){for(k=1;k<=(20-(b-fabs(b-i)));k++)putchar('');for(j=1;j<=2*(b-fabs(b-i))-1;j++)putchar('*'); printf("\n"); }}118穩(wěn)固練習(xí):1.求20+21+22+...+263之和2.從鍵盤兩個(gè)整數(shù),求其最大公約數(shù)和最小公倍數(shù)。3.從鍵盤輸入一個(gè)正整數(shù),將該數(shù)前后倒置后輸出。4.從鍵盤輸入一行字符,假設(shè)為小寫字母,那么轉(zhuǎn)化為大寫字母;假設(shè)為大寫字母,那么轉(zhuǎn)化為小寫字母;否那么轉(zhuǎn)化為ASCII碼表中的下一個(gè)字符。119求20+21+22+...+263之和。解法1:#include<math.h>

main()

{floats;

inti;

s=0;

for(i=0;i<=63;i++)

s=s+pow(2,i);

/*2的i次冪*/

printf("s=%f\n",s);}120

#include<stdio.h>main()

{intI,s=0,t=1;

for(i=0;i<=63;i++)

{s=s+t;

t=t*2;

}

printf("s=%u\n",s);

}解法2:%d有正負(fù)〔負(fù)數(shù)用補(bǔ)碼表示〕%u正整數(shù)121從鍵盤輸入兩個(gè)整數(shù),求其最大公約數(shù)和最小公倍數(shù)。解法1:輾轉(zhuǎn)相除法。

⑴以其中一個(gè)數(shù)作被除數(shù),另一個(gè)數(shù)作除數(shù),相除求余數(shù)。

⑵假設(shè)余數(shù)不為0,那么以上一次的除數(shù)作為新的被除數(shù),以上一次的余數(shù)作為新的除數(shù),繼續(xù)求余數(shù)。

⑶直至余數(shù)為0時(shí),對(duì)應(yīng)的除數(shù)就是最大公約數(shù)。122#include<stdio.h>main()

{intm,n,r,g,h,p;

scanf("%d%d",&m,&n);

p=m*n;

while((r=m%n)!=0)

/*余數(shù)不為0時(shí)循環(huán)*/

{m=n;

/*以上一次的除數(shù)作為新的被除數(shù)*/

n=r;

/*以上一次的余數(shù)作為新的除數(shù)*/

}

g=n;

/*余數(shù)為0時(shí)的除數(shù)即最大公約數(shù)*/

h=p/g;

/*兩數(shù)之積除以最大公約數(shù)就是最小公倍數(shù)*/

printf("g=%d,h=%d\n",g,h);

}123解法2:輾轉(zhuǎn)相除法。#include<stdio.h>main()

{intm,n,r,g,h,p;

scanf("%d%d",&m,&n);p=m*n;

while(1)

/*循環(huán)條件總為真*/

{r=m%n;

if(r==0)

break;

/*余數(shù)為0時(shí)終止循環(huán)*/

m=n;

/*以上一次的除數(shù)作為新的被除數(shù)*/

n=r;

}/*以上一次的余數(shù)作為新的除數(shù)*/

g=n;

/*余數(shù)為0時(shí)的除數(shù)即最大公約數(shù)*/

h=p/g;

/*最小公倍數(shù)*/

printf("g=%d,h=%d\n",g,h);}124解法3:#include<stdio.h>main(){intm,n,g,h,i;

scanf("%d%d",&m,&n);

for(g=m;g>=1;g--)

{if((m%g==0)&&(n%g==0))

/*此時(shí)g是最大公約數(shù)*/

break;}

for(i=1;i<=n;i++)

{h=i*m;

/*h是m的倍數(shù)*/

if(h%n==0)

/*此時(shí)h是最小公倍數(shù)*/

break;}

printf("g=%d,h=%d\n",g,h);}125從鍵盤輸入一個(gè)正整數(shù),將該數(shù)前后倒置后輸出〔用循環(huán)完成〕。解法1:

#include

溫馨提示

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