版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、(一)程序設(shè)計(jì)語(yǔ)言的發(fā)展1、機(jī)器語(yǔ)言2、匯編語(yǔ)言3、面向過(guò)程的語(yǔ)言4、面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言(二)C程序設(shè)計(jì)語(yǔ)言的執(zhí)行過(guò)程1、編輯2、編譯3、連接4、執(zhí)行(三)用庫(kù)函數(shù)組裝C程序例1:計(jì)算2.1715的正弦值。#includemath.hmain()floata;/*定義a為實(shí)型變量*/a=sin(2.1715);/*調(diào)用sin函數(shù)*/printf(%fn,a);/*調(diào)用printf函數(shù),輸出a的值*/詳解:1、在本例中用到的sin函數(shù)稱為數(shù)學(xué)函數(shù),它是為了用戶使用方便,由一批廠家開(kāi)發(fā)編寫(xiě)的函數(shù),并不是C語(yǔ)言的一部分。在使用數(shù)學(xué)函數(shù)時(shí),往往要用到函數(shù)執(zhí)行時(shí)所需的一些信息(例如宏定義),這些信息
2、包含在math.h”中。因此在程序開(kāi)頭用#include“math.h”將有關(guān)的標(biāo)頭文件包括到程序中。2、一個(gè)C語(yǔ)言源程序文件由一個(gè)或多個(gè)函數(shù)組成,C語(yǔ)言的基本組成單位是函數(shù)。一個(gè)完整的C語(yǔ)言程序有且只有一個(gè)稱為主函數(shù)的main函數(shù),程序總是從main函數(shù)開(kāi)始執(zhí)行,調(diào)用其它函數(shù)后再回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。3、main是函數(shù)名稱,沒(méi)有參數(shù)可以不寫(xiě),但圓括號(hào)不能省略,main()后面有一對(duì)花括號(hào),花括號(hào)內(nèi)的部分稱為函數(shù)體,main函數(shù)可以在程序的任意位置。4、C規(guī)定每個(gè)語(yǔ)句以分號(hào)(;)結(jié)束,分號(hào)是語(yǔ)句不可缺少的組成部分,每行中可以寫(xiě)多條語(yǔ)句。5、/*與*/之間為注釋信
3、息,對(duì)程序運(yùn)行結(jié)果不發(fā)生影響,也不被編譯,注釋說(shuō)明可以放在語(yǔ)句的任意位置。6、floata;此語(yǔ)句是把a(bǔ)定義為一個(gè)實(shí)型變量。7、C語(yǔ)言本身沒(méi)有輸入、輸出語(yǔ)句,本例使用prinft函數(shù)輸出數(shù)據(jù)。prinft函數(shù)的括號(hào)內(nèi)包括兩部分內(nèi)容:雙引號(hào)內(nèi)的部分、雙引號(hào)外的部分。雙引號(hào)內(nèi)的部分是“格式字符串”,用于指定輸出雙引號(hào)外的變量的打印格式。此例中雙引號(hào)中有一個(gè)雙引號(hào)外的變量的打印格式。此例中雙引號(hào)中有一個(gè)%f,它是輸出一個(gè)保留小數(shù)點(diǎn)后6位數(shù)字的雙引號(hào)外的變量的打印格式。此例中雙引號(hào)中有一個(gè)雙引號(hào)外的變量的打印格式。此例中雙引號(hào)中有一個(gè)%f,它是輸出一個(gè)保留小數(shù)點(diǎn)后6位數(shù)字的格式字符,小數(shù)點(diǎn)前的位數(shù)不指
4、定。二、練習(xí)(一)選擇題I、以下敘述正確的是_c_。(A)在C程序中,main函數(shù)必須位于程序的最前面(B)c程序的每行中只能寫(xiě)一條語(yǔ)句(c)C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句(D)在對(duì)一個(gè)C程序進(jìn)行編譯的過(guò)程中,可發(fā)現(xiàn)注釋中的拼寫(xiě)錯(cuò)誤2、c語(yǔ)言規(guī)定:在一個(gè)源程序中,main函數(shù)的位置_C_。(A)必須在最開(kāi)始(B)必須在系統(tǒng)調(diào)用庫(kù)函數(shù)的后面(c)可以任意(D)必須在最后3、一個(gè)C語(yǔ)言程序是由B。(A)一個(gè)主程序和若干子程序組成(B)函數(shù)組成(C)若干過(guò)程組成(D)若干子程序組成4、一個(gè)c程序的執(zhí)行是從A_(A)本程序的main函數(shù)開(kāi)始,到main函數(shù)結(jié)束(B)本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序文件
5、的最后一個(gè)函數(shù)結(jié)束(C)本程序的main函數(shù)開(kāi)始,到本程序文件的最后一個(gè)函數(shù)結(jié)束(D)本程序文件的第一個(gè)函數(shù)開(kāi)始,到本程序main函數(shù)結(jié)束5、以下敘述不正確的是_D(A)一個(gè)C源程序可由一個(gè)或多個(gè)函數(shù)組成(B)一個(gè)C源程序必須包含一個(gè)main函數(shù)(C)C程序的基本組成單位是函數(shù)(D)在C程序中,注釋說(shuō)明只能位于一條語(yǔ)句后面(二)填空題:1、一個(gè)C源程序中至少包括一個(gè)_main函數(shù)。2、在一個(gè)C源程序中,注釋部分兩側(cè)的分界符分別為/*和_*/第二章數(shù)據(jù)描述與基本操作一、主要知識(shí)點(diǎn)(一)C的基本數(shù)據(jù)類型節(jié)短整型(short)整型(一)C的基本數(shù)據(jù)類型節(jié)短整型(short)整型整型(int)基本類型
6、字符型ghar)長(zhǎng)整型(long)實(shí)型(浮點(diǎn)型)單精度型(float)數(shù)據(jù)類型構(gòu)造類型數(shù)組類型數(shù)據(jù)類型構(gòu)造類型數(shù)組類型枚舉類型雙精度型枚舉類型雙精度型(double)結(jié)構(gòu)類型(struct)指針類型共用類型(union)指針類型共用類型(union)空類型(void)文件類型(FILE)(二)常量和符號(hào)常量1、常量定義:在程序運(yùn)行過(guò)程中,其值不能被改變的量稱為常量。常量常區(qū)分不同的類型,如12、0、-3為整型常量,a、D為字符常量。2、符號(hào)常量:用一個(gè)標(biāo)識(shí)符代表一個(gè)常量的,稱為符號(hào)常量,即標(biāo)識(shí)符形式的常量。常量不同于變量,它的值在作用域內(nèi)不能改變,也不能再被賦值。例1:已知商品的單價(jià)及數(shù)量求商
7、品的總價(jià)值。#definePRICE30main()intnum=10,total;total=num*PRICE;printf(“total=%d”,total)輸出結(jié)果:total=300詳解:1、程序中用#define命令行定義PRICE代表常量30,此后凡在此文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進(jìn)行運(yùn)算。2、符號(hào)常量不同于變量,它的值在其作用域內(nèi)不能改變,也不能再被賦值。如再用以下賦值語(yǔ)句給PRICE賦值:PRICE=40;是錯(cuò)誤的。(三)變量1、變量定義:其值可以改變的量稱為變量。2、標(biāo)識(shí)符的命名規(guī)范和其它高級(jí)語(yǔ)言一樣,用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類型名、
8、文件名的有效字符序列稱為標(biāo)識(shí)符,C語(yǔ)言中的標(biāo)識(shí)符命名規(guī)范為:變量名只能由字母、數(shù)字和下劃線三種字符組成,且第一個(gè)字符必須為字母或下劃線。C語(yǔ)言中標(biāo)識(shí)符的長(zhǎng)度(字符個(gè)數(shù))無(wú)統(tǒng)一規(guī)定,隨系統(tǒng)而不同。許多系統(tǒng)(如IBMPC的MSC)取前7個(gè)字符,假如程序中出現(xiàn)的變量名長(zhǎng)度大于7個(gè)字符,則只有前面7個(gè)字符有效,后面的不被識(shí)別。C語(yǔ)言有32個(gè)關(guān)鍵字(例如if、else、while)它們已有專門含義,不應(yīng)用采用與它們同名的變量名。C語(yǔ)言將大寫(xiě)字母和小寫(xiě)字母認(rèn)為是兩個(gè)不同字。例2:在下列符號(hào)中,可以選用哪些作變量名?哪些不可以?a3B3aBn+a-b*x$_b5_ifnext_daye_2OK?intege
9、rMAXNUMBERi*j答案:_b5_a3Bnext_daye_2MAXNUMBER可作變量名,其它的作變量名不可以。詳解:MAXNUMBER可作變量名。習(xí)慣上符號(hào)常量名用大寫(xiě),變量名用小寫(xiě)以示區(qū)別,但大寫(xiě)字母作變量名并無(wú)錯(cuò)誤。if、integer屬于保留字,保留字不可作變量名。n+a-b*x$OK?i*j不可作變量名,因?yàn)樽兞棵荒苡勺帜?、?shù)字和下劃線三種字符組成。3aB不可作變量名,因?yàn)樽兞棵牡谝粋€(gè)字母必須為字母或下劃線。(四)整型數(shù)據(jù)1、整型常量整型常量即整常數(shù)。C語(yǔ)言整常數(shù)可用以下三種表示形式。十進(jìn)制表示。如231、-56.478八進(jìn)制表示。以0開(kāi)頭的數(shù)是八進(jìn)制數(shù)。如0123即(1
10、23)=1*82+2*81+3*80=64+16+3=83。8十六進(jìn)制表示。以0 x開(kāi)頭的數(shù)是16進(jìn)制。如0 x123即(123)=1*162+2*161+3*160=256+32+3=291。162、整型變量整型變量分為:基本型、短整型、長(zhǎng)整型、和無(wú)符號(hào)型四種。基本型,以int表示短整型,以shortint表示或以short表示長(zhǎng)整型,以Iongint表示,或以long表示無(wú)符號(hào)型,存儲(chǔ)單元中全部二進(jìn)制位(bit)用作存放數(shù)本身,而不包括符號(hào)。無(wú)符號(hào)型中又分為無(wú)符號(hào)整型、無(wú)符號(hào)短整型和無(wú)符號(hào)長(zhǎng)整型,分別以u(píng)nsignedint、unsignedshort和unsignedlong表示。3、整
11、型數(shù)據(jù)的取值范圍C標(biāo)準(zhǔn)沒(méi)有具體規(guī)定各類型所占內(nèi)存字節(jié)數(shù),各種機(jī)器處理上有所不同,以IBMPC為例,數(shù)的范圍如表2.1所示。表2.1IntshortintLongintUnsignedintUnsignedshortUnsignedlong所占位數(shù)161632161632數(shù)的范圍IntshortintLongintUnsignedintUnsignedshortUnsignedlong所占位數(shù)161632161632數(shù)的范圍-3276832767即-215(215-1)-3276832767即-215(215-1)-21474836482147483647即-231(231-1)065535即0
12、(216-1)065535即0(216-1)04294967295即0(232-1)4、整型常量的分類一個(gè)整常量,如果其值在-3276832767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。一個(gè)整常量,如果其值超過(guò)了上述范圍,而在-21474836482147483647范圍內(nèi),則認(rèn)為它是longint型,可以將它賦值給一個(gè)longint型變量。如果某一計(jì)算機(jī)系統(tǒng)的C版本確定的shortint與int型在內(nèi)存中占據(jù)的長(zhǎng)度相同,則一個(gè)int型的常量出同時(shí)一個(gè)shortint型常量。常量中無(wú)unsigned型。但一個(gè)非負(fù)值的整常量可以賦值給unsigned型整變量,只要它
13、的范圍不超過(guò)變量的取值范圍即可。例如:將50000賦給一個(gè)unsignedint型變量是可以的,而將70000賦給它是不行的(溢出)。在一個(gè)整常量后面加一個(gè)字母1或L,則認(rèn)為是longint型常量。(五)實(shí)型數(shù)據(jù)1、實(shí)型常量實(shí)數(shù)在C語(yǔ)言中又稱為浮點(diǎn)數(shù)。實(shí)數(shù)有兩種表示形式:十進(jìn)制形式。它由數(shù)字和小數(shù)點(diǎn)組成(注意必須有小數(shù)點(diǎn))。例如:0.123、.123、123.0、0.0都是十進(jìn)制數(shù)形式。指數(shù)形式。如123.56e4或123.56E4都代表123.56*104。但字母e(或E)之前必須有數(shù)字,e后面指數(shù)必須為整數(shù)。例如:e3、2.1e3.5、.e3、e等都不是合法的指數(shù)形式。例3:下面四個(gè)選項(xiàng)中
14、,均是不合法的浮點(diǎn)數(shù)的選項(xiàng)是。(A)160.0.12e3(B)1232e4.2.e5(C)-.18123e40.0(D)-.e3.2341e3答案:B詳解:160.0.12-.18123e40.0.2341e3是實(shí)數(shù)的十進(jìn)制形式或指數(shù)形式。e32e4.2.e5-.e3不是正確的指數(shù)形式。因?yàn)檎_的字母e(或E)之前必須有數(shù)字,e后面指數(shù)必須為整數(shù)。對(duì)于數(shù)據(jù)表示形式.e5以及-.e3,e前的.與-.不是有效的數(shù)字表示形式。123是整數(shù)形式。2、實(shí)型變量C實(shí)型變量分為單精度(float型)和雙精度(double型)兩類。在一般系統(tǒng)中,一個(gè)單精度型數(shù)據(jù)在內(nèi)存中占4個(gè)字節(jié)(32位),一個(gè)double型
15、數(shù)據(jù)占8個(gè)字節(jié)。一個(gè)單精度型變量能接收7位有效數(shù)字,一個(gè)double型變量能接收17位有效數(shù)字,數(shù)值的范圍隨機(jī)器系統(tǒng)而異。在IBMPC中,單精度實(shí)數(shù)的范圍約為土(3.4E10-383.4E1038),雙精度實(shí)數(shù)的范圍約為土(1.7E10-3081.710308)。例4:main()floata;a=111111.666666;printf(“%F,a);輸出結(jié)果:111111.640621詳解:一個(gè)實(shí)型常量不分float型和double型。一個(gè)實(shí)型常量可以賦給一個(gè)float型或double型變量。根據(jù)變量的類型截取實(shí)型常量中相應(yīng)的有效位數(shù)字。由于float型變量只能接收7位有效數(shù)字,因此在把1
16、11111.666666賦給a時(shí),a只接收了111111.6,由于輸出函數(shù)printf中的%f格式表示輸出小數(shù)點(diǎn)后的6位小數(shù),所以111111.6后的40621屬于無(wú)意義數(shù)字。如果a改為double型,則能全部接收上述12位數(shù)字。(六)字符型數(shù)據(jù)1、字符常量:普通形式的字符常量:用引號(hào)(即撇號(hào))括起來(lái)的一個(gè)字符,如a、D、$、?等都是字符常量。轉(zhuǎn)義符:以“”開(kāi)頭的字符序列。常用的以“”開(kāi)頭的特殊字符見(jiàn)表2.2表2.2字符形式功能n換行t橫向跳格v豎向跳格b退格r回車f走紙換頁(yè)反斜杠字符單引號(hào)字符ddd1到3位8進(jìn)進(jìn)制所代表的字符xhh1到2位16進(jìn)制數(shù)所代表的字符例5:若有說(shuō)明語(yǔ)句:charc
17、=729;則變量c。(A)包含1個(gè)字符(B)包含2個(gè)字符(C)包含3個(gè)字符(D)說(shuō)明不合法答案:D詳解:”后可以有1到3位8進(jìn)制所代表的字符,本題中”后的”72”屬于8進(jìn)制所代表的字符,而9則不屬于8進(jìn)制位所代表的字符,則729中包含了兩個(gè)字符常量72和9。而字符常量是用引號(hào)(即撇號(hào))括起來(lái)的一個(gè)字符,所以答案為D。2、字符變量字符變量是用來(lái)存放字符常量的存儲(chǔ)單元。3、字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式將一個(gè)字符常量存放到一個(gè)字符變量中,實(shí)際上并不是把該字符本身存放到內(nèi)存單元中去,而是將該字符的相應(yīng)的ASCII碼值存放到存儲(chǔ)單元中去。例6:將小寫(xiě)字母轉(zhuǎn)換成大寫(xiě)字母main()charc1=a;c1=c
18、1-32;printf(%c,c1);輸出結(jié)果:A詳解:a的ASCII碼為97,所以cl=a;語(yǔ)句的功能是把97賦值給了cl。c1=c1-32;語(yǔ)句的功能是把97-32的值65賦值給cl。printf函數(shù)中的%c格式表示以字符方式輸出。ASCII碼值為65的字符為A,所以運(yùn)行結(jié)果為:A(七)字符串常量字符常量是用一對(duì)雙引號(hào)括起來(lái)的零個(gè)或多個(gè)字符序列。C規(guī)定以字符0作為字符串結(jié)束標(biāo)志。所以字符串a(chǎn)實(shí)際上包含2個(gè)字符:a、0,因此下面的語(yǔ)句:c=a;把一個(gè)串賦值給一個(gè)字符變量c是錯(cuò)誤的。例7:下面不正確的字符串常量是。(A)abc(B)l2l2(C)0(D)答案:A詳解:abc是用單引號(hào)引來(lái)的,所
19、以abc不是正確的字符串常量。(八)算術(shù)運(yùn)算符和算術(shù)表達(dá)式l、基本算術(shù)運(yùn)算符C語(yǔ)言中有5個(gè)基本算術(shù)運(yùn)算符:(加法運(yùn)算符。如3+5、+3)(減法運(yùn)算符。如5-2、-3)(乘法運(yùn)算符,如3*5)(除法運(yùn)算符,如5/3,5.0/3)(求余運(yùn)算符,要求%兩側(cè)均為整型數(shù)據(jù))例8:在C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是。(A)/(B)+(C)!=(D)%答案:D詳解:對(duì)于%運(yùn)算符來(lái)說(shuō),要求兩側(cè)均為整型數(shù)據(jù),所以表達(dá)式3.5%2與3%2.0是錯(cuò)誤的。例9:寫(xiě)出下列程序的輸出結(jié)果main()printf(“d,%dn”,5/3,5%3)printf(“d,%dn”,-5/-3,-5%-3);printf(
20、%d,%dn”,-5/3,-5%3);printf(%d,%dn”,5/-3,5%-3);輸出結(jié)果:1,21,-2-1,-2-1,2詳解:兩個(gè)同號(hào)整數(shù)相除時(shí)結(jié)果為正整數(shù),如5/3、-5/-3的結(jié)果值為1。兩個(gè)異號(hào)整數(shù)相除時(shí)結(jié)果為負(fù)整數(shù),多數(shù)機(jī)器采取“向零取整”法,即-5/-3=-1,5/-3=-1,但如果參加運(yùn)算的兩個(gè)數(shù)中有一個(gè)數(shù)為實(shí)數(shù)時(shí)結(jié)果為實(shí)數(shù)。對(duì)于求余(%)運(yùn)算,運(yùn)算結(jié)果與第一個(gè)數(shù)的符號(hào)相同。優(yōu)先級(jí)別:先*、/、%后+、運(yùn)算量:雙元運(yùn)算量,前后必須為整數(shù)。左右結(jié)合性:自左至右參預(yù)運(yùn)算。2、自加自減運(yùn)算符=(小于或等于)=(等于)是!=(不等于)=(小于或等于)=(等于)是!=(不等于)C
21、語(yǔ)言中有4種形式的自加自減運(yùn)算符:+i(先使i加1后使用)i+(先使用后使i加1)i(先使i減1后使用)i(先使用后使i減1)優(yōu)先級(jí)別:高于算術(shù)運(yùn)算。例10:若x和n均是int型變量,且x和n的初值均為5,則計(jì)算表達(dá)式后x的值為,n的值為。x+=n+答案:106詳解:根據(jù)優(yōu)先級(jí)別選運(yùn)算表達(dá)式n+,因?yàn)閚+是后綴表示形式,所以n先參預(yù)運(yùn)算,再運(yùn)算表達(dá)式x+=n,則x為10,最后n自加為6。例11:main()ntx,y,m,n;x=2;y=2m=x+*5;n=+y*5;printf(“d,%d,%d,%d”,x,y,m,n)輸出結(jié)果:3,3,10,15詳解:對(duì)于后綴來(lái)說(shuō)是先使用后運(yùn)算,所以m的值
22、為x在自加以前的2*5得10賦值給m后,x自加變?yōu)?。對(duì)于前綴來(lái)說(shuō)是先運(yùn)算后使用,所以m的值為x在自加以后的3*5得15賦值給n。運(yùn)算量:?jiǎn)卧\(yùn)算量,此運(yùn)算量必須為變量,所以表達(dá)式5+、(x+y)+是錯(cuò)誤的。左右結(jié)合性:自右至左參預(yù)運(yùn)算。(九)關(guān)系運(yùn)算1、C語(yǔ)言提供的關(guān)系運(yùn)算符有:(大于)=(大于或等于)(小于)2、優(yōu)先級(jí)別:關(guān)系運(yùn)算符的優(yōu)先級(jí)別低于純算術(shù)類,高于賦值類。后兩個(gè)的優(yōu)先級(jí)小于前四個(gè)。如表達(dá)式a+bc+d完全等價(jià)于表達(dá)式(a+b)(c+d)。3、運(yùn)算量:關(guān)系運(yùn)算符是雙元運(yùn)算符,整型、實(shí)型、字符都可以參預(yù)運(yùn)算。4、左右結(jié)合性:從左向右的結(jié)合方向5、關(guān)于關(guān)系運(yùn)算符的進(jìn)一步說(shuō)明:關(guān)系表達(dá)
23、式的值是整型數(shù)0或1,故也可以將其看成一種整型表達(dá)式。例如:inti=1,j=7,a;a=i+(j%4!=0);的執(zhí)行結(jié)果為:a的值為2。要說(shuō)明x在區(qū)間a,b中,普通數(shù)學(xué)中使用表達(dá)式aWx2b。但C語(yǔ)言中應(yīng)寫(xiě)成a=x&x278在數(shù)學(xué)上是不允許的,而在C中是允許的。按自左至右求解。字符數(shù)據(jù)的比較按其ASCII碼值進(jìn)行。在判定兩個(gè)浮點(diǎn)數(shù)是否相等時(shí),由于存儲(chǔ)上的誤差,會(huì)得出錯(cuò)誤的結(jié)果。例如:1.0/3.0*3.0=1.0該表達(dá)式的值為0。(十)邏輯運(yùn)算1、C語(yǔ)言提供的邏輯運(yùn)算符:&(邏輯與)|(邏輯或)!(邏輯非)2、優(yōu)先級(jí)別:&與|的優(yōu)先級(jí)別低于關(guān)系運(yùn)算符,高于條件運(yùn)算符,&的優(yōu)先級(jí)別高于|,!的
24、優(yōu)先級(jí)別與自加運(yùn)算符(+)、自減運(yùn)算符(-)同級(jí)。3、運(yùn)算量:&和|是雙元運(yùn)算符,!是單元運(yùn)算符。例12:已知x=43,ch=A,y=0;則表達(dá)(x=y&chB&!y)的值是。(A)0(B)語(yǔ)法錯(cuò)(C)1(D)“真”答案:C詳解:C語(yǔ)言不提供邏輯性數(shù)據(jù)“真”和“假”,在進(jìn)行邏輯運(yùn)算時(shí),結(jié)果不是1就是0。4、左右結(jié)合性:&和|運(yùn)算符的結(jié)合方向?yàn)樽宰笾劣?,!的結(jié)合方向?yàn)樽杂抑磷蟆?、關(guān)于邏輯運(yùn)算符的進(jìn)一步說(shuō)明:在一個(gè)&表達(dá)式中,若&的一端為0,則不必再計(jì)算另一端,該表達(dá)式的值肯定為0。在一個(gè)|表達(dá)式中,若II的一端為0,則不必再計(jì)算另一端,該表達(dá)式的值肯定為1。例13:寫(xiě)出下面程序的輸出結(jié)果。ma
25、in()intx,y,z;x=y=z=0;+x&+y|+z;printf(“d,%d,%d”,x,y,z)x=y=z=0;+x|+y&+z;printf(%d,%d,%d,x,y,z)輸出結(jié)果:1,1,01,0,0詳解:因?yàn)?的優(yōu)先級(jí)別高于II,所以表達(dá)式+x&+yll+z是一個(gè)或表達(dá)式,根據(jù)II的一端為0,則不必再計(jì)算另一端的原則,先計(jì)算表達(dá)式+x&+y的值為1,因?yàn)?或任何值都為1,所以表達(dá)式+z沒(méi)有運(yùn)算,輸出結(jié)果為:1,1,0。表達(dá)式+xll+y&+z也是一個(gè)或表達(dá)式,同樣根據(jù)II的一端為0,則不必再計(jì)算另一端的原則,先計(jì)算表達(dá)式+z的值為1,因?yàn)?或任何值都為1,所以表達(dá)式+y&+Z沒(méi)
26、有運(yùn)算,輸出結(jié)果為:1,0,0。(十一)賦值運(yùn)算1、基本的賦值運(yùn)算符:=(將賦值運(yùn)算符右側(cè)的表達(dá)式賦給左側(cè)的變量)2、自反算術(shù)賦值運(yùn)算符C語(yǔ)言中有5個(gè)基本自反算術(shù)賦值運(yùn)算符:=(a=3等價(jià)于a=a3)(a=3等價(jià)于aa3)(a=3等價(jià)于aa3)(a=3等價(jià)于aa3)=(a=3等價(jià)于a=a3)3、優(yōu)先級(jí)別:賦值運(yùn)算符與自反算術(shù)賦值運(yùn)算符屬于同等級(jí)別,低于條件運(yùn)算符,高于逗號(hào)運(yùn)算符。如對(duì)于表達(dá)式x%=y+3完全等價(jià)于x%=(y+3)。例14:若有以下定義,則能使值為3的表達(dá)式是。Intk=7,x=12;(A)x%=(k%5)(B)x%=(k-k%5)(C)x%=k-k%5(D)(x%=k)-(k%
27、=5)答案:D詳解:表達(dá)式(x%=k)-(k%=5)完全等價(jià)于(x=x%k)-(k=k%5)等價(jià)于5-2,此表達(dá)式的結(jié)果為3。4、運(yùn)算量:雙元運(yùn)算量,賦值運(yùn)算符與自反算術(shù)賦值運(yùn)算的第一個(gè)量必須為變量,且=前后必須為整型數(shù)據(jù)。如對(duì)于表達(dá)式a*3+=2是錯(cuò)誤的。因?yàn)榇吮磉_(dá)式完全等價(jià)于(a*3)=(a*3)+2。5、左右結(jié)合性:自右至左參預(yù)運(yùn)算。例15:若a是int型變量,且a的初值為6,則計(jì)算表達(dá)式后a的值為。a+=a-=a*a答案:-60詳解:表達(dá)式從左向右運(yùn)算,先計(jì)算表達(dá)式a=a-36后a為-30,再計(jì)算表達(dá)式a=a+a后a的值變?yōu)?60。(十二)條件運(yùn)算:1、條件運(yùn)算符的基本形式及功能:條件
28、運(yùn)算是一種在兩個(gè)表達(dá)式的值中選擇一個(gè)的操作。它的一般形式為:e1?e2:e3它的操作過(guò)程為,若el為真,則表達(dá)式的值為e2,若為假表達(dá)式的值為e3。2、優(yōu)先級(jí)別:低于邏輯運(yùn)算,高于賦值運(yùn)算。3、運(yùn)算量:三元運(yùn)算量,el一般為算術(shù)表達(dá)式,e2、e3可以是任意類型的表達(dá)式,條件表達(dá)式的值的類型為e2與e3二者中類型較高的。例16:若有條件表達(dá)式(exp)?a+:b-,則以下表達(dá)式中能完全等價(jià)于表達(dá)式(exp)的是。答案:exp!=0詳解:對(duì)于表達(dá)式e1?e2:e3,el一般為算術(shù)表達(dá)式、邏輯表達(dá)式、關(guān)系表達(dá)式,結(jié)果為1(真)或0(假)也可以為數(shù)值exp,結(jié)果為結(jié)果為非0(真)或0(假)在本例中與e
29、xp完全等價(jià)的表達(dá)式是exp!=0。4、左右結(jié)合性:自右至左運(yùn)算。例17:以下程序的運(yùn)行結(jié)果是。main()intk=4,a=3,b=2,c=1;printf(“d”,ka?k:cb?c:a)答案:1詳解:條件表達(dá)式是從右向左運(yùn)算,所以在本例中先計(jì)算表達(dá)式cb?c:a的值,把各數(shù)值代入此表達(dá)式的值為1。再計(jì)算表達(dá)式ka?k:1的值,因?yàn)閗m,則自動(dòng)取n值,即保證n個(gè)字符正常輸出。f格式:用來(lái)輸出實(shí)數(shù)(包括單、雙精度),以小數(shù)形式輸出。有以下幾種用法:%f:不指定寬度,整數(shù)部分全部輸出并輸出6位小數(shù)。%m.nf:輸出共占m列,其中有n位小數(shù),如數(shù)值寬度小于m左端補(bǔ)空格。%-m.nf:輸出共占n列
30、,其中有n位小數(shù),如數(shù)值寬度小于m右端補(bǔ)空格。e格式:以指數(shù)形式輸出實(shí)數(shù)??捎靡韵滦问剑?e:數(shù)字部分(又稱尾數(shù))輸出6位小數(shù),指數(shù)部分占5位或4位。%m.ne和%-m.ne:m、n和”-字符含義與前相同。此處n指數(shù)據(jù)的數(shù)字部分的小數(shù)位數(shù),m表示整個(gè)輸出數(shù)據(jù)所占的寬度。g格式:自動(dòng)選f格式或e格式中較短的一種輸出,且不輸出無(wú)意義的零。4、關(guān)于printf函數(shù)的進(jìn)一步說(shuō)明:如果想輸出字符“%”,則應(yīng)該在“格式控制”字符串中用連續(xù)兩個(gè)%表示,如:printf(“f%”,l.0/3)輸出0.333333%。(十六)scanf函數(shù)scanf函數(shù)可以用來(lái)輸入任何類型的多個(gè)數(shù)據(jù)。1、scanf函數(shù)的一般格
31、式scanf(格式控制,地址表列)“格式控制”的含義同printf函數(shù)。普通字符即需要原樣輸入的字符。地址表列是指由若干個(gè)地址組成的表列,它們之間用“,”隔開(kāi)。2、格式控制的完整格式:%*ml或h格式字符格式字符與printf函數(shù)中的使用方式相同,以%d、%o、x、%c、%s、f、e,無(wú)u格式、g格式。可以指定輸入數(shù)據(jù)所占列寬,系統(tǒng)自動(dòng)按它截取所需數(shù)據(jù)。如:scanf(“3d%3d”,&a,&b)輸入:123456系統(tǒng)自動(dòng)將123賦給a,456賦給b。%后的“*”附加說(shuō)明符,用來(lái)表示跳過(guò)它相應(yīng)的數(shù)據(jù)。例如:scanf(“2d%*3d%2d”,&a,&b)如果輸入如下信息:1234567。將12
32、賦給a,67賦給b。第二個(gè)數(shù)據(jù)”345”被跳過(guò)不賦給任何變量。輸入數(shù)據(jù)時(shí)不能規(guī)定精度,例如:scanf(%7.2f”,&a)是不合法的,不能企圖輸入:12345.67而使a的值為12345.67。3、輸入數(shù)據(jù)流分隔根據(jù)格式字符的含義從輸入流中取得數(shù)據(jù),當(dāng)輸入流中數(shù)據(jù)類型與格式字符要求不符時(shí),就認(rèn)為這一項(xiàng)結(jié)束。如:scanf(“d%c%f”,&a,&b,&c);如果輸入如下信息:1234r1234.567則scanf函數(shù)在接收數(shù)據(jù)時(shí)發(fā)現(xiàn)”r”類型不匹配,于是把”1234”轉(zhuǎn)換成整型賦值給a,把”r”賦給變量b,最后把”1234.567”轉(zhuǎn)換成實(shí)型數(shù)據(jù)賦給c。根據(jù)格式項(xiàng)中指定的域?qū)挿指舫鰯?shù)據(jù)項(xiàng)。如
33、語(yǔ)句:scanf(“2d%3f%4f”,&a,&b,&c)如果輸入如下信息:123456789012345則scanf函數(shù)在接收數(shù)據(jù)時(shí)根據(jù)域?qū)挵?2賦值給a,345賦值給b,6789賦值給c。隱示分隔符??崭瘛⑻穹?t)、換行符(n)都是C語(yǔ)言認(rèn)定的數(shù)據(jù)分隔符。顯示分隔符。在scanf函數(shù)的兩個(gè)格式說(shuō)明項(xiàng)間有一個(gè)或多個(gè)普通字符,那么在輸入數(shù)據(jù)時(shí),在兩個(gè)數(shù)據(jù)之間也必須以這一個(gè)或多個(gè)字符分隔。如語(yǔ)句:scanf(a=%d,b=%f,c=%f”,&a,&b,&c)則輸入數(shù)據(jù)應(yīng)該為:a=1234,b=67.8,c=98.1234、關(guān)于scanf函數(shù)的進(jìn)一步說(shuō)明:scanf函數(shù)中的“格式控制”后面應(yīng)當(dāng)
34、是變量地址,而不應(yīng)是變量名。例如,如果a、b為整型變量,則scanf(%d,%d,a,b);是不對(duì)的,應(yīng)將”a,b”改為”&a,&b”。如果在“格式控制”字符串中除了格式說(shuō)明以外還有其它字符,則在輸入數(shù)據(jù)時(shí)應(yīng)輸入與這些字符相同的字符。例如:scanf(%d,%d”,&a,&b);輸入時(shí)應(yīng)輸入:3,4。3與4之間的逗號(hào)應(yīng)與scanf函數(shù)中的格式控制”中的逗號(hào)相對(duì)應(yīng),輸入其它符號(hào)是不對(duì)的。在用%c”格式輸入字符時(shí),空格字符和轉(zhuǎn)義字符都作為有效字符輸入。scanf(%c%c%c”,&c1,&c2,&c3);如輸入:abc。字符a賦給c1,字符(空格)賦給c2,字符b賦給c3。5、scanf的停止與返
35、回格式參數(shù)中的格式項(xiàng)用法正常結(jié)束。發(fā)生格式項(xiàng)與輸入域不匹配時(shí)不正常退出:(十七)getchar、putchar函數(shù)1、getchar函數(shù)getchar函數(shù)是從終端輸入一個(gè)字符。getchar函數(shù)沒(méi)有參數(shù),其一般形式為:getchar()。2、putchar函數(shù)putchar函數(shù)的作用是向終端輸出一個(gè)字符。二、練習(xí)(一)選擇題1、下面四個(gè)選項(xiàng)中,均是不合法的用戶標(biāo)識(shí)符的選項(xiàng)是。(A)AP_0do(B)floatla0_a(C)b-agotoint(D)_123tempINT2、若x,i,j和k都是int型變量則計(jì)算下面表達(dá)式后,x的值為_(kāi)。x=(i=4,j=16,k=32)(A)4(B)16(C
36、)32(D)523、下列四個(gè)選項(xiàng)中,均是不合法的整型常量的選項(xiàng)是(A)-0f1-0 xffff001112,3456B)-0 xcdf12,3456(D)-0 x48eg-06803f4、下面四個(gè)選項(xiàng)中,均是合法浮點(diǎn)數(shù)的選項(xiàng)是(A)1e15e-9.403e2(B)-.6012e-4-8e5(C)123e1.2e-.42e-1(D)-e3.8e-45.e-05、下面四個(gè)選項(xiàng)中,均是合法字符的選項(xiàng)是(A)Cxf(B)017n(C)018,f,xab(D)0101xlfC)-018C)-0189995e26、以下不正確的敘述是。(A)在C程序中,逗號(hào)運(yùn)算符的優(yōu)先級(jí)最低。(B)在C程序中,APH和ap
37、h是兩個(gè)不同的變量(C)若a和b類型相同,在計(jì)算機(jī)了賦值表達(dá)式a=b后,b的值不變。(D)當(dāng)從鍵盤(pán)輸入數(shù)據(jù)時(shí),對(duì)于整型變量只能輸入整型數(shù)值,對(duì)于實(shí)型變量只能輸入實(shí)型數(shù)據(jù)。第三章C程序的流程設(shè)計(jì)、亠一、算法1、算法的概念為解決某一個(gè)問(wèn)題而采取的方法和步驟,就稱為算法。2、算法的性質(zhì)有窮性:一個(gè)算法應(yīng)包含有限的操作步驟一個(gè)初始:此動(dòng)作序列只有一個(gè)初始動(dòng)作確定性:算法中的每一個(gè)步驟都應(yīng)當(dāng)是確定性的,僅有一個(gè)后繼動(dòng)作。有一個(gè)或多個(gè)輸出:序列終止表示問(wèn)題得到解答或問(wèn)題沒(méi)有解答,沒(méi)有輸出的算法是沒(méi)有意義的。二、選擇型程序設(shè)計(jì)1、if語(yǔ)句的形式if(條件表達(dá)式)語(yǔ)句if(條件表達(dá)式)語(yǔ)句1else語(yǔ)句2注意
38、:if語(yǔ)句中的條件表達(dá)式一般為邏輯表達(dá)式或關(guān)系表達(dá)式,但也可以是任意的數(shù)值類型(包括整型、實(shí)型、字符型、指針類型),例如下列語(yǔ)句也是合法的。if(,a)printf(“d”,a);在if語(yǔ)句中,分號(hào)是語(yǔ)句的結(jié)束標(biāo)志。在if和else后面可以只含一個(gè)內(nèi)嵌的操作語(yǔ)句,也可以有多個(gè)操作語(yǔ)句,此時(shí)用花括號(hào)將幾個(gè)語(yǔ)句括起來(lái)成為一個(gè)復(fù)合語(yǔ)句。例1:以下不正確的if語(yǔ)句形式是()。if(xy&x!=y);if(x=y)x+=y;C)if(x!=y)scanf(%d,&x)elsescanf(%d,&y);D)if(xy)z=x;x=y;y=z;答案:x,y,z的值分別是:203030詳解:在此語(yǔ)句中,條件x
39、y為假,所以只執(zhí)行x=y;y=z;兩條語(yǔ)句。例3、以下不正確的語(yǔ)句是()if(xy);if(x=y)&(x!=0)x+=y;if(x!=y)scanf(%d,&x);if(xy)x+;y+;答案:D詳解:分號(hào)是語(yǔ)句結(jié)束的標(biāo)志,y+的末尾無(wú)分號(hào),所以y+不是合法的語(yǔ)句。2、if的嵌套if(條件1)if(條件2)語(yǔ)句1else語(yǔ)句2elseif(條件3)語(yǔ)句3else語(yǔ)句4例4:以下程序的輸出結(jié)果是()main()inta=100,x=10,y=20,ok1=5,ok2=0;if(xy)if(y!=10)if(!ok1)a=1;elseif(ok2)a=10;printf(“dn”,a)答案:10
40、0詳解:把10、20、5、0分別給變量x、y、okl、ok2賦值,執(zhí)行條件語(yǔ)句后a值沒(méi)有改變,所以a值仍是原值100。3、switch結(jié)構(gòu)switch語(yǔ)句是多分支選擇語(yǔ)句,其形式如下:switch(表達(dá)式)case常量表達(dá)式1:語(yǔ)句1case常量表達(dá)式2:語(yǔ)句2default:語(yǔ)句n+1注意:1、switch后面括弧內(nèi)的“表達(dá)式”,可以是整型表達(dá)式或字符型表達(dá)式,也可以枚舉型數(shù)據(jù)。2、當(dāng)表達(dá)式的值與某一個(gè)case后面的常量表達(dá)式的值相等時(shí),就執(zhí)行此case后面的語(yǔ)句,若所有的case中的常量表達(dá)式的值都沒(méi)有與表達(dá)式的值匹配的,就執(zhí)行default后面的語(yǔ)句。3、每一個(gè)case的常量表達(dá)式的值必
41、須互不相同,否則就會(huì)出現(xiàn)互相矛盾的現(xiàn)象。4、執(zhí)行完一個(gè)case后面的語(yǔ)句后,流程控制轉(zhuǎn)移到下一個(gè)case繼續(xù)執(zhí)行,直到遇到break語(yǔ)句或執(zhí)行完為止。5、default可以放在case語(yǔ)句的后面,也可以放在case語(yǔ)句的前面。例5:運(yùn)輸公司對(duì)用戶計(jì)算運(yùn)費(fèi),距離越遠(yuǎn),每公里運(yùn)費(fèi)越低。設(shè)每公里每噸貨物的基本運(yùn)費(fèi)為p,貨物重為w,距離為s,折扣為d,則總運(yùn)費(fèi)f計(jì)算公式為f=p*w*s(l-d),編寫(xiě)程序。公里數(shù)s與折扣率d的標(biāo)準(zhǔn)如下:(此程序可用ifelse來(lái)完成,也可以用switch來(lái)完成)。s250kmd=0250Ws500d=0.05500Ws1000d=0.075l000Ws2000d=0.
42、l2000Ws3000d=0.l53000Wsd=0.2main()ints;floatp,w,d,f;printf(請(qǐng)輸入每公里每噸貨物的基本運(yùn)費(fèi));scanf(%f,&p);printf(請(qǐng)輸入貨物重);scanf(%f,&w);printf(請(qǐng)輸入公里數(shù));scanf(%f,&s);switch(int)(s/250)case0:d=0;break;case1:d=0.05;break;case2:case3:d=0.075;break;case4:case5:case6:case7:d=0.1;break;case8:case9:case10:case11:d=0.15;break;d
43、efault:d=0.2;f=p*w*s(1-d);printf(“基本運(yùn)費(fèi)是:%f”,f);詳解:1、多個(gè)case可共用一組執(zhí)行語(yǔ)句,必須寫(xiě)成如下的形式:case4:case5:case6:case7:d=0.1;break;case后面只能有一個(gè)常量,把上式改寫(xiě)成case4,5,6,7:d=0.1;break;的形式是錯(cuò)誤的。2、switch后面括弧內(nèi)的“表達(dá)式”必須是整型表達(dá)式或字符型表達(dá)式,也可以是枚舉型數(shù)據(jù),對(duì)于swith來(lái)說(shuō),關(guān)鍵是把原始數(shù)據(jù)轉(zhuǎn)換為易表達(dá)的形式。例6:請(qǐng)讀以程序?qū)懗龀绦虻妮敵鼋Y(jié)果。#includemain()intx=1,y=0,a=0,b=0;switch(x)c
44、ase1:switch(y)case0:a+;break;case1:b+;break;case2:a+;b+;break;printf(“a=%d,b=%d”,a,b)答案:a=2,b=1詳解:此程序是switch的嵌套結(jié)構(gòu),在此程序中break跳出內(nèi)層switch結(jié)構(gòu),接著執(zhí)行外層switch的case2后的語(yǔ)句。例7:寫(xiě)出下面程序的運(yùn)行結(jié)果是()main()inti;for(i=1;i=5;i+)switch(i%5)case0:printf(break;case1:printf(break;default:printf(“n”);case2:printf(&”);答案:#&*詳解:de
45、fault可放在case語(yǔ)句的前面,也可以放在case語(yǔ)句的后面,當(dāng)i%5不等于0,1,2時(shí),將執(zhí)行default后的語(yǔ)句printf(n”);執(zhí)行完成后沒(méi)有break,將繼續(xù)執(zhí)行case2后的語(yǔ)句printf(&”);三、循環(huán)型程序設(shè)計(jì)1、while語(yǔ)句while語(yǔ)句用來(lái)實(shí)現(xiàn)”當(dāng)型”循環(huán)結(jié)構(gòu),其一般形式如下:while(條件表達(dá)式)循環(huán)體語(yǔ)句例11:設(shè)有程序段:intk=10;while(k=0)k=k-1;循環(huán)體執(zhí)行()次。答案:0答案解析:在此程序的while結(jié)構(gòu)中,條件表達(dá)式k=0的結(jié)果永遠(yuǎn)為0即為假,所以循環(huán)執(zhí)行的次數(shù)為0。例12:下面程序段的運(yùn)行結(jié)果是()x=y=0;while(x
46、3)break;循環(huán)執(zhí)行()次答案:4答案解析:while結(jié)構(gòu)中的條件表達(dá)式printf(“*”)的值為輸出數(shù)據(jù)的個(gè)數(shù),在此例中,printf(“*”)的結(jié)果為1,即為真。、do-while語(yǔ)句do-while語(yǔ)句的特點(diǎn)是先執(zhí)行循環(huán)體,然后判斷循環(huán)條件是否成立,其一般形式為:do循環(huán)體語(yǔ)句while(條件表達(dá)式);例14、若有如下語(yǔ)句intx=3;doprintf(%dn”,x-=2);while(-x);則上面程序段輸出結(jié)果是()。答案:1例15、以下程序段循環(huán)執(zhí)行幾次。x=-1;dox=x*x;while(!x);答案:1例16、下面程序的運(yùn)行結(jié)果是()main()inty=10;doy-
47、;while(-y);printf(%dn”,y-);答案:03、for語(yǔ)句C語(yǔ)言中的for語(yǔ)句使用最為靈活,不僅可以用于循環(huán)次數(shù)已經(jīng)確定的情況,而且可以用于循環(huán)次數(shù)不確定而只給出循環(huán)結(jié)束條件的情況,它完全可以代替while語(yǔ)句,其一般形式為:for(表達(dá)式1;表達(dá)式2;表達(dá)式2)語(yǔ)句說(shuō)明:for語(yǔ)句一般形式中的“表達(dá)式1”可以省略,此時(shí)應(yīng)for語(yǔ)句之前給循環(huán)變量賦初值。注意省略表達(dá)式1時(shí),其后的分號(hào)不能省略。如果表達(dá)式2省略,即不判斷循環(huán)條件,循環(huán)無(wú)終止地進(jìn)行下去。表達(dá)式3也可以省略,但此時(shí)程序設(shè)計(jì)者應(yīng)另外設(shè)法保證循環(huán)正常結(jié)束??梢允÷员磉_(dá)式1和表達(dá)式3,只有表達(dá)式2,即只給循環(huán)條件,在這種
48、情況下,完全等同于while語(yǔ)句。3個(gè)表達(dá)式都可省略,如:for(;)語(yǔ)句,相當(dāng)于while(l)語(yǔ)句,即不設(shè)初值,不判斷條件(認(rèn)為表達(dá)式2為真值),循環(huán)變量不增值。無(wú)終止地執(zhí)行循環(huán)體。表達(dá)式1可以是設(shè)置循環(huán)變量初值的賦值表達(dá)式,也可以是與循環(huán)變量無(wú)關(guān)的其他表達(dá)式。for(sum=0;i=100;i+)sum=sum+i;表達(dá)式一般是關(guān)系表達(dá)式(如i=100)或邏輯表達(dá)式(如ab&x+y;x=i+)i=x;for(;x+=i)while(1)x+;for(i=10;i-)sum+=i;答案:A例19、執(zhí)行語(yǔ)句for(i=1;i+4;);后變量i的值是()答案:4例20、下面程序段的功能是計(jì)算1
49、000!的末尾含有多少個(gè)零。請(qǐng)?zhí)羁?。for(k=0,i=5;i=1000;i+=5)m=i;while()k+;m=m/5;答案:m%5!=04、break與continue在break語(yǔ)句可以使流程跳出switch結(jié)構(gòu),繼續(xù)執(zhí)行switch語(yǔ)句下面的一個(gè)語(yǔ)句。實(shí)際上,break語(yǔ)句還可以用來(lái)從循環(huán)體內(nèi)跳出循環(huán)體,即提高結(jié)束循環(huán),接著執(zhí)行循環(huán)下面的語(yǔ)句。break語(yǔ)句的一般形式為:break;continue語(yǔ)句只結(jié)束本次循環(huán),而不是終止整個(gè)循環(huán)的執(zhí)行。continue語(yǔ)句的一般形式為:continue;例21:下列程序的運(yùn)行結(jié)果是()。main()inti,j,x=0;for(i=0;i2;
50、i+)x+;for(j=0;j=3;j+)if(j%2)continue;x+;x+;printf(x=%dn,x);答案:例22、下面程序的運(yùn)行結(jié)果是()main()intk=0;charc=A;doswitch(c+)caseA:k+;break;caseB:k-;caseC:k+=2;break;caseD:k=k%2;continue;caseE:k=k*10;break;default:k=k/3;k+;while(c=1e-6;i+)t=(-1)*t*i;s=s+1/t;printf(“l(fā)F,s);(例26程序設(shè)計(jì))例27:有一分?jǐn)?shù)序列:2/1,3/2,5/3,8/5,13/6,2
51、1/13求出這個(gè)數(shù)列的前20項(xiàng)之和main()ints=0,f1=1,f2=2;for(I=1;I=20;I+)s=s+f2/f1;f2=f1+f2;f1=f2-f1;printf(“d”,s);例28:打印九九表main()inti,j;for(i=1;i=9;i+)for(j=1;j=9;j+)printf(“2d*%2d=%2d”,i,j,i*j);printf(“n”);例29:打印出下列圖形main()inti,j;for(i=1;i=5;i+)for(j=1;j=5+fabs(i-3);j+)printf(“”);for(j=1;j=5-2*fabs(i-3);j+)printf(
52、卡”);printf(n”);例30、打印出下列圖形例31、兔子繁殖問(wèn)題main()inti,f1,f2,f3;for(i=3;i=12;i+)f3=f1+f2;f1=f2;f2=f3;printf(“d”,f3);例32、求最大公約數(shù)、最小公倍數(shù)main()intr,u,v,m,n;scanf(%d,%d”,&m,&n);m=u;n=v;if(uv)r=u;u=v;v=r;while(u!=0)r=u%v;u=v;v=r;printf(最大公約數(shù)是:%d,最小公倍數(shù)是”,v,m*n/v);例33、s=a+aa+aaa+aa.a,從鍵盤(pán)輸入a及n后,求snn方法一:main()intn,a;l
53、ongs;scnaf(%d%d”,&n,&a);for(i=1;i=n;i+)s=s*10+i*a;printf(%ld=s);方法二:main()intn,a;longs,t=0;scnaf(%d%d”,&n,&a);for(i=1;i=n;i+)t=t*10+as=s+t;printf(%ld”,s);位數(shù)逆序打位數(shù)逆序打例34、給出一個(gè)不多于5位的正整數(shù),要求求出它是幾位數(shù)分別打印出每印此數(shù)據(jù)。main()longa;inti=0;s=0;printf(它的每一位數(shù):”);While(a!=0)i=i+1;x=a%10;a=a/10;s=s*10+x;printf(%d”,x);prin
54、tf(n”);printf(它是%d位數(shù)n”,i);printf(“它的逆序是%dn”,s);例35、輸出1100之間每位數(shù)的乘積大于每位數(shù)的和的數(shù)main()intn,k=1,s=0,m;for(n=1;ns)printf(“d”,n);例36、猴子吃桃問(wèn)題,猴子第一天摘下若干桃子,當(dāng)即吃了一半,還不過(guò)癮又多吃了一個(gè),第二天又將剩下的桃子吃掉一半,又多吃了一個(gè),以后每天都吃前一天剩下的半多一個(gè),到第10天,再吃桃時(shí)只剩下一個(gè)桃子,求第一天共摘下多少了桃。main()inti,s=1;for(i=9;i=1;i-)s=2*s+1;printf(第一天共摘下%d個(gè)桃子=s);例37:準(zhǔn)備客票:某
55、鐵路線上共有10個(gè)車站,問(wèn)需要準(zhǔn)備幾種車票。main()inti,j,s=0;for(I=1;I=9;I+)for(j=I+1;j=10;j+)s=s+1;printf(需要準(zhǔn)備%d=2*s);例38、有1020個(gè)西瓜,第一天賣一半多兩個(gè),以后每天賣剩下的一半多兩個(gè),問(wèn)幾天以后能賣完main()intday=0,s=1020;while(s=0)s=s/2-2;day+;printf(“d”,day);例39、從三個(gè)紅球、五個(gè)白球、六個(gè)黑球中任意取出八個(gè)球,且其中必須有白球,輸出所有可能的方案。main()intred,white,black;for(white=1;white=5;white
56、+)for(red=0;red=3;red+)for(black=0;black=le-6)x3=(xl+x2)/2;if(f(x3)*f(x2)0)x2=x3;elsexl=x3;例41、牛頓切線法求a的平方根。x=Vax2=a構(gòu)造函數(shù)f(x)=x2-ax2=xl-f(xl)/f(xl)doublesq-root(doublea)doublex;x=a;while(fabs(x*x)-a=le-6)x=(x+a/x)*05;return(x);例42、求積分用梯形法求sin(x)*cos(x)的定積分,設(shè)上限a、下限b分別為0,1.2。積分區(qū)間分割數(shù)n=l00.S=h/2f(a)+f(b)+
57、h(f(a+h)+f(a+2h)+f(b)main()inti,n=100;doubleh,s,a=0,b=1.2;s=0.5*(sin(a)*cos(a)+sin(b)*cos(b);for(i=1;i=n;i+)s=s+sin(a+i*h)*cos(a+i*h);printf(“l(fā)fs)例44、驗(yàn)證一個(gè)數(shù)是否為素?cái)?shù)main()intn,I,flag=1;scnaf(%d”,&n)for(i=2;i=sqrt(n);i+)if(n%i=0)flag=0;break;if(flag=1)printf(%d是素?cái)?shù)?!?n)elseprintf(“d不是素?cái)?shù)?!?n)例45、輸入一個(gè)數(shù),輸出這個(gè)數(shù)
58、的質(zhì)因子乘積的形式。例如輸入72后,輸出:72=2*2*2*3*3main()intn,i=2,flag=0;scanf(%d”,&n)printf(“d=”,n)while(n!=1)if(n%i=0)if(flag=0)printf(“d”,i)flag=1elseprintf(“*%d”,i)n=n/i;elsei=i+1二、練習(xí)例5:請(qǐng)閱讀以下程序:若運(yùn)行時(shí)輸入2.0,則上面程序的輸出結(jié)果是()#includemain()floata,b;scanf(%f,&a);if(a0.0)b=0.0;elseif(a0.5)&(a!=2.0)b=1.0/(a+2.0);elseif(a0)s=
59、s+1;if(ab)t=s+t;elseif(a=b)t=5;elset=2*s;printf(“d,%d=s,t);為了使輸出結(jié)果t為4,輸入量a和b應(yīng)滿足的條件是()。答案:ba090分以上例10:編寫(xiě)程序給出一百制成績(jī),要求輸出成績(jī)等級(jí)A、B、C、D、E90分以上為A,80-89分為B70-79為C60-69為D60分以下為E。main()intscore;scanf(%d,&score);switch(score/10)case10:case9:printf(等級(jí)是A);break;case8:printf(等級(jí)是B);break;case7:printf(等級(jí)是C);break;ca
60、se6:printf(等級(jí)是D);break;default:printf(等級(jí)是E);break;第四章模塊化程序設(shè)計(jì)第四章模塊化程序設(shè)計(jì)一、函數(shù)1、C程序結(jié)構(gòu)一個(gè)簡(jiǎn)單的函數(shù)調(diào)用例子。main()printstar();print_message();printstar();printstar()n”)n”);print_message()printf(Howdoyoudo!n”);說(shuō)明:用C語(yǔ)言編寫(xiě)函數(shù)至少要編寫(xiě)一個(gè)main()函數(shù),執(zhí)行C程序就是執(zhí)行相應(yīng)的main()函數(shù),調(diào)用其他函數(shù)后流程回到main函數(shù),在main函數(shù)中結(jié)束整個(gè)程序的運(yùn)行。一個(gè)C程序可由一個(gè)主函數(shù)和若干個(gè)函數(shù)組成。由
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《金地格林世界提案》課件
- 提前預(yù)支工資合同
- 2024事業(yè)單位保密協(xié)議范本與保密工作考核3篇
- 2024年度離婚協(xié)議書(shū)詳述財(cái)產(chǎn)分配與子女撫養(yǎng)細(xì)節(jié)及責(zé)任2篇
- 《大學(xué)生職業(yè)生涯規(guī)劃預(yù)就業(yè)指導(dǎo)》課件-第16章 職業(yè)崗位定位-
- 2025年福建貨運(yùn)從業(yè)資格證模擬試題題庫(kù)及答案大全
- 2024年標(biāo)準(zhǔn)股權(quán)轉(zhuǎn)讓與回購(gòu)協(xié)議版B版
- 2025年南昌b2從業(yè)資格證模擬考試題目
- 2025年伊春貨運(yùn)從業(yè)資格證好考嗎
- 2025年百色貨運(yùn)從業(yè)資格證模擬考試題
- 浙江省2023年1月學(xué)業(yè)考試物理物理試題(解析版)
- 智慧傳承-黎族船型屋智慧樹(shù)知到期末考試答案章節(jié)答案2024年海南師范大學(xué)
- 常壓矩形容器設(shè)計(jì)計(jì)算軟件
- 交流變換為直流的穩(wěn)定電源設(shè)計(jì)方案
- PR6C系列數(shù)控液壓板料折彎?rùn)C(jī) 使用說(shuō)明書(shū)
- 鋼結(jié)構(gòu)工程環(huán)境保護(hù)和文明施工措施
- 物業(yè)管理業(yè)主意見(jiàn)征詢表
- 中藥分類大全
- 管道定額價(jià)目表
- 民國(guó)文獻(xiàn)《潮州茶經(jīng)》
- 220千伏線路工程深基坑開(kāi)挖方案(實(shí)施版)
評(píng)論
0/150
提交評(píng)論