




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
C語言程序設(shè)計為什么要學(xué)習(xí)C語言?(1)計算機相關(guān)專業(yè):
其他高級語言的基礎(chǔ),與其他語言進行混合編程(2)非計算機理工專業(yè):喬布斯說過:每個人都應(yīng)該學(xué)習(xí)編程,因為它教會你如何思考。C語言編程---教會編程思路、方法、設(shè)計模式IOS、Android底層開發(fā)---C語言
編程語言受歡迎程度排行2023年1月TOP10語言C語言的設(shè)計者兩個骨灰級游戲玩家無心插柳柳成蔭1969年,ken夢想能遨游宇宙,
設(shè)計了一款模擬在太陽系航行
的電子游戲—SpaceTravel,
1971年dmr加入游戲在PDP-7小型機上開發(fā),因
為這臺機器免費,但免費的機
器沒有操作系統(tǒng)玩游戲前,先給PDP-7做個操作系統(tǒng),命名為UNIX無心插柳柳成蔭匯編編寫UNIX太慢,而一般的高級語言難以實現(xiàn)匯編語言的某些功能Dmr改造B語言,設(shè)計了一種新的高級語言,命名C語言,把UNIX的90%以上代碼用C改寫1983年,因為UNIX和C語言的巨大成功,ken和dmr共同獲得當(dāng)年度計算機界最高獎—圖靈獎C語言適合做什么?選語言的標(biāo)準(zhǔn)——適合的才是最好的?。?)編寫系統(tǒng)軟件(例如OS)和工具軟件(2)運行效率要求較高的系統(tǒng)設(shè)備驅(qū)動程序,嵌入式系統(tǒng)(機器人、手機和智能家電)高性能、實時系統(tǒng)我能學(xué)好C語言嗎?C語言枯燥不好學(xué)數(shù)學(xué)和英語不好能學(xué)好C語言嗎?只要有小學(xué)四年級的水平和基礎(chǔ)就能學(xué)好C語言!——啊哈磊(全國信息學(xué)奧林匹克競賽NOI金牌教練)C語言程序設(shè)計
課程目標(biāo)
熟記C語言的基本概念熟悉VisualC++的上機操作環(huán)境會讀、會編、會調(diào)試C程序課程要求
多上機實踐
考核形式機考(50%)+平時(50%)硬件系統(tǒng)(Hardware)軟件系統(tǒng)(Software)內(nèi)存儲器隨機存儲器(RAM)只讀存儲器(ROM)輸入設(shè)備:鍵盤鼠標(biāo)掃描儀輸出設(shè)備:顯示器打印機繪圖儀中央處理器(CPU)
運算器控制器系統(tǒng)軟件應(yīng)用軟件高速緩存(Cache)主機外設(shè)外存:軟盤硬盤光盤優(yōu)盤網(wǎng)絡(luò)設(shè)備:網(wǎng)絡(luò)適配器調(diào)制解調(diào)器集線器操作系統(tǒng):WindowsUNIXLinuxDOS語言處理程序:CJavaVBVF實用程序:診斷程序排錯程序等通用應(yīng)用軟件:辦公軟件包等專用應(yīng)用軟件:各企業(yè)單位的管理信息系統(tǒng)等計算機系統(tǒng)知識回顧C語言與自然語言的比較
自然語言
C語言信息交流(地位平等)人-機對話(命令方式)(有思維、推理能力)(無思維、推理能力)語法規(guī)則、句法規(guī)則靈活語法規(guī)則、句法規(guī)則固定(可省略、顛倒)(一般不可省略、顛倒,必須按部就班)如:走,去曬太陽!如:x=a+b
去曬太陽,走!scanf(“%d%d”,a,b);表達方式多樣算法多樣√√scanf(“%d%d”,&a,&b);x=a+b;學(xué)習(xí)要點:熟記C語言的語法、句法學(xué)會算法分析與算法設(shè)計本課重點:第二章~第九章本課難點:第六章、第七章、第八章第一章C語言概述本章要點C語言的特點
C程序的結(jié)構(gòu)
C程序的上機步驟1.1
C語言出現(xiàn)的歷史背景C語言是國際上廣泛流行的高級語言。C語言是在B語言的基礎(chǔ)上發(fā)展起來的。1983年,美國國家標(biāo)準(zhǔn)化協(xié)會(ANSI)制定了新的標(biāo)準(zhǔn)ANSIC,比標(biāo)準(zhǔn)C有了很大的發(fā)展。1987年,ANSI公布了新標(biāo)準(zhǔn)——87ANSIC。1990年,國際標(biāo)準(zhǔn)化組織接受了87ANSIC為ISOC的標(biāo)準(zhǔn)(ISO9899—1990)。1994年,ISO又修訂了C語言標(biāo)準(zhǔn)。目前流行的C語言編譯系統(tǒng)大多是以ANSIC為基礎(chǔ)進行開發(fā)的。1.2C語言的特點(1)語言簡潔、緊湊,使用方便、靈活。
32個關(guān)鍵字、9種控制語句,程序形式自由。(2)運算符豐富。(3)數(shù)據(jù)類型豐富,具有現(xiàn)代語言的各種數(shù)據(jù)結(jié)構(gòu)。(4)具有結(jié)構(gòu)化的控制語句,是完全模塊化和結(jié)構(gòu)化的語言。(5)語法限制不太嚴(yán)格,程序設(shè)計自由度大。(6)允許直接訪問物理地址,能進行位操作,能實現(xiàn)匯編語言的大部分功能,可直接對硬件進行操作。兼有高級和低級語言的特點。(7)目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高。只比匯編程序生成的目標(biāo)代碼效率低10%-20%。(8)程序可移植性好(與匯編語言比)?;旧喜蛔鲂薷木湍苡糜诟鞣N型號的計算機和各種操作系統(tǒng)。1.3簡單的C語言程序幾個簡單的C語言程序例子例1.1
#include<stdio.h>intmain(){printf("ThisisaCprogram.\n");return0;}/*文件包含*//*主函數(shù)*//*函數(shù)體開始*//*輸出語句*//*返回語句*//*函數(shù)體結(jié)束*/說明:main-主函數(shù)名,int-函數(shù)類型每個C程序必須有一個主函數(shù)main{}是函數(shù)開始和結(jié)束的標(biāo)志,不可省每個C語句以分號結(jié)束使用標(biāo)準(zhǔn)庫函數(shù)時應(yīng)在程序開頭一行寫:
#include<stdio.h>說明:
本程序的作用是輸出一行信息:ThisisaCprogram.例1.2求兩數(shù)之和
#include<stdio.h>
intmain()/*求兩數(shù)之和*/
{
inta,b,sum;/*聲明,定義變量為整型*/
/*以下3行為C語句*/
a=123;b=456;
sum=a+b;
printf(″sumis%d\n″,sum);
return0;
}說明:
/*……*/表示注釋。注釋只是給人看的,對編譯和運行不起作用。所以可以用漢字或英文字符表示,可以出現(xiàn)在一行中的最右側(cè),也可以單獨成為一行。說明:
輸出一行信息:sumis579例1.3求2個數(shù)中較大者。
#include<stdio.h>
intmain()/*主函數(shù)*/
{
intmax(intx,inty);/對被調(diào)用函數(shù)max的聲明*/
inta,b,c;/*定義變量a、b、c*/
scanf(″%d,%d″,&a,&b);/*輸入變量a和b的值*/
c=max(a,b);
/*調(diào)用max函數(shù),將得到的值賦給c*/
printf(″max=%d\n″,c);/*輸出c的值*/
return0;
}程序運行情況如下:8,5↙(輸入8和5賦給a和b)max=8(輸出c的值)intmax(intx,inty){intz;if(x>y)z=x;elsez=y;return(z);}說明:本程序包括main和被調(diào)用函數(shù)max兩個函數(shù)。max函數(shù)的作用是將x和y中較大者的值賦給變量z。return語句將z的值返回給主調(diào)函數(shù)main。C程序小結(jié):(1)C程序是由函數(shù)構(gòu)成的。這使得程序容易實現(xiàn)模塊化。(2)一個函數(shù)由兩部分組成:
函數(shù)首部:如intmax(intx,inty)
函數(shù)體:花括號內(nèi)的部分。若一個函數(shù)有多個花括號,則最外層的一對花括號為函數(shù)體的范圍。函數(shù)體包括:聲明部分:inta,b,c,可省執(zhí)行部分:由若干語句組成,可省注意:函數(shù)的聲明部分和執(zhí)行部分都可缺省,例如:intdump(){}
這是一個空函數(shù),什么也不做,但是是合法的函數(shù)。(3)C程序總是從main函數(shù)開始執(zhí)行的,與main函數(shù)的位置無關(guān)。(4)C程序書寫格式自由,一行內(nèi)可以寫幾個語句,一個語句可以分寫在多行上,C程序沒有行號。(5)每個語句和數(shù)據(jù)聲明的最后必須有一個分號。(6)C語言本身沒有輸入輸出語句。輸入和輸出的操作是由庫函數(shù)scanf和printf等函數(shù)來完成的。C對輸入輸出實行“函數(shù)化”。使用輸入輸出函數(shù)時必須在程序開頭插入引用庫函數(shù)所在頭文件的聲明。(7)用/*…*/或//做注釋。1.4運行C程序的步驟與方法1.4.1運行C程序的步驟1.4.2常用IDE1.4.3Dev-C++介紹1.4.4Dev-C++安裝1.4.5Dev-C++使用1.4.1運行C程序的步驟上機輸入與編輯源程序?qū)υ闯绦蜻M行編譯與庫函數(shù)連接運行目標(biāo)程序1.4.2常用IDE目前使用的大多數(shù)C編譯系統(tǒng)都是集成環(huán)境(IDE)的??梢杂貌煌木幾g系統(tǒng)對C程序進行操作。常見的有TurboC、VisualC++、QtCreator、Code::Blocks、Dev-C++等。1.4.3Dev-C++介紹Dev-C++是Windows環(huán)境下的一個輕量級C/C++免費開源的IDE開發(fā)環(huán)境,它遵守GPL許可協(xié)議,是一款自由軟件。Dev-C++使用MingW64/TDM-GCC等編譯器,遵循C99標(biāo)準(zhǔn),同時兼容C90標(biāo)準(zhǔn)。官方最新版為Dev-C++5.11。Dev-C++安裝卸載方便,打開和運行速度都非??欤δ芎唵螌嵱?。開發(fā)環(huán)境包括多頁面窗口、工程管理、調(diào)試器等,集成了C/C++編譯器、自定義編譯器配置、調(diào)試等功能,提供高亮度語法顯示,安裝與調(diào)試方便,支持多國語言,是C語言初學(xué)者的首選開發(fā)工具。1.4.3Dev-C++介紹Dev-C++工具具有代碼編寫、代碼分析、代碼編譯和調(diào)試等功能,又具有體積小、易上手等特點,是適合C語言初學(xué)者使用的輕量級開發(fā)工具。盡管Dev-C++5.11在2016年已停止,第三方DevC++工具功能更強大,比如基于原版DevC++4.9的RedPandaDevC++6.7,增加了代碼自動補全,并修復(fù)了一些DevC++的bug等,但是作為初學(xué)者,還是建議以原版學(xué)習(xí)為宜。本課選用官方最新的Dev-C++5.11作為開發(fā)環(huán)境1.4.4Dev-C++安裝(p11-p13)(1)打開Dev-C++的官網(wǎng)下載地址/projects/orwelldevcpp/,進入軟件下載頁面,如圖所示。單擊圖中的【Download】按鈕,選擇文件存放路徑,開始下載軟件安裝包。
(2)下載完成后,開始安裝軟件。安裝比較簡單,雙擊軟件安裝包文件打開安裝程序,將彈出“InstallerLanguage”對話框,用戶可在該窗口選擇語言。此處保持默認(rèn)選項“English”。(3)單擊步驟(2)中的【OK】按鈕,進入“LicenseAgreement”窗口。該窗口用于展示許可證協(xié)議,如圖所示。(4)單擊步驟(3)中的【IAgree】按鈕,接受許可證協(xié)議,進入“ChooseComponents”窗口,在該窗口可選擇Dev-C++的組件。單擊該窗口的下拉列表,選擇【Full】,安裝所有組件,如圖所示。(5)單擊步驟(4)中的【Next】按鈕,進入“ChooseInstallLocation”窗口,設(shè)置Dev-C++安裝路徑,如圖所示??蓡螕魣D中的【Browse】按鈕自行選擇安裝路徑,亦可使用默認(rèn)安裝路徑。此處保持默認(rèn)設(shè)置。(6)單擊圖步驟(5)中的【Install】按鈕,開始安裝Dev-C++。安裝完成后的界面如圖所示。如果步驟(6)中勾選了“RunDev-C++5.11”,那么單擊【Finish】按鈕后會彈出首次運行配置的對話框,可以為Dev-C++設(shè)置語言和主題,具體如圖所示。Dev-C++編輯界面包含菜單欄、快捷按鈕、項目管理區(qū)、代碼編輯區(qū)、編譯信息顯示區(qū)5個部分。(1)菜單欄:Dev-C++軟件、編譯器、代碼風(fēng)格等設(shè)置。(2)快捷按鈕:快捷按鈕是使用Dev-C++的快捷方式,單擊后執(zhí)行相關(guān)功能。(3)項目管理區(qū):管理建立項目的所有工程文件,可以查看函數(shù)、結(jié)構(gòu)體。(4)代碼編輯區(qū):在編輯器中輸入代碼,每行都有對應(yīng)的編號。(5)編譯信息顯示區(qū):用于在程序編譯過程中顯示編程中的錯誤信息、查看資源文件、記錄編譯過程中的日志信息及顯示調(diào)試信息。1.4.5Dev-C++使用(p13-p15)(1)新建文件。打開Dev-C++后,在菜單欄依次單擊【文件】→【新建】→【源代碼】,如圖所示。
1.4.5Dev-C++使用(p13-p15)(2)編寫程序代碼,如圖所示。
1.4.5Dev-C++使用(p13-p15)(3)保存文件。編寫完成之后單擊菜單中【文件】→【保存】選項,將會彈出路徑選擇窗口,在該窗口可為文件選擇保存路徑,并設(shè)置文件名與文件類型,如圖所示。此處將文件保存在本地目錄下,設(shè)置文件名為HelloWorld,文件類型為Csourcefiles(*.c)。設(shè)置完成后單擊【保存】按鈕,保存文件。
1.4.5Dev-C++使用(p13-p15)(4)編譯運行程序。在菜單欄選擇【運行】→【編譯運行】來運行程序,或按快捷鍵【F11】運行程序。編譯運行結(jié)果如上圖所示。編譯完成后,會彈出打印有程序運行結(jié)果的命令行窗口,如下圖所示。
第二章數(shù)據(jù)類型、運算符與表達式
本章要點數(shù)據(jù)的描述規(guī)則數(shù)據(jù)的操作規(guī)則C語言的基本元素一、符號集(字符集)(1)大寫字母:A~Z(2)小寫字母a~z(3)阿拉伯?dāng)?shù)字:0~9(4)下劃線:_(5)標(biāo)點符號和運算符二、標(biāo)識符用來標(biāo)記常量、變量、函數(shù)及文件名字的字符序列。標(biāo)識符的構(gòu)成規(guī)則:(1)以字母(大小寫皆可)或下劃線開頭(2)隨后可跟若干個(包括0個)字母、數(shù)字、下劃線如:xy3_imaxELSEX
(合法)
7xint#Nobadone(不合法)注意:C語言區(qū)分大小寫,如sum和SUM是兩個標(biāo)識符。三、關(guān)鍵字(附錄B)也稱“保留字”,它是C語言中具有特定含義、專門用作語言特定成分的一類標(biāo)識符。ANSI推薦的C語言的關(guān)鍵字是32個如:int、char、float、void等注意:所有的關(guān)鍵字都有固定的意義,不能用作其他。所有關(guān)鍵字都必須小寫。如:else與ELSE代表不同含義
else是關(guān)鍵字,ELSE用戶定義的標(biāo)識符2.1C的數(shù)據(jù)類型C語言提供了以下一些數(shù)據(jù)類型。數(shù)據(jù)類型構(gòu)造類型指針類型空類型(無值類型)void枚舉類型enum數(shù)組類型結(jié)構(gòu)類型
struct聯(lián)合類型union
基本類型整型int字符型char實型(浮點型)單精度實型
float雙精度實型
double
2.2常量與變量1、常量:在程序運行過程中,其值不能被改變的量稱為常量。常量區(qū)分為不同的類型:整型100,125,-100,0實型3.14,0.125,-3.789字符型‘a(chǎn)’,‘b’,‘2’字符串“a”,“ab”,“1232”常量和符號常量2、符號常量:用一個標(biāo)識符代表的一個常量。定義方法:#define標(biāo)識符常量例2.1符號常量的使用
#definePRICE30
#include<stdio.h>
intmain()
{
intnum,total;
num=10;
total=num*PRICE;
printf("total=%d\n",total);}運行結(jié)果:
total=300說明:如再用賦值語句給PRICE賦值是錯的
PRICE=40;/*錯誤,不能給符號常量賦值*/說明:程序中用#define命令行定義PRICE代表常量30,此后凡在本文件中出現(xiàn)的PRICE都代表30,可以和常量一樣進行運算變量其值是可以改變的量,它用標(biāo)識符(變量名)來表示,在內(nèi)存中占據(jù)一定的存儲單元。變量名實際上是以一個名字代表一個地址,在對程序編譯連接時由編譯系統(tǒng)給每一個變量名分配對應(yīng)的內(nèi)存地址。從變量中取值,實際上是通過變量名找到相應(yīng)的內(nèi)存地址,從該存儲單元中讀取數(shù)據(jù)。變量的定義方法
類型符標(biāo)識符如:inti,j;charc1,c2;floatx,y;doublez;變量命名的規(guī)定:C語言規(guī)定標(biāo)識符只能由字母、數(shù)字和下劃線三種字符組成,且第一個字符必須為字母或下劃線。例:sum,_total,month,Student_name,
lotus_1_2_3,BASIC,li_ling
M.D.John,¥123,3D64,a>b
注意:編譯系統(tǒng)將大寫字母和小寫字母認(rèn)為是兩個不同的字符(習(xí)慣上,符號常量用大寫)。建議變量名的長度最好不要超過8個字符。在選擇變量名和其它標(biāo)識符時,應(yīng)注意做到“見名知意”,即選有含意的英文單詞(或其縮寫)作標(biāo)識符。要求對所有用到的變量作強制定義,也就是“先定義,后使用”。student_name->s_namestudent_num->s_num2.3整型數(shù)據(jù)整型常量即整常數(shù)。在C語言中,整常數(shù)可用以下三種形式表示:(1)十進制整數(shù)。
如:123,-456,4。(2)八進制整數(shù)。以0開頭的數(shù)是八進制數(shù)。
如:0123表示八進制數(shù)123,等于十進制數(shù)83,(3)十六進制整數(shù)。以0x開頭的數(shù)是16進制數(shù)。如:0x123,代表16進制數(shù)123,等于十進制數(shù)291。
整型常量的表示方法整型變量(1)整型數(shù)據(jù)在內(nèi)存中的存放形式在內(nèi)存中是以二進制的補碼表示。如:inti;/*定義為整型變量*/i=10;/*給i賦以整數(shù)10*/補碼:
一個正整數(shù)的補碼和該數(shù)的原碼(即該數(shù)的二進制形式)相同。如果數(shù)值是負的,求負數(shù)的補碼方法是:將該數(shù)的絕對值的二進制形式,按位取反再加1。注意:十進制數(shù)10的二進制形式為1010,TurboC2.0和TurboC++3.0為一個整型變量在內(nèi)存中分配2個字節(jié)的存儲單元(不同的編譯系統(tǒng)為整型數(shù)據(jù)分配的字節(jié)數(shù)是不相同的,VC++6.0則分配4個字節(jié))。數(shù)值是以補碼(complement)表示的。存儲有符號整數(shù)時存儲單元中的第一個二進制位(即最高位)用來代表數(shù)值符號。(2)整型變量的分類有符號基本整型有符號短整型有符號長整型無符號基本整型無符號短整型無符號長整型(signed)int(signed)short(int)(signed)long(int)unsignedintunsignedshort(int)unsignedlong(int)注意:括號表示其中的內(nèi)容是可選的。例如:整數(shù)13在內(nèi)存中實際存放的情況:(3)整型變量的定義:
C規(guī)定在程序中所有用到的變量都必須在程序中定義,即“強制類型定義”。例如:inta,b;(指定變量a、b為整型)
unsignedshortc,d;
(指定變量c、d為無符號短整型)
longe,f;(指定變量e、f為長整型)例2.2整型變量的定義與使用#include<stdio.h>intmain()
{inta,b,c,d;/*指定a、b、c、d為整型變量*/
unsignedu;/*指定u為無符號整型變量*/
a=12;b=-24;u=10;
c=a+u;d=b+u;
printf(”a+u=%d,b+u=%d\n”,c,d);
}運行結(jié)果:a+u=22,b+u=-14
說明:可以看到不同種類的整型數(shù)據(jù)可以進行算術(shù)運算.
0000000000001100a0000000000001010u0000000000010110a+u1111111111101000b0000000000001010u1111111111110010b+ub=-24先計算其絕對值24的二進制形式0000000000011000
按位取反再加1為11111111111010001111111111110001減1取反0000000000001110負數(shù)的絕對值14是負數(shù)-?整型常量的類型
(1)一個整數(shù),如果其值在-32768~+32767范圍內(nèi),認(rèn)為它是int型,它可以賦值給int型和longint型變量。(2)一個整數(shù),如果其值超過了上述范圍,而在-2147483648~+2147483647范圍內(nèi),則認(rèn)為它是為長整型??梢詫⑺x值給一個longint型變量。(3)如果所用的C版本(如TurboC)分配給shortint與int型數(shù)據(jù)在內(nèi)存中占據(jù)的長度相同,則它的表數(shù)范圍與int型相同。因此一個int型的常量同時也是一個shortint型常量,可以賦給int型或shortint型量。
(4)一個整常量后面加一個字母u或U,認(rèn)為是unsignedint型,如12345u,在內(nèi)存中按unsignedint規(guī)定的方式存放(存儲單元中最高位不作為符號位,而用來存儲數(shù)據(jù))。(5)在一個整常量后面加一個字母l或L,則認(rèn)為是longint型常量。例如:123l,432L,0L用于函數(shù)調(diào)用中。2.4浮點型數(shù)據(jù)兩種表示形式浮點型常量的表示方法小數(shù)指數(shù)0.1233e-3注意:字母e(或E)前后必須有數(shù)字,且e后面的指數(shù)必須為整數(shù).1e3、1.8e-3、-123e-6e3、2.1e3.5、.e3、e
類型:缺省為double;后綴f或F,為float型;后綴l或L,為longdouble型。規(guī)范化的指數(shù)形式:在字母e(或E)之前的小數(shù)部分中,小數(shù)點左邊應(yīng)有一位(且只能有一位)非零的數(shù)字.
例如:123.456可以表示為:
123.456e0,12.3456e1,1.23456e2,0.123456e3,0.0123456e4,0.00123456e其中的1.23456e3稱為“規(guī)范化的指數(shù)形式”。浮點型變量(1)浮點型數(shù)據(jù)在內(nèi)存中的存放形式一個浮點型數(shù)據(jù)一般在內(nèi)存中占4個字節(jié)(32位)。與整型數(shù)據(jù)的存儲方式不同,浮點型數(shù)據(jù)是按照指數(shù)形式存儲的。系統(tǒng)把一個浮點型數(shù)據(jù)分成小數(shù)部分和指數(shù)部分,分別存放。指數(shù)部分采用規(guī)范化的指數(shù)形式。(2)浮點型變量的分類浮點型變量分為單精度(float型)、雙精度(double型)和長雙精度型(longdouble)三類形式。單精度(float型):占4個字節(jié),7位有效數(shù)字(3.4e-38~3.4e+38)雙精度(double型):占8個字節(jié),15~16位有效數(shù)字(1.7e-308~1.7e+308)
longdouble型:占10個字節(jié),15~16位有效數(shù)字(3.4e-4932~1.1e+4932)(3)浮點型數(shù)據(jù)的舍入誤差
#include<stdio.h>
intmain()
{floata,b;
a=123456.789e5;
b=a+20;
printf(“a=%f,b=%f\n”,a,b);
}
運行結(jié)果:a=12345678848.000000,b=12345678868.000000說明:一個浮點型變量只能保證的有效數(shù)字是7位有效數(shù)字,后面的數(shù)字是無意義的,并不準(zhǔn)確地表示該數(shù)。應(yīng)當(dāng)避免將一個很大的數(shù)和一個很小的數(shù)直接相加或相減,否則就會“丟失”小的數(shù).若數(shù)據(jù)超過有效位,則被舍去,故可能產(chǎn)生誤差。
2.5字符型數(shù)據(jù)
(1)用單引號包含的一個字符是字符型常量如:‘a(chǎn)’、‘A’、‘b’、‘*’、‘$’(2)轉(zhuǎn)義字符:特殊的字符常量,都以“\”開頭(代表一個字符)\n換行,移到下一行開頭\0空值\t橫向跳格(每8列為一制表位)\v縱向跳格\r回車,移到本行開頭\a報警\b退格\f走紙換頁\\反斜杠\’
輸出單引號\dddddd表示1到3位八進制數(shù)字(字符的ASCII碼)
如:‘\101’
代表字符‘A’\xhh
hh表示1到2位十六進制數(shù)字如:‘\x41’
代表字符‘A’字符常量輸出格式控制輸出字符例2.5轉(zhuǎn)義字符的使用
#include<stdio.h>
intmain(){printf(“a\t\rf\tg\n″);
}
顯示屏上的運行結(jié)果:fg例2.5轉(zhuǎn)義字符的使用
#include<stdio.h>
intmain(){printf(“a\t\rf\tg\n″);
printf("h\ti\b\bjk\n″);
}
顯示屏上的運行結(jié)果:fghjk例2.5轉(zhuǎn)義字符的使用
#include<stdio.h>
intmain(){printf("abc\tde\rf\tg\n″);
printf("h\ti\b\bjk\n″);
}
顯示屏上的運行結(jié)果:fgdehjk字符變量字符型變量用來存放字符常量,注意只能放一個字符。字符變量的定義形式如下:
charc1,c2;unsignedcharc3,c4;
字符型變量的賦值方法:
c1=‘a(chǎn)’;c2=‘\101’;c3=0xff;c4=‘\377’;一個字符變量在內(nèi)存中占一個字節(jié)。字符數(shù)據(jù)在內(nèi)存中的存儲形式及其使用方法(1)一個字符常量存放到一個字符變量中,實際上并不是把該字符的字型放到內(nèi)存中去,而是將該字符的相應(yīng)的ASCII代碼放到存儲單元中。這樣使字符型數(shù)據(jù)和整型數(shù)據(jù)之間可以通用。abab
#include<stdio.h>intmain(){charcl,c2;c1='a';c2='b'printf("oc%c",cl,c2);c1=97;c2=98;printf("oc%c",cl,c2);}(2)字符數(shù)據(jù)與整型數(shù)據(jù)可以相互賦值(3)字符數(shù)據(jù)可以以字符形式輸出,也可以用整型數(shù)形式輸出。intmain(){inti;charc;i=‘a(chǎn)’;c=97;printf(“%c,%d\n”,c,c);printf(“%c,%d\n”,i,i);}等同于:i=97;c=‘a(chǎn)’;例2.6向字符變量賦以整數(shù)。
#include<stdio.h>
intmain()
{charc1,c2;
c1=97;
c2=98;
printf(“%c%c\n”,c1,c2);
printf(“%d%d\n”,c1,c2);
}運行結(jié)果:ab
9798說明:在第4和第5行中,將整數(shù)97和98分別賦給c1和c2,它的作用相當(dāng)于以下兩個賦值語句:
c1=’a’;c2=’b’;因為’a’和’b’的ASCII碼為97和98例2.7大小寫字母的轉(zhuǎn)換
#include<stdio.h>
intmain()
{charc1,c2;
c1=’a’;
c2=’b’;
c1=c1-32;
c2=c2-32;
printf(“%c%c”,c1,c2);
}運行結(jié)果:AB說明:程序的作用是將兩個小寫字母a和b轉(zhuǎn)換成大寫字母A和B。從ASCII代碼表中可以看到每一個小寫字母比它相應(yīng)的大寫字母的ASCII碼大32。C語言允許字符數(shù)據(jù)與整數(shù)直接進行算術(shù)運算。字符’a’的存儲形式
01100001intmain(){charc;c=‘\376’;printf(“%c,%d\n”,c,c);}八進制數(shù)376(十進制為254)ASCII碼字符為:11111110unsignedcharc;
,-2,2541111110100000010字符串常量1、字符串常量是一對雙引號括起來的字符序列.
合法的字符串常量:
“Howdoyoudo.”,“CHINA”,“a”
,“$123.45”
可以輸出一個字符串,如
printf(“Howdoyoudo.”);‘a’是字符常量,“a”是字符串常量,二者不同。如:假設(shè)c被指定為字符變量:charc;c=’a’;c=“a”;c=“CHINA”;
結(jié)論:不能把一個字符串常量賦給一個字符變量。2、C規(guī)定:在每一個字符串常量的結(jié)尾加一個“字符串結(jié)束標(biāo)志”,以便系統(tǒng)據(jù)此判斷字符串是否結(jié)束。C規(guī)定以字符’\0’作為字符串結(jié)束標(biāo)志。如:如果有一個字符串常量”CHINA”
,實際上在內(nèi)存中是:CHINA\0
它占內(nèi)存單元不是5個字符,而是6個字符,最后一個字符為’\0’。但在輸出時不輸出’\0’。2.6變量賦初值(1)C語言允許在定義變量的同時使變量初始化如:inta=3;//指定a為整型變量,初值為3
floatf=3.56;//指定f為浮點型變量,初 // 值為3.56charc=‘a(chǎn)’;//指定c為字符變量,初值為‘a(chǎn)’(2)可以使被定義的變量的一部分賦初值。如:inta,b,c=5;表示指定a、b、c為整型變量,但只對c初始化,c的初值為5(3)如果對幾個變量賦以同一個初值,應(yīng)寫成:inta=3,b=3,c=3;
表示a、b、c的初值都是3。
不能寫成:inta=b=c=3;
2.7各類數(shù)值型數(shù)據(jù)間的混合運算
整型(包括int,short,long)、浮點型(包括float,double)等可以混合運算。例如:10+’a’+12.3-3.14*’x’是合法的。在進行運算時,不同類型的數(shù)據(jù)要先轉(zhuǎn)換成同一類型,然后進行運算。
2.8算術(shù)運算符和算術(shù)表達式C運算符(1)基本的算術(shù)運算符:+(加法運算符,或正值運算符。如:3+5、+3)-(減法運算符,或負值運算符。如:5-2、-3)*(乘法運算符。如:3*5,2*x,3*(a+b))/(除法運算符。如:5/3,(x+y)/(a+b))1)兩個整數(shù)相除,其值為整數(shù),如:5/3值為1,舍去小數(shù)部分;2)除數(shù)、被除數(shù)有一個為負值時,結(jié)果”向零取整”,如-5/3=-1;3)除數(shù)、被除數(shù)有一個為實數(shù)時,結(jié)果為double型(1)基本的算術(shù)運算符:%(模運算符,或稱求余運算符,%兩側(cè)均應(yīng)為整型數(shù)據(jù),如:7%4的值為3)。-7%4,7%-4,-7%-4的值為多少?-3,3,-3符號由被除數(shù)決定(2)算術(shù)表達式和運算符的優(yōu)先級與結(jié)合性用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來的、符合C語法規(guī)則的式子,稱為C算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。例如:a*b/c-1.5+’a’3.14*r*rx+sqrt(0.25*y)/(abs(a+b)-3.6)
優(yōu)先級在表達式求值時,先按運算符的優(yōu)先級別高低次序執(zhí)行,例如先乘除后加減。結(jié)合性算術(shù)運算符的結(jié)合方向為“自左至右”,即先左后右。(3)強制類型轉(zhuǎn)換運算符可以利用強制類型轉(zhuǎn)換運算符將一個表達式轉(zhuǎn)換成所需類型。一般形式:(類型名)(表達式)例如:(double)a將a轉(zhuǎn)換成double類型(int)(x+y)將x+y的值轉(zhuǎn)換成整型(float)(5%3)將5%3的值轉(zhuǎn)換成float型注意:與(int)x+y不同例2.8強制類型轉(zhuǎn)換。
#include<stdio.h>
intmain(){floatx;
inti;
x=3.6;
i=(int)x;/*不影響x單元的內(nèi)容*/printf("x=%f,i=%d\n",x,i);
}
運行結(jié)果:x=3.600000,i=3說明:有兩種類型轉(zhuǎn)換,一種是在運算時不必用戶指定,系統(tǒng)自動進行的類型轉(zhuǎn)換,如3+6.5。第二種是強制類型轉(zhuǎn)換。當(dāng)自動類型轉(zhuǎn)換不能實現(xiàn)目的時,可以用強制類型轉(zhuǎn)換。注意:x的類型沒有發(fā)生改變。(4)自增、自減運算符作用是使變量的值增1或減1如:++i,--i(在使用i之前,先使i的值加(減)1)i++,i--(在使用i之后,使i的值加(減)1)i++與++i的區(qū)別:++i是先執(zhí)行i=i+1后,再使用i的值;i++是先使用i的值后,再執(zhí)行i=i+1。例2.9:
#include<stdio.h>intmain(){inti=0,j;j=i++;printf(“%d%d\n”,i,j);i=0;j=++i;printf(“%d%d\n”,i,j);}區(qū)分:j=i+1;j=++i;011注意:
(1)自增運算符(++),自減運算符(--),只能用于變量,而不能用于常量或表達式。如:5++、--(a+b)不合法。(2)++和--的優(yōu)先級高于算術(shù)運算符,結(jié)合方向是“自右至左”。如:-i++相當(dāng)于-(i++)。(3)C語言中有的運算符為一個字符,有的運算符由兩個字符組成,為避免誤解,最好采取大家都能理解的寫法。例如:不要寫成i+++j的形式,而應(yīng)寫成
(i++)+j的形式2.9逗號運算符和逗號表達式逗號運算符:將兩個表達式連接起來,又稱為“順序求值運算符”.
如:3+5,6+8
一般形式:
表達式1,表達式2求解過程:
1)求解表達式1
2)再求解表達式2
3)整個逗號表達式的值是表達式2的值。逗號表達式的值為14例:逗號表達式a=3*5,a*4分析:逗號運算符是所有運算符中級別最低的,因此應(yīng)先求解a=3*5。a的值為15,然后求解a*4,得60。整個逗號表達式的值為60。
一個逗號表達式又可以與另一個表達式組成一個新的逗號表達式如:(a=3*5,a*4),a+5先計算出a的值等于15,再進行a*4的運算得60(但a值未變,仍為15),再進行a+5得20,即整個表達式的值為20。逗號表達式的一般形式可以擴展為表達式1,表達式2,表達式3,……,表達式n它的值為表達式n的值。逗號運算符是所有運算符中級別最低的例:①x=(a=3,6*3)②x=a=3,6*a逗號表達式,包括一個賦值表達式和一個算術(shù)表達式,x的值為3,整個逗號表達式的值為18。
注意:并不是任何地方出現(xiàn)的逗號都是作為逗號運算符。
如:printf(“%d,%d,%d”,a,b,c);“a,b,c”并不是一個逗號表達式,它是printf函數(shù)的3個參數(shù)printf(“%d,%d,%d”,(a,b,c),b,c);
“(a,b,c)”是一個逗號表達式,它的值等于c的值。例:#include<stdio.h>intmain(){inta=1;printf(“結(jié)果為:%d\n”,a=3*a,3*a);}結(jié)果為:3(a=3*a,3*a)結(jié)果為:92.10賦值表達式和賦值語句一、賦值運算符“=”用法:變量=表達式作用:將表達式的值賦給變量(常量、變量是表達式的特例)如:a=5;
ave=(a+b)/10;注意:與數(shù)學(xué)中的等式不同!二、復(fù)合的賦值運算符在賦值符“=”之前加上其他運算符,構(gòu)成復(fù)合賦值運算符+=,-=,*=,/=,%=,<<=,>>=,&=,^=,|=如:a+=3等價于a=a+3x*=y+8等價于x=x*(y+8)x%=3等價于x=x%3三、賦值表達式由賦值運算符將一個變量和一個表達式連接起來的式子稱為“賦值表達式”。形式:變量=表達式如:a=5、a=b=5(右結(jié)合)計算1)計算賦值運算符右側(cè)“表達式”的值過程:2)將計算結(jié)果賦給左側(cè)的變量
3)賦值表達式的值就是被賦值的變量的值例:a=b=c=5a=(b=10)/(c=2)a=5+(c=6)a+=a-=a*aa=(b=4)+(c=6)四、賦值結(jié)果與類型轉(zhuǎn)換1、實型數(shù)據(jù)(單、雙精度)賦給整型變量時,舍棄實數(shù)的小數(shù)部分。2、整型數(shù)據(jù)賦給單、雙精度變量時,數(shù)值不變,但以浮點數(shù)形式存儲到變量中。
例:#include<stdio.h>intmain(){inti;floatf;i=5.34;f=23;printf(“%d%f\n”,i,f);}523.0000003、長度相同的有符號與無符號整型數(shù)間,原樣賦值(但數(shù)值有時會有變化)#include<stdio.h>intmain(){unsigneda;
intb=-1;a=b;
printf(“%d->%u\n”,b,a);a=65534u;b=a;
printf(“%d->%u\n”,b,a);}-1->65535-2->655344、char、int、long等類型的轉(zhuǎn)換
1)“短”數(shù)據(jù)賦給“長”變量符號擴展:若最高位為1(負數(shù)),則變量高字節(jié)補1;反之,補0。#include<stdio.h>intmain(){charc;inti;c=43;i=c;
printf(“i=%d\n”,i);c=‘\376’;i=c;
printf(“i=%d\n”,i);}2)“長”數(shù)據(jù)賦給“短”變量只將數(shù)據(jù)的低字節(jié)位原封不動送到變量中(數(shù)據(jù)有可能有差錯)#include<stdio.h>intmain(){inta;longb=6324232L;a=b;
printf(“a=%d,b=%ld\n”,a,b);}a=-32760,b=6324232五、賦值語句
即賦值表達式后加“;”構(gòu)成。
要區(qū)分賦值表達式與賦值語句如:if((a=b)>0)t=a;
表達式語句注意:賦值表達式可包含在其它表達式之中,而賦值語句不行;賦值語句只能作為一條單獨的語句,或放在復(fù)合語句中。第三章最簡單的C程序設(shè)計順序程序設(shè)計內(nèi)容提要:C語句概述
基本的數(shù)據(jù)輸入/輸出函數(shù)簡單的C程序設(shè)計著名計算機科學(xué)家沃思提出:數(shù)據(jù)結(jié)構(gòu)+算法=程序描述數(shù)據(jù)的類型、組織形式描述對數(shù)據(jù)的操作步驟3.1算法的概念
做事情都有---方法、步驟(順序)---決定事情成敗1、算法:計算機求解某一問題而采用的具體方法、步驟2、兩大類計算機算法:數(shù)值運算算法、非數(shù)值運算算法(求數(shù)值解、成熟)(事務(wù)管理、廣泛)3、算法的特性:有窮性、確定性、有效性等4、算法描述:描述算法的方法有多種歸納為二大類:①文字②圖形(符號)3.2算法的描述方法常用的算法描述方法:(1)帶序號的自然語言描述易懂卻不直觀,不嚴(yán)格(2)流程圖:靈活、自由、形象、直觀,可表示任何算法輸入/輸出處理判斷起止連接點流程線(3)N-S圖(盒圖):完全去掉了帶箭頭的流程線,算法的所有處理步驟都寫在一個大矩形框(表示簡單、符合結(jié)構(gòu)化思想)(4)偽代碼:用介于自然語言與計算機語言之間的文字及符號來描述算法(方便、易懂、便于向計算機語言過渡)例1:計算S=,寫出其算法。自然語言描述:流程圖描述:N-S圖描述:偽代碼描述:3.3結(jié)構(gòu)化程序設(shè)計方法一、結(jié)構(gòu)化程序的三種基本結(jié)構(gòu)
1966年提出三種基本結(jié)構(gòu),用這三種基本結(jié)構(gòu)作為表示一種良好算法的基本單元:順序、選擇、循環(huán)任何復(fù)雜的算法都是由這三種基本結(jié)構(gòu)按一定規(guī)律組成。(1)順序結(jié)構(gòu)ABABa=3;b=4;c=a+b;操作步驟按書寫順序執(zhí)行(2)選擇結(jié)構(gòu)PABTFABTFPif(x!=0)y=sin(x)/x;elsey=1;
(3)循環(huán)結(jié)構(gòu)根據(jù)條件P決定是否重復(fù)執(zhí)行循環(huán)體中的操作。sum=0;i=1;while(i<=100){sum+=i;i++;}sum=0;i=1;do{sum+=i;i++;}while(i<=100);二、三種基本結(jié)構(gòu)的共同特點
(1)單入口單出口(2)結(jié)構(gòu)內(nèi)的每一部分都有機會被執(zhí)行(3)不存在“死循環(huán)”三、結(jié)構(gòu)化程序設(shè)計的優(yōu)點用三種基本結(jié)構(gòu)組成的程序是結(jié)構(gòu)化程序優(yōu)點:易編、易讀、易懂、易維護強調(diào)程序設(shè)計風(fēng)格和程序結(jié)構(gòu)的規(guī)范化核心思想:自頂向下、逐步細化,模塊化設(shè)計,結(jié)構(gòu)化編碼舉例:張丘建《算經(jīng)》中提出“百雞問題”:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、母、雛各幾何?(體會編程步驟)分析:cocks+hens+chicks=1005*cocks+3*hens+chicks/3=100
其中:0≤cocks≤190≤hens≤330≤chicks≤100
思路:依次取cocks的值域中的值,然后求其余兩數(shù),看是否合乎題意算法描述:cocks=0當(dāng)cocks≤19時
{找滿足題意hens,chicks數(shù)
cocks加1}cocks=0當(dāng)cocks≤19時{hens=0
當(dāng)hens≤33時
{chicks=100-cocks-hens
如果(5*cocks+3*hens+chicks/3=100)則輸出hens加1}cocks加1}cocks=0
當(dāng)cocks≤19時
{hens=0
當(dāng)hens≤33時
{找滿足題意的chicks數(shù)
hens加1}cocks加1}細化細化用計算機語言寫出程序
intmain(){intcocks=0,hens,chicks;while(cocks<=19){hens=0;while(hens<=33){chicks=100-cocks-hens;if(5.0*cocks+3.0*hens+chicks/3.0==100)printf(“%d%d%d\n”,cocks,hens,chicks);hens++;}cocks++;}}025752077187813801181683124843.4C語句的概述一、語句用來對數(shù)據(jù)進行加工(完成操作任務(wù)),是構(gòu)成程序的基本單位,通常一個C程序由若干個函數(shù)(系統(tǒng)、用戶提供)組成。每一函數(shù)由若干條語句組成。每條語句總是以“;”結(jié)束。二、C語句的分類(簡單語句、復(fù)合語句、空語句)(一)簡單語句1)表達式語句:由一個表達式后跟“;”組成如:a=3(賦值表達式)a=3;(賦值語句)i++i++;2)函數(shù)調(diào)用語句:函數(shù)調(diào)用表達式加一個“;”如:printf(“Hello,world!\n”);3)結(jié)構(gòu)控制語句:控制程序流程選擇語句:if…else…switch
循環(huán)語句:forwhiledo…while…
轉(zhuǎn)向語句:continuebreakreturngoto(二)復(fù)合語句:將一組語句括在一對{}中如:while(i<100){sum+=i;i++;}
說明:
1)復(fù)合語句的{}之后不能有“;”
2)復(fù)合語句中可以是簡單語句、復(fù)合語句、空語句(三)空語句:;/*僅有一個;*/
空語句什么也不做。有時用作被轉(zhuǎn)向點,或為循環(huán)語句提供空體。如:for(i=0;i<=10;i++);3.5字符數(shù)據(jù)的輸入輸出引言:C語言沒有輸入/輸出語句,I/O操作通過調(diào)用系統(tǒng)函數(shù)實現(xiàn)。在程序開頭要有:#include“stdio.h”
或#include<stdio.h>默認(rèn)的輸入設(shè)備——鍵盤默認(rèn)的輸出設(shè)備——顯示器一、字符輸出函數(shù)putchar()形式:putchar(c)作用:向顯示器上輸出一個字符(將c的值輸出到顯示器上,c可以是字符型和整型的常量、變量、表達式)#include<stdio.h>intmain(){charc1,c2;c1=‘b’;c2=98;putchar(c1);putchar(c2);putchar(‘b’);putchar(98);}#include<stdio.h>intmain(){putchar(‘\101’);putchar(‘\n’);putchar(‘\\’);}二、字符輸入函數(shù)getchar()形式:getchar()作用:從鍵盤緩沖區(qū)讀入一個字符注意:1)當(dāng)輸入多個字符時,多余字符作廢
(按回車后才開始接收字符)例:#include<stdio.h>intmain(){intc;printf(“Enteracharacter:”);c=getchar();printf(“%c:%d\n”,c,c);}Enteracharacter:aa:972)用getchar()得到的字符可以賦給字符型變量、整型變量,或作為表達式的一部分。如:c=getchar()+32;putchar(c);
若輸入是:A
則輸出是:a例:#include<stdio.h>intmain(){putchar(getchar());}aa3.6格式輸入輸出一、格式輸出函數(shù)printf作用:向終端輸出若干個類型任意的數(shù)據(jù)。形式:printf(格式控制符,輸出項列表)雙引號括起來的字符串要輸出的內(nèi)容(常量、變量、表達式等)格式控制字符串:
i=%3df=%5.1f%5.1f引導(dǎo)符寬度小數(shù)位數(shù)精度類型符#include<stdio.h>intmain(){inti=5;floatf=32.345;printf(“i=%3df=%5.1f\n”,i,f);printf(“End.\n”);}i=5f=32.3End.格式控制符完整的格式:
%-Om.nl/h格式字符說明:1、格式字符:指定輸出項的數(shù)據(jù)類型和輸出的格式
1)d——十進制整數(shù)
2)o——無符號八進制數(shù)
3)x——無符號十六進制數(shù)
4)u——不帶符號的十進制整數(shù)#include<stdio.h>intmain(){unsignedinta=65535;intb=-2;printf(“a=%d,%o,%x,%u\n”,a,a,a,a);printf(“b=%d,%o,%x,%u\n”,b,b,b,b);}a=-1,177777,ffff,65535b=-2,177776,fffe,65534有符號的整型數(shù)b可以用%u輸出無符號的整型數(shù)a可以用%d輸出5)c輸出一字符6)s輸出一字符串7)e以指數(shù)的形式輸出實型數(shù)8)f以小數(shù)的形式輸出實型數(shù)9)%輸出%#include<stdio.h>intmain(){floatt;charb=‘a(chǎn)’;inti=97;t=28.333;printf(“%f\n”,t);printf(“%c,%d\n”,b,b);printf(“%c,%d\n”,i,i);printf(“%s,%%\n”,“china”);}28.333000a,97a,97china,%
%-Om.nl/h格式字符2、長度修正符
l:對整型指長整型long
例:%ld,%lx,%lo,%lu
對實型指雙精度double
例:%lf3、域?qū)捈熬鹊拿枋?/p>
m:域?qū)挘磳?yīng)的輸出項在輸出設(shè)備上所占的字符數(shù)若實際數(shù)據(jù)寬度>m,按實際數(shù)據(jù)寬度輸出若實際數(shù)據(jù)寬度<m,左邊補空
n:精度,說明輸出的實型數(shù)的小數(shù)位數(shù)幾點說明:編譯程序只是檢查printf函數(shù)的調(diào)用形式,不分析格式控制字符串,如果格式字符與輸出項的類型不匹配,不進行類型轉(zhuǎn)換;格式字符要用小寫字母;格式控制字符串中可以包含轉(zhuǎn)義字符;格式控制字符串中的普通字符則原樣輸出;輸出項的參數(shù)除了常數(shù)、變量外還可以是表達式、函數(shù)調(diào)用如:printf(“max=%d\ti=%d\n”,imax(a,b),i++);#include<stdio.h>intmain(){inti=321;floatf=123.456;printf(“%5d:”,i);
printf(“%5.2f\n”,i);
printf(“%5d:”,f);printf(“%5.2f\n”,f);}321:403022178.210:123.463.6格式輸入輸出二、格式輸入函數(shù)scanf作用:按格式控制符的要求將數(shù)據(jù)從終端傳送到變量地址所指定的內(nèi)存空間形式:scanf(格式控制符,變量地址列表)1、變量地址:通過對變量名“求地址”運算得到形式:&變量名#include<stdio.h>intmain(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n”,a,b);}
&a得到2字節(jié)空間的首地址&b得到4字節(jié)空間的首地址2、格式控制符(1)格式說明項例:#include<stdio.h>intmain(){inta,b,c,d;scanf(“%d%d”,&a,&b);printf(“%d,%d\n”,a,b);scanf(“%3d%3d”,&c,&d);printf(“%d,%d\n”,c,d);}123412,34111222111,222(2)輸入數(shù)據(jù)的分隔采用隱含的分隔符:空格、回車鍵、Tab鍵例:#include<stdio.h>intmain(){inta;floatb,c;printf(“inputa,b,c:”);scanf(“%d%f%f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}inputa,b,c:1234a=12,b=3.000000,c=4.000000根據(jù)格式中指定的域?qū)挿指魯?shù)據(jù)項(不提倡)采用用戶指定的分隔符例:#include<stdio.h>intmain(){inta;floatb,c;scanf(“%2d%3f%2f”,&a,&b,&c);printf(“a=%d,b=%f,c=%f\n”,a,b,c);}scanf(“%d,%f,%f”,&a,&b,&c);12,3,4a=12,b=3.000000,c=4.000000scanf(“a=%d,b=%f,c=%f”,&a,&b,&c);a=12,b=3,c=4a=12,b=3.000000,c=4.000000注意:scanf中對unsigned型數(shù)據(jù)用u,o,x說明符輸入輸入數(shù)據(jù)時不能規(guī)定數(shù)據(jù)的精度如:scanf(“%4.2f”,&a);在“格式控制”字符串中,若有格式說明以外的其他字符,輸入時應(yīng)照原樣輸入如:scanf(“a=%d,b=%f”,&a,&b);
輸入:a=123,b=45.678%c一次接收一個字符,無需單引號,空格字符是有效字符。思考:scanf(“Enteranumber?%d”,&n);的輸入格式?3.7程序舉例例:輸入一個小寫字母,打印該字母及其大寫字母,以及它們的后續(xù)字母分析:大寫字母的ASCII碼比對應(yīng)的小寫字母小32
后續(xù)字母的ASCII碼比該字母大1。#include<stdio.h>intmain(){charc;printf(“請輸入任意一個小寫字符:”);
c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}請輸入任意一個小寫字符:xx,yX,Y能否通過其他方法輸入、輸出?#include<stdio.h>intmain(){charc;printf(“請輸入任意一個小寫字符:”);
c=getchar();printf(“%c,%c\n”,c,c+1);printf(“%c,%c\n”,c-32,c-31);}可用putchar函數(shù)代替:putchar(c);putchar(c+1);若輸入一個非字母字符,輸出怎樣?例:求ax2+bx+c=0方程的根。a,b,c由鍵盤輸入,設(shè)b2-4ac>0。I處理O#include<stdio.h>
#include<math.h>
intmain()
{floata,b,c,disc,x1,x2,p,q;
scanf("a=%f,b=%f,c=%f",&a,&b,&c);
disc=b*b-4*a*c;
p=-b/(2*a);
q=sqrt(disc)/(2*a);
x1=p+q;x2=p-q;
printf("x1=%5.2f\nx2=%5.2f\n",x1,x2);
}運行情況:
a=1,b=3,c=2↙
x1=-1.00
x2=-2.00習(xí)題3-6#definePI3.14#include<stdio.h>intmain(){inth; floatr,l,s,s1,v1,v2; printf("請輸入圓半徑和圓柱高:\n"); scanf("%f,%d",&r,&h); l=2*PI*r; s=PI*r*r; s1=4*PI*r*r; v1=4*PI*r*r*r/3; v2=s*h; printf("圓周長=%.2f\n圓面積=%.2f\n圓球表面積=%.2f\n圓球體積=%.2f\n圓柱體體積=%.2f\n",l,s,s1,v1,v2);}雞兔同籠已知雞兔總頭數(shù)為h,總腳數(shù)為f,求雞兔各多少只?(要求通過輸入語句給h和f賦值,并且在輸入輸出時加上必要的提示語句)例如:請輸入總頭數(shù)h,總腳數(shù)f:2,6雞:1,兔:1#incl
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 畢節(jié)幼兒師范高等??茖W(xué)?!吨悄芪锪飨到y(tǒng)設(shè)計I》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京政法職業(yè)學(xué)院《英語測試?yán)碚撆c方法》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京藝術(shù)傳媒職業(yè)學(xué)院《中醫(yī)內(nèi)科學(xué)一》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京物資學(xué)院《宏觀經(jīng)濟學(xué)(Macroeconomcs)》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京石油化工學(xué)院《新能源汽車構(gòu)造》2023-2024學(xué)年第二學(xué)期期末試卷
- 北京社會管理職業(yè)學(xué)院《山水畫技法》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年儲能技術(shù)多元化在儲能電站儲能系統(tǒng)與儲能電站安全防護互動匹配互動中的應(yīng)用報告
- 北京科技大學(xué)《生物化學(xué)及分子生物學(xué)(四)》2023-2024學(xué)年第二學(xué)期期末試卷
- 2025年冰雪運動主題公園項目冰雪運動賽事運營與推廣報告
- 2025年便利店業(yè)態(tài)創(chuàng)新與品牌建設(shè)報告
- 包蟲病防治知識小學(xué)課件
- 《餐飲行業(yè)安全生產(chǎn)標(biāo)準(zhǔn)化評定標(biāo)準(zhǔn)與實施》
- 挖機簡單租賃合同8篇
- 高職院校課程設(shè)置存在的問題及改革建議
- 中職高教版(2023)世界歷史-第13課-資本主義世界殖民體系的建立與亞非拉民族獨立運動【課件】
- 辦公軟件基礎(chǔ)課件
- 四新安全教育培訓(xùn)材料
- 2025上海市商業(yè)店鋪出租合同(合同版本)
- 高校科研誠信教育
- 綠城園林景觀工程設(shè)計15個強制性標(biāo)準(zhǔn)
- 金華市婺城區(qū)教科版六年級下冊期末調(diào)研抽測科學(xué)試卷(解析版)
評論
0/150
提交評論