C語言程序設(shè)計 第3版 課件 丁紅 第1-6章 帶你認識C語言、數(shù)據(jù)類型-結(jié)構(gòu)化程序設(shè)計_第1頁
C語言程序設(shè)計 第3版 課件 丁紅 第1-6章 帶你認識C語言、數(shù)據(jù)類型-結(jié)構(gòu)化程序設(shè)計_第2頁
C語言程序設(shè)計 第3版 課件 丁紅 第1-6章 帶你認識C語言、數(shù)據(jù)類型-結(jié)構(gòu)化程序設(shè)計_第3頁
C語言程序設(shè)計 第3版 課件 丁紅 第1-6章 帶你認識C語言、數(shù)據(jù)類型-結(jié)構(gòu)化程序設(shè)計_第4頁
C語言程序設(shè)計 第3版 課件 丁紅 第1-6章 帶你認識C語言、數(shù)據(jù)類型-結(jié)構(gòu)化程序設(shè)計_第5頁
已閱讀5頁,還剩156頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

C語言程序設(shè)計語言C——帶你認識入門

了解計算機語言的概念及其發(fā)展史了解常見的高級語言掌握指令、程序、源程序、目標(biāo)程序的概念理解C語言的基本特點和上機步驟學(xué)習(xí)目標(biāo)一、什么是計算機語言自然語言:

人與人之間進行交流的語言計算機語言:是人和計算機進行信息交流的工具,人們可以使用計算機語言來命令計算機進行各種操作處理。二、計算機語言的發(fā)展機器語言:由0和1二進制代碼構(gòu)成。匯編語言:用一組易記的符號代表機器指令。高級語言:接近于人們習(xí)慣使用的自然語言和數(shù)學(xué)語言。又稱為類自然語言。例:“加”命令用二進制10110111表示。例:“加”命令用add表示。例:“加”命令用+表示。三、常見的高級語言及用途C語言:編寫系統(tǒng)軟件,如編寫UNIX,Windows,Linux等操作系統(tǒng).C++,C#:都是在C語言的基礎(chǔ)上發(fā)展起來的。FORTRAN:用于數(shù)值計算,如微分方程數(shù)值解,

比如氣候模式,海洋模式,模擬核爆炸試驗JAVA:網(wǎng)絡(luò)環(huán)境語言,編手機上的程序或游戲.Python:開發(fā)人工智能軟件四、源程序和目標(biāo)程序源程序:使用高級計算機語言編寫的程序代碼目標(biāo)程序:源程序必須經(jīng)過編譯后生成計算機可以理解的二進制形式,這樣的二進制形式的程序稱為目標(biāo)程序。源程序目標(biāo)程序編譯可執(zhí)行程序鏈接五、指令、程序、源程序和目標(biāo)程序指令語句:用來指揮計算機執(zhí)行某個操作的命令語句。程序:為了實現(xiàn)一定的目的而用計算機語言編寫的一系列指令語句的集合。如:sum=a+b;number1number2sum5625811、編寫程序需要遵循一定的格式嗎?是什么樣的格式呢?2、輸入的數(shù)據(jù)放在什么地方?3、如何使從鍵盤輸入的數(shù)據(jù)到指定的地址中呢?4、如何將計算好的結(jié)果數(shù)據(jù)輸出來?案例:輸入兩個整數(shù),求這兩個整數(shù)的和。六、C語言的構(gòu)成

intnumber1,number2,sum;printf("請輸入加數(shù):");scanf(“%d”,&number1);printf("請輸入被加數(shù):");scanf("%d",&number2);sum=number1+number2;printf("\n%d+%d=%d",number1,number2,sum);intmain(intargc,char*argv[]){

}

加法器源程序代碼/*定義3個變量*//*向number1中輸入數(shù)據(jù)*//*主函數(shù)main()*/上一頁七、總結(jié)—關(guān)于C語言程序結(jié)構(gòu)的介紹C語言程序是由函數(shù)構(gòu)成的,有且只有一個主函數(shù)main。

一個函數(shù)由兩部分組成:函數(shù)的首部和函數(shù)體。

函數(shù)體有聲明部分和執(zhí)行部分組成。

函數(shù)的執(zhí)行總是先從主函數(shù)main開始執(zhí)行。

main函數(shù)的位置可以任意。

每條語句后都有一個分號“;”作為間隔,分號不可少。一行內(nèi)可以寫多個語句,一個語句也可以寫在多行上。上一頁八、C語言的上機步驟輸入編輯源程序編譯連接和生成可執(zhí)行文件.c文件.obj文件.exe文件小結(jié)計算機語言是人和計算機之間交流的語言C語言是常見的高級語言,它具有低級語言和高級語言的特點,不但可以用來編寫應(yīng)用軟件,也可以用來編寫系統(tǒng)軟件.用高級語言編寫出來的程序稱為源程序,經(jīng)過編譯以后生成目標(biāo)程序,鏈接后形成可執(zhí)行程序.就象自然語言要遵循一定的語法規(guī)則一樣,使用C語言編程時也要遵循一定的語法規(guī)則.第二章數(shù)據(jù)類型程序=數(shù)據(jù)結(jié)構(gòu)+算法在程序中定義所要處理數(shù)據(jù)的類型和組織形式對解題方法和解題步驟的描述C中最常見的三種基本類型:整型實型字符型2.1常量和變量inta;a=3;a3定義了一個整型變量,名為a將常數(shù)3賦給變量a變量:在程序運行過程中,其值可以改變的量。每個變量在計算機中對應(yīng)相應(yīng)長度的存儲空間。常量:在程序運行過程中,其值不變的量。一、變量

每個變量在使用之前必須確定其類型,并為之取一個合適的名字。intage;floatscore;agescorecharsex;sexsex=‘a(chǎn)’;例:定義變量類型的一般形式為:

類型標(biāo)志符變量名;a(1)標(biāo)識符只能由字母、數(shù)字、下劃線組成,且第一個字符不能為數(shù)字。(2)C語言區(qū)分大小寫。(3)標(biāo)識符的名字不能和C語言中的關(guān)鍵字和特定字相同。(4)標(biāo)識符的長度最好不要超過8個字符。(5)標(biāo)識符的命名最好做到見名知意。如age用來表示年齡,number表示學(xué)號。標(biāo)志符的命名規(guī)則:二、常量常見的常量如18,65.5,3.14159,‘m’,‘ding’1、整型常量(整常數(shù))1)、十進制形式表示:如25,65,23。2)、八進制形式表示:以數(shù)字0開頭,如0253)、十六進制形式表示:以數(shù)字0x開頭,如

0x25,0x65,0x1A。2、實型常量(實數(shù)、浮點數(shù))十進制小數(shù)形式:10.25,-1.2314指數(shù)形式表示:如23500可以用指數(shù)形式表示為:2.35e40.00014可以用指數(shù)形式表示為:1.4e-43、字符型常量常見的字符常量有:’a’,‘A’,‘F’,‘*’,‘■’,‘▼

‘1)、普通字符常量2)、轉(zhuǎn)義字符常量如’\n’表示換行的意思

‘\r’表示使光標(biāo)回到本行的開頭

‘\b’表示使光標(biāo)回到前一列‘\t’表示使光標(biāo)移到下一個Tab的位置‘\a’表示響起報警聲‘\\’表示一個\‘\’’表示單撇號’‘\”’表示雙撇號”‘\ddd’表示一到三位八進制數(shù)所代表的字符‘\xdd’表示一到二位十六進制所代表的字符

4、字符串常量字符串常量就是由多個字符組成的字符序列,用雙撇號括起來。例:“DaiChunmei”“$89

”DaiChunmeI\0$89\0回顧1、C語言中三種最基本的數(shù)據(jù)類型包括:()A、整型、實型、邏輯型B、整型、實型、字符型C、整型、字符型、邏輯型D、整型、實型、邏輯型、字符型2、在C語言中,下面哪一個不是整型常量()A、123B、123LC、0x123D、U1233、在C語言中,下面哪一個不是字符型常量()A、‘a(chǎn)’B、‘\81’C、‘\0x41’D、“a”E、‘\t’4、下列選項哪個選項不符合C語言中變量名的命名規(guī)則()A、age_1B、1_ageC、_1ageD、age*1

思考題:現(xiàn)在需要編寫一個教師的工資管理系統(tǒng),其中涉及到一個變量,用來存放教師的工齡。該如何定義。2.2整型變量intT_age;類型標(biāo)志符變量名T_ageint型變量占2個字節(jié)的存儲空間一、整型數(shù)據(jù)在內(nèi)存中的存儲形式

補碼表示,最高位表示符號位,正數(shù)用0表示,負數(shù)用1表示。假設(shè)使T_age=15,則15在計算機中的存儲形式為:0000000000001111假設(shè)使T_age=-15,則15在計算機中的存儲形式為:1111111111110001所以,int型數(shù)據(jù)存儲范圍為:-215——215-1-3276832767二、整型變量的分類shortint(短整型)longint(長整型)int(基本整型)整型[signed]intunsigned[int][signed]short[int]

unsignedshort[int]

[signed]long[int]

unsignedlong[int]

1、短整型(short型)占小于或等于2個字節(jié)的存儲空間,存儲范圍為:-215——215-12、無符號短整型(unsignedshort型)占2個字節(jié)的存儲空間,存儲范圍為:3、基本整型(int型)占2個字節(jié)的存儲空間,存儲范圍為:0——216-1-215——215-14、無符號基本整型(unsigned型)占2個字節(jié)的存儲空間,存儲范圍為:0——216-15、長整型(long型)占4個字節(jié)的存儲空間,存儲范圍為:-231——231-16、無符號長整型(unsignedlong型)占4個字節(jié)的存儲空間,存儲范圍為:0——232-12.3實型變量

思考題:現(xiàn)在需要定義一個用來存放教師工資的變量,該將其定義為何種類型?floatT_salary;類型標(biāo)志符變量名T_salaryfloat型變量占4個字節(jié)的存儲空間用小數(shù)部分和指數(shù)部分來表示,例如:一、實型數(shù)據(jù)在內(nèi)存中的存儲形式(-25.25)原=(-11001.01)B11100101101尾數(shù)位指數(shù)位二、實型變量的分類變量類型

數(shù)據(jù)長度

有效數(shù)字

取值范圍

單精度型(float)

4個字節(jié)

7位

10-37—1038

雙精度型(double)

8個字節(jié)

16位

10-307—10308

長雙精度型(longdouble)

16個字節(jié)

19位

10-4931—1049322.4字符型變量

思考題:現(xiàn)在需要定義一個用來存放教師性別的變量,該將其定義為何種類型?charT_sex;類型標(biāo)志符變量名T_sexchar型數(shù)據(jù)占1個字節(jié)的存儲空間一、字符型數(shù)據(jù)在內(nèi)存中的存儲形式

字符的存儲就是將其所對應(yīng)的ASCII代碼的二進制形式存放到內(nèi)存中例:字符’A’的ASCII代碼是65,存儲形式如下:01000001例:字符’

?’的ASCII代碼是3,存儲形式如下:00000011二、字符變量的定義和使用舉例例1:觀看下面程序的輸出結(jié)果是什么?main(){charch;ch=‘a(chǎn)’;printf(“%c”,ch);}97;main(){intch;ch=97;printf(“%c”,ch);}‘a(chǎn)’;總結(jié):整型數(shù)據(jù)和字符型數(shù)據(jù)之間通用,整型變量和字符型變量之間可以相互賦值;整數(shù)可以以字符型形式輸出,字符型數(shù)據(jù)也可以以整數(shù)形式輸出。思考題:當(dāng)給字符型變量賦整型數(shù)值時,其值應(yīng)該在0-255之間,您知道為什么嗎?字符型變量使用舉例例2:當(dāng)從鍵盤輸入字符‘b’時,輸出結(jié)果是什么?main(){charc;scanf(“%c”,&c);c=c-32;printf(“%c”,c);}三、變量賦初值概念:在編寫程序的時候,常常需要對變量預(yù)先設(shè)置一個值,稱為變量賦初值

如:intnumber;number=21;intnumber=21;inta,b,c;a=4;b=4;c=4;inta,b,c;a=b=c=4;inta=b=c=4;2.5各類型間的混合運算三種基本類型整型實型字符型短整型short基本整型int長整型long單精度float雙精度double長雙精度longdoublechar不同類型數(shù)據(jù)發(fā)生混合運算時的轉(zhuǎn)換規(guī)則:float

double

long

unsignedchar,short

int低例如:1560+245.56+56325-’A’的結(jié)果是什么類型?返回第三章運算符和表達式

當(dāng)變量被定義為某一種類型后,即被分配相應(yīng)的存儲空間,此后并不能放置一旁而不用,還需要對其進行加工。何謂加工?加工就是指運算,C中最常見的運算有加、減、乘、除等。運算符就是用來表示運算的符號,如“+”

、“-”、“*”、“/”

。參加運算的數(shù)據(jù)稱為運算量,也就是運算對象。由運算符把運算對象連接起來的式子稱為表達式,如“

sum=a+b;”就是一個表達式。C語言中常見的運算符3.1算術(shù)運算符3.2賦值運算符3.3關(guān)系運算符3.4邏輯運算符3.5位運算符3.6逗號運算符3.7求字節(jié)數(shù)運算符sizeof和強制類型轉(zhuǎn)換運算符3.8復(fù)習(xí)3.1算術(shù)運算符和表達式一、常見的算術(shù)運算符+-*/%

當(dāng)兩個整數(shù)相除時,商的結(jié)果取整。如5/3的結(jié)果為1,-5/3的結(jié)果為-1。當(dāng)兩個除數(shù)中有一個為實數(shù)時,結(jié)果為實數(shù),如5/2.0=2.5。

實現(xiàn)兩個整數(shù)的相除取余,結(jié)果的符號和被除數(shù)的符號相同。參加取余運算的兩個數(shù)必須是整數(shù)。二、自增、自減運算符++--1)自增運算符++:使變量的值增1例:i++;表示使用完i之后,使i的值增1

++i;表示先使i的值增1,然后再使用i2)自減運算符--:使變量的值減1例:i--;表示使用完i之后,使i的值減1

--i;表示先使i的值減1,然后再使用i例1:inta,b,c;a=5;b=++a;c=a++;結(jié)果:a=7;b=6;c=6;例2:inta,b,c;a=5;b=--a;c=b--;結(jié)果:a=4;b=3;c=4;三、算術(shù)運算符的優(yōu)先級和結(jié)合性

思考題:表達式--x-a*b/c++的結(jié)果值是多少?(假設(shè)x的值為3,a的值為5,b的值為2,c的值為3)

運算符的優(yōu)先級:運算符的優(yōu)先次序運算符的結(jié)合性:當(dāng)優(yōu)先級相同時,是自左至右或是自右至左計算(--x)-a*b/c++-1--x-a*b/c++++、--、+(取正)、-(取負)*、/、%+、-自右至左自左至右自左至右number=24;3.2賦值運算符和表達式賦值運算符x+5;x*y;

注意:

當(dāng)賦值運算符右邊的常量或表達式的類型和左邊變量的類型不一致時,先將右邊表達式的類型轉(zhuǎn)換為和左邊相同的類型,然后再賦值。例:

floatx;

X=3;1、普通的賦值運算符2、復(fù)合的賦值運算符x=x+y;x+=y;復(fù)合的賦值加運算符(1)+=(2)-=(3)*=(4)/=

(5)%=常見的復(fù)合的賦值運算運算符例如:x的值為6,

則x+=4的結(jié)果是什么?3、賦值運算符的優(yōu)先級和結(jié)合性算術(shù)運算符賦值運算符結(jié)合性為自右而左例:已知a=5,b=8,n未知。求下列各表達式的值。1、n=b+8;2、n+=a*=2;3、n=a=b;3.3關(guān)系運算符和表達式

關(guān)系運算又稱比較運算,就是對兩個運算量進行比較,判斷其比較的結(jié)果是否符合給定的條件。如果符合,則結(jié)果為“真”,用1表示;如果不符合,則結(jié)果為“假”,用0表示。1、常見的關(guān)系運算符<(小于)、>(大于)、<=(小于或等于)、>=(大于或等于)、==(等于)、!=(不等于)2、關(guān)系運算符的優(yōu)先級和結(jié)合性算術(shù)運算符關(guān)系運算符賦值運算符自左至右自左至右自右至左例:number1=25;判斷下列表達式的值。

(1)number1>=25;(2)number1==25;

(3)number1%5==0

(4)number1!=24;(5)number1/3<23;

(6)n=number1>4;(7)number1>24>2;(8)number1+1==26;案例已知i=3,j=4,a=5,b=6,m為未知。求下列各式的值。(1)++i+j---a(2)a+b-j*a/i(3)m=-j++

3.4邏輯運算符和表達式思考題:如何表示整數(shù)x既可以被5整除又可以被7

整除.x%5==0x%7==0&&()()邏輯運算符”邏輯與”邏輯或(||):

一般形式a||b,a和b中任一為真,結(jié)果為真.邏輯與(&&):一般形式:a&&b;

只有當(dāng)a和b都為真時,結(jié)果才為真.邏輯非(!):

一般形式!a,a為真,!a就為假;a為假,!a為真.例:判斷下列各邏輯表達式的值假設(shè)a=5,b=6,c=3,d=10;(a>b)&&(c>d);(a<b)||(c>d)!a!a&&b3||101001邏輯運算符的優(yōu)先級和結(jié)合性

高?。ㄟ壿嫹牵┧阈g(shù)運算符關(guān)系運算符

&&和||

低賦值運算符自左至右自右至左X=!a+2||x>y+2&&a==3,已知a=3,x=5,y=4,求x的值。實訓(xùn)1、若a=5,b=4,x=0,判斷下面兩個表達式的結(jié)果及x的值:

(1)0&&x=a>b(2)a>b||++x2、要判別某一年是否閏年。閏年的條件是符合下面兩個條件的其中一個就可以了:

(1)能被4整除,但不能被100整除;

(2)能被4整除,又能被400整除;(year%4==0&&year%100!=0)||(year%400==0)3.5位運算符和表達式位運算:就是對二進制位進行的運算.C中常用的位運算符:

&(按位與)|(按位或)^(按位異或)

~(取反)

>>(右移)

<<(左移)“按位與”運算符‘&’

“按位與”又稱“按位乘”,即二進位相乘?!鞍次慌c”的規(guī)則為:

0&0=0,0&1=0,1&0=0,1&1=1

例:

求-1和5按位與的結(jié)果.-1的補碼:1111111111111111

5的補碼:00000000000001010000000000000101按位與的作用:使一個存儲單元清零3.6逗號運算符和表達式,逗號運算符作用在于將若干個表達式連接起來。逗號表達式的一般形式為:表達式1,表達式2,表達式3,……,表達式n整個逗號表達式的值就是最后的表達式n的值實訓(xùn)已知a=3,求下面逗號表達式的值。(1)++a,a+5,a+6(2)a=2*3,b=a-2,b-a,a+=23.7sizeof運算符和強制類型轉(zhuǎn)換運算符一、求字節(jié)數(shù)運算符sizeof()功能:求數(shù)據(jù)在存儲器中所占的字節(jié)數(shù)例:sizeof(longdouble);sizeof(x+y);sizeof(123456);二、強制類型轉(zhuǎn)換運算符思考:假設(shè)現(xiàn)在需要編寫一個程序,判斷一個實數(shù)x的整數(shù)部分是否為偶數(shù),要求x從鍵盤輸入。main(){floatx;scanf(“%f”,&x);if(

)printf(“Yes!”);elseprintf(“No!”);強制類型轉(zhuǎn)換運算符的一般使用形式:(類型名)(表達式);希望被轉(zhuǎn)換的對象希望轉(zhuǎn)換的類型已知x=2.5,y=3.7,求(int)x+y和(int)(x+y)的值案例1、求下列算術(shù)表達式的值(1)a+b/2%3*(int)c/d*3

設(shè)a=3.5,b=11,c=5.7,d=2(2)(int)x/y+(float)y%x

設(shè)x=8.3,y=3(3)?。▁+y)+z&&x*z-1x的值為2,y的值為3,z的值為1

運算符小結(jié)優(yōu)先級運算符結(jié)合性1!

~++--

+(取正)-(取負)

sizeof類型轉(zhuǎn)換運算符自右至左2*/%自左至右3+-自左至右4<<>>自左至右5<<=>>=自左至右6==!=自左至右7&自左至右8^自左至右9|自左至右10&&自左至右11||自左至右12=+=-=*=/=%=>>=<<=&=^=|=自右至左第四章輸入/輸出函數(shù)chara;輸入scanf(“%c”,&a);a=getch();01000001輸出printf(“%c”,a);putchar(a);gets();puts();#include“stdio.h”或#include<stdio.h>

4.1輸出函數(shù)putchar()和printf()一、字符輸出函數(shù)putchar()1、功能輸出一個字符2、一般形式putchar(c);可以是字符變量字符常量整型常量整型變量轉(zhuǎn)義字符putchar(c);putchar(‘c’);putchar(99);putchar(c);putchar(‘\n’);1、功能一、格式輸出函數(shù)printf()它可以將任意多個數(shù)據(jù)按各自指定的格式輸出來。例:intnumber=24;floatscore=95.5;charsex=‘m’;printf(“%d,%f,%c”,number,score,sex);輸出結(jié)果:24,95.000000,mprintf(“number=%d,score=%f,sex=%c”,number,score,sex);輸出結(jié)果:number=24,score=95.000000,sex=m二、一般形式printf(“格式控制”,輸出表列);上一頁三、格式說明符1、%d:用來輸出十進制int型數(shù)據(jù)%md:m是一個常數(shù),用來限定輸出數(shù)據(jù)所占的寬度。%ld:以長整型形式輸出數(shù)據(jù)。

下一頁2、%u格式符輸出十進制unsigned型數(shù)據(jù)。3、%o格式符以八進制無符號形式輸出整數(shù),輸出時將符號位一起轉(zhuǎn)化為八進制數(shù)值。4、%x格式符以十六進制無符號形式輸出整數(shù),輸出時將符號位一起轉(zhuǎn)化為十六進制數(shù)值。實訓(xùn)main(){inta=-1;printf(“%d,%o,%8o”,a,a,a);}a在計算機中的存儲形式111111111111111177777輸出結(jié)果:-1,177777,1777775、%c格式符以字符形式輸出數(shù)據(jù)charch;ch=‘a(chǎn)’;printf(“%c”,ch);%dinta;a=65;printf(“%c”,a);字符型數(shù)據(jù)可以以字符形式輸出,也可以以整型形式輸出。整型數(shù)據(jù)(0—255)也可以以字符形式輸出。例1例26、%f格式符以實數(shù)形式輸出數(shù)據(jù)%f:輸出帶6位小數(shù)的實數(shù)。對于單精度實數(shù),有效位數(shù)為7位%m.nf:指定輸出數(shù)據(jù)占m列,其中有n位小數(shù)%.nf:表示帶n位小數(shù),對列寬無限制。main(){floatx=12345.1111001;printf(“%f\n”,x);printf(“%10.2f,%-10.1f,%.2f”,x,x,x);}實訓(xùn)輸出結(jié)果:12345.11132812345.1112345.112345.117、%s格式符用來輸出一個字符串printf(“%s”,”china”);8、%e格式符以指數(shù)形式輸出實數(shù)printf(“%e”,123.456);輸出為:1.23456e+02。4.2輸入函數(shù)getchar()和scanf()一、字符輸入函數(shù)getchar()1、功能:從鍵盤輸入一個字符2、一般形式:字符變量=getchar();思考題:從鍵盤輸入任一字符,如果該字符是小寫字符,將其轉(zhuǎn)換為大寫字符輸出,否則不變輸出。main(){charch;ch=

;if(ch<=‘z’&&ch>=‘a(chǎn)’)ch=ch-32;

;}

getchar()putchar()#include”stdio.h”實訓(xùn)1二、格式輸入函數(shù)scanf()思考1:如何實現(xiàn)向整型變量a中輸入數(shù)據(jù)?scanf(“%d”,&a);思考2:如何實現(xiàn)向?qū)嵭妥兞縝中輸入數(shù)據(jù)?scanf(“%f”,&b);思考3:如何實現(xiàn)向整型變量a和實型變量b中輸入數(shù)據(jù)?scanf(“%d%f”,&a,&b);1、scanf()函數(shù)的一般形式scanf(“格式控制”,地址表列);2、scanf()函數(shù)使用示例inta,b,c;scanf(“%d%d%d”,&a,&b,&c);scanf(“%d,%d,%d”,&a,&b,&c);scanf(“a=%d,b=%d,c=%d”,&a,&b,&c);程序=數(shù)據(jù)結(jié)構(gòu)+算法數(shù)據(jù)的類型和組織形式解決問題的方法和步驟第五章算法描述算法的方法:自然語言、流程圖例1:輸入兩個數(shù)a和b,要求實現(xiàn)將a和b中的數(shù)據(jù)進行交換。算法描述125abt1、定義三個變量a、b、t2、輸入a和b的值3、t=a;a=b;b=t;4、輸出a和b5.1算法的概念和使用舉例一、三個典型實例main(){floata,b,t;scanf(“%f%f”,&a,&b);t=a;a=b;b=t;printf(“%f,%f”.a.b);}思考題:

從鍵盤輸入兩個數(shù),將這兩個數(shù)按照從小到大的順序輸出來。比如輸入5和1,則輸出結(jié)果為1,5。例2:從鍵盤輸入三個整數(shù),將這三個整數(shù)按照從大到小的順序輸出來。比如:如果輸入34、12、89;則輸出為89、34、121、定義四個變量a、b、c、t;2、輸入a、b、c的值3、如果b>a,則{t=b;b=a;a=t;}4、如果c>a,則{t=c;c=a;a=t;}5、如果c>b,則{t=c;c=b;b=t;}6、輸出a、b、c的值例3:編寫一個程序,求1×3×5×……×99

1×3×5×7×9×……×99假設(shè)用S表示乘積結(jié)果,用i表示被乘數(shù)S=1i=11、定義2個變量S和i2、S=1;i=1;3、S=S*i;i=i+2;4、如果i<=99;返回3繼續(xù)否則,轉(zhuǎn)到55、輸出s執(zhí)行算法所占用的空間資源和時間資源二、衡量算法好壞的兩個因素算法是否容易理解、調(diào)試和測試

有窮性

應(yīng)該在有限的步驟內(nèi)完成三、算法的特點確定性

明確而可以執(zhí)行必須有輸出有效性每一步都應(yīng)該有效而可以執(zhí)行5.2算法的流程圖表示例1:輸入兩個數(shù)a和b,要求實現(xiàn)將a和b中的數(shù)據(jù)進行交換。用傳統(tǒng)流程圖表示。返回定義a、b、t輸入a、bt=a;a=b;b=t;輸出a、b開始結(jié)束一、算法的傳統(tǒng)流程圖表示例2:從鍵盤輸入三個整數(shù),將這三個整數(shù)按照從大到小的順序輸出來。1、定義四個變量a、b、c、t;2、輸入a、b、c的值3、如果b>a,則{t=b;b=a;a=t;}4、如果c>a,則{t=c;c=a;a=t;}5、如果c>b,則{t=c;c=b;b=t;}6、輸出a、b、c的值常用的流程圖符號開始/結(jié)束框處理框輸入/輸出框條件判斷框流程線結(jié)束定義S和iS=1;i=1S=S*I;i=i+2;i<=99Y輸出S開始例3:編寫一個程序,求1×3×5×……×99N1、定義2個變量S和i2、S=1;i=1;3、S=S*i;i=i+2;4、如果i<=99;返回3繼續(xù)否則,轉(zhuǎn)到55、輸出s傳統(tǒng)流程圖的三種基本結(jié)構(gòu)順序結(jié)構(gòu)操作A操作B操作C選擇結(jié)構(gòu)操作D操作A條件P操作B操作C操作D循環(huán)結(jié)構(gòu)操作A條件P操作B操作CYNYN實訓(xùn)(請用傳統(tǒng)流程圖表示下列兩個題目的算法)1、當(dāng)從鍵盤輸入一個字符時,實現(xiàn)判斷該字符是大寫字符還是小寫字符。如果是大寫字符,輸出“UPWORD”,并將其轉(zhuǎn)換為小寫字符輸出;如果是小寫字符,則輸出“DOWNWORD”,并將其轉(zhuǎn)換為大寫字符輸出。

2、整數(shù)累乘:如果求1×2×3×4×5×……×100的結(jié)果。二、算法的N-S流程圖表示定義a、b、t輸入a、bt=a;a=b;b=t;輸出a、b開始結(jié)束傳統(tǒng)流程圖定義a、b、t輸入a、bt=a;a=b;b=t;輸出a、bN-S流程圖輸入a、b、cb<aYNt=b;b=a;a=t;c<aYNt=c;c=a;a=t;c<bYNt=c;c=b;b=t;輸出a、b、c從鍵盤輸入三個整數(shù),將這三個整數(shù)按照從大到小的順序輸出來。結(jié)束定義S和iS=1;i=1;S=S*I;i=i+2;i<=99Y輸出S開始例3:編寫一個程序,求1×3×5×……×99定義s和iS=1;i=1;輸出SS=S*I;i=i+2;i<=99傳統(tǒng)流程圖N-S流程圖總結(jié):傳統(tǒng)流程圖的三種基本結(jié)構(gòu)順序結(jié)構(gòu)操作A操作B操作C操作D操作A操作B操作C操作D選擇結(jié)構(gòu)操作A條件P操作B操作C操作DYN操作A條件PYN操作B操作C操作D循環(huán)結(jié)構(gòu)操作A條件P操作B操作CYN操作A條件P操作B操作C1、奇偶數(shù)識別:要求從鍵盤輸入一個整數(shù),判別其是奇數(shù)或偶數(shù),如果是奇數(shù),輸出“Itisanoddnumber!”;如果是偶數(shù),輸出“Itisanevennumber!”。2、整數(shù)累乘:如果求1×2×3×4×5×……×100的結(jié)果。實訓(xùn)

(請用N-S流程圖表示下列兩個題目的算法)編寫一個程序,要求從鍵盤輸入一個數(shù),能夠輸出該數(shù)的所有公約數(shù)。綜合實訓(xùn)6.1、順序結(jié)構(gòu)程序設(shè)計實例導(dǎo)入:

編寫一個程序,實現(xiàn)這樣的功能:要求從鍵盤輸入任一八進制數(shù)字,可以實現(xiàn)將該數(shù)字轉(zhuǎn)換為十進制數(shù)字,比如當(dāng)輸入八進制4520時,輸出4520所對應(yīng)的十進制數(shù)2384。第六章結(jié)構(gòu)化程序設(shè)計(4520)8=4*8*8*8+5*8*8+2*80+解析:4520/10004520%1000/1004520%100/10千位數(shù)4:百位數(shù)5:十位數(shù)2:個位數(shù)0:4520%10求一個四位八進制數(shù)o_number所對應(yīng)的十進制d_number,則需先求出o_number的千位、百位、十位、個位數(shù),假如分別用a、b、c、d表示。a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;d_number=a*8*8*8+b*8*8+c*8+d;算法描述1、定義變量into_number1,d_number2,a,b,c,d;2、輸入o_number1Lscanf(“%d”,&number);3、求出a、b、c、d:a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;4、求出d_number2

:d_number=a*8*8*8+b*8*8+c*8+d;5、輸出d_number2

:printf(“%d”,d_number);完整的程序main(){into_number,d_number,a,b,c,d;

scanf("%d",&o_number);a=o_number/1000;b=o_number%1000/100;c=o_number%100/10;d=o_number%10;d_number=a*8*8*8+b*8*8+c*8+d;

printf(“O:%d,D:%d",o_number,d_number);}printf(“pleaseinputaoctalnumber:\n”);getch();實訓(xùn)編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。體重指數(shù)=體重(kg)/(身高)2;算法描述:1、定義3個變量:floatindex,weight,height;2、輸入體重:scanf(“%f”,&weight);3、輸入身高:scanf(“%f”,&height);4、計算指數(shù):index=weight/(height*height);5、輸出指數(shù):printf(“%f”,index);完整程序main(){floatweight,height,index;

scanf("%f",&weight);

scanf("%f",&height);index=weight/(height*height);

printf("Theindexofyourweightis:%f",index);}printf(“\npleaseinputyourweight:");printf(“\npleaseinputyourheight:");getch();總結(jié):1、順序結(jié)構(gòu)是最簡單的一種結(jié)構(gòu),它按照操作執(zhí)行的先后順序來編寫程序。2、編程應(yīng)該遵循:先根據(jù)功能要求設(shè)計出算法(用自然語言描述或用流程圖描述),然后再根據(jù)算法編寫程序。3、程序應(yīng)該結(jié)構(gòu)清晰、界面美觀、容易操作

編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。

體重指數(shù)=體重(kg)/(身高)2;要求實現(xiàn)這樣的判斷:如果體重指數(shù)<25,屬于正常;

否則屬于肥胖.實訓(xùn):體重測量儀改進版16.2、選擇結(jié)構(gòu)程序設(shè)計如果index<25,輸出“Youareright!”否則輸出“Youarefat!”main(){floatweight,height,index;

scanf("%f",&weight);

scanf("%f",&height);index=weight/(height*height);

printf("Theindexofyourweightis:%f",index);

}printf(“\npleaseinputyourweight:");printf(“\npleaseinputyourheight:");if(index<25)printf(“Youareright!”);elseprintf(“Youarefat!”);一、if語句的使用1、if語句的標(biāo)準(zhǔn)形式if(表達式)語句1else語句2表達式語句1語句2例:如果工資salary大于1600元,則多余部分按15%征稅,否則按5%征稅.If(salary>1600)revenue=(salary-1600)*0.15;elserevenue=(salary-1600)*0.05;YN

從鍵盤輸入一個數(shù),求出該數(shù)絕對值所對應(yīng)的開方開始定義變量a,b,c輸入aa>=0b=ab=-ac=sqrt(b)輸出c結(jié)束YN算法1實訓(xùn)#include"math.h"main(){floata,b,c;printf("\npleaseinputanumber:\n");scanf("%f",&a);

if(a>=0)b=a;elseb=-a;c=sqrt(b);printf("Thesqrtof%fis%f\n",a,c);getch();}程序1開始定義變量a,b,c輸入aa<=0b=ab=-ac=sqrt(b)輸出c結(jié)束N算法2Y程序2#include"math.h"main(){floata,b,c;printf("\npleaseinputanumber:\n");scanf("%f",&a);b=a;

if(a<=0)b=-a;c=sqrt(b);printf(“Thesqrtof%fis%f\n",a,c);getch();}2、if語句最簡單的形式if(表達式)語句表達式語句1NYmain(){inta,b,max;scanf(“%d%d”,&a,&b);max=a;if(b>max)max=b;printf(“max=%d”,max);}思考:當(dāng)輸入45和32時,下面這個程序的輸出結(jié)果是什么?體重測量儀改進版2編寫一個體重測量儀:要求從鍵盤輸入身高和體重后,能夠計算出體重指數(shù)。

體重指數(shù)=體重(kg)/(身高)2;要求實現(xiàn)這樣的判斷:

偏瘦:體重指數(shù)<18

正常:18<=體重指數(shù)<25;

微胖:25<=體重指數(shù)<30;

較胖:30<=體重指數(shù)<35;

肥胖:35<=體重指數(shù)<40;

很胖:體重指數(shù)>=40;

如果體重指數(shù)小于18,偏瘦否則如果體重指數(shù)小于25,標(biāo)準(zhǔn)

否則如果體重指數(shù)小于30,微胖

否則如果體重指數(shù)小于35,較胖

否則如果體重指數(shù)小于40,肥胖

否則很胖3、if語句的第三種形式if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

elseif(表達式4)語句4else表達式5

表達式1語句1YN表達式2語句2YN表達式3Y語句3N表達式4Y語句4N語句5從鍵盤輸入一個學(xué)生的分?jǐn)?shù),要求實現(xiàn)這樣的判斷功能:如果分?jǐn)?shù)大于100,輸出”Inputerror!”如果分?jǐn)?shù)介于100到90之間,輸出”VeryGood!”如果分?jǐn)?shù)介于80到90只,輸出”Good!”如果分?jǐn)?shù)介于70到80之間,輸出”Middle”如果分?jǐn)?shù)介于60到70之間,輸出”Pass”如果分?jǐn)?shù)小于60,輸出”NoPass!”實訓(xùn)算法1描述1、定義一個變量score;2、輸入score的值;3、如果score>100,輸出“Inputerror!”4、否則如果score>=90,輸出“VeryGood!”5、否則如果score>=80,輸出“Good!”6、否則如果score>=70,輸出“Middle!”7、否則如果score>=60,輸出“Pass!”8、否則輸出“NoPass!”9、否則輸出“Inputerror!main(){floatscore;printf("pleaseinputanumber:\n");scanf("%f",&score);

if(score>100)printf("Inputerror!");elseif(score>=90)printf("verygood!");elseif(score>=80)printf("good!"); elseif(score>=70)printf("middle!"); elseif(score>=60)printf("pass!"); elseprintf("nopass!"); getch();}_x001A_elseif(score>=0)printf(“Nopass!”);elseprintf(“Inputerror!”);}總結(jié)if語句的三種基本形式if(表達式)語句1else語句21、最基本的形式2、最簡單的形式if(表達式)語句3、層次形式if(表達式1)語句1elseif(表達式2)語句2elseif(表達式3)語句3

elseif(表達式4)語句4else表達式5

實訓(xùn)假如從鍵盤輸入67,下面這個程序的結(jié)果是什么,如果輸入89,90,101呢?main(){floatscore;scanf("%f",&score);if(score>=60)if(score>=90)printf("A");elseprintf("B");elseif(score>=0)printf("C");elseprintf("Inputerror!");}_x001A_二、if語句的嵌套if(表達式1)if(表達式2)語句1else語句2elseif(表達式3)語句3else語句4一般使用形式假如從鍵盤輸入5,下面程序的輸出結(jié)果是什么?main(){intx,y;scanf("%d",&x);if(x>=0)if(x>10)y=x*x-5;elseif(x>5)y=x*x*x+2; elsey=x;elseif(x<-10)y=x*x+5;elsey=x*x+11;printf("%d",y);}_x001A_思考題某單位的工資是這樣計算的:

工資=基本工資+工齡工資;工齡為1年:工齡工資=基本工資*0.1;工齡為2—3年:工齡工資=基本工資*0.25;工齡為4—5年:工齡工資=基本工資*0.5;工齡為6—8年:工齡工資=基本工資*0.8;工齡大于8年的:工齡工資=基本工資*工齡*0.1;基本工資為1500元。要求從鍵盤輸入教師的工齡,可以根據(jù)工齡計算該教師的基本工資。使用if語句來編寫如下的程序:實訓(xùn)算法描述:1、定義兩個實型變量:工資salary、工齡工資a_salary;定義一個整型變量:工齡age;2、輸入工齡age;3、如果age==1;a_salary=1500*0.1;4、如果2<=age<=3;a_salary=1500*0.25;5、如果4<=age<=5;a_salary=1500*0.5;6、如果6<=age<=8;a_salary=1500*0.8;7、如果8<=age;a_salary=1500*age*0.1;8、salary=1500+a_salary;9、輸出salary;main(){floatsalary,a_salary;intage;scanf("%d",&age);if(age==1)a_salary=1500*0.1;elseif(age>=2&&age<=3)a_salary=1500*0.25;elseif(age>=4&&age<=5)a_salary=1500*0.5; elseif(age>=6&&age<=8)a_salary=1500*0.8; elseif(age>8)a_salary=1500*age*0.1;salary=1500+a_salary;printf("%.1f",salary);}_x001A_main(){floatsalary,a_salary;intage;scanf("%d“,&age);

switch(age){case1:a_salary=1500*0.1;break;case2:a_salary=1500*0.25;break;case3:a_salary=1500*0.25;break;case4:a_salary=1500*0.5;break;case5:a_salary=1500*0.5;break;case6:a_salary=1500*0.8;break;case7:a_salary=1500*0.8;break;case8:a_salary=1500*0.8;break;default:a_salary=1500*age*0.1;}salary=1500+a_salary;printf("salary:%.1f",salary);}復(fù)習(xí)判斷一個學(xué)生成績的“優(yōu)、良、中、差”:假如從鍵盤輸入的字母是‘A’,輸出評語“YouareExcellent!”;如果輸入‘B’,輸出評語“Youarewell!”;如果輸入‘C’,輸出評語“Youarepassing!”;如果輸入‘D’,輸出評語“Youarenotpassing!”。如果輸入的不是這四個字母,則出現(xiàn)提示“Inputerror!”請編寫一個程序,實現(xiàn)該判斷功能。1、定義一個字符型變量score;2、輸入字符score;3、如果score==‘A’,輸出“Excellent!”4、如果score==‘B’,輸出“well!”5、如果score==‘C’,輸出“pass!”6、如果score==‘D’,輸出“Notpass!”7、如果以上都不是,則輸出“Inputerror!”算法描述If語句實現(xiàn)main(){charscore;scanf(“%c”,&score);if(score==‘A’)printf(“excellent!”);elseif(score==‘B)printf(“well!”);elseif(score==‘C’)printf(“pass!”);elseif(score==‘D’)printf(“Nopass”);elseprintf(“Inputerror!”);}switch語句實現(xiàn)main(){charscore;scanf(“%c”,&score);switch(score){case‘A’:printf(“Excellent!”);case‘B’:printf(“Well!”);case‘C’:printf(“Pass!”);case‘D’:printf(“Nopass!”);default:printf(“Inputerror!”);}}break;break;break;break;三、switch語句的使用switch(表達式)

{case常量表達式:語句1case常量表達式:語句2……case常量表達式:語句ndefault:語句n+1}四、條件運算符的使用程序段1if(a>b)max=a;elsemax=b;max=(a>b)

?a:

b一般使用形式:

表達式1?表達式2:表達式3程序段2if(x>=0)y=x;elsey=-X;y=(X>=0)?x:-x;優(yōu)先級僅僅比賦值運算符和逗號運算符高,自右至左的結(jié)合性.

某企業(yè)發(fā)放的年終獎金根據(jù)職工該年的積分計算。積分等于或低于0分的,獎金為0;積分在1到19分之間的,獎金為積分?jǐn)?shù)乘以100;積分在20到29之間的,獎金為積分?jǐn)?shù)乘以150;積分在30到39之間的,獎金為積分?jǐn)?shù)乘以200;積分在40到49分之間的,獎金為積分?jǐn)?shù)乘以250;積分在50分以上的,獎金都為積分?jǐn)?shù)乘以300。編寫一程序,從鍵盤輸入積分?jǐn)?shù),可以求出該職工的年終獎。分別用if和switch語句來實現(xiàn)綜合實訓(xùn)6.3、循環(huán)結(jié)構(gòu)程序設(shè)計所謂循環(huán),就是對一段程序重復(fù)執(zhí)行多次循環(huán)體語句:程序中需要被重復(fù)執(zhí)行的部分循環(huán)的初始條件:循環(huán)的執(zhí)行條件:i=0;i<50;實現(xiàn)循環(huán)的三種方法:while語句do_while語句for語句while語句while語句的一般形式:while(循環(huán)的執(zhí)行條件){循環(huán)體語句

}條件循環(huán)體YNprintf("pleaseinputthescoreofexam:");scanf("%f",&E_score);printf("\npleaseinputthescoreofperformance:");scanf("%f",&P_score);printf("\npleaseinputthescoreof:");scanf("%f",&M_score);F_score=E_score*0.4+P_score*0.3+M_score*0.3;printf("%.1f",F_score);while(i<50)

{

}i=0;i=i+1;main(){floatE_score,P_score,M_score,F_score;int}do_while語句do_while語句的一般形式是:do{

循環(huán)體語句

}while(循環(huán)的執(zhí)行條件);條件循環(huán)體YNIf(number%i==0)printf(“%6d”,i);while(i<sqrt(number));i=2;i=i+1;{}main(){intnumber,i;scanf(“%d”,&number);}#include”math.h”dofor語句for語句的一般形式是:for(循環(huán)變量初始值;循環(huán)的條件;循環(huán)變量變化)

循環(huán)體語句main(){intnumber,i;scanf(“%d”,&number);for

溫馨提示

  • 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論