




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
基礎(chǔ)知識第一講C++基礎(chǔ)知識目錄信息學奧賽介紹體驗算法與程序設(shè)計基礎(chǔ)知識一.信息學奧林匹克競賽介紹面向全國中學生的一種競賽活動旨在激發(fā)中學生在計算機科學方面的興趣培養(yǎng)他們的邏輯思維能力給那些有才華的學生提供相互交流和學習的機會通過競賽和相關(guān)的活動培養(yǎng)和選拔優(yōu)秀的計算機后備人才。信息學奧林匹克競賽賽事:1.NOIP(全國信息學奧林匹克聯(lián)賽)
NationalOlympiadinInformaticsinProvinces
2.NOI(全國信息學奧林匹克競賽)
NationalOlympiadinInformatics3.IOI(國際信息學奧林匹克競賽)
InternationalOlympiadinInformatics
NOIP聯(lián)賽初賽:10月中旬(周六/周日下午2:30-4:30)筆試(100分)資格賽,地市獨立組織(全國統(tǒng)一命題,統(tǒng)一時間)復賽:11月份中旬(第二周,周六周日上午3.5個小時)上機編程兩試:每試3個題目,300分,共600分。提交源程序,黑盒子測試法一種選拔性競賽不是一般計算機知識的普及。興趣能力勤奮如何學好信息學奧林匹克競賽學習內(nèi)容:掌握一門計算機程序設(shè)計語言
(Pascal/C/C++)數(shù)據(jù)結(jié)構(gòu)(線性表、樹、圖等)算法(搜索、圖論、動規(guī)等)什么是算法?算法:解決某一類問題的方法和步驟。比如:渡河問題
一個農(nóng)夫,要過河,他有一棵白菜,一只狼和一只羊。一次船上農(nóng)夫只能帶一個東西。羊和白菜,狼和羊不能在一起。請你找出一種最快的過河方法?渡河的方法與步驟:第一步:農(nóng)夫帶
過河第二步:農(nóng)夫劃船回來第三步:農(nóng)夫帶
過河……猜數(shù)字(1..1000)回答大了或小了猜生日?月?日?二分法每次舍棄“一半”不符合條件的情況,逐漸縮小范圍,最后找到問題的解枚舉算法基本思想:按照問題本身的性質(zhì),一一列舉出該問題所有可能的解,并根據(jù)問題的條件對各解進行逐個檢驗,從中挑選出符合條件的解,舍棄不符合條件的解。
多動手、模仿是捷徑勤思考、實踐是王道二.體驗算法與程序設(shè)計(C++語言)引例1:最簡單的程序:輸出:Helloworld!【參考程序】#include<cstdio>intmain(){ printf("Helloword!"); return0;}提示:所有的代碼都要在英狀態(tài)輸入。如何編寫調(diào)試代碼?(1)雙擊,打開c++編譯器;(2)文件/新建源代碼;(3)F11:保存并運行程序。友情提示:可以在桌面上建立一個以自己的名字命名的文件夾,用來保存程序?!締栴}分析】:
正方形的面積等于邊長乘以邊長;
【算法設(shè)計】:正方形的邊長用a表示,面積用s表示。引例2:計算正方形的面積【參考程序】#include<cstdio>intmain(){ inta,s; scanf("%d",&a); s=a*a; printf("%d",s); return0;}【問題分析】:
周長等于邊長的4倍。【算法設(shè)計】:正方形的邊長用a表示,周長用c表示。引例2拓展:計算正方形的周長【參考程序】#include<cstdio>intmain(){ inta,c; scanf("%d",&a); c=4*a; printf("%d",c); return0;}三、基礎(chǔ)知識例1:從鍵盤輸入兩個正整數(shù)a,b,求出兩數(shù)字之和。#include<cstdio>intmain(){ inta,b; scanf("%d%d",&a,&b); printf("%d",a+b); return0;}提示:所有的代碼都要在英狀態(tài)輸入。樣例輸入1:1820樣例輸入2:5000090000樣例輸入3:123456789987654321樣例輸入4:12345678901234567890
例1:程序解釋#include<cstdio>//預處理命令。//使用printf/scanf須調(diào)用cstdio庫,否則編譯出錯intmain(){//主函數(shù) inta,b;//定義了a,b兩個整型變量 scanf(“%d%d”,&a,&b);//讀取鍵盤輸入,并存到變量a、b printf(“%d”,a+b);//輸出a+b的值return0;//結(jié)束整個程序,返回0,每個主程序都必有。
}說明(1)以“//”開頭為注釋行,“//”后的內(nèi)容用以對語句進行說明,不運行,無需輸入。(2)上面的程序中共有4條語句,每條語句必須以分號“;”作為結(jié)束。(3)第一條語句“inta,b;”定義了2個int類型(整數(shù)型)的變量a,b,c,變量之間用逗號隔開,最后用分號結(jié)束。知識點1:格式化輸入函數(shù)scanf格式:scanf("格式化字符串",地址列表);說明:
1)地址列表中給出各變量的地址(即變量名的前面加“&”符號)。
2)格式控制符由%和格式符組成,作用是將要輸入的字符按指定的格式輸入,如%d,%lf等3)格式字符和和變量的類型一一對應(yīng):類型和個數(shù)一致。知識點2:格式化輸出函數(shù)printf格式:
printf("格式控制字符串",變量列表);說明:(1)格式說明由%和格式字符組成,作用是將要輸出的字符轉(zhuǎn)換為指定的格式,如%d,%c等。(2)輸出列表是需要輸出的一組數(shù)據(jù),各參數(shù)之間用“,”分開。(3)格式說明和各輸出項在數(shù)量和類型上要一一對應(yīng)。(4)格式字符串中可以有空格或提示信息,回車符“\n”等。輸入半徑r,輸出圓的面積s,保留3位小數(shù)。樣例輸入:
3樣例輸出:28.274提示:實型用double來定義假設(shè):π=3.14159讀取數(shù)據(jù)的代碼:scanf("%lf",&r);例2:圓的面積#include<cstdio>constdoublePI=3.14159;intmain(){doubler,s;//定義實型變量
scanf("%lf",&r);//輸入r的值,&符號不能漏掉
s=PI*r*r;//計算圓的面積
printf("%.2lf\n",s);//顯示計算結(jié)果,結(jié)果保留2位小數(shù)
return0;}【說明】:
1、程序中定義的PI代表常量3.14159,在編譯源程序時,遇到PI就用常量3.14159代替,PI可以和常量一樣進行運算。C++語言規(guī)定,每個符號常量的定義占據(jù)一個書寫行,而且符號常量不能被再賦值。如果在上例中使用以下賦值語句是錯誤的。PI=3.1415926;2、習慣上,符號常量名用大寫,而變量名用小寫,以便于區(qū)別。知識點3:常量的概念及分類常量:
是指在程序中使用的一些具體的數(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(科學記數(shù)法)。3、字符常量:是用單引號括起來的字符,如'k'、'5'、'%'。注意:'a'與"a"表示的含義是不同的,'a'表示一個字符常量,"a"表示一個字符串。
2、常量的說明一個常量可以直接調(diào)用(如124,'A'),也可以給常量取個名字用一個標識符代表它,這就是符號常量。其語法格式為:
const符號常量=常量字串;
例如:constdoublePI=3.1415926;知識點4:變量的定義格式:
數(shù)據(jù)類型<變量名列表>例如:
inta,b;//定義a,b為整型變量,
doublex=5.9,y,z;//定義x,y,z為實型變量;x賦初值為5.9,y,z的初值未知。變量需要先定義后使用。變量的命名規(guī)則:一般是字母和數(shù)字的組合,如:a,i,sum,x1,x2。但不能與關(guān)鍵字重名。在定義變量的同時可以為變量賦初值。變量名大小寫有區(qū)別例如:
intS,s//定義了大S和小s兩個變量例2.輸入三角形的三邊a,b,c。求三角形的面積s
(a,b,c是實數(shù)<100,滿足三角形條件,結(jié)果保留3位小數(shù))樣例輸入1:345樣例輸出1:6.000樣例輸入2:111樣例輸出2:0.433分析:求三角形面積的海倫公式:其中p=(a+b+c)/2提示:sqrt是開方函數(shù),如:sqrt(16)=4Sqrt函數(shù)在<cmath>庫中,在程序頭添加#include<cmath>
#include<cstdio>#include<cmath>intmain(){doublea,b,c,p,s;scanf("%lf%lf%lf",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%0.3lf\n",s);return0;}思考:語句5和6可以交換嗎?#include<cstdio>#include<cmath>intmain(){doublea,b,c,p,s;scanf("%lf%lf%lf",&a,&b,&c);
p=(a+b+c)/2;
s=sqrt(p*(p-a)*(p-b)*(p-c));
printf("%0.3lf\n",s);return0;}程序從第一句開始,依次順序執(zhí)行語句直到結(jié)束,中間無分支和循環(huán),這種程序結(jié)構(gòu)稱為順序結(jié)構(gòu)讀入邊長a,b,c求p求s輸出面積s流程圖知識點5:賦值語句格式: 變量=表達式;功能:將賦值運算符右邊表達式的值賦給其左邊的變量例如:p=(a+b+c)/2;下述形式:
變量=(變量=表達式)是成立的,其展開之后的一般形式為: 變量=變量=…=表達式; 例如,“a=b=c=d=e=5;”,它實際上等價于:e=5;d=e;c=d;b=c;a=b;實現(xiàn)演習:1.輸入長方形的邊長a和b,輸出長方形的面積S。樣例輸入:56樣例輸出:30方法1:#include<cstdio>intmain(){ inta,b; scanf("%d%d",&a,&b); printf("%d",a*b);
return0;}方法2:#include<cstdio>intmain(){ inta,b,s; scanf("%d%d",&a,&b);
s=a*b; printf("%d",s);
return0;}2.輸入兩個整數(shù)a和b,交換a和b的值輸出。樣例輸入:56樣例輸出:65方法1:#include<cstdio>intmain(){ inta,b,t; scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("%d%d",a,b);
return0;}方法2:#include<cstdio>intmain(){ inta,b; scanf("%d%d",&a,&b); printf("%d%d",b,a);return0;}3:輸出保留3位小數(shù)的實數(shù)輸入一個實數(shù),保留3位小數(shù)輸出這個實數(shù)。
樣例輸入12.34521樣例輸出12.345#include<cstdio>intmain(){ doublea; scanf("%lf",&a); printf("%.3lf",a); return0;}3:輸出保留12位小數(shù)的實數(shù)輸入一個實數(shù),保留12位小數(shù)輸出這個實數(shù)。
樣例輸入12.34521樣例輸出12.345#include<cstdio>intmain(){ doublea; scanf("%lf",&a); printf("%.3lf",a); return0;}4:空格分隔輸出描述讀入一個整數(shù),一個實數(shù),然后按順序輸出它們,并且要求在他們之間用一個空格分隔。輸入共有二行:
第一行是一個整數(shù);
第二行是一個實數(shù);輸出按順序輸出整數(shù)和實數(shù),之間用空格分隔(輸出實數(shù)時保留6位小數(shù))。樣例輸入122.3樣例輸出122.300000#include<cstdio>intmain(){ intb; doublea; scanf("%d%lf",&b,&a); printf("%d%.3lf",b,a); return0;}5:A*B問題描述輸入兩個正整數(shù)A和B,求A*B。
輸入一行,包含兩個正整數(shù)A和B,中間用單個空格隔開。1<=A,B<=50000。輸出一個整數(shù),即A*B的值。樣例輸入134樣例輸出112樣例輸入220005000樣例輸出210000000樣例輸入35000050000樣例輸出32500000000方法1#include<cstdio>intmain(){ inta,b,s; scanf("%d%d",&a,&b); s=a*b; printf("%d",s); return0;}改進#include<cstdio>intmain(){
longlonga,b,s; scanf("%lld%lld",&a,&b); s=a*b; printf("%lld",s); return0;}5拓展:A/B問題描述輸入兩個正整數(shù)A和B,求A/B。
輸入一行,包含兩個正整數(shù)A和B,中間用單個空格隔開。1<=A,B<=50000。輸出一個整數(shù),即A*B的值。樣例輸入115樣例輸出10.2改進a/b#include<cstdio>intmain(){
longlonga,b; scanf("%lld%lld",&a,&b); printf("%lf",a*1.0/b); return0;}知識點6:標準數(shù)據(jù)類型知識點:C++語言提供了豐富的數(shù)據(jù)類型。本節(jié)介紹幾種基本的數(shù)據(jù)類型:整型、實型、字符型。它們都是系統(tǒng)定義的簡單數(shù)據(jù)類型,稱為標準數(shù)據(jù)類型。延遲符整型字符型實型標準數(shù)據(jù)類型知識點5:標準數(shù)據(jù)類型知識點:C++語言提供了豐富的數(shù)據(jù)類型。本節(jié)介紹幾種基本的數(shù)據(jù)類型:整型、實型、字符型等。它們都是系統(tǒng)定義的簡單數(shù)據(jù)類型,稱為標準數(shù)據(jù)類型。
1、整型在C++語言中,整型類型標識符為int。根據(jù)整型變量的取值范圍又可將整型變量定義為以下8種整型類型:數(shù)據(jù)類型定義標識符占字節(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-1
2、實型數(shù)據(jù)類型定義標識符數(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位)
3、字符型(char)字符常量有以下兩種表示法:⑴、普通表示形式字符常量是由單個字符組成,所有字符采用ASCII編碼。在程序中,通常用一對單引號將單個字符括起來表示一個字符常量。如:'a','A','0'等。序號字符序號字符序號字符序號字符序號字符序號字符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碼表3、字符型(char)⑵轉(zhuǎn)義字符表示形式。轉(zhuǎn)義字符有三種用法:表示控制字符、表示特殊字符、表示所有字符。常用的轉(zhuǎn)義字符如右表所示。轉(zhuǎn)義字符含義'\n'換行'\t'水平制表'\b'退格'\r'回車(不換行)'\0'空字符'\’'單引號'\”'雙引號'\\'一個反斜杠字符'\ddd'1~3位八進制數(shù)所代表的字符'\xhh'1~2位十六進制數(shù)所代表的字符例1:整型數(shù)據(jù)類型存儲空間大小分析:分別定義int,double類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。整型數(shù)據(jù)類型存儲空間大小#include<cstdio>intmain(){ intx; doubley; printf("%d%d\n",sizeof(x),sizeof(y));
//sizeof返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)
return0;}例2.打印ASCII碼描述輸入一個除空格以外的可見字符(保證在函數(shù)scanf中可使用格式說明符%c讀入),輸出其ASCII碼。
輸入一個除空格以外的可見字符。輸出一個十進制整數(shù),即該字符的ASCII碼。樣例輸入A樣例輸出65#include<cstdio>intmain(){ chara; scanf("%c",&a); printf("%d",a); return0;}例3:打印字符描述輸入一個ASCII碼,輸出對應(yīng)的字符。
輸入一個整數(shù),即字符的ASCII碼,保證存在對應(yīng)的可見字符。輸出一行,包含相應(yīng)的字符。樣例輸入65#include<cstdio>intmain(){ inta; scanf("%d",&a); printf("%c",a); return0;}例4:大小字母的轉(zhuǎn)換【說明】:因為所有小寫字母的ASCII值要比對應(yīng)大寫字母的ASCII值大32,所以c1減去32后便得到原來字母的大寫形式。反之,c2加上32后便得到原來字母的小寫形式。例4:大小字母的轉(zhuǎn)換【參考程序】:
#include<cstdio>intmain(){ charc1,c2; c1='a'; c2='A'; printf("%c%c\n",c1,c2); c1=c1-32; c2=c2+32; printf("%c%c\n",c1,c2); return0;}運行結(jié)果:
aA
Aa【說明】:因為所有小寫字母的ASCII值要比對應(yīng)大寫字母的ASCII值大32,所以c1減去32后便得到原來字母的大寫形式。反之,c2加上32后便得到原來字母的小寫形式。x拓展#include<cstdio>intmain(){ charc1,c2; scanf("%c%c",&c1,&c2); printf("%c%c\n",c1-32,c2+32); return0;}
4、布爾變量數(shù)據(jù)類型定義標識符數(shù)值范圍占字節(jié)數(shù)有效位數(shù)布爾變量bool真true或假false1(8位)
例5:整型與布爾型的轉(zhuǎn)換描述將一個整型變量的值賦給一個布爾型變量,再將這個布爾型變量的值賦給一個整型變量,得到的值是多少?輸入一個整型范圍內(nèi)的整數(shù),即初始時整型變量的值。輸出一個整數(shù),經(jīng)過上述過程后得到的結(jié)果。樣例輸入3樣例輸出1#include<cstdio>intmain(){ inta; boolbo; scanf("%d",&a); bo=a; a=bo; printf("%d",a); return0;}延遲符知識點6運算符知識點:各類運算符的組成及參與運算的優(yōu)先級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。延遲符1.運算符的分類1.算術(shù)運算符⑶自增自減運算符自增、自減運算符用來對一個操作數(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。⑷復合算術(shù)賦值。例如,a+=1,相當于a=a+1;a+=b,相當于a=a+b。延遲符1.運算符的分類2.關(guān)系運算符
用于比較運算。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種。關(guān)系運算符用于數(shù)值的大小比較。包括大于(>)、小于(<)、等于(==)、大于等于(>=)、小于等于(<=)和不等于(!=)六種,它們都是雙目運算符。關(guān)系運算符運算的結(jié)果是整型,值只有兩種:0或1,0代表關(guān)系不成立,1代表關(guān)系成立。延遲符1.運算符的分類3.邏輯運算符
用于邏輯運算。包括與(&&)、或(||)、非(!)三種。邏輯運算的值也為“真”和“假”兩種,用“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é)果為假。延遲符1.運算符的分類3.邏輯運算符雖然C++編譯在給出邏輯運算值時,以“1”代表“真”,“0”代表“假”。但反過來在判斷一個量是為“真”還是為“假”時,以“0”代表“假”,以非“0”的數(shù)值作為“真”。例如:由于5和3均為非“0”因此5&&3的值為“真”,即為1。又如:5||0的值為“真”,即為1。延遲符(二)運算符的優(yōu)先級算術(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例1:變量自加運算#include<cstdio>intmain(){ intx,y,z1,z2; x=7; y=8; z1=y-(x++);//計算z1=1,計算后x=8z2=y-(++x);//計算前x的值自加1,x的值為9,再與y求差
printf("%d%d",z1,z2);//分別輸出z1和z2的值}
運行結(jié)果:z1和z2分別為?【說明】:在運行z1=y-(x++),是先算減法,x再自加1,所以結(jié)果為1。在z2=y-(++x),是x先加1,然后再算減法。延遲符函數(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ù)名(表達式),或在輸出語句中直接輸出。知識點7
標準函數(shù)延遲符1、表達式
是由常量、變量、標準函數(shù)與運算符按照一定的規(guī)則組成的式子。知識點8表達式延遲符2、數(shù)據(jù)類型轉(zhuǎn)換
C++語言中,要將一個表達式的結(jié)果轉(zhuǎn)換成期望的數(shù)據(jù)類型,或者不同數(shù)據(jù)類型的運算對象進行混合運算,就需要依據(jù)數(shù)據(jù)類型轉(zhuǎn)換規(guī)則進行轉(zhuǎn)換。⑴隱性轉(zhuǎn)換
a混合運算時的類型轉(zhuǎn)換整型、實型、字符型數(shù)據(jù)間可以混合運算。為了保證運算精度,系統(tǒng)在運算時的轉(zhuǎn)換規(guī)則是將存儲長度較短的運算對象轉(zhuǎn)成存儲長度較長的類型,然后再進行處理。這種轉(zhuǎn)換是系統(tǒng)自動進行的。知識點8表達式延遲符2、數(shù)據(jù)類型轉(zhuǎn)換b賦值時的類型轉(zhuǎn)換當賦值運算符兩側(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?!R點8表達式延遲符2、數(shù)據(jù)類型轉(zhuǎn)換
⑵強制類型轉(zhuǎn)換即將某一數(shù)據(jù)的數(shù)據(jù)類型轉(zhuǎn)換為指定的另一種數(shù)據(jù)類型,強制類型轉(zhuǎn)換只是臨時轉(zhuǎn)換。強制轉(zhuǎn)換運算符組成的運算表達式的一般形式:(類型名)(表達式)例如:已知有變量定義“intb=7;floata=2.5”,求下面算術(shù)表達式的值。
a+(double)(b/3)表達式延遲符課后訓練訓練1:整型數(shù)據(jù)類型和浮點型存儲空間大小分別定義int,short、float和double類型的變量各一個,并依次輸出它們的存儲空間大小(單位:字節(jié))。輸入:無。輸出:一行,四個整數(shù),分別是兩個變量的存儲空間大小,用一個空格隔開。延遲符課后訓練訓練2:浮點數(shù)向零舍入【1.2編程基礎(chǔ)之變量定義、賦值及轉(zhuǎn)換06】輸入一個單精度浮點數(shù),將其向零舍入到整數(shù)。說明:向零舍入的含義是,正數(shù)向下舍入,負數(shù)向上舍入。提示:可以使用強制類型轉(zhuǎn)換來實現(xiàn)。輸入:一個單精度浮點數(shù)。輸出:一個整數(shù),即向零舍入到整數(shù)的結(jié)果。樣例輸入:2.3樣例輸出:2延遲符課后訓練訓練3:整型與布爾型的轉(zhuǎn)換將一個整型變量的值賦給一個布爾型變量,再將這個布爾型變量的值賦給一個整型變量,得到的值是多少?輸入:
一個整型范圍內(nèi)的整數(shù),即初始時整型變量的值。輸出:
一個整數(shù),經(jīng)過上述過程后得到的結(jié)果。樣例輸入:3樣例輸出:1延遲符課后訓練訓練4:打印字符輸入一個整數(shù),即字符的ASCII碼,保證存在對應(yīng)的可見字符。輸出相對應(yīng)的字符。輸入:
一個整數(shù),即字符的ASCII碼,保證存在對應(yīng)的可見字符。輸出:
一行,包含相應(yīng)的字符。樣例輸入:65樣例輸出:A延遲符課后訓練訓練5:Hello,World!的大小可以用sizeof函數(shù)獲得它所占用的空間大小。輸入:
無。輸出:
一個整數(shù),即“Hello,World!”的大小。延遲符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é)果
}分析:交換兩個變量的值方法很多,一般我們采用引入第三個變量的算法,二個變量交換,可以想像成一瓶醬油和一瓶醋進行交換,這時容易想到拿一個空瓶子過來:①將醬油倒到空瓶中;②將醋倒到醬油瓶中;③將原空瓶中的醬油倒到醋瓶中。延遲符1.4.2典型例題例2:數(shù)學中經(jīng)典的“雞兔同籠”問題,已知頭共30個,腳共90只,問籠中的雞和兔各有多少只?注意這兩步運算的先后順序。程序如下:include<iostream>//使用cin,cout,須調(diào)用iostream庫
usingname
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 北京市西城區(qū)2025年三年級數(shù)學第二學期期末監(jiān)測模擬試題含解析
- 貴州黔南經(jīng)濟學院《批判性閱讀與寫作》2023-2024學年第二學期期末試卷
- 山西工商學院《課堂教學技能訓練》2023-2024學年第二學期期末試卷
- 浙江紡織服裝職業(yè)技術(shù)學院《插花藝術(shù)》2023-2024學年第一學期期末試卷
- 南京工業(yè)大學《建筑安裝工程概預算》2023-2024學年第二學期期末試卷
- 供應(yīng)鏈可持續(xù)性:環(huán)境與社會風險管理
- 有機蔬菜種植盒市場調(diào)查報告
- 許昌垂直車庫施工方案
- 2025年黃金投資分析報告:全球流動與價格波動中的關(guān)鍵信號
- 超長結(jié)構(gòu)廠房施工方案
- 肺結(jié)核病人的心理護理
- 2025年開封文化藝術(shù)職業(yè)學院單招職業(yè)技能測試題庫含答案
- 2025年遼寧冶金職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫有完整答案
- 2025年安徽揚子職業(yè)技術(shù)學院單招職業(yè)適應(yīng)性測試題庫(各地真題)
- 煙草職業(yè)鑒定三級技能考點
- 創(chuàng)新創(chuàng)業(yè)項目計劃書撰寫
- 2024年上海市楊浦區(qū)復旦大學附中自主招生數(shù)學試卷
- 《汽車底盤構(gòu)造與維修》專業(yè)課程標準
- 2024年江西應(yīng)用工程職業(yè)學院單招職業(yè)技能測試題庫標準卷
- 2023年初中畢業(yè)生信息技術(shù)中考知識點詳解
- 做賬實操-建筑施工企業(yè)的收入確認方法
評論
0/150
提交評論