(完整版)信息學(xué)奧賽簡介NOIP及C++基礎(chǔ)知識夏令營第一天順序語句_第1頁
(完整版)信息學(xué)奧賽簡介NOIP及C++基礎(chǔ)知識夏令營第一天順序語句_第2頁
(完整版)信息學(xué)奧賽簡介NOIP及C++基礎(chǔ)知識夏令營第一天順序語句_第3頁
(完整版)信息學(xué)奧賽簡介NOIP及C++基礎(chǔ)知識夏令營第一天順序語句_第4頁
(完整版)信息學(xué)奧賽簡介NOIP及C++基礎(chǔ)知識夏令營第一天順序語句_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

(順序語句)夏令營講義信息學(xué)奧賽介紹延遲符奧賽知識延遲符信息學(xué)奧賽知識一.信息學(xué)奧林匹克競賽介紹面向全國中學(xué)生的一種競賽活動旨在激發(fā)中學(xué)生在計算機科學(xué)方面的興趣培養(yǎng)他們的邏輯思維能力給那些有才華的學(xué)生提供相互交流和學(xué)習(xí)的機會通過競賽和相關(guān)的活動培養(yǎng)和選拔優(yōu)秀的計算機后備人才。延遲符信息學(xué)奧賽知識二、信息學(xué)奧林匹克競賽賽事1.NOIP(全國信息學(xué)奧林匹克聯(lián)賽)

NationalOlympiadinInformaticsinProvinces2.NOI(全國信息學(xué)奧林匹克競賽)

NationalOlympiadinInformatics3.IOI(國際信息學(xué)奧林匹克競賽)

InternationalOlympiadinInformatics延遲符信息學(xué)奧賽知識NOIP聯(lián)賽初賽:10月中旬(周六/周日下午2:30-4:30)筆試(100分)資格賽,地市獨立組織(全國統(tǒng)一命題,統(tǒng)一時間)復(fù)賽:11月份中旬(第二周,周六周日上午3.5個小時)上機編程兩試:每試3個題目,300分,共600分。提交源程序,黑盒子測試法延遲符信息學(xué)奧賽知識掌握一門計算機程序設(shè)計語言

(Pascal/C/C++)數(shù)據(jù)結(jié)構(gòu)(線性表、樹、圖等)算法(搜索、圖論、動規(guī)等)三、學(xué)習(xí)內(nèi)容預(yù)知識:程序設(shè)計、算法和C++第一章:順序結(jié)構(gòu)1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.4基本語句程序設(shè)計、算法和C++延遲符預(yù)知識延遲符預(yù)知識:程序設(shè)計、算法和C++0.1、程序設(shè)計程序設(shè)計

是給出解決特定問題程序的過程,是軟件構(gòu)造活動中的重要組成部分。延遲符預(yù)知識:程序設(shè)計、算法和C++0.2、算法算法(Algorithm)是指解題方案的準(zhǔn)確而完整的描述,是一系列解決問題的清晰指令,算法代表著用系統(tǒng)的方法描述解決問題的策略機制。有窮性確切性輸入項(≥0)輸出項(≥1)可行性算法應(yīng)該具有五個重要特征延遲符預(yù)知識:程序設(shè)計、算法和C++0.2、算法描述算法的方法有多種,常用的有自然語言、結(jié)構(gòu)化流程圖、偽代碼和PAD圖等,其中最普遍的是流程圖。順序結(jié)構(gòu)流程圖循環(huán)for語句流程圖延遲符預(yù)知識:程序設(shè)計、算法和C++0.3、計算機程序計算機程序

是用計算機語言編寫的能完成一定功能的指令序列。延遲符預(yù)知識:程序設(shè)計、算法和C++0.4、計算機語言計算機語言是計算機能識別的指令及其使用規(guī)則的集合。計算機語言有很多種:例如:Fortran、C、Java、VB、Python、PHP、C++等。延遲符預(yù)知識:程序設(shè)計、算法和C++0.5、C++語言1、C++是一種歷史悠久的語言。1983年,,貝爾實驗室的BjarneStroustrup在C語言基礎(chǔ)上推出了C++。C++進(jìn)一步擴(kuò)充和完善了C語言,是一種面向?qū)ο蟮某绦蛟O(shè)計語言。2、C++是應(yīng)用廣泛、深受歡迎的語言,流行程序排行第三\四。排在前四名的分別是C、Java、C++和ObjectiveC。3、C++兼容C,是面向?qū)ο蟮恼Z言,適合編寫系統(tǒng)程序。4、C++標(biāo)準(zhǔn)的版本。第一個標(biāo)準(zhǔn),C++98,1998年發(fā)布;第二個標(biāo)準(zhǔn)C++03,2003年發(fā)布;第三個標(biāo)準(zhǔn),C++11,2011年發(fā)布;下一個標(biāo)準(zhǔn)可能是C++15、C++17。本課程主要講標(biāo)準(zhǔn)的C++。延遲符預(yù)知識:程序設(shè)計、算法和C++0.6、何謂好的程序符合以下兩條,即是好的程序:第一:能完成要求的功能。第二:良好的性能。(包括:1、可讀性好,易于理解。2、節(jié)省時間,節(jié)約空間。3、可靠性高,易維護(hù)。)延遲符預(yù)知識:程序設(shè)計、算法和C++0.7、C++程序C++的程序是結(jié)構(gòu)化程序設(shè)計語言。結(jié)構(gòu)化程序包括順序、選擇、循環(huán)三種控制結(jié)構(gòu)。順序結(jié)構(gòu)就是按照語句的先后順序依次招待程序的方式。順序選擇循環(huán)結(jié)構(gòu)化程序預(yù)知識:程序設(shè)計、算法和C++引例1:最簡單的程序:輸出:Helloworld!【參考程序】:#include<iostream>//以符號“#”開頭的行稱為編譯預(yù)處理行usingnamespacestd;//為變量名開辟內(nèi)存空間intmain()//主程序或主函數(shù){//程序開始

cout<<"Helloword!";//輸出”Helloword!”return0;//結(jié)束}//程序結(jié)束預(yù)知識:程序設(shè)計、算法和C++引例2:計算正方形的面積和周長【參考程序】:#include<iostream>//以符號“#”開頭的行稱為編譯預(yù)處理行usingnamespacestd;//為變量名開辟內(nèi)存空間intmain()//主程序或主函數(shù){//程序開始inta,s,c;//變量聲明cout<<"Pleaseinputa:"<<endl;//輸出流輸出字符串常量cin>>a;//輸入流輸入變量as=a*a;//求正方形面積scout<<"s="<<s<<endl;//輸出正方形面積c=4*a;//求正方形周長ccout<<"c="<<c<<endl;//輸出正方形周長return0;}//主程序結(jié)束【問題分析】:正方形的面積等于邊長乘以邊長,周長等于4倍的邊長?!舅惴ㄔO(shè)計】:正方形的邊長用a表示,面積用s表示,周長用c表示,則s=a*a,c=4*a?!菊f明】:所謂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。延遲符預(yù)知識:程序設(shè)計、算法和C++【DevC++版本注意事項】在5.0版本DevC++中,<iostream>不是萬能庫,不包括cstdio,cstring,cstdlib,其他常用的min,max函數(shù)也不保證包括,需要注意如下幾個細(xì)節(jié):①、getchar()、putchar()、gets()、puts()、stdin、stdout、freopen()、fclose()、scanf()、printf()在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é)決定成敗”。順序結(jié)構(gòu)延遲符第一章延遲符1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義知識點:

各種標(biāo)準(zhǔn)數(shù)據(jù)類型的分類、定義標(biāo)識符、占字節(jié)數(shù)、數(shù)值范圍、表現(xiàn)形式和應(yīng)用,常量和變量的概念、分類、語法格式說明和應(yīng)用。延遲符1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義1.1.1、標(biāo)準(zhǔn)數(shù)據(jù)類型知識點:

C++語言提供了豐富的數(shù)據(jù)類型。本節(jié)介紹幾種基本的數(shù)據(jù)類型:整型、實型、字符型。它們都是系統(tǒng)定義的簡單數(shù)據(jù)類型,稱為標(biāo)準(zhǔn)數(shù)據(jù)類型。整型字符型實型標(biāo)準(zhǔn)數(shù)據(jù)類型1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義

1、整型(integer)在C++語言中,整型類型標(biāo)識符為int。根據(jù)整型變量的取值范圍又可將整型變量定義為以下8種整型類型:數(shù)據(jù)類型定義標(biāo)識符占字節(jié)數(shù)數(shù)值范圍數(shù)值范圍短整型short[int]2(16位)-32768~32767-215~215-1整型[long]int4(32位)-2147483648~2147483647-231~231-1長整型long[int]4(32位)-2147483648~2147483647-231~231-1超長整型longlong[int]8(64位)-9223372036854775808~9223372036854775807-263~263-1無符號整型unsigned[int]2(16位)0~655350~216-1無符號短整型unsignedshort[int]2(16位)0~655350~216-1無符號長整型unsignedlong[int]4(32位)0~42949672950~232-1無符號超長整型Unsignedlonglong8(64位)0~184467440737095516150~264-11.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義

2、實型(real)數(shù)據(jù)類型定義標(biāo)識符數(shù)值范圍占字節(jié)數(shù)有效位數(shù)單精度實型float-3.4E+38~3.4E+384(32位)6~7位雙精度實型double-1.7E+308~1.7E+3088(64位)15~16位長雙精度實型longdouble-3.4E+4932~1.1E+493216(128位)18~19位布爾變量bool真true或假false1(8位)

1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義3、字符型(char)字符常量有以下兩種表示法:⑴、普通表示形式字符常量是由單個字符組成,所有字符采用ASCII編碼,ASCII編碼共有128個字符(表2-4)。在程序中,通常用一對單引號將單個字符括起來表示一個字符常量。如:'a','A','0'等。如字符A的序號是65,字符a的序號是97,字符0的序號的48。序號字符序號字符序號字符序號字符序號字符序號字符32空格48064@80P96`112p33!49165A81Q97a113q34”50266B82R98b114r35#51367C83S99c115s36$52468D84T100d116t37%53569E85U101e117u38&54670F86V102f118v39'55771G87W103g119w40(56872H88X104h120x41)57973I89Y105i121y42*58:74J90Z106j122z43+59;75K91[107k123{44,60<

76L92\108l124|45-61=77M93]109m125}46.62>

78N94^110n126~47/63?79O95_111o127deLASCII碼表1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義3、字符型(char)⑵、轉(zhuǎn)義字符表示形式。轉(zhuǎn)義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉(zhuǎn)義字符如右表所示。轉(zhuǎn)義字符含義'\n'換行'\t'水平制表'\b'退格'\r'回車(不換行)'\0'空字符'\’'單引號'\”'雙引號'\\'一個反斜杠字符'\ddd'1~3位八進(jìn)制數(shù)所代表的字符'\xhh'1~2位十六進(jìn)制數(shù)所代表的字符1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義例1:整型數(shù)據(jù)類型存儲空間大小【參考程序】:#include<iostream>usingnamespacestd;intmain(){ intx; shorty; cout<<sizeof(x)<<""<<sizeof(y)<<endl;//sizeof返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)return0;}分析:分別定義int,short類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。整型數(shù)據(jù)類型存儲空間大小【說明】:

sizeof(表達(dá)式)除變量外,還可以是常量和各種標(biāo)準(zhǔn)類型。C++默認(rèn)整型常量和實型常量為int型和double型,所以長度為4和8?;赾har數(shù)據(jù)在內(nèi)存中存儲的是整型數(shù)值,所以它可以和int變量一樣做加減運算,下面這個例子說明了這種用法。1.1標(biāo)準(zhǔn)數(shù)據(jù)類型和變量的定義例2:大小字母的轉(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é)果:

aA

Aa【說明】:因為所有小寫字母的ASCII值要比對應(yīng)大寫字母的ASCII值大32,所以c1減去32后便得到原來字母的大寫形式。反之,c2加上32后便得到原來字母的小寫形式。延遲符

1.1.2、常量和變量

1、常量的概念及分類常量:

是指在程序中使用的一些具體的數(shù)、字符。在程序運行過程中,其值不能被更改。如123,145.88,'m',TRUE等。延遲符

1.1.2、常量和變量

1、常量的概念及分類常量:

是指在程序中使用的一些具體的數(shù)、字符。在程序運行過程中,其值不能被更改。如123,145.88,'m',TRUE等。

1.1.2、常量和變量

1、常量的概念及分類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、實型常量:如3.1、-6.1E+2(科學(xué)記數(shù)法)。3、字符常量:是用單引號括起來的字符,如'k'、'5'、'%'。

注意:'a'與"a"表示的含義是不同的,'a'表示一個字符常量,"a"表示一個字符串。1.1.2、常量和變量

2、常量的說明一個常量可以直接調(diào)用(如124,'A'),也可以給常量取個名字用一個標(biāo)識符代表它,這就是符號常量。其語法格式為:

const符號常量=常量字串;例如:constdoublePI=3.1415926;1.1.2、常量和變量例:輸入半徑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ù)}分析:圓的周長c=2*∏*r,圓的面積s=∏*r*r,在這里=∏是希臘字母,是常量。在程序中定義PI代表常量3.1415926,在編譯源程序時,遇到PI就用常量3.1415926代替,PI可以和常量一樣進(jìn)行運算。C++語言規(guī)定,每個符號常量的定義占據(jù)一個書寫行,而且符號常量不能被再賦值?!菊f明】:

1、程序中定義的PI代表常量3.1415926,在編譯源程序時,遇到PI就用常量3.1415926代替,PI可以和常量一樣進(jìn)行運算。C++語言規(guī)定,每個符號常量的定義占據(jù)一個書寫行,而且符號常量不能被再賦值。如果在上例中使用以下賦值語句是錯誤的。PI=3.1415926;2、習(xí)慣上,符號常量名用大寫,而變量名用小寫,以便于區(qū)別。

1.1.2、常量和變量3、變量的概念及變量名

變量代表了一個存儲單元,其中的值是可以改變的,因此稱為變量。一個程序中可能要使用到若干個變量,為了區(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)識符。

1.1.2、常量和變量4、變量的類型和語法格式變量在某一固定時刻用來存儲一個常量,因此也應(yīng)有相應(yīng)的類型。如整型變量用來存儲整數(shù),實型變量用來存儲實數(shù)。變量的類型,可以是標(biāo)準(zhǔn)數(shù)據(jù)類型int、short、long、float、double和char等,也可以是用戶自定義的各種類型。1.1.2、常量和變量變量的語法格式:數(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++語言允許在定義變量的同時為變量賦初值。課后訓(xùn)練:溫度表達(dá)轉(zhuǎn)化。利用公式C=5*(F-32)/9(其中C表示攝氏溫度,F(xiàn)表示華氏溫度)進(jìn)行計算轉(zhuǎn)化,輸入華氏溫度f,輸出攝氏溫度c,要求精確到小數(shù)點后5位。輸入:

輸入一行,包含一個實數(shù)f,表示華氏溫度。(f>=-459.67)輸出:

輸出一行,包含一個實數(shù),表示對用的攝氏溫度,要求精確到小數(shù)點后5位。樣例輸入:41樣例輸出:5.00000延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式知識點:各類運算符的組成及參與運算的優(yōu)先級;常用標(biāo)準(zhǔn)函數(shù)的形式及應(yīng)用;表達(dá)式的概念及不同數(shù)據(jù)類型之間運算之間的轉(zhuǎn)換。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.1運算符的分類1.算術(shù)運算符用于各類數(shù)值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(或稱模運算,%)、自增(++)、自減(--)共七種。⑴模運算符求余的運算符“%”也稱為模運算符,是雙目運算符,兩個操作數(shù)都是整型數(shù)。a%b的值就是a除以b的余數(shù),5%2余數(shù)為1。其操作對象只能是整型數(shù),而其他四種運算符對int,float,double,char都適用。⑵除法運算符

C++語言的除法運算符有一些特殊之處,即如果a、b是兩個整數(shù)類型的變量或常量,那么a/b的值是a除以b的商。例如,5/2的值是2,而不是2.5,而5.0/2或5/2.0的值是2.5。⑶自增自減運算符自增、自減運算符用來對一個操作數(shù)進(jìn)行加1或減1運算,其結(jié)果仍然賦予該操作數(shù),而且參加運算的操作數(shù)必須是變量,而不能是常量或表達(dá)式。

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。⑷復(fù)合算術(shù)賦值。例如,a+=1,相當(dāng)于a=a+1;a+=b,相當(dāng)于a=a+b。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.1運算符的分類2.關(guān)系運算符

用于比較運算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。關(guān)系運算符用于數(shù)值的大小比較。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種,它們都是雙目運算符。關(guān)系運算符運算的結(jié)果是整型,值只有兩種:0或1,0代表關(guān)系不成立,1代表關(guān)系成立。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.1運算符的分類3.邏輯運算符

用于邏輯運算。包括與(&&)、或(||)、非(!)三種。按照運算符的優(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。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.1運算符的分類4.位操作運算符參與運算的量,按二進(jìn)制位進(jìn)行運算。包括位與(&)、位或(|)、位非(~)、位異或(^)、左移(<<)、右移(>>)六種。把數(shù)轉(zhuǎn)化為二進(jìn)制按二進(jìn)制的位進(jìn)行運算。5.賦值運算符用于賦值運算,分為簡單賦值(=)、復(fù)合算術(shù)賦值(+=,-=,*=,/=,%=)和復(fù)合位運算賦值(&=,|=,^=,>>=,<<=)三類共十一種。簡寫含義

簡寫含義a+=ba=a+b

a&=ba=a&ba-=ba=a-b

a|=ba=a|ba*=ba=a*b

a^=ba=a^ba/=ba=a/b

a<<=ba=a<<ba%=ba=a%b

a>>=ba=a>>b延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.1運算符的分類6.條件運算符這是一個三目運算符,用于條件求值(?:)。在選擇結(jié)構(gòu)中可學(xué)到此知識。7.逗號運算符用于把若干表達(dá)式組合成一個表達(dá)式(,)。例如:y=(a=a+1,b=b+1,c=c+1),結(jié)果為c的值。8.指針運算符用于取內(nèi)容(*)和取地址(&)二種運算。9.求字節(jié)數(shù)運算符用于計算數(shù)據(jù)類型所占的字節(jié)數(shù)(sizeof)。10.特殊運算符有括號(),下標(biāo)[],成員(->,.)等幾種。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式(二)運算符的優(yōu)先級算術(shù)運算符、關(guān)系運算符、邏輯運算符和賦值運算符的優(yōu)先級如下:賦值運算符邏輯運算符關(guān)系運算符算術(shù)運算符低高關(guān)系運算符的結(jié)合性為:自左至右。根據(jù)以上優(yōu)先級和結(jié)合性,計算出以下表達(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延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式(二)運算符的優(yōu)先級算術(shù)運算符、關(guān)系運算符、邏輯運算符和賦值運算符的優(yōu)先級如下:賦值運算符邏輯運算符關(guān)系運算符算術(shù)運算符低高關(guān)系運算符的結(jié)合性為:自左至右。根據(jù)以上優(yōu)先級和結(jié)合性,計算出以下表達(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的值為01.2.2典型例題例1:變量自加運算

【參考程序】:

#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=

z2=【說明】:在運行z1=y-(x++),是先算減法,x再自加1,所以結(jié)果為1。在z2=y-(++x),是x選加1,然后再算減法。1.2.2典型例題例2:位運算【參考程序】:#include<iostream>usingnamespacestd;intmain(){inta=105,b=0x5E;intc;cout<<dec<<a<<"\t"<<hex<<a<<"\t"<<oct<<a<<endl;//輸出十進(jìn)制、十六進(jìn)制、八進(jìn)制的a。cout<<dec<<b<<"\t"<<hex<<b<<"\t"<<oct<<b<<endl;c=a&b;//a和b位與cout<<dec<<c<<"\t"<<hex<<c<<"\t"<<oct<<c<<endl;c=a|b;//a和b位或cout<<dec<<c<<"\t"<<hex<<c<<endl;c=a^b;//a和b位異或cout<<dec<<c<<"\t"<<hex<<c<<endl;c=~a;//位非cout<<dec<<c<<"\t"<<hex<<c<<endl;c=a<<2;//a左移2位cout<<dec<<c<<"\t"<<hex<<c<<endl;c=a>>2;//a右移2位cout<<dec<<c<<"\t"<<hex<<c<<endl;cout<<dec;return0;}1、本程序是對a、b進(jìn)行了位運算,“dec”十進(jìn)制縮寫,“hex”十六進(jìn)制縮寫,“oct”八進(jìn)制縮寫。

2、a為十進(jìn)制數(shù),b十六進(jìn)制數(shù),

注意:單目運算符是運算所需變量為一個的運算符,又叫一元運算符。它的運算級別是最高的。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.2、常用函數(shù)函數(shù)名格式功能說明例子絕對值函數(shù)abs(x)求一個數(shù)x的絕對值abs(-5)=5自然數(shù)指數(shù)函數(shù)exp(x)求實數(shù)x的自然指數(shù)exexp(1)=2.718282向下取整floor(x)求不大于實數(shù)x的最大整數(shù)floor(3.14)=3向上取整ceil(x)求不小于實數(shù)x的最小整數(shù)ceil(3.14)=4自然對數(shù)函數(shù)log(x)求實數(shù)x的自然數(shù)對數(shù)log(1)=0指數(shù)函數(shù)pow(x,y)計算xy,結(jié)果為雙精度實數(shù)pow(2,3)=8隨機函數(shù)rand()產(chǎn)生0到RAND-MAX之間的隨機整數(shù)

平方根值函數(shù)sqrt(x)求實數(shù)x的平方根sqrt(25)=5【說明】:1、使用函數(shù)之前,在程序的開頭要加上函數(shù)所在的頭文件。2、調(diào)用格式:變量名=函數(shù)名(表達(dá)式),或在輸出語句中直接輸出。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.3、表達(dá)式1、表達(dá)式

是由常量、變量、標(biāo)準(zhǔn)函數(shù)與運算符按照一定的規(guī)則組成的式子。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.3、表達(dá)式2、數(shù)據(jù)類型轉(zhuǎn)換

C++語言中,要將一個表達(dá)式的結(jié)果轉(zhuǎn)換成期望的數(shù)據(jù)類型,或者不同數(shù)據(jù)類型的運算對象進(jìn)行混合運算,就需要依據(jù)數(shù)據(jù)類型轉(zhuǎn)換規(guī)則進(jìn)行轉(zhuǎn)換。⑴隱性轉(zhuǎn)換

a混合運算時的類型轉(zhuǎn)換整型、實型、字符型數(shù)據(jù)間可以混合運算。在這種情況下,需要將不一致的數(shù)據(jù)類型轉(zhuǎn)換成一致的數(shù)據(jù)類型,然后進(jìn)行運算。為了保證運算精度,系統(tǒng)在運算時的轉(zhuǎn)換規(guī)則是將存儲長度較短的運算對象轉(zhuǎn)成存儲長度較長的類型,然后再進(jìn)行處理。這種轉(zhuǎn)換是系統(tǒng)自動進(jìn)行的。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.3、表達(dá)式2、數(shù)據(jù)類型轉(zhuǎn)換

b賦值時的類型轉(zhuǎn)換當(dāng)賦值運算符兩側(cè)的數(shù)據(jù)類型不同時,需進(jìn)行類型轉(zhuǎn)換,這種轉(zhuǎn)換是系統(tǒng)自動進(jìn)行的,轉(zhuǎn)換規(guī)則如下:1)float、double型賦值給int型:直接截斷小數(shù)。例如,“inti=f+0.6;”,f的值為4.0,右邊算術(shù)表達(dá)式運算后的結(jié)果為4.6的double型數(shù)據(jù),根據(jù)上述轉(zhuǎn)換原則,直接舍棄小數(shù),所以i的值為4。2)int、char型賦值給float、double型:補足有效位以進(jìn)行數(shù)據(jù)類型轉(zhuǎn)換。例如:“floatf=4;”,float為7位有效數(shù)字,所以f的值為4.0000000。3)char型(1字節(jié))賦給int型(4字節(jié)):數(shù)值賦給int型的低8位,其它位補0。4)lomglongint型賦值給int型:longlongint型截斷低字節(jié)給int型。5)int型賦值給longlongint型:賦給longint型的低16位,如果int型的最高位是0,則longlongint的高16位全為0;如果int型的最高位是1,則longlongint型的高16位全為1(稱為“符號擴(kuò)展”)。6)unsignedint型賦值給int型:直接傳送數(shù)值。7)非unsignedint型賦值給位數(shù)相同的unsignedint型:直接傳送數(shù)值。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式1.2.3、表達(dá)式2、數(shù)據(jù)類型轉(zhuǎn)換

⑵強制類型轉(zhuǎn)換在C++語言中,還允許強制類型轉(zhuǎn)換,即將某一數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換為指定的另一種數(shù)據(jù)類型,強制類型轉(zhuǎn)換只是臨時轉(zhuǎn)換。強制轉(zhuǎn)換運算符組成的運算表達(dá)式的一般形式:(類型名)(表達(dá)式)例如:已知有變量定義“intb=7;floata=2.5,c=4.7;”,求下面算術(shù)表達(dá)式的值。

a+(int)(b/3*(int)(a+c)/2.0)%4根據(jù)運算符的結(jié)合性規(guī)則,表達(dá)式要自左至右執(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.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式課后訓(xùn)練訓(xùn)練1:整型數(shù)據(jù)類型和浮點型存儲空間大小分別定義int,short、float和double類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。輸入:無。輸出:一行,四個整數(shù),分別是兩個變量的存儲空間大小,用一個空格隔開。延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式課后訓(xùn)練訓(xùn)練2:浮點數(shù)向零舍入【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換06】輸入一個單精度浮點數(shù),將其向零舍入到整數(shù)。說明:向零舍入的含義是,正數(shù)向下舍入,負(fù)數(shù)向上舍入。提示:可以使用強制類型轉(zhuǎn)換來實現(xiàn)。輸入:一個單精度浮點數(shù)。輸出:一個整數(shù),即向零舍入到整數(shù)的結(jié)果。樣例輸入:2.3樣例輸出:2延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式課后訓(xùn)練訓(xùn)練3:整型與布爾型的轉(zhuǎn)換將一個整型變量的值賦給一個布爾型變量,再將這個布爾型變量的值賦給一個整型變量,得到的值是多少?輸入:

一個整型范圍內(nèi)的整數(shù),即初始時整型變量的值。輸出:

一個整數(shù),經(jīng)過上述過程后得到的結(jié)果。樣例輸入:3樣例輸出:1延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式課后訓(xùn)練訓(xùn)練4:打印字符輸入一個整數(shù),即字符的ASCII碼,保證存在對應(yīng)的可見字符。輸出相對應(yīng)的字符。輸入:

一個整數(shù),即字符的ASCII碼,保證存在對應(yīng)的可見字符。輸出:

一行,包含相應(yīng)的字符。樣例輸入:65樣例輸出:A延遲符1.2運算符、標(biāo)準(zhǔn)函數(shù)和表達(dá)式課后訓(xùn)練訓(xùn)練5:Hello,World!的大小可以用sizeof函數(shù)獲得它所占用的空間大小。輸入:

無。輸出:

一個整數(shù),即“Hello,World!”的大小。延遲符1.4基本語句1.4基本語句知識點:

掌握賦值語句“=”、C++語言的輸入流cin、輸出流cout、C語言的輸入語句scanf語句、輸出語句printf語句的格式、執(zhí)行過程和各種形式的靈活運用。延遲符1.4基本語句1.4基本語句知識點:

掌握賦值語句“=”、C++語言的輸入流cin、輸出流cout、C語言的輸入語句scanf語句、輸出語句printf語句的格式、執(zhí)行過程和各種形式的靈活運用。延遲符1.4基本語句1.4.1知識講解1、賦值語句的一般格式變量=表達(dá)式;

2、功能賦值語句的功能是:首先計算表達(dá)式的值,再賦給賦值號左邊的變量。對任意一個變量必須先賦值,然后才能引用,否則未賦值的變量將以一個隨機值參與運算。在賦值語句的使用中,需要注意以下幾點:1)由于賦值運算符“=”右邊的表達(dá)式也可以是賦值表達(dá)式,因此,下述形式:

變量=(變量=表達(dá)式);是成立的,從而形成嵌套的情形。其展開之后的一般形式為:

變量=變量=…=表達(dá)式;例如,“a=b=c=d=e=5;”,它實際上等價于:e=5;d=e;c=d;b=c;a=b;2)在進(jìn)行賦值運算時,如果賦值運算符兩邊的數(shù)據(jù)類型不同,系統(tǒng)將會自動進(jìn)行類型轉(zhuǎn)換,即將賦值運算符右邊的數(shù)據(jù)類型轉(zhuǎn)換成左邊的變量類型。當(dāng)左邊是整型而右邊是實型時,將去掉小數(shù)部分并截取該整型對應(yīng)的有效位數(shù)。3)單獨一個常量、一個變量或一個函數(shù)都可看作是簡單的表達(dá)式。延遲符1.4.2典型例題例1:輸入兩個正整數(shù)A和B,試交換A、B的值(使A的值等于B,B的值等于A)參考程序:

#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é)果

}分析:交換兩個變量的值方法很多,一般我們采用引入第三個變量的算法,二個變量交換,可以想像成一瓶醬油和一瓶醋進(jìn)行交換,這時容易想到拿一個空瓶子過來:①將醬油倒到空瓶中;②將醋倒到醬油瓶中;③將原空瓶中的醬油倒到醋瓶中。延遲符1.4.2典型例題例2:數(shù)學(xué)中經(jīng)典的“雞兔同籠”問題,已知頭共30個,腳共90只,問籠中的雞和兔各有多少只?注意這兩步運算的先后順序。程序如下: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é)果

return0;

}【分析】設(shè)雞為j只,兔為t只,頭為h,腳為f,那么有:

j+t=h①

2*j+4*t=f②假設(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ù)【說明】:也可以解由①和②組成的方程組得到j(luò)和t的值。延遲符1.4基本語句1.4.3知識講解1、輸入流cin、輸出流cout的非格式化輸入、輸出格式:

Cin>>變量1>>變量2>>…>>變量n;其中“>>”是預(yù)定義的插入運算符,作用在“cin”上,實現(xiàn)鍵盤輸入。

cout<<表達(dá)式1<<表達(dá)式2<<…<<表達(dá)式n;其中“<<”是預(yù)定義的插入運算符,作用在“cout”上,實現(xiàn)屏幕輸出,輸出結(jié)果依次為各個表達(dá)式的值。延遲符1.4基本語句1.4.3知識講解2、功能

cin的使用過程中要求輸入的數(shù)據(jù)類型與接收變量的類型一致,并且輸入的數(shù)據(jù)間用Tab空格分開,回車鍵表示輸入完畢。

cout輸出語句的功能主要是在程序完成數(shù)據(jù)處理后,將計算結(jié)果以適當(dāng)形式輸出到屏幕上。輸出語句有非格式化和格式化輸出兩種類型。說明:輸入/輸出流是輸入/輸出的一系列字節(jié),平時所用到“cin”、“cout”是標(biāo)準(zhǔn)輸入/輸出流預(yù)定義的兩個流類對象。在使用“cin”、“cout”前,要用編譯預(yù)處理命令將所使用的頭文件包含到源程序中,同時聲明命名空間。#include<iostream>usingnamespacestd;對于cin:延遲符1.4基本語句1.4.3知識講解輸入一個或一個以上的變量例如:inta,b,c;cin>>a>>b>>c;執(zhí)行后,鍵盤輸入:203040回車結(jié)果即是a為20,b為30,c為40。為了正確輸入數(shù)據(jù),在輸入語句之前,常加入一個輸出語句以輸出提示信息。例如:Cout<<”Inputa,b,c:”<<endl;Cin>>a>>b>>c;對于cout:輸出一個或多個表達(dá)式。若表達(dá)式為字符串,則將雙引號中間的部分按原樣輸出到屏幕;若表達(dá)式為endl,則輸出“回車”;若表達(dá)式為算術(shù)運算,則計算出結(jié)果后輸出屏幕;若為變量,則直接輸出變量的值,當(dāng)然,如果想輸出空格,則將其視為字符串輸出:cout<<””.延遲符1.4基本語句1.4.3知識講解3、輸出流cout的格式化輸出

在這里主要介紹利用C++標(biāo)準(zhǔn)庫提供的操作符函數(shù)控制輸出寬度、填充字符和精度的方法。需要注意的是在使用這些操作符函數(shù)時需要包含頭文件iomanip,即將文件iomanip中的內(nèi)容寫入到程序當(dāng)中。①設(shè)置輸出寬度的函數(shù):setw(寬度值)我們可根據(jù)輸出格式的要求使用此函數(shù)在輸出語句中自動定義每個輸出項的寬度。如果域?qū)挶刃枰膶挾刃≡趺崔k?例如我輸出上面程序的n,它的域?qū)挒?,但我設(shè)為2;不用怕,C++自動設(shè)為最小的實際寬度,即n需要的3位。若不使用setw(int)設(shè)定,則各項默認(rèn)寬度為0,所以是按實際需要位數(shù)顯示的。對于浮點型數(shù)據(jù),若設(shè)定寬度超過其實際寬度,是通過在其小數(shù)最后位之后被“0”來達(dá)到設(shè)定寬度的。延遲符1.4基本語句1.4.3知識講解②設(shè)置輸出填充字符的函數(shù):setfill(填充字符)此函數(shù)常與setw()函數(shù)聯(lián)合使用,達(dá)到向不滿設(shè)置輸出寬度的空間填入指定字符的目的,不設(shè)置則填充空格。例:數(shù)據(jù)按寬度輸出,前面空格以其它字符填充。如:cout<<setw(6)<<setfill(‘$’)<<27;則輸出為:$$$$27。$需加單引號,則輸出總長度為6個,若長度不夠,則在前面填充$。又如:cout<<setfill(‘@’)<<setw(5)<<255<<endl;則輸出為:@@255③設(shè)置輸出精度的函數(shù):setprecision(有效位數(shù))此函數(shù)用來指明顯示浮點型數(shù)據(jù)的有效位數(shù),可用的最后一位的值四舍五入。1.4.4典型例題例1#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ floata=10.0/3,b=2.0/3; cout<<a<<""<<b<<endl; cout<<setprecision(2)<<a<<""<<b<<endl; return0; }運行結(jié)果:3.3333330.666673.30.671.4.4典型例題例2:求出一個三位數(shù)每個位上的數(shù)字值參考程序:#include<iostream>#include<iomanip>usingnamespacestd;intmain(){ intn=234,a,b,c; a=n/100; b=n/10%10; c=n%10; cout<<a<<b<<c<<endl; cout<<setw(3)<<a<<setw(4)<<b<<setw(5)<<c<<endl; cout<<a<<""<<b<<""<<c<<endl; return0;}

輸出結(jié)果:

234234234問題分析:做這個題,需要把這個三位數(shù)上的每一位數(shù)取出來。算法設(shè)計:利用“/”和“%”來分離這個三位數(shù),分別得到每一位上的數(shù)字。1.4.4典型例題例3:某幼兒園里,有5個小朋友編號為1,2,3,4,5,他們按自己的編號順序圍坐在一張圓桌旁。他們身上都有若干個糖果(鍵盤輸入),現(xiàn)在他們做一個分糖果游戲。從1號小朋友開始,將自己的糖果均分三份(如果有多余的糖果,則立即吃掉),自己留一份,其余兩份分給他的相鄰的兩個小朋友。接著2號、3號、4號、5號小朋友同樣這么做。問一輪后,每個小朋友手上分別有多少糖果。參考程序:

#include<iostream>

usingnamespacestd;

intmain()

{

inta,b,c,d,e;

cout<<"Inputa,b,c,d,e:";//提示輸入五個小朋友存儲的糖果數(shù)

cin>>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號小朋友分糖cout<<"a="<<a<<""<<"b="<<b<<""<<"c="<<c<<""<<"d="<<d<<""<<"e="<<e<<endl;return0;}輸入:89101112輸出:1179116問題分析:題目中有5位小朋友,他們初始時糖果的數(shù)目不確定,用a,b,c,d,e分別存儲5個小朋友的糖果數(shù),初始值由鍵盤輸入。1.4.4典型例題例4:分錢游戲。甲、乙、丙三人共有24元錢,先由甲分錢給乙、丙兩人,所分給的數(shù)與各人已有數(shù)相同;接著由乙分給甲、丙,分法同前;再由丙分錢給甲、乙,分法亦同前。經(jīng)上述三次分錢之后,每個人的錢數(shù)恰好一樣多。求原先各人的錢數(shù)分別是多少?#include<iostream>Usingnamespacestd;

intmain()

{inta,b,c;

a=8;b=8;c=8;a=a/2;b=b/2;c=a+b+c;a=a/2;c=c/2;b=a+b+c;b=b/2;c=c/2;a=a+b+c;

cout<<"a="<<a<<"b="<<b<<"c="<<c<<endl;retrun0;

}運行結(jié)果:

a=13b=7c=4問題分析:設(shè)甲、乙、丙三人的錢數(shù)分別為A,B,C。用倒推(逆序)算法,從最后結(jié)果入手,按反相順序,分步驟推算出每次各人當(dāng)時的錢數(shù):(在每個步驟中,各人錢數(shù)分別存在A、B、C中)1.4.4典型例題例5:歌手大獎賽上6名評委給一位參賽者打分,6個人打分的平均分為9.6分;如果去掉一個最高分,這名參賽者的平均分為9.4分;如果去掉一個最低分,這名參賽者的平均分為9.8分;如果去掉一個最高分和一個最低分,這名參賽者的平均是多少?參考程序:

#include<iostream>Usingnamespacestd;

intmain()

{floathigh,low,sall,shigh,slow,ans;

sall=6*9.6;//求6名評委的總分

shigh=5*9.4; //求去掉最高分后的總分

slow=5*9.8; //求去掉最低分后的總分

high=sall-shigh; //求最高分

low=sall-slow;//求最低分

ans=(sall-high-low)/4;//求平均分

cout<<"ans="<<ans<<endl;return0;

}運行結(jié)果:9.60問題分析:首先求出6名評委的總分,然后根據(jù)去掉最高分的總分和最低分的總分,求出最高分的分值和最低分的分值,最后總分減去最高分和最低分除以4即是答案。延遲符1.4基本語句1.4.5知識講解1、C語言的格式化輸入函數(shù)scanf、格式化輸出函數(shù)printf一般格式scanf函數(shù)一般調(diào)用格式:scanf(格式控制符,地址列表)2、功能scanf函數(shù)的功能是格式化輸入任意數(shù)據(jù)列表3、輸出函數(shù)printf一般調(diào)用格式:printf(格式控制符,輸出列表)4、功能printf函數(shù)的功能是格式化輸出任意數(shù)據(jù)列表延遲符1.4基本語句1.4.5知識講解說明:1)scanf函數(shù)和printf函數(shù)所用的頭文件是<cstdio>.2)scanf函數(shù)地址列表中給出各變量的地址,可以為變量的地址,即在變量的前面加上“&”,也可以為字符串的首地址。3)scanf函數(shù)、printf函數(shù)不能自動識別數(shù)據(jù)類型,由格式控制符來說明,所以格式控制符由%和格式符組成,作用是將要輸入的數(shù)據(jù)按指定的格式類型輸入輸出,如%d,%c等。4)printf函數(shù)輸出列表是需要輸出的一組數(shù)據(jù)(可以為表達(dá)式和變量),各參數(shù)之間用“,”分開。要求格式說明和各輸出項在數(shù)量和類型上要一一對應(yīng),否則將會出現(xiàn)意想不到的錯誤。5)printf函數(shù)可以輸出直接輸出常量、常量表達(dá)式等,字符串常量輸出時必須用“”引起來,或者可以跟格式控制符一起輸出。延遲符1.4基本語句Scanf的格式控制符:格式符說

明d,i用于輸入十進(jìn)制整數(shù)u以無符號十進(jìn)制形式輸入十進(jìn)制整數(shù)o(字母)用于輸入八進(jìn)制整數(shù)x用于輸入十六進(jìn)制整數(shù)c用于輸入單個字符s用于輸入字符串(非空格開始,空格結(jié)束,字符串變量以'\0'結(jié)尾)f用于輸入實數(shù)(小數(shù)或指數(shù)均可)e與f相同(可與f互換)延遲符1.4基本語句Printf函數(shù)的格式控制符:

格式符說

明d(或i)以帶符號的十進(jìn)制形式輸出整數(shù),正數(shù)的(+)號省略不輸出u以無符號十進(jìn)制形式輸出整數(shù)x(或X)以十六進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0x)o(字母)以八進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符數(shù)字0)c輸出一個字符s輸出字符串f以小數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)e(或E)以指數(shù)形式輸出單、雙精度,隱含輸出6位小數(shù)g(或G)自動選用%f、%e或%E格式中輸出寬度較小的一種使用延遲符1.4基本語句Printf函數(shù):d格式符:

參數(shù)說

明%d輸出數(shù)字長為變量數(shù)值的實際長度%md輸出m位(不足補空格,大于m位時按實際長度輸出)%-mdm含義同上。左對齊輸出%ldl(小寫字母)表示輸出“長整型”數(shù)據(jù)%m1d指定長整型輸出寬度m位,左邊補空格;否則,按實際位數(shù)輸出%0md,%0m1d0(數(shù)字0)表示位數(shù)不足m時補0延遲符1.4基本語句Printf函數(shù):f格式符:參

數(shù)說

明%f按實數(shù)格式輸出,整數(shù)部分按實際位數(shù)輸出,6位小數(shù)%m.nf總位數(shù)m(含小數(shù)點),其中有n位小數(shù)%-m.nf同上,左對齊延遲符1.4基本語句Printf函數(shù):s格式符:參

數(shù)說

明%s按實際寬度輸出一個字符串%msm指定寬度(不足時左補空格,大于時按實際寬度輸出)%-ms左對齊,不足時右補空格%m.ns輸出占m個字符位置,其中字符數(shù)最多n個,左補空格%-m.ns同上,右補空格延遲符

1.4.6典型例題例1:傳說古代的敘拉古國王海倫二世發(fā)現(xiàn)的公式,利用三角形的三條邊長來求取三角形面積。已知△ABC中的三邊長分別為a,b,c,求△ABC的面積。(提示:海倫公式,其中p=(a+b+c)/2)參考程序:#include<cstdio>//DevC++可調(diào)用<iostream>和<stdio.h>庫#include<cmath>//在DevC++中可調(diào)用數(shù)學(xué)函數(shù)庫cmathintmain(){floata,b,c,p,s;scanf("%f%f%f",&a,&b,&c);//輸入三角形的三邊

p=(a+b+c)/2;//求出p的值

s=sqrt(p*(p-a)*(p-b)*(p-c));//根據(jù)p求面面積,sqrt是開方函數(shù)

printf("%0.3f\n",s);//輸出面積,0.3f按實際位數(shù)輸出,保留3位小數(shù)}運行結(jié)果:輸入:345輸出:6.000問題分析:公式中p是三角形周長的一半,求出p后直接代入海倫公式中求得面積。延遲符

1.4.6典型例題例2:某幼兒園里,有5個小朋友編號為1,2,3,4,5,他們按自己的編號順序圍坐在一張圓桌旁。他們身上都有若干個糖果(鍵盤輸入),現(xiàn)在他們做一個分糖果游戲。從1號小朋友開始,將自己的糖果均分三份(如果有多余的糖果,則立即吃掉),自己留一份,其余兩份分給他的相鄰的兩個小朋友。接著2號、3號、4號、5號小朋友同樣這么做。問一輪后,每個小朋友手上分別有多少糖果。參考程序:#include<cstdio>usingnamespacestd;intmain(){inta,b,c,d,e;printf("Entera,b,c,d,e:");scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);a=a/3;b=b+a;e=e+a;b=b/3;c=c+b;a=a+b;c=c/3;d=d+c;b=b+c;d=d/3;e=e+d;c=c+d;e=e/3;a=a+e;d=d+e;printf("%5d%5d%5d%5d%5d\n",a,b,c,d,e);//%5d按5位寬度輸出return0;}問題分析:題目中有5位小朋友,他們初始時糖果的數(shù)目不確定,用a,b,c,d,e分別存儲5個小朋友的糖果數(shù),初始值由鍵盤輸入。延遲符

1.4.6典型例題例3:歌手大獎賽上6名評委給一位參賽者打分,6個人打分的平均分為9.6分;如果去掉一個最高分,這名參賽者的平均分為9.4分;如果去掉一個最低分,這名參賽者的平均分為9.8分;如果去掉一個最高分和一個最低分,這名參賽者的平均是多少?參考程序:#include<cstdio>intmain(){floathigh,low,sall,shigh,slow,ans;sall=6*9.6;shigh=5*9.4;slow=5*9.8;high=sall-shigh;low=sall-slow;ans=(sall-high-low)/4;printf("ans=%5.2f\n",ans);//%5.2f按實數(shù)格式輸出,保留2位小數(shù)}運行結(jié)果:9.60問題分析:首先求出6名評委的總分,然后根據(jù)去掉最高分的總分和最低分的總分,求出最高分的分值和最低分的分值,最后總分減去最高分和最低分除以4即是答案。延遲符1.4基本語句1.4.7字符輸入函數(shù)getchar1、語法格式:getchar();2、功能接收從鍵盤輸入的單個字符數(shù)據(jù)。說明:1)通常把輸入的字符賦予一個字符變量,構(gòu)成賦值語句。例如:

charch;

ch=getchar();2)getchar函數(shù)只能接受單個字符,輸入數(shù)字也按字

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論