實驗02資料型別 運算子和表示式

2023-01-13 21:27:05 字數 3545 閱讀 9489

實驗目的:

1.掌握c語言資料型別,熟悉如何定義乙個整型、字元型和實型的變數,以及對它們賦值的方法;

2.掌握不同型別資料之間賦值的規律;

3.學會使用c語言的有關算術運算子,以及包含這些運算子的表示式,特別是自加(++)和自減(--)運算子的使用;

4.進一步熟悉c程式的編輯、編譯、連線和執行的過程。

實驗內容:

1.輸入下面的程式:

#include <>

void main( )

(1)執行此程式;

執行的結果如下

(2)在程式的最後增加語句「printf(「%d%d\n」,c1,c2);」再執行,並分析結果;

加printf(「%d%d\n」,c1,c2);後

分析結果:加printf(「%d%d\n」,c1,c2);後對應的小寫字母的ascii**,放在對應的字元變數中

(3)將程式的第4行「char c1, c2;」改為「int c1, c2;」後再執行,並分析結果;

將第4行「char c1,c2,」改為」intc1,c2;」後執行的結果

分析結果定義為整型後結果執行不變

(4)將程式的第5、6行改為:

c1 = a不用單撇號*/

c2 = b;

再執行,並分析結果;

執行的結果的結果如下

分析結果:因為a,b,是字元,定義要加單撇號才會執行。

(5)再將程式的第5、6行改為:

c1 =」 a用雙撇號*/

c2 =」 b」;

再執行,並分析結果;

(6)再將程式的第5、6行改為:

c1 =300用大於255的整數*/

c2 =400;

再執行,並分析結果。

2.輸入以下程式:

#include <>

void main( )

分析結果:因為c是單一字元,所以輸出的是%c是佔位符,輸出的時候三個%c分別會填入後面列出的變數c1,c2,c3代表的值。即a,b,c

\t是製表符。它的作用是將游標移到最接近8的倍數的位置,使得後面的輸入從此開始。

因為前面a%cb%c會輸出aabb佔了5個字元(注意aa和bb之間有個空格)

所以遇到/t的時候會跳到第8個字元處(即多出3個空格)開始輸出cc

然後又是\t,於是再跳到第2*8=16個字元處(多出6個空格)再輸出後面的abc,

結果是aabbccabc

先用人工分析程式,寫出應得結果,再與執行結果比較。

3.輸入並執行下面的程式

#include <>

void main()

請對照程式和執行結果分析:

(1)將乙個負整數賦給乙個無符號的變數,會得到什麼結果;

答:會將這個負整數對應的補碼的這二進位制形式存入這個無符號的變數中,因為在資料儲存時,只要不溢位就都是以二進位制形式儲存,只有當使用的指令區分無符號數才還是帶符號數時,才會對就不同的含義。

(2)將乙個大於32767的長整數賦給整型變數,會得到什麼結果;

答:大將乙個大於32767的長整數賦給整型變數就會發生溢位現象,因為int的範圍是-327678-32767 如果輸入的資料大於32767,那麼輸出的結果就為-32768+(i-32767)

(3)將乙個長整型數賦給無符號變數,會得到什麼結果(分別考慮該長整數的值大於或等於65535 以及小於65535 的情況)。

答:一般情況,如果超出儲存範圍,就會溢位,結果得到的是溢位的那一部分。

同學們可以改變程式中各變數的值,以便比較。

例如: a = 65580, b = -40000, e = 65535, f = 65580。

更改值後的結果

4.輸入以下程式:

#include <>

void main()

(1) 執行程式,分析變數:i、j、m、n 的值;

分析結果如下:對於m=++i,先執行i+1=9,再執行i的值所以m=9,對於n=j++,先把j的值賦給n,再執行j+1,所以n=10,j=

(2)將第7、8行改為:

m = i++;

n = ++j;

再執行並分析結果;

把第7、8行改為m=i++;n=++j後執行的結果如下

分析結果:對於m=i++,先把i賦值給m,所以m=8,再執行i+1,所以i=9,對於n=++j,先執行j+1,再把值賦給n.所以j=11,n=11.

(3)將程式改為:

#include <>

void main()

執行並分析結果;

分析結果:對於i++與j++,先執行i與j,再執行i+1與j+1,所以i與j輸出的值不變。

(4)在(3)的基礎上,將printf 語句改為:

printf(「%d,%d」, ++i, ++j);

執行並分析結果;

分析結果:對於++i與++j,先執行i+1與j+1,再執行i與j的值,所以i=9,j=10.

(5)再將printf 語句改為:

printf(「%d,%d,%d,%d」, i, j, i++, j++);

執行並分析結果;

分析結果:對於i++與j++,先執行i與j,再執行i+1與j+1,所以i與j輸出的值不變。

(6)將程式改為:

#include <>

void main()

分析結果:對於運算子優先++,--,大於賦值運算子+=,-=,對於m+=i++,先執行i++,所以i先把值賦給m,再執行i+1,就是自加,最後執行

「+=」,所以m=8,i=9;同理n-=--j,先執行j-1,在執行j的值,把值賦給n,最後執行「-=」,賦給n,所以j=9,n=-9。

5.按要求編寫程式並上機執行

(1)要將」china」譯成密碼,解碼規律是:用原來字母後面的第4個字母代替原來的字母。例如,字母」a」後面第4個字母是」e」,用」e」代替」a」。

因此,」china」應譯為」glmre」。請編一程式,用賦初值的方法使c1、c2、c3、c4、c5 五個變數的值分別為』c』、』h』、』i』、』n』、』a』,經過運算,使c1、c2、c3、c4、c5分別變為』g』、』l』、』m』、』r』、』e』並輸出。

①輸入事先已編好的程式,並執行該程式。分析是否符合要求。

編寫程式如下:字元與ascii**對照

c=67,g=71,h=104,l=108,i=105,m=109,n=110,r=114,a=97,e=101。

#include<>

int main( )

②改變c1、c2、c3、c4、c5的初值為:』t』、』o』、』d』、』a』、』y』,對解碼規律作如下補充:』w』用』a』 代替,』x』用』b』代替,』y』用』c』代替,』z』用』d』代替。

修改程式並執行。

改變c1、c2、c3、c4、c5的初值為:』t』、』o』、』d』、』a』、』y』,結果執行如下

③將解碼規律修改為:將字母用它前面的第4個字母代替,例如:』e』用』a』 代替,』z』用』u』代替,』d』用』z』代替,』c』用』y』代替,』b』用』x』代替,』a』用』v』代替。

修改程式並執行。

(2)已知兩個電阻分別為10歐姆和20歐姆,求併聯後電阻的值。

提示:1/r=1/r1+1/r2

最後,對這次實驗作乙個簡要的總結。

實驗2 資料型別 運算子和表示式new

實驗課程名稱c語言實驗報告 實驗專案名稱資料型別 運算子和表示式 專業班級 學生姓名 學號指導教師 實驗時間 實驗2 資料型別 運算子和表示式 1.實驗目的 1 掌握g語言資料型別,熟悉如何定義乙個整型 字元型和實型的變數,以及對它 們賦值的方法。2 掌握不同的型別資料之間賦值的規律。3 學會使用c...

實驗2基本資料型別 運算子與表示式

實驗時間 10月18日星期四 34節實驗地點 6機房 一 實驗實訓目的及要求 1 掌握c語言資料型別,熟悉如何定義乙個整型 字元型 實型變數,以及對它們賦值的方法,了解以上型別資料輸出時所用的格式轉換符。2 學會使用c的有關算術運算子,以及包含這些運算子的表示式,特別是自加 和自減 運算子的使用。3...

資料型別 表示式及順序結構練習題

c語言單元練習題 第一單元資料型別 表示式及順序結構練習題 一 選擇題 1.不合法的c語言整型常量是 a a.012b.0x35c.123ld.8e2 2.不合法的c語言實型常量是 a a.e3b.123c.6.2e4 d.5.0 3.不合法的c字元常量是 c a.2b.101 c.abd.n 4 ...