【校本教材】信息學(xué)奧賽校本教材_第1頁(yè)
【校本教材】信息學(xué)奧賽校本教材_第2頁(yè)
【校本教材】信息學(xué)奧賽校本教材_第3頁(yè)
【校本教材】信息學(xué)奧賽校本教材_第4頁(yè)
【校本教材】信息學(xué)奧賽校本教材_第5頁(yè)
已閱讀5頁(yè),還剩58頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

平潭一中校本課程算法與編程c++

目錄C++語(yǔ)言入門(mén)(平臺(tái)安裝介紹基本功能)……3C++語(yǔ)言簡(jiǎn)介………4C++語(yǔ)言程序結(jié)構(gòu)………………6賦值語(yǔ)句…………8運(yùn)算符和表達(dá)式………………10常量和變量……………………12標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型……………………14數(shù)據(jù)輸入輸出……………………16順序結(jié)構(gòu)實(shí)例……………………18概述………………20if選擇結(jié)構(gòu)………22switch語(yǔ)句………24程序的控制結(jié)構(gòu)練習(xí)與總結(jié)……26循環(huán)的控制結(jié)構(gòu)…………………28for語(yǔ)句…………30while語(yǔ)句………32do-while語(yǔ)句…………………36c++小結(jié)試題……………………38《算法與編程》校本課程綱要學(xué)科:

算法與編程課程名稱(chēng)《算法與編程》總課時(shí)數(shù)課程類(lèi)型課程輔導(dǎo)類(lèi)授課對(duì)象初中學(xué)生學(xué)分課程目標(biāo)以《課程標(biāo)準(zhǔn)》為指導(dǎo),結(jié)合我校實(shí)際,充分挖掘?qū)W生的個(gè)性潛能,促進(jìn)學(xué)生個(gè)性全面、和諧地發(fā)展,為學(xué)生的終身發(fā)展奠定基礎(chǔ)。學(xué)會(huì)交流,在合作中學(xué)習(xí);學(xué)會(huì)探究,培養(yǎng)學(xué)生的創(chuàng)新意識(shí);培養(yǎng)學(xué)生良好的生活習(xí)慣,懂得生活,成為生活的主人。課程內(nèi)容簡(jiǎn)介信息學(xué)奧林匹克競(jìng)賽(NOI)是中學(xué)階段最重要的五大學(xué)科競(jìng)賽之一,每年11月是省級(jí)聯(lián)賽(NOIP),并不是在五大學(xué)科里只有信息學(xué)競(jìng)賽最好。比較而言,信息學(xué)奧賽有自己的特點(diǎn)。首先,信息學(xué)競(jìng)賽學(xué)習(xí)的內(nèi)容是計(jì)算機(jī)編程,和文化課關(guān)聯(lián)不大,所以可以隨時(shí)開(kāi)始學(xué)習(xí),并不要求其他學(xué)科一定要學(xué)到什么程度。所以,小學(xué)開(kāi)始學(xué)習(xí)的有,初中開(kāi)始的有,高中開(kāi)始的也有。有的學(xué)生初中就拿了高中組的一等獎(jiǎng),小學(xué)就拿了初中組的一等獎(jiǎng)。其他學(xué)科就不行了,高中競(jìng)賽必須學(xué)完高中本學(xué)科的必修課程才能開(kāi)始學(xué)習(xí)競(jìng)賽,所以一般來(lái)說(shuō),其他學(xué)科競(jìng)賽的首次參賽一般在高二。其次,競(jìng)爭(zhēng)壓力略小于其他學(xué)科。比如數(shù)學(xué),作為考試科目和競(jìng)賽科目,參加的人數(shù)非常多,高手云集。而信息學(xué)競(jìng)賽因?yàn)槭欠强荚嚳颇浚瑓⒓訉W(xué)習(xí)和參賽的人數(shù)比較少,較容易脫穎而出。當(dāng)然并不是說(shuō)這個(gè)學(xué)科內(nèi)容膚淺,其實(shí)內(nèi)容也很深??偨Y(jié)一下:參加信息學(xué)競(jìng)賽學(xué)習(xí)開(kāi)始早,首次參賽早,可參賽次數(shù)多,競(jìng)爭(zhēng)壓力略小,這是它的優(yōu)勢(shì)。課程實(shí)施建議(學(xué)習(xí)方式或教學(xué)方式)首先,信息學(xué)競(jìng)賽對(duì)學(xué)生來(lái)說(shuō)是一個(gè)新的領(lǐng)域,每一個(gè)知識(shí)都是新的。所以,競(jìng)賽學(xué)習(xí)要持之以恒,不能斷斷續(xù)續(xù)。三天打魚(yú)兩天曬網(wǎng),就需要不斷復(fù)習(xí)舊的內(nèi)容,進(jìn)度會(huì)比較緩慢。所以,持續(xù)的意義要遠(yuǎn)大于突擊;其次,養(yǎng)成自律,愛(ài)鉆研,有興趣去探索算法與編程內(nèi)在奧秘。學(xué)習(xí)主人,有規(guī)范有格局。課程實(shí)施簡(jiǎn)述(教學(xué)計(jì)劃或教學(xué)手段等)信息學(xué)競(jìng)賽注重實(shí)際操作,學(xué)過(guò)的知識(shí)都是用來(lái)指導(dǎo)編程的。競(jìng)賽的主要是用程序解決數(shù)學(xué)問(wèn)題或邏輯問(wèn)題或兩者都有,所以學(xué)是一方面,實(shí)際寫(xiě)題更重要,我們叫做“刷題”(其他科競(jìng)賽也得刷題,只不過(guò)信息學(xué)用電腦刷題)??偨Y(jié)一下,學(xué)好信息學(xué)競(jìng)賽的公式是:持續(xù)學(xué)習(xí)+刷題。課程評(píng)價(jià)簡(jiǎn)述(評(píng)價(jià)方式、評(píng)價(jià)實(shí)施等簡(jiǎn)述)考勤10%課堂表現(xiàn)45%課程考核45%信息學(xué)奧賽校本教材(上)第1章初識(shí)C++語(yǔ)言C++語(yǔ)言簡(jiǎn)介:信息學(xué)奧林匹克競(jìng)賽是一項(xiàng)益智性的競(jìng)賽活動(dòng),核心是考查選手的智力和使用計(jì)算機(jī)解題的能力,選手首先應(yīng)針對(duì)競(jìng)賽題目的要求構(gòu)建數(shù)學(xué)模型,進(jìn)而構(gòu)造出計(jì)算機(jī)可以接受的算法,之后編寫(xiě)出計(jì)算機(jī)能夠執(zhí)行的程序。程序設(shè)計(jì)是信息學(xué)競(jìng)賽的基本功,選手參與競(jìng)賽活動(dòng)的第一步是熟練掌握一門(mén)程序設(shè)計(jì)語(yǔ)言,目前競(jìng)賽中允許使用的程序設(shè)計(jì)語(yǔ)言有C語(yǔ)言、C++語(yǔ)言、Pascal。C++語(yǔ)言概述C++由美國(guó)AT&T貝爾實(shí)驗(yàn)室的本賈尼·斯特勞斯特盧普博士在20世紀(jì)80年代初期發(fā)明并實(shí)現(xiàn)(最初這種語(yǔ)言被稱(chēng)作“CwithClasses”帶類(lèi)的C)。開(kāi)始,C++是作為C語(yǔ)言的增強(qiáng)版出現(xiàn)的,從給C語(yǔ)言增加類(lèi)開(kāi)始,不斷的增加新特性。今天C++已成為世界主流編程語(yǔ)言之一。C++語(yǔ)言的特點(diǎn):語(yǔ)言簡(jiǎn)潔緊湊,使用靈活方便 C++語(yǔ)言一共只有32個(gè)關(guān)鍵字和9種控制語(yǔ)句,程序書(shū)寫(xiě)自由,主要用小寫(xiě)字母表示。運(yùn)算符豐富 C++語(yǔ)言的運(yùn)算符包含的范圍很廣泛,共有34個(gè)運(yùn)算符。數(shù)據(jù)結(jié)構(gòu)豐富 C++語(yǔ)言的數(shù)據(jù)類(lèi)型有:整型、實(shí)型、字符型、數(shù)組類(lèi)型等等結(jié)構(gòu)化語(yǔ)言 結(jié)構(gòu)化語(yǔ)言的顯著特點(diǎn)是代碼及數(shù)據(jù)的分隔化,即程序的各個(gè)部分除了必要的信息交流外彼此獨(dú)立。生成的代碼質(zhì)量高 C++語(yǔ)言在代碼效率方面可以和匯編語(yǔ)言相媲美??梢浦残詮?qiáng) C++語(yǔ)言編寫(xiě)的程序很容易進(jìn)行移植,在一個(gè)環(huán)境下運(yùn)行的程序不加修改或少許修改就可以在完全不同的環(huán)境下運(yùn)行。C++程序結(jié)構(gòu):在介紹C++語(yǔ)言程序的結(jié)構(gòu)之前,我們先來(lái)看一個(gè)簡(jiǎn)單的例子:例1.1在屏幕上輸出“HelloWorld!”。#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù),否則編譯出錯(cuò)#include<cstdlib>//使用system()調(diào)用cstdlib庫(kù)usingnamespacestd;//在C語(yǔ)言中要省略,例如在VC++和TC++中intmain()//有的C語(yǔ)言可用voidmain(),例如TC++和VC++{ cout<<"HelloWorld!"<<endl;//輸出"HelloWorld!" system("pause");//暫停作用,使用system("pause")調(diào)用cstdlib庫(kù) return0;//結(jié)束整個(gè)程序}運(yùn)行結(jié)果:HelloWorld!【說(shuō)明】:1、以“//”開(kāi)頭為注釋行,“//”后的內(nèi)容用以對(duì)語(yǔ)句進(jìn)行說(shuō)明,輸入程序時(shí)可以不輸入。2、#include<iostream>告訴編譯器的預(yù)處理器將輸入輸出流的標(biāo)準(zhǔn)頭文件(iostream)包括在本程序中。這個(gè)頭文件包括了C++中定義的基本標(biāo)準(zhǔn)輸入輸出程序庫(kù)的聲明。3、usingnamespacestd使用std(標(biāo)準(zhǔn))名字空間的意思。所謂的名字空間是標(biāo)準(zhǔn)C++中的一種機(jī)制,用來(lái)控制不同類(lèi)庫(kù)的沖突問(wèn)題。使用它可以在不同的空間內(nèi)使用相同名字的類(lèi)或者函數(shù)。4、intmain()這一行為主函數(shù)(mainfunction)的起始聲明。main()是所有C++程序的運(yùn)行的起始點(diǎn)。不管它是在代碼的開(kāi)頭,結(jié)尾還是中間,此函數(shù)中的代碼總是在程序開(kāi)始運(yùn)行時(shí)第一個(gè)被執(zhí)行。所有C++程序都必須有一個(gè)main(),intmain()前int在DevC++中可省略,在TC++和VC++中最好保留。main后面跟了一對(duì)圓括號(hào)(),表示它是一個(gè)函數(shù)。C++中所有函數(shù)都跟有一對(duì)圓括號(hào)(),括號(hào)中可以有一些輸入?yún)?shù)。注意,圓括號(hào)中即使什么都沒(méi)有也不能省略。如例題中顯示,主函數(shù)main()中的內(nèi)容,由一對(duì)花括號(hào){}括起來(lái)。5、cout<<"HelloWorld!"<<endl這個(gè)語(yǔ)句在本程序中最重要。cout是一個(gè)輸出語(yǔ)句,告訴計(jì)算機(jī)把引號(hào)之間的字符串送到標(biāo)準(zhǔn)的輸出設(shè)備(屏幕)上。cout的聲明在頭文件iostream中,所以要想使用cout必須將頭文件iostream包括在程序開(kāi)始處。endl是C++語(yǔ)言的換行控制符,表示內(nèi)容輸出后換行顯示后續(xù)的內(nèi)容。6、system("pause")在4.99以前版本的Dev-C++環(huán)境下,為了查看程序運(yùn)行結(jié)果,需要在main函數(shù)的return0語(yǔ)句前加上:system("pause");這樣程序運(yùn)行到該語(yǔ)句時(shí),結(jié)果顯示屏幕將會(huì)停留,讓大家有時(shí)間看程序的輸出結(jié)果,否則結(jié)果顯示屏幕將會(huì)一閃而過(guò)。在4.99之后的版本可不必加該語(yǔ)句,運(yùn)行結(jié)束后結(jié)果顯示屏幕將自動(dòng)停留。7、return0主函數(shù)main()的返回語(yǔ)句,一般是函數(shù)的最后一條可執(zhí)行語(yǔ)句。main()函數(shù)末尾使用return語(yǔ)句時(shí),數(shù)值0表示程序順利結(jié)束,其他數(shù)表示有異常。在后面的例子中你會(huì)看到C++程序都以類(lèi)似的語(yǔ)句結(jié)束。在C++中,語(yǔ)句的分隔是以分號(hào)“;”為分隔符的,分行寫(xiě)代碼只是為了更方便人閱讀。一.啟動(dòng)Dev-C++1.鼠標(biāo)點(diǎn)擊任務(wù)欄中的“開(kāi)始”按鈕,選“程序”菜單項(xiàng),然后選“程序”下的子菜單項(xiàng)“BloodshedDev-C++”項(xiàng),顯示該項(xiàng)下的子菜單。2.方法一:單擊”Dev-C++”菜單項(xiàng),即可啟動(dòng)Dev-C++集成開(kāi)發(fā)工具。(如圖1所示)方法二:直接雙擊桌面上的Dev-C++的圖標(biāo)。 如果大家看到界面上的字是英文的,則可以點(diǎn)擊主菜單“Tools>EnvironmentOptions”(如圖3),在彈出的對(duì)話框中選擇第二個(gè)標(biāo)簽頁(yè)”interface”(如圖4),在Language下拉列表中選擇Chinese即可,將操作界面改為中文的。二、新建源程序1)從主菜單選擇“文件”〉“新建”〉“源代碼”即可(如圖2所示)。 2).此時(shí)屏幕右下側(cè)出現(xiàn)一片白色區(qū)域,稱(chēng)為“源程序編輯區(qū)域”;可以在此輸入程序。如(圖5)所示。注意:1.必須在英文輸入環(huán)境下編輯程序(如果你當(dāng)前能在程序編輯區(qū)輸入中文,說(shuō)明你是在中文輸入環(huán)境下。為了輸入程序,你必須切換到英文輸入環(huán)境下)。2.在4.99以前的版本的Dev-C++環(huán)境下,為了查看程序運(yùn)行結(jié)果,需要在main函數(shù)的return語(yǔ)句前加上:system("pause")或getchar(),這樣程序運(yùn)行到該語(yǔ)句時(shí),結(jié)果顯示屏幕將會(huì)停留,讓大家有時(shí)間看程序的輸出結(jié)果。否則結(jié)果顯示屏幕將會(huì)一閃而過(guò)。在4.99之后的版本可不必加該語(yǔ)句,運(yùn)行結(jié)束后結(jié)果顯示屏幕將自動(dòng)停留。三、保存源程序到硬盤(pán) 一個(gè)好的習(xí)慣是創(chuàng)建了一個(gè)新程序后,在還未輸入代碼之前先將該程序保存到硬盤(pán)某個(gè)目錄下,然后在程序的編輯過(guò)程中經(jīng)常性地保存程序,以防止機(jī)器突然斷電或者死機(jī)。要保存程序,只需從主菜單選擇“文件”—〉”保存”就可以將文件保存到指定的硬盤(pán)目錄。如圖6所示。 此時(shí)會(huì)彈出一個(gè)對(duì)話框。在此你需要指定文件要存放的磁盤(pán)目錄(例如:D:\temp),自定文件名稱(chēng)(例如:ex1)以及保存類(lèi)型。在點(diǎn)擊右下角的保存按鈕后,在D盤(pán)上的temp目錄下將會(huì)出現(xiàn)一個(gè)名為ex1.cpp的源文件。四、編譯、運(yùn)行 編譯:從主菜單選“運(yùn)行”—〉“編譯運(yùn)行”或快捷鍵“F9”(圖7)。如果程序中存在詞法、語(yǔ)法等錯(cuò)誤,則編譯過(guò)程失敗。 編譯器會(huì)在屏幕右下角的“CompileLog”標(biāo)簽頁(yè)中顯示錯(cuò)誤信息,如(圖8)所示,并且將源程序相應(yīng)的錯(cuò)誤行標(biāo)成紅色底色。五、調(diào)試程序1.設(shè)置程序斷點(diǎn) 通過(guò)預(yù)處理、編譯和鏈接的程序僅僅是該程序中沒(méi)有詞法和語(yǔ)法等錯(cuò)誤,而無(wú)法發(fā)現(xiàn)程序深層次的問(wèn)題(譬如算法不對(duì)導(dǎo)致結(jié)果不正確)。當(dāng)程序運(yùn)行出錯(cuò)時(shí),需要找出錯(cuò)誤原因。仔細(xì)讀程序來(lái)尋找錯(cuò)誤固然是一種方法,但是有時(shí)光靠讀程序已經(jīng)解決不了問(wèn)題,此時(shí)需要借助于程序調(diào)試(Debug)手段。這是一種有效的排錯(cuò)手段,每一位同學(xué)都需要掌握。 如果想讓程序運(yùn)行到某一行前能暫停下來(lái),就需要將該行設(shè)成斷點(diǎn)。具體方法是在代碼所在行行首單擊,該行將被加亮。默認(rèn)的加亮顏色是紅色。 如果想取消不讓某行代碼成為斷點(diǎn),則在代碼行首再次點(diǎn)擊即可。2.運(yùn)行程序 設(shè)置斷點(diǎn)后,此時(shí)程序運(yùn)行進(jìn)入debug狀態(tài)。要想運(yùn)行程序,就不能使用主菜單“Execute”->“Run”,而是需要用主菜單“Debug”—〉“Debug”(或者按快捷鍵F8),如圖12所示。3.單步執(zhí)行程序 要想運(yùn)行藍(lán)色底色的代碼,可以使用圖14所示的“NextStep(F7)”、“StepInto(ShiftF7)”、“Continue(CtrlF7)”,“RuntoCursor(ShiftF4)”等(具體含義見(jiàn)下面的介紹)。在學(xué)習(xí)函數(shù)之前,一般用的是NextStep和Continue。學(xué)習(xí)函數(shù)后,還會(huì)用到StepInto。4.設(shè)置watch窗口 在調(diào)試程序時(shí),可能要看程序運(yùn)行過(guò)程中變量的值,以檢測(cè)程序?qū)ψ兞康奶幚硎欠裾_,可以在調(diào)試時(shí)通過(guò)調(diào)試菜單下的添加變量(AddWatch)窗口來(lái)增加變量watch,新增的變量將會(huì)顯示在最左邊Explore的Debug頁(yè)中。如果左邊Explore中的當(dāng)前頁(yè)不是Debug頁(yè),則可以點(diǎn)擊Debug標(biāo)簽使之成為當(dāng)前頁(yè)。無(wú)論做任何事情,都要有一定的方式方法與處理步驟,所謂“無(wú)規(guī)矩?zé)o以成方圓”。計(jì)算機(jī)程序設(shè)計(jì)比日常生活中的事務(wù)處理更具有嚴(yán)謹(jǐn)性、規(guī)范性和可行性。為了使計(jì)算機(jī)有效地解決實(shí)際問(wèn)題,必須將處理步驟編排好,用計(jì)算機(jī)能理解的計(jì)算機(jī)語(yǔ)言編寫(xiě)成“序列”,讓計(jì)算機(jī)自動(dòng)識(shí)別并執(zhí)行這個(gè)“序列”,達(dá)到解決實(shí)際問(wèn)題的目的。將處理問(wèn)題的步驟編排好,用計(jì)算機(jī)語(yǔ)言組成序列,就是常說(shuō)的編寫(xiě)程序。在C++語(yǔ)言中,執(zhí)行每條語(yǔ)句都是由計(jì)算機(jī)完成相應(yīng)的具體操作,編寫(xiě)程序是利用C++語(yǔ)句的功能來(lái)實(shí)現(xiàn)預(yù)定的處理要求?!扒Ю镏?,始于足下”,我們從簡(jiǎn)單程序?qū)W起,逐步了解和掌握怎樣編寫(xiě)程序。 在學(xué)習(xí)C++語(yǔ)言之前,讓我們繞過(guò)那些繁瑣的語(yǔ)法規(guī)則細(xì)節(jié),通過(guò)一些簡(jiǎn)單的例題,來(lái)熟悉程序的基本組成和基本語(yǔ)句的用法,選手剛接觸編程時(shí),多動(dòng)手模仿是一條捷徑。例1.2在梯形中陰影部分面積是150平方厘米,求梯形面積。【分析】已知梯形上、下底長(zhǎng)為15和25。令梯形的高為h,則由已知三角形面積為150平方厘米,有150=(15*h)/2,得h為20,然后根據(jù)梯形面積公式算出梯形面積。程序如下:#include<cstdio>//printf和scanf調(diào)用cstdio庫(kù),在C語(yǔ)言中可調(diào)用stdio.h庫(kù)#include<cstdlib>//使用system()調(diào)用cstdlib庫(kù)usingnamespacestd;//在C語(yǔ)言中要省略,例如在VC++和TC++中intmain()//有的C語(yǔ)言可用voidmain(),例如TC++和VC++{//整個(gè)程序開(kāi)始floats,h,up,down;//float定義s,h,up,down為單精度實(shí)型變量up=15; //已知上底down=25; //已知下底h=2*150/up;//根據(jù)上底求出梯形的高s=(up+down)*h/2; //求出梯形的面積printf("s=%0.2f\n",s);//\n是換行控制符,0.2f按實(shí)際位數(shù)輸出,保留2位小數(shù)system("pause");//暫停作用,TC++和VC++中使用system()調(diào)用stdlib.h庫(kù)return0;//結(jié)束程序,在TC++和VC++中也要保留}運(yùn)行結(jié)果:s=400.00【說(shuō)明】: 所謂namespace,是指標(biāo)識(shí)符的各種可見(jiàn)范圍。C++標(biāo)準(zhǔn)程序庫(kù)中的所有標(biāo)識(shí)符都被定義于一個(gè)名為std的namespace中。 當(dāng)使用<iostream.h>時(shí),相當(dāng)于在C中調(diào)用庫(kù)函數(shù),使用的是全局命名空間,也就是早期的C++實(shí)現(xiàn);當(dāng)使用<iostream>的時(shí)候,該頭文件沒(méi)有定義全局命名空間,必須使用namespacestd;這樣才能正確使用cout、cin和endl。例1.3已知一位小朋友的電影票價(jià)是10元,計(jì)算x位小朋友的總票價(jià)是多少?【分析】假設(shè)總票價(jià)用y來(lái)表示,則這個(gè)問(wèn)題可以用以下幾個(gè)步驟來(lái)實(shí)現(xiàn):①輸入小朋友的數(shù)目x;②用公式y(tǒng)=10*x計(jì)算總票價(jià);③輸出總票價(jià)y的值。 程序如下:#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù)usingnamespacestd;intmain(){intx,y;//定義整型變量cout<<"Inputx=";//輸入提示cin>>x; //小朋友的人數(shù)y=10*x; //計(jì)算總票價(jià)cout<<"total="<<y<<endl;//輸出總票價(jià)return0;//結(jié)束程序}【說(shuō)明】:1、int定義x,y為整型變量,有關(guān)整型變量將在第二章詳細(xì)介紹。2、cout<<的作用是在屏幕中顯示字符串"Inputx="。3、cin>>x的作用是輸入一個(gè)數(shù),賦予變量x。4、cout<<"total="<<y<<endl的作用是輸出提示符total=,輸出y的值,endl是換行的意思。通過(guò)以上例1.2和例1.3兩個(gè)例子,可以總結(jié)出C++語(yǔ)言程序的結(jié)構(gòu)如下:1)C++語(yǔ)言變量在使用之前必須先定義其數(shù)據(jù)類(lèi)型,未經(jīng)定義的變量不能使用。2)程序由一個(gè)或多個(gè)函數(shù)組成,一個(gè)程序中必須有且只有一個(gè)主函數(shù),主函數(shù)的名字為main。不論main()函數(shù)在程序中什么位置,程序都是從main()函數(shù)開(kāi)始執(zhí)行,main()函數(shù)執(zhí)行完畢,程序也就結(jié)束了。3)在程序中可以調(diào)用系統(tǒng)提供的庫(kù)函數(shù)。在調(diào)用庫(kù)函數(shù)之前,必須將相應(yīng)頭文件包含在程序中。4)程序中可以有注釋行。注釋是為了使程序更易于理解和提示。5)程序的語(yǔ)句以分號(hào)結(jié)束。分號(hào)是C++語(yǔ)言不可缺少的組成部分。6)程序的書(shū)寫(xiě)要注意適當(dāng)?shù)目s進(jìn),一般采用“逐層縮進(jìn)”形式,以便使程序更加清晰易讀。把處理問(wèn)題的步驟編成能從上到下順序執(zhí)行的程序,是簡(jiǎn)單程序的基本特征。再來(lái)分析下面一道例題的程序結(jié)構(gòu),同時(shí)繼續(xù)學(xué)習(xí)基本語(yǔ)句。例1.4有一個(gè)牧場(chǎng),牧場(chǎng)上的牧草每天都在勻速生長(zhǎng),這片牧場(chǎng)可供15頭牛吃20天,或可供20頭牛吃10天,那么,這片牧場(chǎng)每天新生的草量可供幾頭牛吃1天?【分析】解決這類(lèi)問(wèn)題的關(guān)鍵是利用牛吃的草量,最終求出這片牧場(chǎng)每天新生長(zhǎng)的草量,我們?cè)O(shè)1單位的草量為1頭牛1天所需的草量,于是15頭牛20天所食的草量為300單位(包括這20天內(nèi)的新生草量),20頭牛10天所食的草量為200單位(包括這10天內(nèi)的新生草量),兩者的差值即為10天內(nèi)的新生草量。程序如下:#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù)usingnamespacestd;intmain(){ints1,s2,s3;//變量定義s1=15*20;//15頭牛20天所食的草量s2=20*10;//20頭牛10天所食的草量s3=(s1-s2)/(20-10);//每天新生的草量單位數(shù)cout<<"s="<<s3<<endl;//1單位為1頭牛1天的食量return0;//結(jié)束程序}運(yùn)行結(jié)果:s=10例1.5給定一個(gè)字符,用它構(gòu)造一個(gè)底邊長(zhǎng)5個(gè)字符,高3個(gè)字符的等腰字符三角形。#########程序如下:#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù)usingnamespacestd;intmain(){ chara;//定義字符變量, cin>>a;//輸入給定一個(gè)字符 cout<<""<<a<<endl;//輸出1個(gè)字符,先輸出2個(gè)空格 cout<<""<<a<<a<<a<<endl;//輸出3個(gè)字符,先輸出1個(gè)空格 cout<<a<<a<<a<<a<<a<<endl;//輸出5個(gè)字符 return0;//結(jié)束程序}【DevC++版本注意事項(xiàng)】在5.0版本DevC++中,<iostream>不是萬(wàn)能庫(kù),不包括cstdio,cstring,cstdlib,其他常用的min,max函數(shù)也不保證包括,需要注意如下幾個(gè)細(xì)節(jié):①、getchar(),stdin,stdout,freopen(),fclose(),scanf()在c++中需要調(diào)用<cstdio>②、memset()需要包含C頭文件<string.h>,在c++中需要調(diào)用<cstring>③、qsort(),exit()需要包含C頭文件<stdlib.h>,在c++中需要調(diào)用<cstdlib>在5.0版本C++中,根據(jù)標(biāo)準(zhǔn)去除了iostream對(duì)cstdio,cstring,algorithm的依賴(lài)性,需要顯式包括。你現(xiàn)在還可能不透徹理解以上注意事項(xiàng),就慢慢消化吧,在信息學(xué)奧賽中一定要注意以上細(xì)節(jié),請(qǐng)記?。骸凹?xì)節(jié)決定成敗”。本書(shū)【上機(jī)練習(xí)】在線評(píng)測(cè)OJ::8088第二章順序結(jié)構(gòu)第一章的簡(jiǎn)單程序已體現(xiàn)出處理問(wèn)題的步驟的順序關(guān)系,每條語(yǔ)句按自上而下的順序依次執(zhí)行一次,這種自上而下依次執(zhí)行的程序稱(chēng)為順序結(jié)構(gòu)程序。在一個(gè)程序中,所有的操作都由執(zhí)行部分來(lái)完成,而執(zhí)行部分又都是由一條條語(yǔ)句組成的。因此,先要學(xué)習(xí)C++語(yǔ)言的基本語(yǔ)句,并且在學(xué)習(xí)過(guò)程中逐步學(xué)會(huì)程序設(shè)計(jì)的基本方法。我們還是先繞過(guò)那些繁瑣的語(yǔ)法規(guī)則細(xì)節(jié),先看一些例子,然后給出語(yǔ)法以供選手們參考。賦值語(yǔ)句:在C++語(yǔ)言中,“=”作為賦值運(yùn)算符,而不表示“等于”判斷。賦值語(yǔ)句是由賦值表達(dá)式再加上分號(hào)構(gòu)成的表達(dá)式語(yǔ)句,它是程序中使用最多的語(yǔ)句之一。 變量=表達(dá)式;在賦值語(yǔ)句的使用中,需要注意以下幾點(diǎn): 1)由于賦值運(yùn)算符“=”右邊的表達(dá)式也可以是賦值表達(dá)式,因此,下述形式: 變量=(變量=表達(dá)式); 是成立的,從而形成嵌套的情形。其展開(kāi)之后的一般形式為: 變量=變量=…=表達(dá)式; 例如,“a=b=c=d=e=5;”,它實(shí)際上等價(jià)于:e=5;d=e;c=d;b=c;a=b; 2)在進(jìn)行賦值運(yùn)算時(shí),如果賦值運(yùn)算符兩邊的數(shù)據(jù)類(lèi)型不同,系統(tǒng)將會(huì)自動(dòng)進(jìn)行類(lèi)型轉(zhuǎn)換,即將賦值運(yùn)算符右邊的數(shù)據(jù)類(lèi)型轉(zhuǎn)換成左邊的變量類(lèi)型。當(dāng)左邊是整型而右邊是實(shí)型時(shí),將去掉小數(shù)部分并截取該整型對(duì)應(yīng)的有效位數(shù)。例2.1輸入兩個(gè)正整數(shù)A和B,試交換A、B的值(使A的值等于B,B的值等于A)?!痉治觥拷粨Q兩個(gè)變量的值方法很多,一般我們采用引入第三個(gè)變量的算法,二個(gè)變量交換,可以想像成一瓶醬油和一瓶醋進(jìn)行交換,這時(shí)容易想到拿一個(gè)空瓶子過(guò)來(lái):①將醬油倒到空瓶中;②將醋倒到醬油瓶中;③將原空瓶中的醬油倒到醋瓶中。程序如下:#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù)usingnamespacestd;intmain(){inta,b,c;//定義三個(gè)變量cout<<"Inputa,b=";//輸入提示Inputa,b=cin>>a>>b;//輸入A、B的值c=a;a=b;b=c;//交換A、B的值cout<<"a="<<a<<"b="<<b<<endl;//輸出結(jié)果}例2.2圓柱體的表面積輸入底面半徑r和高h(yuǎn),輸出圓柱體的表面積,保留3位小數(shù),格式見(jiàn)樣例。樣例輸入:3.59樣例輸出:274.889【分析】圓柱體的表面積由3部分組成:上底面積、下底面積和側(cè)面積。由于上下底面積相等,完整的公式可以寫(xiě)成:表面積=底面積*2+側(cè)面積。根據(jù)平面幾何知識(shí),底面積=πR2,側(cè)面積=2πrh。參考程序:#include<cstdio>//使用printf和scanf,須調(diào)用cstdio庫(kù)#include<cmath>//使用數(shù)學(xué)函數(shù)atan,須調(diào)用cmath庫(kù)usingnamespacestd;//在這個(gè)程序中可以省略這行intmain(){constdoublepi=3.1415926;//定義pi為常量doubler,h,s1,s2,s;//定義雙精度實(shí)型,float為單精度實(shí)型scanf("%lf%lf",&r,&h);//r和h前的&符號(hào)不能漏掉,double型用%lfs1=pi*r*r;//計(jì)算底面積s2=2*pi*r*h;//計(jì)算側(cè)面積s=2*s1+s2;//計(jì)算總的表面積printf("Area=%0.3lf\n",s);//輸出結(jié)果保留3位小數(shù),注意用lf格式return0;}例2.3數(shù)學(xué)中經(jīng)典的“雞兔同籠”問(wèn)題,已知頭共30個(gè),腳共90只,問(wèn)籠中的雞和兔各有多少只?【分析】設(shè)雞為j只,兔為t只,頭為h,腳為f,那么有: j+t=30 ①2*j+4*t=90 ②假設(shè)籠中30個(gè)頭全都是兔,那么都按每頭4只腳計(jì)算,總腳數(shù)為(4*h),與實(shí)際腳數(shù)(f)之差為(4*h-f),如果這個(gè)差=0,則籠中全是兔(即雞為0只);如果這個(gè)差值>0,說(shuō)明多計(jì)算了腳數(shù),凡是雞都多計(jì)算了兩只腳,用它除以2就能得到雞的只數(shù),算法為:①j=(4*h-f)/2//先用腳數(shù)差值除以2算出雞的只數(shù)②t=h-j//再用總頭數(shù)減雞數(shù)算出免的只數(shù)注意這兩步運(yùn)算的先后順序。程序如下:#include<cstdio>//使用getchar()語(yǔ)句,須調(diào)用cstdio庫(kù)#include<iostream>//使用cin,cout,須調(diào)用iostream庫(kù)usingnamespacestd;intmain(){inth,f,j,t;//定個(gè)變量h=30;f=90;//賦初始值j=(4*h-f)/2;//計(jì)算雞的只數(shù)t=h-j;//計(jì)算免的只數(shù)cout<<"j="<<j<<"t="<<t<<endl;//輸出結(jié)果getchar();//和system("pause")作用相似,用于結(jié)果顯示暫停} 第二節(jié)運(yùn)算符和表達(dá)式:C++語(yǔ)言中運(yùn)算符和表達(dá)式數(shù)量之多,在高級(jí)語(yǔ)言中是少見(jiàn)的。正是豐富的運(yùn)算符和表達(dá)式使C++語(yǔ)言功能十分完善。這也是C++語(yǔ)言的主要特點(diǎn)之一。運(yùn)算符縱覽1.算術(shù)運(yùn)算符 用于各類(lèi)數(shù)值運(yùn)算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱(chēng)模運(yùn)算,%)、自增(++)、自減(--)共七種。2.關(guān)系運(yùn)算符 用于比較運(yùn)算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。3.邏輯運(yùn)算符 用于邏輯運(yùn)算。包括與(&&)、或(||)、非(!)三種。4.位操作運(yùn)算符 參與運(yùn)算的量,按二進(jìn)制位進(jìn)行運(yùn)算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。5.賦值運(yùn)算符 用于賦值運(yùn)算,分為簡(jiǎn)單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運(yùn)算賦值(&=,|=,^=,>>=,<<=)三類(lèi)共十一種。6.條件運(yùn)算符 這是一個(gè)三目運(yùn)算符,用于條件求值(?:)。7.逗號(hào)運(yùn)算符 用于把若干表達(dá)式組合成一個(gè)表達(dá)式(,)。8.指針運(yùn)算符 用于取內(nèi)容(*)和取地址(&)二種運(yùn)算。9.求字節(jié)數(shù)運(yùn)算符 用于計(jì)算數(shù)據(jù)類(lèi)型所占的字節(jié)數(shù)(sizeof)。10.特殊運(yùn)算符 有括號(hào)(),下標(biāo)[],成員(->,.)等幾種。一、算術(shù)運(yùn)算符1、模運(yùn)算符 求余的運(yùn)算符“%”也稱(chēng)為模運(yùn)算符,是雙目運(yùn)算符,兩個(gè)操作數(shù)都是整型數(shù)。a%b的值就是a除以b的余數(shù),5%2余數(shù)為1。其操作對(duì)象只能是整型數(shù),而其他四種運(yùn)算符對(duì)int,float,double,char都適用。2、除法運(yùn)算符 C++語(yǔ)言的除法運(yùn)算符有一些特殊之處,即如果a、b是兩個(gè)整數(shù)類(lèi)型的變量或常量,那么a/b的值是a除以b的商。例如,5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。3、自增自減運(yùn)算符 自增、自減運(yùn)算符用來(lái)對(duì)一個(gè)操作數(shù)進(jìn)行加1或減1運(yùn)算,其結(jié)果仍然賦予該操作數(shù),而且參加運(yùn)算的操作數(shù)必須是變量,而不能是常量或表達(dá)式。 1)自增運(yùn)算符。例如,x++表示在使用x之后,使x的值加1,即x=x+1;++x表示使用x之前,先使x的值加1,即x=x+1。 2)自減運(yùn)算符。例如,x--表示在使用x之后,使x的值減1,即x=x-1;--x表示使用x之前,先使x的值減1,即x=x-1。4、復(fù)合算術(shù)賦值。例如,a+=1,相當(dāng)于a=a+1;a+=b,相當(dāng)于a=a+b。例2.4變量自加運(yùn)算#include<iostream>usingnamespacestd;intmain(){intx,y,z1,z2;x=7;y=8;z1=y-(x++);//計(jì)算z1=1,計(jì)算后x=8z2=y-(++x);//計(jì)算前x的值自加1,x的值為9,再與y求差cout<<“z1="<<z1<<endl<<“z2="<<z2;//分別輸出z1和z2的值}運(yùn)行結(jié)果:z1=1z2=-1二、關(guān)系運(yùn)算符關(guān)系運(yùn)算符用于數(shù)值的大小比較。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種,它們都是雙目運(yùn)算符。關(guān)系運(yùn)算符運(yùn)算的結(jié)果是整型,值只有兩種:0或1,0代表關(guān)系不成立,1代表關(guān)系成立。請(qǐng)看下面的例子:intmain(){intn1=4,n2=5,n3;n3=n1>n2;//n3的值為0n3=n1<n2;//n3的值變?yōu)?n3=n1==4;//n3的值變?yōu)?n3=n1!=4;//n3的值變?yōu)?n3=n1==1+3;//n3的值變?yōu)?}三、邏輯運(yùn)算符C++語(yǔ)言中提供了三種邏輯運(yùn)算符:與運(yùn)算(&&)、或運(yùn)算(||)、非運(yùn)算(!)。與運(yùn)算符(&&)和或運(yùn)算符(||)均為雙目運(yùn)算符。具有左結(jié)合性。非運(yùn)算符(!)為單目運(yùn)算符,具有右結(jié)合性。邏輯運(yùn)算符和其它運(yùn)算符優(yōu)先級(jí)的關(guān)系可表示如下:按照運(yùn)算符的優(yōu)先順序可以得出:a>b&&c>d等價(jià)于(a>b)&&(c>d)!b==c||d<a等價(jià)于((!b)==c)||(d<a)a+b>c&&x+y<b等價(jià)于((a+b)>c)&&((x+y)<b)邏輯運(yùn)算的值也為“真”和“假”兩種,用“1”和“0”來(lái)表示。其求值規(guī)則如下: 1.與運(yùn)算&&參與運(yùn)算的兩個(gè)量都為真時(shí),結(jié)果才為真,否則為假。例如,5>0&&4>2,由于5>0為真,4>2也為真,相與的結(jié)果也為真。 2.或運(yùn)算||參與運(yùn)算的兩個(gè)量只要有一個(gè)為真,結(jié)果就為真。兩個(gè)量都為假時(shí),結(jié)果為假。例如:5>0||5>8,由于5>0為真,相或的結(jié)果也就為真 3.非運(yùn)算!參與運(yùn)算量為真時(shí),結(jié)果為假;參與運(yùn)算量為假時(shí),結(jié)果為真。例如:!(5>0)的結(jié)果為假。 雖然C++編譯在給出邏輯運(yùn)算值時(shí),以“1”代表“真”,“0”代表“假”。但反過(guò)來(lái)在判斷一個(gè)量是為“真”還是為“假”時(shí),以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于5和3均為非“0”因此5&&3的值為“真”,即為1。又如:5||0的值為“真”,即為1。需要說(shuō)明的是,對(duì)于有符號(hào)數(shù),在右移時(shí),符號(hào)位將隨同移動(dòng)。當(dāng)操作數(shù)為正數(shù)時(shí),最高位為0,而為負(fù)數(shù)時(shí),最高位為1。最高位是補(bǔ)0或補(bǔ)1取決于編譯系統(tǒng)的規(guī)定。在C++語(yǔ)言中,有一些運(yùn)算可以簡(jiǎn)寫(xiě),如下表所示。算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符和賦值運(yùn)算符的優(yōu)先級(jí)如下:賦值運(yùn)算符邏輯運(yùn)算符關(guān)系運(yùn)算符算術(shù)運(yùn)算符低高關(guān)系運(yùn)算符的結(jié)合性為:自左至右。根據(jù)以上優(yōu)先級(jí)和結(jié)合性,計(jì)算出以下表達(dá)式的結(jié)果(假設(shè)a=3,b=2,c=1)a>b表達(dá)式為真,所以表達(dá)式的值為1(a>b)==c表達(dá)式為真,所以表達(dá)式的值為1b+c<a表達(dá)式為假,所以表達(dá)式的值為0d=a>ba>b為真,所以d的值為1f=a>b>ca>b為真,結(jié)果為1,1>c為假,所以f的值為0【上機(jī)練習(xí)】1.A+B問(wèn)題【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行01】大部分的在線題庫(kù),都會(huì)將A+B問(wèn)題作為第一題,以幫助新手熟悉平臺(tái)的使用方法。A+B問(wèn)題的題目描述如下:給定兩個(gè)整數(shù)A和B,輸出A+B的值。保證A、B及結(jié)果均在整型范圍內(nèi)?,F(xiàn)在請(qǐng)你解決這一問(wèn)題。輸入:一行,包含兩個(gè)整數(shù)A,B,中間用單個(gè)空格隔開(kāi)。A和B均在整型范圍內(nèi)。輸出:一個(gè)整數(shù),即A+B的值。保證結(jié)果在整型范圍內(nèi)。樣例輸入:12樣例輸出:32.計(jì)算(a+b)*c的值【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行02】給定3個(gè)整數(shù)a、b、c,計(jì)算表達(dá)式(a+b)*c的值。輸入:輸入僅一行,包括三個(gè)整數(shù)a、b、c,數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。(-10,000<a,b,c<10,000)輸出:輸出一行,即表達(dá)式的值樣例輸入:235樣例輸出:253.計(jì)算(a+b)/c的值【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行03】給定3個(gè)整數(shù)a、b、c,計(jì)算表達(dá)式(a+b)/c的值,/是整除運(yùn)算。輸入;輸入僅一行,包括三個(gè)整數(shù)a、b、c,數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。(-10,000<a,b,c<10,000,c不等于0)輸出:輸出一行,即表達(dá)式的值。樣例輸入:113樣例輸出:04.帶余除法【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行04】給定被除數(shù)和除數(shù),求整數(shù)商及余數(shù)。此題中請(qǐng)使用默認(rèn)的整除和取余運(yùn)算,無(wú)需對(duì)結(jié)果進(jìn)行任何特殊處理。輸入:一行,包含兩個(gè)整數(shù),依次為被除數(shù)和除數(shù)(除數(shù)非零),中間用一個(gè)空格隔開(kāi)。輸出:一行,包含兩個(gè)整數(shù),依次為整數(shù)商和余數(shù),中間用一個(gè)空格隔開(kāi)。樣例輸入:103樣例輸出:315.計(jì)算分?jǐn)?shù)的浮點(diǎn)數(shù)值【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行05】?jī)蓚€(gè)整數(shù)a和b分別作為分子和分母,既分?jǐn)?shù)a/b,求它的浮點(diǎn)數(shù)值(雙精度浮點(diǎn)數(shù),保留小數(shù)點(diǎn)后9位)。輸入:輸入僅一行,包括兩個(gè)整數(shù)a和b。輸出:輸出也僅一行,分?jǐn)?shù)a/b的浮點(diǎn)數(shù)值(雙精度浮點(diǎn)數(shù),保留小數(shù)點(diǎn)后9位)。樣例輸入:57樣例輸出:0.714285714第三節(jié)常量和變量:一、常量常量是指在程序中使用的一些具體的數(shù)、字符。在程序運(yùn)行過(guò)程中,其值不能被更改。如123,145.88,'m',TRUE等。1、整型常量:如3、-5、0等。整型常量是表示整數(shù)的常量。有三種表示形式:1)十進(jìn)制形式。如99、-1。2)八進(jìn)制形式。以數(shù)字0打頭,由0-7構(gòu)成,如012,表示八進(jìn)制整數(shù)12,即12(8)。3)十六進(jìn)制形式。以0x打頭,如0x12A,表示十六進(jìn)制整數(shù)12A,即12A(16)。2、實(shí)型常量:如3.1、-6.1E+2(科學(xué)記數(shù)法)。3、字符常量:是用單引號(hào)括起來(lái)的字符,如'k'、'5'、'%'。注意:'a'與"a"表示的含義是不同的,'a'表示一個(gè)字符常量,"a"表示一個(gè)字符串。 一個(gè)常量可以直接調(diào)用(如124,'A'),也可以給常量取個(gè)名字用一個(gè)標(biāo)識(shí)符代表它,這就是符號(hào)常量。其語(yǔ)法格式為: const符號(hào)常量=常量字串; 例如:constdoublePI=3.1415926;例2.5輸入半徑r,求圓的周長(zhǎng)及面積。#include<cstdio>//調(diào)用iostream庫(kù),否則使用printf和scanf語(yǔ)句編譯出錯(cuò)usingnamespacestd;//這個(gè)程序可省略這行constdoublePI=3.1415926;//PI是符號(hào)常量。代表3.1415926intmain(){floatr,c,s;//定義實(shí)型變量printf("r=");//顯示提示符r=scanf("%f",&r);//輸入r的值,&符號(hào)不能漏掉c=2*PI*r;//計(jì)算圓的周長(zhǎng)s=PI*r*r;//計(jì)算圓的面積printf("c=%.2fs=%.2f\n",c,s);//顯示計(jì)算結(jié)果,結(jié)果保留2位小數(shù)} 程序中定義的PI代表常量3.1415926,在編譯源程序時(shí),遇到PI就用常量3.1415926代替,PI可以和常量一樣進(jìn)行運(yùn)算。C++語(yǔ)言規(guī)定,每個(gè)符號(hào)常量的定義占據(jù)一個(gè)書(shū)寫(xiě)行,而且符號(hào)常量不能被再賦值。如果在例2.5中使用以下賦值語(yǔ)句是錯(cuò)誤的。PI=3.1415926;習(xí)慣上,符號(hào)常量名用大寫(xiě),而變量名用小寫(xiě),以便于區(qū)別。使用符號(hào)常量的好處:1)增加了程序的可讀性。如看到例2.5程序中,見(jiàn)到PI就可知道它代表圓周率,定義符號(hào)常量名時(shí)應(yīng)該盡量使用見(jiàn)名知意的常量名。2)增加了程序的易改性。如例2.5程序中,只需改動(dòng)一處,程序中的所有PI都會(huì)自動(dòng)全部代換,做到“一改全改”。變量代表了一個(gè)存儲(chǔ)單元,其中的值是可以改變的,因此稱(chēng)為變量。如游戲中玩家命的條數(shù)最初為3,當(dāng)你死了一次,命減少一條,這里命的條數(shù)就是一個(gè)變量(或者說(shuō)命的條數(shù)存儲(chǔ)在一個(gè)存儲(chǔ)單元中)。一個(gè)程序中可能要使用到若干個(gè)變量,為了區(qū)別不同的變量,必須給每個(gè)變量(存儲(chǔ)單元)取一個(gè)名(稱(chēng)為變量名),該變量(存貯單元)存儲(chǔ)的值稱(chēng)為變量的值,變量中能夠存儲(chǔ)值的類(lèi)型為變量的類(lèi)型。例如游戲中用于存儲(chǔ)“命”的變量,在游戲程序中的存儲(chǔ)命的變量名可取為life,它的類(lèi)型為整型,游戲初始時(shí)這個(gè)變量的值為3。用一個(gè)合法的標(biāo)識(shí)符代表一個(gè)變量。如n,m,rot,total等都是合法變量名。在程序中用到的變量要“先定義后使用”,變量名應(yīng)遵循自定義標(biāo)識(shí)符的命名規(guī)則,并建議使用“見(jiàn)名知義”的原則,即用一些有意義的單詞作為變量名。在C++語(yǔ)言,變量名大小寫(xiě)有區(qū)別。用來(lái)標(biāo)識(shí)變量名、符號(hào)常量名、函數(shù)名、數(shù)組名、類(lèi)型名、文件名的有效字符序列稱(chēng)為標(biāo)識(shí)符。C++語(yǔ)言規(guī)定,標(biāo)識(shí)符只能由字母(包含下劃線“_”)開(kāi)頭,后面的字符可以是字母或數(shù)字。對(duì)于標(biāo)識(shí)符的長(zhǎng)度,不同的C++語(yǔ)言編譯器有不同的規(guī)定,考慮到系統(tǒng)的可移植性,建議變量名的長(zhǎng)度不要超過(guò)8個(gè)字符。例如:month、_age、s2為合法的標(biāo)識(shí)符;m.k.jack、a<=b、9y為不合法的標(biāo)識(shí)符。定義變量的語(yǔ)法格式為:數(shù)據(jù)類(lèi)型變量表例如:inti=5,j,k;//定義i,j,k為整型變量,//i賦初值為5,j,k的初值未知。chara,b,c;//定義a,b,c為字符變量floatx,y,z;//定義x,y,z為實(shí)型變量C++語(yǔ)言允許在定義變量的同時(shí)為變量賦初值。常量是有類(lèi)型的數(shù)據(jù),變量在某一固定時(shí)刻用來(lái)存儲(chǔ)一個(gè)常量,因此也應(yīng)有相應(yīng)的類(lèi)型。如整型變量用來(lái)存儲(chǔ)整數(shù),實(shí)型變量用來(lái)存儲(chǔ)實(shí)數(shù)。變量的類(lèi)型,可以是標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型int、short、long、float、double和char等,也可以是用戶(hù)自定義的各種類(lèi)型。變量一經(jīng)定義系統(tǒng)就在計(jì)算機(jī)內(nèi)存中為其分配一個(gè)存儲(chǔ)空間。在程序中使用到變量時(shí),就在相應(yīng)的內(nèi)存中存入數(shù)據(jù)或取出數(shù)據(jù),這種操作稱(chēng)為變量的訪問(wèn)。【上機(jī)練習(xí)】1.甲流疫情死亡率【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行06】甲流并不可怕,在中國(guó),它的死亡率并不是很高。請(qǐng)根據(jù)截止2009年12月22日各省報(bào)告的甲流確診數(shù)和死亡數(shù),計(jì)算甲流在各省的死亡率。輸入:輸入僅一行,有兩個(gè)整數(shù),第一個(gè)為確診數(shù),第二個(gè)為死亡數(shù)。輸出:輸出僅一行,甲流死亡率,以百分?jǐn)?shù)形式輸出,精確到小數(shù)點(diǎn)后3位。樣例輸入:1043360樣例輸出:0.575%2.計(jì)算多項(xiàng)式的值【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行07】對(duì)于多項(xiàng)式f(x)=ax^3+bx^2+cx+d和給定的a,b,c,d,x,計(jì)算f(x)的值,保留到小數(shù)點(diǎn)后7位。輸入:輸入僅一行,包含5個(gè)實(shí)數(shù),分別是x,及參數(shù)a、b、c、d的值,每個(gè)數(shù)都是絕對(duì)值不超過(guò)100的雙精度浮點(diǎn)數(shù)。數(shù)與數(shù)之間以一個(gè)空格分開(kāi)。輸出:輸出一個(gè)實(shí)數(shù),即f(x)的值,保留到小數(shù)點(diǎn)后7位。樣例輸入:2.311.2223樣例輸出:33.08386923.溫度表達(dá)轉(zhuǎn)化【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行08】利用公式C=5*(F-32)/9(其中C表示攝氏溫度,F(xiàn)表示華氏溫度)進(jìn)行計(jì)算轉(zhuǎn)化,輸入華氏溫度f(wàn),輸出攝氏溫度c,要求精確到小數(shù)點(diǎn)后5位。輸入:輸入一行,包含一個(gè)實(shí)數(shù)f,表示華氏溫度。(f>=-459.67)輸出:輸出一行,包含一個(gè)實(shí)數(shù),表示對(duì)用的攝氏溫度,要求精確到小數(shù)點(diǎn)后5位。樣例輸入:41樣例輸出:5.000004.與圓相關(guān)的計(jì)算【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行09】給出圓的半徑,求圓的直徑、周長(zhǎng)和面積。輸入圓的半徑實(shí)數(shù)r,輸出圓的直徑、周長(zhǎng)、面積,每個(gè)數(shù)保留小數(shù)點(diǎn)后4位。輸入:輸入包含一個(gè)實(shí)數(shù)r(0<r<=10,000),表示圓的半徑。輸出:輸出一行,包含三個(gè)數(shù),分別表示圓的直徑、周長(zhǎng)、面積,數(shù)與數(shù)之間以一個(gè)空格分開(kāi),每個(gè)數(shù)保留小數(shù)點(diǎn)后4位。樣例輸入:3.0樣例輸出:6.000018.849528.27435.計(jì)算并聯(lián)電阻的阻值【1.3編程基礎(chǔ)之算術(shù)表達(dá)式與順序執(zhí)行10】對(duì)于阻值為r1和r2的電阻,其并聯(lián)電阻阻值公式計(jì)算如下:R=1/(1/r1+1/r2)。輸入兩個(gè)電阻阻抗大小,浮點(diǎn)型。輸出并聯(lián)之后的阻抗大小,結(jié)果保留小數(shù)點(diǎn)后2位。輸入:兩個(gè)電阻阻抗大小,浮點(diǎn)型,以一個(gè)空格分開(kāi)。輸出:并聯(lián)之后的阻抗大小,結(jié)果保留小數(shù)點(diǎn)后2位樣例輸入:12樣例輸出:0.67第四節(jié)標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型:C++語(yǔ)言提供了豐富的數(shù)據(jù)類(lèi)型,本節(jié)介紹幾種基本的數(shù)據(jù)類(lèi)型:整型、實(shí)型、字符型。它們都是系統(tǒng)定義的簡(jiǎn)單數(shù)據(jù)類(lèi)型,稱(chēng)為標(biāo)準(zhǔn)數(shù)據(jù)類(lèi)型。字符型字符常量有以下兩種表示法:1、普通表示形式字符常量是由單個(gè)字符組成,所有字符采用ASCII編碼,ASCII編碼共有128個(gè)字符(表2-4)。在程序中,通常用一對(duì)單引號(hào)將單個(gè)字符括起來(lái)表示一個(gè)字符常量。如:'a','A','0'等。如字符A的序號(hào)是65,字符a的序號(hào)是97,字符0的序號(hào)的48。2、轉(zhuǎn)義字符表示形式(初學(xué)者暫不教)轉(zhuǎn)義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉(zhuǎn)義字符如右表所示。例2.6整型數(shù)據(jù)類(lèi)型存儲(chǔ)空間大小分別定義int,short類(lèi)型的變量各一個(gè),并依次輸出它們的存儲(chǔ)空間大小(單位:字節(jié))?!緟⒖汲绦颉?include<iostream>usingnamespacestd;intmain(){ intx; shorty; cout<<sizeof(x)<<""<<sizeof(y)<<endl;//sizeof返回一個(gè)對(duì)象或者類(lèi)型所占的內(nèi)存字節(jié)數(shù) return0;}基于char數(shù)據(jù)的這個(gè)特點(diǎn),它可以和int變量一樣做加減運(yùn)算,例2.7說(shuō)明了這種用法。例2.7大小字母的轉(zhuǎn)換#include<iostream>usingnamespacestd;intmain(){charc1,c2;c1='a';c2='A';cout<<c1<<""<<c2<<endl;c1=c1-32;//小寫(xiě)字母轉(zhuǎn)換大寫(xiě)字母c2=c2+32;//大寫(xiě)字母轉(zhuǎn)換小寫(xiě)字母cout<<c1<<""<<c2<<endl;}運(yùn)行結(jié)果:aAAa【說(shuō)明如下】1)縱向箭頭表示必定會(huì)進(jìn)行的轉(zhuǎn)換,如float型數(shù)據(jù)必先轉(zhuǎn)換為double型數(shù)據(jù),然后與其他操作數(shù)進(jìn)行運(yùn)算。與此類(lèi)似,char型或short型數(shù)據(jù)必先轉(zhuǎn)換為int型數(shù)據(jù),然后進(jìn)行運(yùn)算。2)橫向箭頭表示當(dāng)運(yùn)算對(duì)象為不同類(lèi)型數(shù)據(jù)時(shí)的轉(zhuǎn)換方向,如int型數(shù)據(jù)與unsigned型數(shù)據(jù)進(jìn)行運(yùn)算,int型轉(zhuǎn)換為unsigned型后方可進(jìn)行運(yùn)算。int型與double型進(jìn)行運(yùn)算,int型直接轉(zhuǎn)換為double型后進(jìn)行運(yùn)算,不能理解為先轉(zhuǎn)換為unsignedint型,然后轉(zhuǎn)換為longint型,最后再轉(zhuǎn)換為double型。當(dāng)賦值運(yùn)算符兩側(cè)的數(shù)據(jù)類(lèi)型不同時(shí),需進(jìn)行類(lèi)型轉(zhuǎn)換,這種轉(zhuǎn)換是系統(tǒng)自動(dòng)進(jìn)行的,轉(zhuǎn)換規(guī)則如下:1)float、double型賦值給int型:直接截?cái)嘈?shù)。例如,“inti=f+0.6;”,f的值為4.0,右邊算術(shù)表達(dá)式運(yùn)算后的結(jié)果為4.6的double型數(shù)據(jù),根據(jù)上述轉(zhuǎn)換原則,直接舍棄小數(shù),所以i的值為4。2)int、char型賦值給float、double型:補(bǔ)足有效位以進(jìn)行數(shù)據(jù)類(lèi)型轉(zhuǎn)換。例如:“floatf=4;”,float為7位有效數(shù)字,所以f的值為4.0000000。3)char型(1字節(jié))賦給int型(4字節(jié)):數(shù)值賦給int型的低8位,其它位補(bǔ)0。4)longint型賦值給int型:longint型截?cái)嗟妥止?jié)給int型。5)int型賦值給longint型:賦給longint型的低16位,如果int型的最高位是0,則longint的高16位全為0;如果int型的最高位是1,則longint型的高16位全為1(稱(chēng)為“符號(hào)擴(kuò)展”)。6)unsignedint型賦值給int型:直接傳送數(shù)值。7)非unsignedint型賦值給位數(shù)相同的unsignedint型:直接傳送數(shù)值。在C++語(yǔ)言中,還允許強(qiáng)制類(lèi)型轉(zhuǎn)換,即將某一數(shù)據(jù)的數(shù)據(jù)類(lèi)型轉(zhuǎn)換為指定的另一種數(shù)據(jù)類(lèi)型,強(qiáng)制類(lèi)型轉(zhuǎn)換只是臨時(shí)轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換運(yùn)算符組成的運(yùn)算表達(dá)式的一般形式為:(類(lèi)型名)(表達(dá)式)例如:已知有變量定義“intb=7;floata=2.5,c=4.7;”,求下面算術(shù)表達(dá)式的值。a+(int)(b/3*(int)(a+c)/2.0)%4根據(jù)運(yùn)算符的結(jié)合性規(guī)則,表達(dá)式要自左至右執(zhí)行,b/3為2,2*(int)(a+c)為14,14/2.0為7.0,強(qiáng)制類(lèi)型轉(zhuǎn)換后為7,7%4為3,a的值2.5與3相加,最終結(jié)果為5.5。1.整型數(shù)據(jù)類(lèi)型存儲(chǔ)空間大小【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換01】分別定義int,short類(lèi)型的變量各一個(gè),并依次輸出它們的存儲(chǔ)空間大小(單位:字節(jié))。輸入:無(wú)。輸出:一行,兩個(gè)整數(shù),分別是兩個(gè)變量的存儲(chǔ)空間大小,用一個(gè)空格隔開(kāi)。2.浮點(diǎn)型數(shù)據(jù)類(lèi)型存儲(chǔ)空間大小【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換02】分別定義float,double類(lèi)型的變量各一個(gè),并依次輸出它們的存儲(chǔ)空間大小(單位:字節(jié))。輸入:無(wú)。輸出:一行,兩個(gè)整數(shù),分別是兩個(gè)變量的存儲(chǔ)空間大小,用一個(gè)空格隔開(kāi)。3.其他數(shù)據(jù)類(lèi)型存儲(chǔ)空間大小【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換03】分別定義bool,char類(lèi)型的變量各一個(gè),并依次輸出它們的存儲(chǔ)空間大小(單位:字節(jié))。輸入:無(wú)。輸出:一行,兩個(gè)整數(shù),分別是兩個(gè)變量的存儲(chǔ)空間大小,用一個(gè)空格隔開(kāi)。4.浮點(diǎn)數(shù)向零舍入【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換06】輸入一個(gè)單精度浮點(diǎn)數(shù),將其向零舍入到整數(shù)。說(shuō)明:向零舍入的含義是,正數(shù)向下舍入,負(fù)數(shù)向上舍入。提示:可以使用強(qiáng)制類(lèi)型轉(zhuǎn)換來(lái)實(shí)現(xiàn)。輸入:輸出:一個(gè)單精度浮點(diǎn)數(shù)。一個(gè)整數(shù),即向零舍入到整數(shù)的結(jié)果。樣例輸入:2.3樣例輸出:25.打印ASCII碼【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換07】輸入一個(gè)除空格以外的可見(jiàn)字符(保證在函數(shù)scanf中可使用格式說(shuō)明符%c讀入),輸出其ASCII碼。輸入:一個(gè)除空格以外的可見(jiàn)字符。輸出:一個(gè)十進(jìn)制整數(shù),即該字符的ASCII碼。樣例輸入:A樣例輸出:656.打印字符【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換08】輸入一個(gè)整數(shù),即字符的ASCII碼,保證存在對(duì)應(yīng)的可見(jiàn)字符。輸出相對(duì)應(yīng)的字符。輸入:一個(gè)整數(shù),即字符的ASCII碼,保證存在對(duì)應(yīng)的可見(jiàn)字符。輸出:一行,包含相應(yīng)的字符。樣例輸入:65樣例輸出:A7.整型與布爾型的轉(zhuǎn)換【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換09】將一個(gè)整型變量的值賦給一個(gè)布爾型變量,再將這個(gè)布爾型變量的值賦給一個(gè)整型變量,得到的值是多少?輸入:一個(gè)整型范圍內(nèi)的整數(shù),即初始時(shí)整型變量的值。輸出:一個(gè)整數(shù),經(jīng)過(guò)上述過(guò)程后得到的結(jié)果。樣例輸入:3樣例輸出:17.整型與布爾型的轉(zhuǎn)換【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換09】將一個(gè)整型變量的值賦給一個(gè)布爾型變量,再將這個(gè)布爾型變量的值賦給一個(gè)整型變量,得到的值是多少?輸入:一個(gè)整型范圍內(nèi)的整數(shù),即初始時(shí)整型變量的值。輸出:一個(gè)整數(shù),經(jīng)過(guò)上述過(guò)程后得到的結(jié)果。樣例輸入:3樣例輸出:18.Hello,World!的大小【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換10】在上一章里,我們?cè)?jīng)輸出過(guò)的“Hello,World!”嗎?它雖然不是本章所涉及的基本數(shù)據(jù)類(lèi)型的數(shù)據(jù),但我們同樣可以用sizeof函數(shù)獲得它所占用的空間大小。輸入:無(wú)。輸出:一個(gè)整數(shù),即“Hello,World!”的大小。第五節(jié)數(shù)據(jù)輸入輸出:C++語(yǔ)言中沒(méi)有提供專(zhuān)門(mén)的輸入輸出語(yǔ)句,所有的輸入輸出都是調(diào)用標(biāo)準(zhǔn)庫(kù)函數(shù)中的輸入輸出函數(shù)來(lái)實(shí)現(xiàn)的。在使用時(shí),應(yīng)在源程序的開(kāi)頭使用如下語(yǔ)句:#include<iostream>#include<cstdio>usingnamespacestd;C++語(yǔ)言標(biāo)準(zhǔn)函數(shù)庫(kù)提供了許多標(biāo)準(zhǔn)輸入、輸出函數(shù),本節(jié)將介紹6個(gè)最基本的輸入、輸出函數(shù):字符輸入getchar,字符輸出putchar,格式化輸入scanf,格式化輸出prinf,流輸入cin,流輸出cout。getchar函數(shù)是接收從鍵盤(pán)輸入的單個(gè)字符數(shù)據(jù)。它是一個(gè)無(wú)參函數(shù),其語(yǔ)法格式為:getchar();【說(shuō)明】1)通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語(yǔ)句。例如:charch;ch=getchar();2)getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。3)輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。4)getchar函數(shù)等待用戶(hù)輸入,直到按回車(chē)鍵才結(jié)束,可用于暫停程序的運(yùn)行,直到輸入一個(gè)回車(chē)鍵。5)如果在程序中連續(xù)有兩個(gè)以上getchar()函數(shù),應(yīng)該一次性輸入所需字符,最后再按回車(chē)鍵,否則會(huì)把回車(chē)作為一個(gè)字符傳給后面的getchar()函數(shù)。例2.8利用getchar函數(shù)接收鍵盤(pán)輸入。#include<cstdio>#include<iostream>usingnamespacestd;intmain(){charch;ch=getchar();//讀入字符cout<<"input="<<ch<<endl;}putchar函數(shù)是字符輸出函數(shù),功能是向標(biāo)準(zhǔn)輸出設(shè)備(如顯示器)輸出單個(gè)字符數(shù)據(jù),其語(yǔ)法格式為:putchar(ch);//其中,ch為一個(gè)字符變量或常量。例2.9利用putchar函數(shù)輸出字符。#include<cstdio>#include<iostream>usingnamespacestd;intmain(){charc='B';//定義字符變量c并賦值'B'putchar(c);//輸出該字符putchar('\x42');//用轉(zhuǎn)義字符輸出字母'B'putchar(0x42);//用16進(jìn)制ASCII碼值輸出字母'B'putchar(66);//用10進(jìn)制ASCII碼值輸出字母'B'}運(yùn)行結(jié)果:BBBB流插入運(yùn)算符<<和cout結(jié)合在一起使用,可向顯示器屏幕輸出數(shù)據(jù)。格式1:功能:它把表達(dá)式的值輸出到屏幕上,該表達(dá)式可以是各種基本類(lèi)型的常量、變量或者由它們組成的表達(dá)式。輸出時(shí),程序根據(jù)表達(dá)式的類(lèi)型和數(shù)值大小,采用不同的默認(rèn)格式輸出,大多數(shù)情況下可滿足要求。若要輸出多個(gè)數(shù)據(jù),可以連續(xù)使用流插入運(yùn)算符格式2:功能:將表達(dá)式的內(nèi)容一項(xiàng)接一項(xiàng)的輸出到屏幕上。四、通過(guò)cin流讀入數(shù)據(jù)流讀取運(yùn)算符>>和cin結(jié)合在一起使用,可從鍵盤(pán)輸入數(shù)據(jù)。格式1:功能:是從鍵盤(pán)讀取一個(gè)數(shù)據(jù)并將其賦給“變量”。說(shuō)明:在使用cin輸入的時(shí)候必須考慮后面的變量類(lèi)型。如果你要求輸入一個(gè)整數(shù),在>>后面必須跟一個(gè)整型變量,如果要求一個(gè)字符,后面必須跟一個(gè)字符型變量。例2.14聲明一個(gè)整型變量age然后等待用戶(hù)從鍵盤(pán)輸入到cin并將輸入值存儲(chǔ)在這個(gè)變量中。 intage; cin>>age;也可以連續(xù)使用>>,實(shí)現(xiàn)從鍵盤(pán)對(duì)多個(gè)變量輸入數(shù)據(jù)。格式2:這要求從鍵盤(pán)輸入的數(shù)據(jù)的個(gè)數(shù)、類(lèi)型與變量相一致。從鍵盤(pán)讀取數(shù)據(jù)時(shí),各數(shù)據(jù)之間要有分隔符,分隔符可以是一個(gè)或多個(gè)空格鍵、回車(chē)鍵等。例2.15用cin讓用戶(hù)輸入多個(gè)數(shù)據(jù)。 cin>>a>>b;等同于: cin>>a; cin>>b;五、格式化輸入函數(shù)scanfscanf函數(shù)的功能是格式化輸入任意數(shù)據(jù)列表,其一般調(diào)用格式為:scanf(格式控制符,地址列表)【說(shuō)明】1)地址列表中給出各變量的地址,可以為變量的地址,也可以為字符串的首地址。2)格式控制符由%和格式符組成,作用是將要輸入的字符按指定的格式輸入,如%d,%c等六、格式化輸出函數(shù)printfprintf函數(shù)的功能是格式化輸出任意數(shù)據(jù)列表,其一般調(diào)用格式為:printf(格式控制符,輸出列表)【說(shuō)明】1)格式控制由輸入格式說(shuō)明和普通字符組成,必須用雙引號(hào)括起來(lái)?!窀袷秸f(shuō)明由%和格式字符組成,作用是將要輸出的字符轉(zhuǎn)換為指定的格式,如%d,%c等?!衿胀ㄗ址窃谳敵鰰r(shí)原樣輸出的字符,一般在顯示時(shí)起提示作用。2)輸出列表是需要輸出的一組數(shù)據(jù)(可以為表達(dá)式和變量),各參數(shù)之間用“,”分開(kāi)。要求格式說(shuō)明和各輸出項(xiàng)在數(shù)量和類(lèi)型上要一一對(duì)應(yīng),否則將會(huì)出現(xiàn)意想不到的錯(cuò)誤。例2.12某幼兒園里,有5個(gè)小朋友編號(hào)為1,2,3,4,5,他們按自己的編號(hào)順序圍坐在一張圓桌旁。他們身上都有若干個(gè)糖果(鍵盤(pán)輸入),現(xiàn)在他們做一個(gè)分糖果游戲。從1號(hào)小朋友開(kāi)始,將自己的糖果均分三份(如果有多余的糖果,則立即吃掉),自己留一份,其余兩份分給他的相鄰的兩個(gè)小朋友。接著2號(hào)、3號(hào)、4號(hào)、5號(hào)小朋友同樣這么做。問(wèn)一輪后,每個(gè)小朋友手上分別有多少糖果。【分析】題目中有5位小朋友,他們初始時(shí)糖果的數(shù)目不確定,用a,b,c,d,e分別存儲(chǔ)5個(gè)小朋友的糖果數(shù),初始值由鍵盤(pán)輸入。程序如下:#include<cstdio>usingnamespacestd;intmain(){inta,b,c,d,e;scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);a=a/3;b=b+a;e=e+a; //1號(hào)小朋友分糖b=b/3;c=c+b;a=a+b; //2號(hào)小朋友分糖c=c/3;d=d+c;b=b+c; //3號(hào)小朋友分糖d=d/3;e=e+d;c=c+d; //4號(hào)小朋友分糖e=e/3;a=a+e;d=d+e; //5號(hào)小朋友分糖printf("%5d%5d%5d%5d%5d\n",a,b,c,d,e);//%5d按5位寬度輸出return0;}1、cin和cout在DevC++中只能調(diào)用<iostream>庫(kù),而其他輸入輸出格式要調(diào)用<stdio.h>庫(kù)或<cstdio>庫(kù)。2、cin和cout屬于C++的概念,調(diào)用時(shí)涉及輸入輸出流,而scanf和printf屬于C的概念,是C語(yǔ)言的標(biāo)準(zhǔn)輸入/輸出庫(kù)中的函數(shù),所以在時(shí)效上,scanf和printf優(yōu)于cin、cout,對(duì)于大數(shù)據(jù)的輸入輸出,通常情況下應(yīng)該用scanf、printf。3、對(duì)于普通數(shù)據(jù)的輸入輸出,cin和cout比較方便,而在格式化方面,scanf和printf比較容易。cin效率比scanf低很多,尤其輸入數(shù)據(jù)達(dá)到20萬(wàn)以上時(shí)非常明顯,在100萬(wàn)時(shí)cin讀入就會(huì)超時(shí)。4、scanf和printf也缺點(diǎn),cin和cout能夠自動(dòng)識(shí)別變量的數(shù)據(jù)類(lèi)型,因此,在進(jìn)行輸入輸出時(shí),不需要指定數(shù)據(jù)類(lèi)型,printf和scanf函數(shù)在輸入輸出時(shí)需指定數(shù)據(jù)類(lèi)型。1.輸出保留3位小數(shù)的浮點(diǎn)數(shù)【1.1編程基礎(chǔ)之輸入輸出04】讀入一個(gè)單精度浮點(diǎn)數(shù),保留3位小數(shù)輸出這個(gè)浮點(diǎn)數(shù)。輸入:只有一行,一個(gè)單精度浮點(diǎn)數(shù)。輸出:也只有一行,讀入的單精度浮點(diǎn)數(shù)。樣例輸入:12.34521樣例輸出:12.3452.輸出保留12位小數(shù)的浮點(diǎn)數(shù)【1.1編程基礎(chǔ)之輸入輸出05】讀入一個(gè)雙精度浮點(diǎn)數(shù),保留12位小數(shù),輸出這個(gè)浮點(diǎn)數(shù)。輸入:只有一行,一個(gè)雙精度浮點(diǎn)數(shù)。輸出:也只有一行,保留12位小數(shù)的浮點(diǎn)數(shù)。樣例輸入:3.1415926535798932樣例輸出:3.1415926535803.空格分隔輸出【1.1編程基礎(chǔ)之輸入輸出06】讀入一個(gè)字符,一個(gè)整數(shù),一個(gè)單精度浮點(diǎn)數(shù),一個(gè)雙精度浮點(diǎn)數(shù),然后按順序輸出它們,并且要求在他們之間用一個(gè)空格分隔。輸出浮點(diǎn)數(shù)時(shí)保留6位小數(shù)。輸入:第一行是一個(gè)字符;第二行是一個(gè)整數(shù);第三行是一個(gè)單精度浮點(diǎn)數(shù);第四行是一個(gè)雙精度浮點(diǎn)數(shù)。輸出:輸出字符、整數(shù)、單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù),之間用空格分隔。樣例輸入:樣例輸出:aa122.3000003.200000122.33.24.輸出浮點(diǎn)數(shù)【1.1編程基礎(chǔ)之輸入輸出07】讀入一個(gè)雙精度浮點(diǎn)數(shù),分別按輸出格式“%f”,“%f”保留5位小數(shù),“%e”和“%g”的形式輸出這個(gè)整數(shù),每次在單獨(dú)一行上輸出。輸入:一個(gè)雙精度浮點(diǎn)數(shù)。輸出:第一行是按“%f”輸出的雙精度浮點(diǎn)數(shù);第二行是按“%f”保留5位小數(shù)輸出的雙精度浮點(diǎn)數(shù);第三行是按“%e”輸出的雙精度浮點(diǎn)數(shù);第四行是按“%g”輸出的雙精度浮

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論