




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