第五十五章

類別:其他類型 作者:古都曾現 本章:第五十五章

    笑(二)實型變量

    語言中,實型變量分為單精度類型( fla )和雙精度類型( duble )兩種。如:

    fla a , b ; duble  ;

    在v中,fla 型數據在內存中占4個字節(位),duble型數據占8個字節。單精度實數提供7位有效數字,雙精度實數提供1516位有效數字。實型常量不分fla型和duble型,一個實型常量可以賦給一個fla 型或duble型變量,但變量根據其類型截取實型常量中相應的有效數字。

    注意:實型變量隻能存放實型值,不能用整型變量存放實型值,也不能用實型變量存放整型值。

    (三)字符變量

    字符變量用來存放字符常量,定義形式:

    har 變量名;

    其中關鍵字har定義字符型數據類型,占用一個字節的存儲單元。

    例:har r1,r; r1=‘a’, r=‘b’;

    將一個字符賦給一個字符變量時,並不是將該字符本身存儲到內存中,而是將該字符對應的asii碼存儲到內存單元中。例如,字符′a′的asii碼為65,在內存中的存放形式如下:0

    由於在內存中字符以asii碼存放,它的存儲形式和整數的存儲形式類似,所以語言中字符型數據與整型數據之間可以通用,一個字符能用字符的形式輸出,也能用整數的形式輸出,字符數據也能進行算術運算,此時相當於對它們的asii碼進行運算。

    類型的自動轉換和強製轉換

    當同一表達式中各數據的類型不同時,編譯程序會自動把它們轉變成同一類型後再進行計算。轉換優先級為:

    har 《 in 《 fla 《 duble

    即左邊級別“低“的類型向右邊轉換。具體地,若在表達式中優先級最高的數據是duble型,則此表達式中的其他數據均被轉換成duble型,且計算結果也是duble型;若在表達式中優先級最高的數據是fla型,則此表達式中的其他數據均被轉換成fla型,且計算結果也是fla型。

    在做賦值運算時,若賦值號左右兩邊的類型不同,則賦值號右邊的類型向左邊的類型轉換;當右邊的類型高於左邊的類型時,則在轉換時對右邊的數據進行截取。

    除自動轉換外,還有強製轉換,表示形式是:

    (類型)(表達式);例:(in)(a+b)

    討論:當a值賦值為4,b值賦值為7,(in)(a+b)和(in)a+b的值分別為多少?

    運算符認識

    語言的運算符範圍很廣,可分為以下幾類:

    、算術運算符:用於各類數值運算。包括加(+)、減(-)、乘(*)、除(/)、求餘(%)、自增(++)、自減(--)共七種。

    、賦值運算符:用於賦值運算,分為簡單賦值(=)、複合算術賦值(+=,-=,*=,/=,%=)和複合位運算賦值(≈ap;ap;=,|=,^=,》》=,《《=)三類共十一種。《=“” span=“”》

    、逗號運算符:用於把若幹表達式組合成一個表達式(,)。

    、關係運算符:用於比較運算。包括大於(》)、於(《)、等於(==)、大於等於(=“”》=)、於等於(《=)和不等於(!=)六種。《=“” span=“”》

    、邏輯運算符:用於邏輯運算。包括與(≈ap;ap;≈ap;ap;)、或(||)、非(!)三種。

    、條件運算符:這是一個三目運算符,用於條件求值(?:)。

    、位操作運算符:參與運算的量,按二進製位進行運算。包括位與(≈ap;ap;)、位或(|)、位非(~)、位異或(^)、左移(《《)、右移(》》)六種。

    8、指針運算符:用於取內容(*)和取地址(≈ap;ap;)二種運算。

    9、求字節數運算符:用於計算數據類型所占的字節數(sizef)。

    10、特殊運算符:有括號(),下標,成員(→,。)等幾種。

    另外,按參與運算的對象個數,語言運算符可分為:單目運算符(如!)、雙目運算符(如+,-)和三目運算符(如?:)。

    算術運算符和算術表達式

    一、基本的算術運算符

    (1)+(加法運算符或正值運算符,如+5)。

    ()-(減法運算符或負值運算符,如4-)。

    ()*(乘法運算符,如*8)。

    (4)/(除法運算符,如11/5)。

    /的運算分為兩種情況:

    a、“除”的左右兩邊都為整數時,所得結果必然是整數(注意:僅取整數部分,不是四舍五入)

    比如:5/的值為,不是5,1/的值為0。

    b、“除”的左右兩邊至少有一個是實型數據(即數)時,所得結果為實型數據。

    比如:5/0的值為5,70/0的值為5

    (5)%(模運算符或稱求餘運算符,%兩側均應為整型數據,如9%7的值為)。

    需要明的是:當運算對象為負數時,所得結果隨編譯器不同而不同,在v中,結果的符號與被除數相同,比如:1%-值為1,而-15%值為-1。

    二、算術表達式和運算符的優先級與結合性

    算術表達式是用算術運算符和括號將運算量(也稱操作數)連接起來的、符合語言語法規則的表達式。運算對象包括函數、常量和變量等。

    在計算機語言中,算術表達式的求值規律與數學中的四則運算的規律類似,其運算規則和要求如下。

    (1)在算術表達式中,可使用多層圓括號,但括號必須配對。運算時從內層圓括號開始,由內向外依次計算各表達式的值。

    ()在算術表達式中,對於不同優先級的運算符,可按運算符的優先級由高到低進行運算,若表達式中運算符的優先級相同,則按運算符的結合方向進行運算。

    ()如果一個運算符兩側的操作數類型不同,則先利用自動轉換或強製類型轉換,使兩者具有相同類型,然後進行運算。

    三、自增自減運算符

    作用:使變量的值增1或減1。

    如:++i,--i (在使用i之前,先使i的值加1、減1)。 i++,i--(在使用i之後,使i的值加1、減1)。

    (1)隻有變量才能用自增運算符(++)和自減運算符(--),而常量或表達式不能用,如10++或(+y)++都是不合法的。

    ()++和--的結合方向是“自右向左“,如-i++,i的左邊是負號運算符,右邊是自增運算符,負號運算和自增運算都是“自右向左“結合的,相當於-(i++)。

    在循環語句中常用到自增(減)運算符,在指針中也常用到該運算符,考生要弄清楚“i++”和“++i”及“i--”和“--i”的區別,特別弄清楚表達式的值和變量的值。

    賦值運算符與賦值表達式一、賦值運算符與賦值表達式

    賦值符號“=“就是賦值運算符,作用是將一個數據賦給一個變量或將一個變量的值賦給另一個變量,由賦值運算符組成的表達式稱為賦值表達式。一般形式為:

    變量名=表達式

    在程序中可以多次給一個變量賦值,每賦一次值,與它相應的存儲單元中的數據就被更新一次,內存中當前的數據就是最後一次所賦值的那個數據。

    例:a=1;此表達式讀作“將10的值賦值給變量a”。

    a、如果賦值號兩邊的運算對象類型不一致,係統會自動進行類型轉換,轉換的規則:將賦值號右邊表達式的值的類型轉換成賦值號左邊變量的類型,

    例:in y=5;在變量y中最終存儲的是整數。

    b、可以將複製表達式的值再賦值給變量,形成連續賦值。

    例如:=y=5 是一個連續賦值表達式,=y=5 等價於=(y=5),所以表達式=y=5 最終的值為5 。

    二、複合的賦值運算符

    在賦值運算符之前加上其他運算符可以構成複合賦值運算符。其中與算術運算有關的複合運算符是:+=,-=,*=,/=,%=。

    兩個符號之間不可以有空格,複合賦值運算符的優先級與賦值運算符的相同。表達式n+=1等價於n=n+1,作用是取變量n中的值增1再賦給變量n,其他複合的賦值運算符的運算規則依次類推。

    如求表達a+=a-=a*a 的值,其中a的初值為1 。

    步驟:

    (1)先進行“a-=a*a“運算,相當於a=a-a*a=1-144=-1 。()再進行“a+=-1“運算,相當於 a=a+(-1)==-64 。

    逗號運算符和逗號表達式

    在語言中,逗號除了作為分隔符,還可以用作一種運算符----逗號運算符,用逗號運算符將幾個表達式連接起來,例如a=b+,a=b*等稱為逗號表達式。

    一般形式為:

    表達式1 ,表達式 ,表達式 ,…,表達式n

    例:=,y=,z=4

    逗號表達式具有從左至右的結合性,即先求解表達式1,然後依次求解表達式,直到表達式n的值。表達式n的值就是整個逗號表達式的值。上述的逗號表達式的值就是表達式z=4的值4需要注意的是,逗號運算符是所有運算符中級別最低的。

    例:有如下程序段:

    ain(){ in a=,b=4,=6,,y; y=(=a+b),(b+); prinf(“y=%d,=%d”,y,);}

    程序顯示結果為:y=6,=6

    討論:將y=(=a+b),(b+);改為y=((=a+b),b+)的程序結果?

    關係運算符和關係表達式一、 語言中的邏輯值

    語言中的邏輯值隻有兩個:真(rue)和假(fse)。用非零代表真,用零代表假。因此,對於任意一個表達式,如果它的值為零,就代表一個假值,如果它的值為非零,就代表一個真值。隻要值不是零,不管是正數,負數,整數,實數,都代表一個真值。例如-5的邏輯值為真。

    二、邏輯表達式

    “≈ap;ap;≈ap;ap;”和“||”的運算對象有兩個,故它們都是雙目運算符,而!的運算對象隻有一個,因此它是單目運算符。邏輯運算舉例如下:

    (1)a≈ap;ap;≈ap;ap;b:當≈ap;ap;≈ap;ap;兩邊都為“真”時,表達式a≈ap;ap;≈ap;ap;b的值才是真。

    值得注意的是:在數學中,關係式0

    ()a||b:當||兩邊有一個為“真”時,表達式a||b的值就是真。

    ()!a:表示取反,如果a為真,則!a為假,反之亦然。例如!-5的值就為0

    在語言中,由≈ap;ap;≈ap;ap;或||組成的邏輯表達式,在某些特定情況下會產生“短路“現象。

    (1) ≈ap;ap;≈ap;ap; y ≈ap;ap;≈ap;ap; z ,隻有當為真(非0)時,才需要判別y的值;隻有和y都為真時,才需要去判別z的值;隻要為假就不必判別y和z,整個表達式的值為0。口訣:“一假必假”。

    例:(!5==1)≈ap;ap;≈ap;ap;(++i==0)(!5==1)表達式的值為0,所以計算機運行中就跳過(++i==0)此表達式,(!5==1)≈ap;ap;≈ap;ap;(++i==0)表達式的值為0

    ()||y||z ,隻要的值為真(非零),就不必判別y和z的值,整個表達式的值為1,隻有的值為假,才需要判別y的值,隻有和y的值同時為假才需要判別z的值,口訣:“一真必真”。

    位運算一、位運算符

    在計算機中,數據都是以二進製數形式存放的,位運算就是指對存儲單元中二進製位的運算。語言提供6種位運算符。

    二、位運算

    位運算符≈ap;ap;|~《《》》按優先級從高到低排列的順序是:

    位運算符中求反運算“~“優先級最高,而左移和右移相同,居於第二,接下來的順序是按位與“≈ap;ap;“、按位異或““和按位或“|“。順序為~《《》》≈ap;ap;|。

    例1:左移運算符“《《”是雙目運算符。其功能把“《《”左邊的運算數的各二進位全部左移若幹位,由“《《”右邊的數指定移動的位數,高位丟棄,低位補0。=“”《=“” span=“”》

    例如: a《《4 指把a的各二進位向左移動4位。如a=00000011(十進製),左移4位後為00(十進製48)。

    例:右移運算符“》》”是雙目運算符。其功能是把“》》”左邊的運算數的各二進位全部右移若幹位,“》》”右邊的數指定移動的位數。

    例如:設 a=15, a》》 表示把右移為十進製)。

    應該明的是,對於有符號數,在右移時,符號位將隨同移動。當為正數時,最高位補0,而為負數時,符號位為1,最高位是補0或是補1 取決於編譯係統的規定。

    例:設二進製數a是00 ,若通過異或運算ab 使a的高4位取反,低4位不變,則二進製數b是。

    解析:異或運算常用來使特定位翻轉,隻要使需翻轉的位與1進行異或操作就可以了,因為原數中值為1的位與1進行異或運算得0 ,原數中值為0的位與1進行異或運算結果得1。而與0進行異或的位將保持原值。異或運算還可用來交換兩個值,不用臨時變量。

    如 in a= , b=4;,想將a與b的值互換,可用如下語句實現: a=ab;

    b=ba;

    a=ab;

    所以本題的答案為:。

    語言作為一門非常適合編程入門的語言,打好基礎的重要性不言而喻。

    經典語言程序10例,今給大家分享10個比較基礎的語言的程序,附上幾個常用的10個例,希望給語言初學者帶來一定幫助,熟練運用,舉一反三。

    【程序1】

    題目:有1、、、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少?

    1程序分析:可填在百位、十位、個位的數字都是1、、、4。組成所有的排列後再去

    掉不滿足條件的排列。

    程序源代碼:

    ain()

    {

    in i,j,k;

    prinf(“

    ”);

    fr(i=1;i《5;i++)/*以下為三重循環*/

    fr(j=1;j《5;j++)

    fr (k=1;k《5;k++)

    {

    if (i!=k≈ap;≈ap;i!=j≈ap;≈ap;j!=k)/*確保i、j、k三位互不相同*/

    prinf(“%d,%d,%d

    ”,i,j,k);

    }

    }

    【程序】

    題目:輸入某年某月某日,判斷這一是這一年的第幾?

    1程序分析:以月5日為例,應該先把前兩個月的加起來,然後再加上5即本年的第幾,特殊

    情況,閏年且輸入月份大於時需考慮多加一。

    程序源代碼:

    ain()

    {

    in day,nh,year,su,leap;

    prinf(“

    please inpu year,nh,day

    ”);

    sanf(“%d,%d,%d”,≈ap;year,≈ap;nh,≈ap;day);

    sih(nh)/*先計算某月以前月份的總數*/

    {

    ase 1:su=0;break;

    ase :su=1;break;

    ase :su=59;break;

    ase 4:su=90;break;

    ase 5:su=10;break;

    ase 6:su=151;break;

    ase 7:su=181;break;

    ase 8:su=1;break;

    ase 9:su=4;break;

    ase 10:su=7;break;

    ase 11:su=04;break;

    ase 1:su=4;break;

    defaulrinf(“daa errr”);break;

    }

    su=su+day;/*再加上某的數*/

    if(year%400==0||(year%4==0≈ap;≈ap;year%100!=0))/*判斷是不是閏年*/

    leap=1;

    else

    leap=0;

    if(leap==1≈ap;≈ap;nh》)/*如果是閏年且月份大於,總數應該加一*/

    su++;

    prinf(“i is he %dh day”,su);}

    【程序】

    題目:輸入三個整數,y,z,請把這三個數由到大輸出。

    1程序分析:我們想辦法把最的數放到上,先將與y進行比較,如果》y則將與y的值進行交換,

    然後再用與z進行比較,如果》z則將與z的值進行交換,這樣能使最。

    程序源代碼:

    ain()

    {

    in ,y,z,;

    sanf(“%d%d%d”,≈ap;,≈ap;y,≈ap;z);

    if (》y)

    /*交換,y的值*/

    if(》z)

    /*交換,z的值*/

    if(y》z)

    /*交換z,y的值*/

    prinf(“sall  big:%d %d %d

    ”,,y,z);

    }

    【程序4】

    題目:用*號輸出字母的圖案。

    1程序分析:可先用《|》*《|》號在紙上寫出字母,再分行輸出。


>>章節報錯<<

如果您喜歡,請把《沙漠稱霸記》,方便以後閱讀沙漠稱霸記第五十五章後的更新連載!
如果你對沙漠稱霸記第五十五章並對沙漠稱霸記章節有什建議或者評論,請後台發信息給管理員。