廣州大學(xué)實(shí)驗(yàn)報(bào)告_第1頁
廣州大學(xué)實(shí)驗(yàn)報(bào)告_第2頁
廣州大學(xué)實(shí)驗(yàn)報(bào)告_第3頁
廣州大學(xué)實(shí)驗(yàn)報(bào)告_第4頁
廣州大學(xué)實(shí)驗(yàn)報(bào)告_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、廣 州 大 學(xué)實(shí) 驗(yàn) 報(bào) 告學(xué) 院 管理學(xué)院 專業(yè)、班級(jí) 電商201 姓名、學(xué)號(hào) 李輝() 課程名稱 程序設(shè)計(jì)基礎(chǔ) 項(xiàng)目名稱 實(shí)驗(yàn)1 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式 實(shí)驗(yàn)時(shí)間: 2021 年 10 月 4 日學(xué)院管理學(xué)院年級(jí)、專業(yè)、班電商201姓名李輝成績課程名稱程序設(shè)計(jì)基礎(chǔ)實(shí)驗(yàn)項(xiàng)目名 稱實(shí)驗(yàn)1 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式指導(dǎo)教師簽名實(shí)驗(yàn)1 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式一、 實(shí)驗(yàn)?zāi)康?. 理解C語言程序的編輯、編譯、連接、調(diào)試方法;2. 掌握命令行下的編輯、編譯、連接、調(diào)試工具的使用(GCC);3. 掌握集成開發(fā)工具(集編輯、編譯、連接、調(diào)試為一體的工具)(Visual Studio Counmmity

2、2019);4. 使用理解數(shù)在計(jì)算機(jī)內(nèi)的表達(dá)方式(二進(jìn)制數(shù)、8進(jìn)制數(shù)、16進(jìn)制整數(shù));5. 掌握C語言數(shù)據(jù)類型,熟悉如何定義一個(gè)整形、字符型和實(shí)型(f浮點(diǎn)型)的變量,掌握變量的賦值方法;6. 掌握不同數(shù)據(jù)類型數(shù)據(jù)之間賦值的規(guī)律;7. 學(xué)會(huì)使用C的有關(guān)算術(shù)運(yùn)算符,以及包含這些運(yùn)算符的表達(dá)式,特別是自加(+)和自減(-)運(yùn)算符的使用;8. 掌握格式化輸入、輸出函數(shù)的使用。二、 實(shí)驗(yàn)原理(算法分析(包括流程圖))(一) 工具的使用1. 學(xué)習(xí)控制臺(tái)下的編輯、編譯、連接及調(diào)試工具的使用(GCC)算法分析:設(shè)置環(huán)境變量 編輯源程序 編譯源程序 連接程序 執(zhí)行已生成的程序流程圖:開始設(shè)置環(huán)境變量編輯編譯連接

3、結(jié)束執(zhí)行2. 學(xué)習(xí)IDE工具的使用(Visual Studio Community 2019)開始(建立新項(xiàng)目)算法分析:建立一個(gè)工程(如HelloWorld)創(chuàng)建新項(xiàng)目 編輯源程序 編譯源程序 連接程序 執(zhí)行已生成的程序 調(diào)試流程圖:編輯編譯有無連接有錯(cuò)?不正確結(jié)果正確?執(zhí)行正確結(jié)束(二) 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式1) 變量a、b中各存有一個(gè)整數(shù),交換兩數(shù)后輸出開始算法分析:設(shè)a=10,b=20。若要交換這兩數(shù),則需要借用一中間變量。首先將a中的數(shù)值存入變量t 中進(jìn)行保存,然后將b中的數(shù)值存入a中,再將t中的數(shù)值存入b中。流程圖:輸入a=10,b=20,tt = aa = bb = t結(jié)束輸

4、出a,b2) 從鍵盤輸入一個(gè)字符,輸出這字符的ASCII碼的值算法分析:一個(gè)整數(shù),只要它的值在0255之間,就可以用字符形式輸出,在輸出前,系統(tǒng)會(huì)將該整數(shù)轉(zhuǎn)換為相應(yīng)的ASCII碼的字符;一個(gè)字符也可以用一個(gè)整數(shù)輸出,輸出的整數(shù)即為這字符的ASCII碼值。開始流程圖: 定義字符ch輸入ch輸出其對(duì)應(yīng)ASCII碼結(jié)束3) 整型變量的用法。算法分析:分析:當(dāng)將一個(gè)負(fù)整數(shù)賦給一個(gè)無符號(hào)的變量時(shí),計(jì)算機(jī)也可以輸出一個(gè)值,但這是一個(gè)經(jīng)過了進(jìn)制轉(zhuǎn)換而得到的一個(gè)數(shù)值,同時(shí)基本整型和無符號(hào)基本整型在超過取值范圍是都會(huì)出現(xiàn)“溢出”, 這時(shí)應(yīng)當(dāng)把int型變量改為long型才能的到正確的結(jié)果。4) 基本輸入輸出函數(shù)的

5、用法。分析:不同的函數(shù)的輸入輸出格式不一樣,要根據(jù)需要選擇不同的函數(shù)來完成操作,同時(shí)還要注意不同函數(shù)的輸入輸入輸出格式。三、 實(shí)驗(yàn)過程原始記錄(數(shù)據(jù)、圖表、計(jì)算等)1) 變量a、b中各存有一個(gè)整數(shù),交換兩數(shù)后輸出。設(shè)a=10,b=20#include <stdio.h>int main() int a = 10, b = 20, t;t = a;a = b;b = t;printf("a=%d,b=%dn", a, b);return 0; 2) 從鍵盤輸入一個(gè)字符,輸出這字符的ASCII碼的值#include <stdio.h>int main()

6、 char ch;printf("從鍵盤輸入一個(gè)字符:");scanf_s("%c",&ch); /vs中使用不會(huì)有警告 printf("%c對(duì)應(yīng)的ASCII碼:%dn", ch, ch); return 0; 3) 整型變量的用法。人工分析:#define _CRT_SECURE_NO_WARNINGS /未使用Visual Studio 時(shí)可刪除該行#include <stdio.h>int main()short int a, b; unsigned short c, d;long e, f;a = 100;

7、b = -100;e = 50000;f = 32767;c = a;d = b; printf("%hd,%hdn", a, b); / 以%hd格式輸出十進(jìn)制整數(shù),所以a=100,b=-100.printf("%hu,%hun", a, b); /無符號(hào)短整型格式輸出,所以a=100,應(yīng)該不能輸出。printf("%hu,%hun", c, b); /c=a,以%hu格式輸出,故c=100,b應(yīng)該不能輸出。c = (a = e); /等價(jià)的語句c = a = e; d = (b = f); /等價(jià)的語句d = b = f; pri

8、ntf("%hd,%hdn", a, b); /a=e,b=f,然而a為短整型變量,以%hd格式輸出時(shí),a應(yīng)該不能輸出,b=32767printf("%hu,%hun", c, d); /c=e,d=f.以無符號(hào)短整型格式輸出,c=50000,d=32767return 0;(1). 將一個(gè)負(fù)整數(shù)賦給一個(gè)無符號(hào)的變量,會(huì)得到什么結(jié)果。畫出它們?cè)趦?nèi)存中的表示形式。#include <stdio.h>int main() unsigned short a; a = -1; printf("%un", a); return 0;

9、將一個(gè)負(fù)整數(shù)賦給一個(gè)無符號(hào)的變量,其在內(nèi)存中以補(bǔ)碼儲(chǔ)存,-1的補(bǔ)碼為:0xffff(2). 將一個(gè)大于32767的整數(shù)賦給整形變量,會(huì)得到什么結(jié)果。畫出它們?cè)趦?nèi)存中的表示形式(在VC環(huán)境中,用short int )。#include <stdio.h>int main()short int a;a = 32768;printf("%dn", a);return 0; 整數(shù)溢出內(nèi)存表現(xiàn)形式:0x8000(3). 將一個(gè)整數(shù)賦給無符號(hào)的變量,會(huì)得到什么結(jié)果。畫出它們?cè)趦?nèi)存中的表示形式(在VC環(huán)境中,用short int )。#include <stdio.h&

10、gt;int main() unsigned short int m, n; m = 65534; n = 65536; printf("%d,%dn", m, n); return 0; m=0xfffe, n=0x0000(整數(shù)溢出)4) 基本輸入輸出函數(shù)的用法。(1). 運(yùn)行所給出的源程序,對(duì)照結(jié)果分析各語句的作用。#define _CRT_SECURE_NO_WARNINGS#include <stdio.h>int main()int a, b; /輸入基本整型變量a,bfloat d, e; /輸入單精度浮點(diǎn)型變量d,echar c1, c2;/輸入

11、字符型變量c1,c2double f, g;/輸入雙精度浮點(diǎn)型變量f,glong m, n;/輸入長整型變量m,nunsigned int p, q;/輸入無符號(hào)基本整型變量p,q/Begina = 61;/對(duì)a賦值b = 62; /對(duì)b賦值c1 = 'a' /c1為字符變量c2 = 'b' /c2為字符變量d = 5.67; /對(duì)d賦值e = -6.78; /對(duì)e賦值f = 1234.56789; /對(duì)f賦值g = 0.; /對(duì)g賦值m = 50000; /對(duì)m賦值n = -60000; /對(duì)n賦值p = 32768; /對(duì)p賦值q = 40000; /對(duì)q賦

12、值/Endprintf("a=%d,b=%dnc1=%c,c2=%cn", a, b, c1, c2);/a,b按整數(shù)輸出;c1,c2按字符輸出printf("d=%f,e=%fn", d, e);/用%f將d,e整數(shù)位全部輸出而小數(shù)位則輸出6位printf("f=%f,g=%fn", f, g);/ 用%f將f,g整數(shù)位全部輸出而小數(shù)位則輸出6位printf("m=%ld,n=%ldnp=%u,q=%un", m, n, p, q);/m,n按整數(shù)輸出;p,q按無符號(hào)十進(jìn)制數(shù)格式輸出return 0;(2). 將

13、程序中的第二、第三個(gè)printf語句修改為如下形式,然后運(yùn)行程序,查看結(jié)果。 printf("d=%-6.2f,e=%-6.2fn",d,e);/ =%-6.2f,表示數(shù)長為6,包括小數(shù)點(diǎn),且保留兩位小數(shù),不夠的用空格補(bǔ)充。printf("f=%-15.6f,g=%-15.10fn",f,g);(3). 將上述兩個(gè)printf語句進(jìn)一步修改為如下形式,然后運(yùn)行程序,查看結(jié)果。 printf("d=%-6.2fte=%-6.2fn",d,e);t相當(dāng)于8個(gè)空格 printf("f=%-15.6ftg=%-15.10fn&quo

14、t;,f,g);(4). 將程序的第bein end間的代碼修改為如下語句:a=61;b=62;c1='a'c2='b'f=1234.56789;g=0.;d=f;e=g;p=a=m=50000;q=b=n=-60000;運(yùn)行程序,并分析結(jié)果。(5). 修改(1)中的程序,不使用賦值語句,而用下面的scanf語句為a、b、c1、c2、d、e輸入數(shù)據(jù):scanf("%d%d%c%c%f%f",&a,&b,&c1,&c2,&d,&e);² 請(qǐng)按照程序原來中的數(shù)據(jù),選用正確的數(shù)據(jù)輸入格式,為

15、上述變量提供數(shù)據(jù)。² 使用如下數(shù)據(jù)輸入格式,為什么得不到正確的結(jié)果?輸入數(shù)據(jù):61 62 a b 5.67 -6.78 原因分析:之所以得不到正確的結(jié)果是因?yàn)閿?shù)據(jù)輸入格式不對(duì)。當(dāng)scanf函數(shù)接受字符時(shí),不能敲回車或空格,因?yàn)橄到y(tǒng)認(rèn)為回車或空格是一個(gè)字符就接受了,所以不能輸入空格。但是當(dāng)scanf接受的不是字符時(shí),系統(tǒng)接受時(shí)輸入一個(gè)空格或是回車就會(huì)隨自動(dòng)過濾掉。(6). 進(jìn)一步修改中使用的程序,使f和g的值用scanf()函數(shù)輸入。主要需要修改后的語句:scanf("%d%d%c%c%f%f%lf%lf", &a, &b, &c1, &am

16、p;c2, &d, &e,&f,&g);結(jié)果:(7). 進(jìn)一步修改上面的程序,使其他所有變量的值都改用scanf()函數(shù)輸入。scanf("%d%d%c%c%f%f%lf%lf", &a, &b, &c1, &c2, &d, &e,&f,&g);scanf("%ld%ld%u%u", &m, &n, &p, &q);(8). 修改(7)中的程序,使c1、c2的數(shù)據(jù)用getchar()函數(shù)輸入,用putchar()函數(shù)輸出。主要代

17、碼:scanf("%d%d% ", &a, &b); c1 = getchar();c2 = getchar();scanf("%f%f", &d, &e);scanf("%lf%lf", &f, &g);scanf("%ld%ld%u%u", &m, &n, &p, &q);printf("a=%d,b=%dn", a, b);putchar(c1);putchar(c2);putchar('n')

18、;printf("d=%f,e=%fn", d, e);printf("f=%f,g=%fn", f, g);printf("m=%ld,n=%ldnp=%u,q=%un", m, n, p, q);執(zhí)行結(jié)果:² 使用與(7)相同的數(shù)據(jù)輸入格式輸入數(shù)據(jù)。² 請(qǐng)分析:使用如下格式為a、b、c1、c2輸入數(shù)據(jù)時(shí)會(huì)出現(xiàn)什么結(jié)果?運(yùn)行程序驗(yàn)證所分析的結(jié)論。輸入數(shù)據(jù)格式:61 62 a b 主要代碼:scanf("%d%d%c%c", &a, &b, &c1, &c2);p

19、rintf("a=%d,b=%dnc1=%c,c2=%cn", a, b,c1,c2);結(jié)果:a=61,b=62c1=,c2=a運(yùn)行程序:分析:用scanf函數(shù)輸入數(shù)據(jù)時(shí),按題目要求輸入數(shù)據(jù),輸完61,62后按回車,在輸入一個(gè)字符a之后程序便結(jié)束了,這是因?yàn)橄到y(tǒng)把回車當(dāng)作一個(gè)字符輸入了,所以結(jié)果才會(huì)出現(xiàn)c1=,c2=a四、 實(shí)驗(yàn)結(jié)果及分析(一) 工具的使用1) minGW-GCC遇到的問題分析:不明白如何在GCC下工作。編譯是什么?連接又是啥?怎么執(zhí)行?有什么用?如何設(shè)置環(huán)境變量 怎么用記事本編輯源程序?課件上的那些 -c,-o是什么意思解決:在一堆疑問下,我盡量平復(fù)了自己

20、的焦慮的心情,一個(gè)一個(gè)問題的去分析解決,我打開了老師發(fā)給我們的課件,找到GCC這一ppt,然后在上網(wǎng)查詢相關(guān)知識(shí),最后明白了原來編譯是將源文件編譯成目標(biāo)文件,且需要使用 -c選項(xiàng)。使用-o選項(xiàng)可以自定義目標(biāo)文件的名字。而連接是目標(biāo)文件轉(zhuǎn)換成可執(zhí)行文件,只需要在gcc后緊目標(biāo)文件名。生成可執(zhí)行程序后便可執(zhí)行程序,得到結(jié)果。2) IDE的使用分析:有了在GCC下工作的經(jīng)驗(yàn),同時(shí)結(jié)合課本和老師課件里對(duì)相關(guān)函數(shù)的介紹和分析,在vs上創(chuàng)建“HelloWorld”項(xiàng)目便水到渠成了,同時(shí)掌握了一點(diǎn)點(diǎn)vs的相關(guān)基本操作。(二) 數(shù)據(jù)類型、運(yùn)算符和表達(dá)式1) 變量a、b中各存有一個(gè)整數(shù),交換兩數(shù)后輸出。結(jié)果:分

21、析:根據(jù)老師的實(shí)驗(yàn)指導(dǎo)書,明白要交換這兩數(shù),則需要借用一中間變量t。問題很輕松地解決了。2) 從鍵盤輸入一個(gè)字符,輸出這字符的ASCII碼的值問題分析:一開始不知道要怎么做,應(yīng)該用什么函數(shù)呢?然后我看了老師的實(shí)驗(yàn)指導(dǎo)書明白可以用scanf函數(shù),但是scanf函數(shù)的用法是怎么樣?我并不知道啊,于是我翻書和上網(wǎng)查閱相關(guān)資料,好不容易搞懂了,結(jié)果在運(yùn)行程序時(shí)卻發(fā)現(xiàn)vs中會(huì)出現(xiàn)了scanf函數(shù)警告,我又懵了,于是我又查看老師的課件,終于發(fā)現(xiàn)了需要在程序開頭加上一段代碼“#define _CRT_SECURE_NO_WARNINGS”,于是問題最終解決了,究其原因還是自己上課不夠認(rèn)真。3) 整型變量的用

22、法。人工分析:printf("%hd,%hdn", a, b); / 以%hd格式輸出十進(jìn)制整數(shù),所以a=100,b=-100.printf("%hu,%hun", a, b); /無符號(hào)短整型格式輸出,所以a=100,b應(yīng)該不能輸出。printf("%hu,%hun", c, b); /c=a,以%hu格式輸出,故c=100,b應(yīng)該不能輸出。c = (a = e); /等價(jià)的語句c = a = e; d = (b = f); /等價(jià)的語句d = b = f; printf("%hd,%hdn", a, b); /

23、a=e,b=f,然而a為短整型變量,以%hd格式輸出時(shí),a應(yīng)該不能輸出,b=32767printf("%hu,%hun", c, d); /c=e,d=f.以無符號(hào)短整型格式輸出,c=50000,d=32767上機(jī)對(duì)照:?jiǎn)栴}分析:為什么b=-100時(shí)能以無符號(hào)整型輸出?且變成了65436?后面a=e,賦值50000,然而a定義為短整型變量,為什么能以%hd格式輸出?解決:我上網(wǎng)查了查相關(guān)知識(shí),得知當(dāng)將一個(gè)負(fù)整數(shù)賦給一個(gè)無符號(hào)的變量時(shí),計(jì)算機(jī)也可以輸出一個(gè)值,但這是一個(gè)經(jīng)過了進(jìn)制轉(zhuǎn)換而得到的一個(gè)數(shù)值,主要是以補(bǔ)碼的形式儲(chǔ)存。同時(shí)基本整型和無符號(hào)基本整型在超過取值范圍是都會(huì)出現(xiàn)

24、“溢出”。4) 基本輸入輸出函數(shù)的用法。運(yùn)行所給出的源程序,對(duì)照結(jié)果分析各語句的作用ps:實(shí)驗(yàn)指導(dǎo)里各種小題的過程和結(jié)果分析我已在第三部分“實(shí)驗(yàn)過程原始記錄”做了,為了避免重復(fù)和冗余,我就不在這部分再次做啦,希望老師理解??偨Y(jié):整個(gè)實(shí)驗(yàn)我覺得挺難的,尤其是對(duì)新手來說,我感覺最難的部分在于各種類型的數(shù)據(jù)之間的轉(zhuǎn)換,某種類型變量以另一種類型格式輸出時(shí)是數(shù)據(jù)怎么轉(zhuǎn)換的,經(jīng)過不斷地查詢資料,終于明白了其中的轉(zhuǎn)換規(guī)則。還有scanf,getchar,putchar等函數(shù)用法還需要多上機(jī)來熟練。盡管做實(shí)驗(yàn)的過程挺艱辛的,但一步一步地搞懂和掌握也是挺有成就感的,達(dá)到了本次實(shí)驗(yàn)的目的。五、 附錄(自己實(shí)現(xiàn)的源代碼)1. 變量a、b中各存有一個(gè)整數(shù),交換兩數(shù)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論