課程名稱C語(yǔ)言程序設(shè)計(jì)_第1頁(yè)
課程名稱C語(yǔ)言程序設(shè)計(jì)_第2頁(yè)
課程名稱C語(yǔ)言程序設(shè)計(jì)_第3頁(yè)
課程名稱C語(yǔ)言程序設(shè)計(jì)_第4頁(yè)
課程名稱C語(yǔ)言程序設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩85頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、課程名稱:C語(yǔ)言程序設(shè)計(jì) 2/83內(nèi)容提要第5章 循環(huán)結(jié)構(gòu)程序設(shè)計(jì)第3章 運(yùn)算符和表達(dá)式第2章 C語(yǔ)言基本知識(shí)第1章 C語(yǔ)言概述第4章 順序和選擇結(jié)構(gòu)程序設(shè)計(jì)第6章 函數(shù)第7章 數(shù)組第8章 指針第9章 結(jié)構(gòu)體等構(gòu)造數(shù)據(jù)類型第10章 文件3/83程序與程序設(shè)計(jì)語(yǔ)言的概念C語(yǔ)言的發(fā)展歷史C語(yǔ)言的主要特點(diǎn)C語(yǔ)言的基本結(jié)構(gòu)C程序的調(diào)試 第1章 C語(yǔ)言概述 回顧4/832.1 字符集和標(biāo)識(shí)符2.2 變量與常量2.3 C語(yǔ)言的數(shù)據(jù)類型2.4 整型數(shù)據(jù)2.5 浮點(diǎn)數(shù)2.6 字符型數(shù)據(jù) 第2章 C語(yǔ)言基本知識(shí)5/83 2.1 字符集和標(biāo)識(shí)符 字符集 什么是字符集? 字符集是高級(jí)語(yǔ)言的翻譯程序所能識(shí)別的字母、數(shù)

2、字和特殊符號(hào)。 C語(yǔ)言的字符集包括如下幾種: (1)大、小寫英文字母;(4)括號(hào); (2)數(shù)字0到9; (5)標(biāo)點(diǎn)符號(hào); (3)運(yùn)算符; (6)特殊符號(hào); (7)空白符:空格符、換行符、制表符。6/83 2.1 字符集和標(biāo)識(shí)符 字符集 字符集中的字符按照C語(yǔ)言語(yǔ)法組合起來(lái),就能通過(guò)編譯系統(tǒng)的語(yǔ)法和詞法分析。 想一想,不在字符集中的字符如何輸出? a.在兩個(gè)雙引號(hào)之間出現(xiàn)(字符串); b.出現(xiàn)在注釋行中。 例如:int sum; /* 輸出一個(gè)E-mail地址 */ printf(“”);7/83 2.1 字符集和標(biāo)識(shí)符 標(biāo)識(shí)符 什么是標(biāo)識(shí)符? 它是用來(lái)標(biāo)識(shí)C程序中的變量、常量(符號(hào)常量)、數(shù)據(jù)

3、類型和函數(shù)的一個(gè)字符序列。 C語(yǔ)言中的標(biāo)識(shí)符必須符合下列語(yǔ)法規(guī)則: (1)以字母或下劃線開(kāi)頭; (2)第一個(gè)字符后可以是任意的字母、數(shù)字、下劃線組成的序列,長(zhǎng)度不超過(guò)八個(gè)字符。8/83 2.1 字符集和標(biāo)識(shí)符 標(biāo)識(shí)符 C語(yǔ)言的標(biāo)識(shí)符分三類: 關(guān)鍵字(保留字)、特定字、用戶定義字。 (1)關(guān)鍵字(保留字) 關(guān)鍵字是C編譯程序預(yù)先設(shè)定的標(biāo)識(shí)符,它們代表特定的意義,用戶不能隨便使用,一般用小寫字母表示。 關(guān)鍵字舉例:int、main、void和for等;9/83 2.1 字符集和標(biāo)識(shí)符 標(biāo)識(shí)符(2)特定字 特定字是具有特殊含義的標(biāo)識(shí)符,人們習(xí)慣上把它看作關(guān)鍵字,用小寫字母表示。 特定字包括:defi

4、ne、undef、include、ifdef、ifndef、endif、line;10/83 2.1 字符集和標(biāo)識(shí)符 標(biāo)識(shí)符 (3)用戶定義字 它是用戶在程序中按照C語(yǔ)法規(guī)則定義的標(biāo)識(shí)符。簡(jiǎn)單的說(shuō),用戶定義字就是程序員在程序設(shè)計(jì)時(shí)為變量、常量以及函數(shù)等起的名字。 命名時(shí)的注意事項(xiàng): (1)不能使用關(guān)鍵字和特定字作為用戶定義字; (2)用戶定義字用于標(biāo)識(shí)不同的對(duì)象,所以前8(或7)個(gè)字符要有所區(qū)別;11/83 2.1 字符集和標(biāo)識(shí)符 標(biāo)識(shí)符命名時(shí)的注意事項(xiàng): (3)根據(jù)含義取英文或漢語(yǔ)拼音的縮寫,以便閱讀和檢查; (4)避免使用容易混淆的字符; (5)字母的大小寫分別代表不同的意義; (6)C語(yǔ)

5、言有許多庫(kù)函數(shù),用戶定義字不要與其中某個(gè)函數(shù)同名。12/83 計(jì)算機(jī)程序所處理的對(duì)象是 數(shù)據(jù) 。 2.2 變量與常量 外存數(shù) 據(jù) 在 計(jì) 算 機(jī) 中 的 一 個(gè) 處 理 過(guò) 程 內(nèi)存 CPU寄存器 內(nèi)存 其它輸出設(shè)備程序設(shè)計(jì)的一個(gè)主要任務(wù)是控制數(shù)據(jù)所在的位置。13/832.2.1 變量 變量在程序運(yùn)行過(guò)程中其值是可以變化的,一個(gè)變量在內(nèi)存中占若干個(gè)字節(jié)(具體值與數(shù)據(jù)類型有關(guān)),每個(gè)變量都要有名稱,用來(lái)存儲(chǔ)一個(gè)可以變化的數(shù)值。 定義變量:變量在使用前,要先起名,同時(shí)還要聲明它的數(shù)據(jù)類型,以便編譯系統(tǒng)根據(jù)不同的數(shù)據(jù)類型為其靜態(tài)地分配內(nèi)存空間。 2.2 變量與常量14/832.2.1 變量 變量先定

6、義后使用的原因: (1)編譯系統(tǒng)會(huì)根據(jù)定義為變量分配內(nèi)存空間,分配空間的大小與數(shù)據(jù)類型有關(guān); (2)未經(jīng)過(guò)定義的標(biāo)識(shí)符,系統(tǒng)不允許將其作為變量名使用; (3)編譯系統(tǒng)可以根據(jù)變量的類型檢查對(duì)該變量的運(yùn)算是否合法。 2.2 變量與常量15/832.2.1 變量 定義變量的格式: 類型說(shuō)明符 變量名表; (1)使用逗號(hào)分隔變量名表中的多個(gè)變量,并使用分號(hào)結(jié)束語(yǔ)句; (2)類型說(shuō)明符指定了變量的數(shù)據(jù)類型,包括int、float、double、char等; (3)變量名的命名規(guī)則要符合用戶定義字的命名規(guī)則,一般使用小寫字母。 2.2 變量與常量16/832.2.1 變量 變量定義舉例: int dat

7、e,step; char a,c;或?qū)憺椋篶har a;char c; 注意:在函數(shù)內(nèi)部定義的普通變量,在沒(méi)有用賦值號(hào)對(duì)其賦值之前,其初始值為不定值??聪旅娴睦}。 2.2 變量與常量17/832.2.1 變量 2.2 變量與常量#include “”void main() int a,b,sum; a=1;b=2; sum=sum+a+b; printf(“a add b is %d/n”,sum); 你知道這個(gè)程序的輸出結(jié)果嗎?18/832.2.1 變量 2.2 變量與常量輸出結(jié)果如下:19/832.2.1 變量 2.2 變量與常量#include “”void main() int a,

8、b,sum; a=1;b=2;sum=0; sum=sum+a+b; printf(“a add b is %d/n”,sum);20/832.2.1 變量 2.2 變量與常量重新編譯、連接、運(yùn)行后,輸出結(jié)果如下:21/832.2.2 常量 常量:被存儲(chǔ)在內(nèi)存當(dāng)中,在程序執(zhí)行過(guò)程中不會(huì)發(fā)生改變的量。(a=32;) 不同數(shù)據(jù)類型的常量,其表示方法是不一樣的。32是整型常量,a是字符型常量。 為增強(qiáng)程序的可讀性,用預(yù)處理命令#define為常量起一個(gè)名字,并把這種常量叫做符號(hào)常量。 例如:#define PI 注意:用#define為常量命名時(shí),通常用大寫字母。 2.2 變量與常量22/83 2.

9、3 C語(yǔ)言的數(shù)據(jù)類型 數(shù)據(jù)類型在高級(jí)語(yǔ)言中是一個(gè)很重要的概念,不同的數(shù)據(jù)類型在內(nèi)存中的存儲(chǔ)方式是不同的,所占的字節(jié)數(shù)通常也不一樣。高級(jí)語(yǔ)言能表示的數(shù)據(jù)類型越多,程序編寫起來(lái)就越簡(jiǎn)單。23/83 2.3 C語(yǔ)言的數(shù)據(jù)類型 C語(yǔ)言的數(shù)據(jù)類型 C語(yǔ)言的數(shù)據(jù)類型基本數(shù)據(jù)類型復(fù)雜數(shù)據(jù)類型 整型 int 浮點(diǎn)型 float double 字符型 char 結(jié)構(gòu)體 struct 聯(lián)合體 union 枚舉 enum 數(shù)組 以為標(biāo)志 指針類型 以*為標(biāo)志 構(gòu)造類型24/83 2.3 C語(yǔ)言的數(shù)據(jù)類型 基本數(shù)據(jù)類型 基本數(shù)據(jù)類型 短整型 short int 普通整型 int 長(zhǎng)整型 long int 整型浮點(diǎn)型

10、雙精度浮點(diǎn)型 double 普通浮點(diǎn)型 float字符型 char25/83 2.3 C語(yǔ)言的數(shù)據(jù)類型 基本數(shù)據(jù)類型 不同數(shù)據(jù)類型的數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式不同,因此其存儲(chǔ)所占的二進(jìn)制位大多不同。即使是相同類型的數(shù)據(jù)在不同種類的計(jì)算機(jī)中所占位數(shù)也不完全相同。 在Turbo C中,普通整型占16位,而在中,普通整型則占32位。 一個(gè)數(shù)據(jù)所占二進(jìn)制位數(shù)的多少?zèng)Q定了它的最小值和最大值。26/83 2.4 整型數(shù)據(jù)問(wèn)題的提出與程序示例整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式整型變量整型常量用printf函數(shù)顯示整型數(shù)據(jù)用scanf函數(shù)輸入整型數(shù)據(jù)27/83 2.4 整型數(shù)據(jù)問(wèn)題的提出與程序示例 問(wèn)題:計(jì)算并輸出a2+

11、2b的值,a和b是從鍵盤上接收的用戶輸入的兩個(gè)整數(shù)。#include “”void main() int a,b,result; /*整型變量的定義*/ printf(“please input two integer:n”); scanf(“%d%d”,&a,&b); /*整型變量的輸入*/ result=a*a+2*b; /*整型常量的寫法*/ printf(“result is %dn”,result); /*整型數(shù)據(jù)的輸出*/28/83 2.4 整型數(shù)據(jù)問(wèn)題的提出與程序示例 輸出結(jié)果如下:29/83 2.4 整型數(shù)據(jù)整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 帶符號(hào)整數(shù):有正負(fù)之分的整數(shù),在計(jì)算機(jī)內(nèi)部

12、以二進(jìn)制補(bǔ)碼形式存儲(chǔ)。 無(wú)符號(hào)整數(shù):不分正負(fù)的整數(shù),大于或等于0的整數(shù),在計(jì)算機(jī)內(nèi)部以二進(jìn)制原碼的形式存儲(chǔ)。 不引起混淆的情況下,帶符號(hào)整數(shù)簡(jiǎn)稱為整數(shù)。 假設(shè)一個(gè)帶符號(hào)的整數(shù)在內(nèi)存中占16位,則其存儲(chǔ)情況如下圖:0 1 15整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)符號(hào)位符號(hào)位為0,表示該整數(shù)是正整數(shù);符號(hào)位為1,表示該整數(shù)是負(fù)整數(shù)。30/83 2.4 整型數(shù)據(jù)整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 16位二進(jìn)制能夠存儲(chǔ)的最大整數(shù)和最小整數(shù)是多少?31/83 2.4 整型數(shù)據(jù)整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 先考慮16位無(wú)符號(hào)整型數(shù)據(jù): 最小值為:0000 0000 0000 00000 最大值為:1111 1111 1111 1

13、111216-165535 帶符號(hào)的16位整型數(shù)據(jù): 如果符號(hào)位為0: 最大值為:0111 1111 1111 1111 215-132767 最小值為?(32767?) 32767的補(bǔ)碼為:1000 0000 0000 0001 32/83 2.4 整型數(shù)據(jù)整型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 把它1得到:1000 0000 0000 0000 (最小的) 32768215 所以,帶符號(hào)的16位整型數(shù)據(jù)的取值范圍是: ( 215 215 1) 不同位整型數(shù)據(jù)的取值范圍: 見(jiàn)書19頁(yè)表21.33/83 2.4 整型數(shù)據(jù)2.4.3 整型變量 給整型變量分類: 按其所占二進(jìn)制位數(shù),分為: 短整型(short

14、),普通整型(int),長(zhǎng)整型(long) 按其是否帶符號(hào)位,分為: 無(wú)符號(hào)整型變量(unsigned)和帶符號(hào)整型變量。 無(wú)符號(hào)與短整型、普通整型、長(zhǎng)整型三種類型相匹配,可以構(gòu)成: 無(wú)符號(hào)短整型(unsigned short) 無(wú)符號(hào)普通整型(unsigned int) 無(wú)符號(hào)長(zhǎng)整型(unsigned long)34/83 2.4 整型數(shù)據(jù)2.4.3 整型變量 說(shuō)明整型變量的語(yǔ)法如下: 限定詞 int 變量名表; 限定詞包括:short、long、unsigned。 在有限定詞的情況下,int可以省略。 例如:short (int) year; unsigned data; 限定詞可以是一個(gè)

15、也可以是兩個(gè)。35/83 2.4 整型數(shù)據(jù)2.4.4 整型常量 C語(yǔ)言中,整型常量的表示方式通常有三種: 十進(jìn)制、八進(jìn)制、十六進(jìn)制。 十進(jìn)制表示的整型常量不能以數(shù)字0開(kāi)頭; 八進(jìn)制以數(shù)字0開(kāi)頭; 十六進(jìn)制以0 x開(kāi)頭。 (編譯程序以開(kāi)始的數(shù)字區(qū)分三種不同的進(jìn)制) 例如: int a,b,c; a=10; b=010; c=0 x10; 如果不做特殊指定,整型常量將按照普通整型變量的長(zhǎng)度來(lái)存儲(chǔ)。 36/83 2.4 整型數(shù)據(jù)2.4.4 整型常量 注意:如果整型常量超過(guò)計(jì)算機(jī)所能表示的范圍,則會(huì)發(fā)生溢出。整數(shù)溢出并不會(huì)使程序出錯(cuò),而是得到一個(gè)非正確的值。 例如: short int a,b; a=

16、10000; b=10000000; 發(fā)生溢出37/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) printf函數(shù)的功能是什么? 按照指定的格式來(lái)顯示數(shù)據(jù)。指定格式要用到轉(zhuǎn)換說(shuō)明符()和轉(zhuǎn)換字符(根據(jù)需要使用不同的字符),顯示整型數(shù)的轉(zhuǎn)換字符有d、o、x和u等。 d:把數(shù)據(jù)按十進(jìn)制整型輸出; o:把數(shù)據(jù)按八進(jìn)制整型輸出; x:把數(shù)據(jù)按十六進(jìn)制整型輸出; u:把數(shù)據(jù)按無(wú)符號(hào)整型輸出。 注意:除了d以外,其余的格式都將數(shù)據(jù)作為無(wú)符號(hào)數(shù)輸出。38/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.2】整型變量的表示方式和整型數(shù)據(jù)的輸出。#include “

17、”void main() int x,y,z; x=129; y=0127; z=0 x128; printf(“%d,%d,%dn”,x,y,z); printf(“%o,%o,%on”,x,y,z); /*八進(jìn)制整型數(shù)據(jù)的輸出*/ printf(“%x,%x,%xn”,x,y,z); /*十六進(jìn)制整型數(shù)據(jù)的輸出*/39/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.2】運(yùn)行結(jié)果如下:40/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.3】整型變量的表示方式和整型數(shù)據(jù)的輸出。#include “”void main() int x,y,

18、z; x=-129; y=-0127; z=-0 x128; printf(“%d,%d,%dn”,x,y,z); printf(“%u,%u,%un”,x,y,z); printf(“%o,%o,%on”,x,y,z); /*八進(jìn)制整型數(shù)據(jù)的輸出*/ printf(“%x,%x,%xn”,x,y,z); /*十六進(jìn)制整型數(shù)據(jù)的輸出*/41/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.3】運(yùn)行結(jié)果如下:42/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 例說(shuō)明: 本例中,-0127和-0 x128并不是八進(jìn)制和十六進(jìn)制常量,“-”實(shí)際是運(yùn)算符,

19、取負(fù)數(shù)的意思。 為了使輸出的數(shù)字格式清晰明了,容易看懂,可以使用域?qū)捄蛯?duì)齊方式來(lái)控制顯示格式,在%和轉(zhuǎn)換符之前加整型數(shù)字,表示數(shù)據(jù)顯示的域?qū)?,?后面加符號(hào)“”,表示顯示時(shí)左對(duì)齊。43/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.4】顯示整數(shù)時(shí)左對(duì)齊。#include “”void main() int x,y,z; x=129; y=0127; z=0 x128; printf(“%6d,%6d,%6dn”,x,y,z); /*數(shù)據(jù)顯示時(shí)增加域?qū)?/ printf(“%6o,%6o,%6on”,x,y,z); printf(“%6x,%6x,%6xn”,x,y,

20、z); /*數(shù)據(jù)顯示時(shí)左對(duì)齊*/44/83 2.4 整型數(shù)據(jù)2.4.5 用printf函數(shù)顯示整型數(shù)據(jù) 【例2.4】運(yùn)行結(jié)果如下:45/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) scanf是格式輸入函數(shù),其功能是按指定的格式將標(biāo)準(zhǔn)輸入設(shè)備輸入的內(nèi)容送入變量中。 scanf函數(shù)的使用格式: scanf(“格式信息”,輸入項(xiàng)1,輸入項(xiàng)2,); “格式信息”與printf的用法相似,通過(guò)使用 和轉(zhuǎn)換字符來(lái)指定不同數(shù)據(jù)類型數(shù)據(jù)的輸入方式。 注意:輸入項(xiàng)必須使用地址,普通變量的地址是在變量名前加取地址符&。 輸入整型數(shù)據(jù)的轉(zhuǎn)換字符有d、o、x、u等。 明確%d, %o, %x, %

21、u各自的含義46/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) 【例2.5】用scanf函數(shù)輸入整型數(shù)據(jù)。#include “”void main() short x,y,z1; int z2; printf(“n請(qǐng)輸入四個(gè)整數(shù):”); scanf(“%d%o%x%d”,&x,&y,&z1,&z2); printf(“n%d,%d,%d,%dn”,x,y,z1,z2);47/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) 【例2.5】的運(yùn)行結(jié)果如下:48/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) 使用scanf函數(shù)時(shí),需要注意以下幾點(diǎn):

22、使用scanf函數(shù)讀入一組整數(shù)時(shí),將掃視輸入信息,跳過(guò)空格、Tab或換行符,尋找下一個(gè)輸入域。一個(gè)輸入域就是一個(gè)連續(xù)的非空字符的數(shù)字串。 格式信息中除了有開(kāi)始的轉(zhuǎn)換說(shuō)明,還可以有普通字符,只要是這些字符不是顯示在屏幕上的,而是要求用戶在輸入數(shù)據(jù)時(shí),在相應(yīng)的位置輸入相同的字符(除了空格、Tab和換行符外)。49/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) 【例2.6】輸入格式與鍵盤輸入的匹配。#include “”void main() int x,y,z1,z2; scanf(“x=%dy=%oz1=%xz2=%u”,&x,&y,&z1,&z2); printf(“n%d,

23、%d,%d,%dn”,x,y,z1,z2);50/83 2.4 整型數(shù)據(jù)2.4.6 用scanf函數(shù)輸入整型數(shù)據(jù) 【例2.6】的運(yùn)行結(jié)果如下:輸入10 10 10 10 時(shí)的結(jié)果 輸入x=10y=10z1=10z2=10 時(shí)的結(jié)果 51/83 2.5 浮點(diǎn)數(shù)問(wèn)題的提出與程序示例浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式浮點(diǎn)變量浮點(diǎn)常量用printf函數(shù)顯示浮點(diǎn)數(shù)用scanf函數(shù)輸入浮點(diǎn)數(shù)52/83 2.5 浮點(diǎn)數(shù)問(wèn)題的提出與程序示例 問(wèn)題:計(jì)算并輸出a2+2b的值,a和b是從鍵盤上接收的用戶輸入的浮點(diǎn)數(shù)。#include “”void main() double a,b,result; /*整型變量的定義*/

24、printf(“please input two integer:n”); scanf(“%lf%lf”,&a,&b); /*浮點(diǎn)數(shù)的輸入*/ result=a*a+*b; /*整型常量的寫法*/ printf(“result is %n”,result); /*整型數(shù)據(jù)的輸出*/53/83 2.5 浮點(diǎn)數(shù)問(wèn)題的提出與程序示例 輸出結(jié)果如下:54/83 2.5 浮點(diǎn)數(shù)問(wèn)題的提出與程序示例 上面的例子與節(jié)第一個(gè)例子有哪些不同? (1)定義變量時(shí)使用的數(shù)據(jù)類型是lf。 (2)接收用戶輸入時(shí),使用的格式控制是lf。 (3)常量2寫成了。 (4)輸出數(shù)據(jù)時(shí),使用的格式控制符是。55/83 2.5 浮點(diǎn)

25、數(shù)浮點(diǎn)數(shù)在內(nèi)存中的存儲(chǔ)方式 浮點(diǎn)數(shù)在內(nèi)存中的表示方式一般分為三部分: 符號(hào)位、階碼和尾數(shù)。 下圖是用32位表示的浮點(diǎn)數(shù): 32位浮點(diǎn)數(shù)的有效數(shù)字是7位十進(jìn)制數(shù),取值范圍為10-381038;64位浮點(diǎn)數(shù)的有效數(shù)字是15位十進(jìn)制數(shù),取值范圍為10-30810308。1 階碼 8 9 尾數(shù) 31符號(hào)位56/83 2.5 浮點(diǎn)數(shù)2.5.3 浮點(diǎn)變量 標(biāo)準(zhǔn)C語(yǔ)言中,浮點(diǎn)數(shù)有單精度浮點(diǎn)數(shù)(float)和雙精度浮點(diǎn)數(shù)(double)兩種,有的版本還支持第三種長(zhǎng)雙精度的浮點(diǎn)數(shù)(long double)。 單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)在計(jì)算機(jī)上的表示方式是非常相似的,只是所占的二進(jìn)制位不同,因此,單精度浮點(diǎn)數(shù)和

26、雙精度浮點(diǎn)數(shù)的有效數(shù)字(或稱精度)和取值范圍也不同。在中,單精度浮點(diǎn)數(shù)和雙精度浮點(diǎn)數(shù)分別占32位和64位。57/83 2.5 浮點(diǎn)數(shù)2.5.4 浮點(diǎn)常量 數(shù)學(xué)上表示小數(shù)有兩種方法:小數(shù)表示法和科學(xué)計(jì)數(shù)法。(例如:和1.273102) C語(yǔ)言中,小數(shù)的表示同樣使用以上兩種方法,只不過(guò)102用E+2表示。 C程序中的浮點(diǎn)常數(shù)由整數(shù)部分、小數(shù)部分和指數(shù)部分構(gòu)成。 其中,前兩部分用小數(shù)點(diǎn)連接,后兩部分用e(或E)連接。E或e用來(lái)代表10的冪次。 浮點(diǎn)常量的構(gòu)成規(guī)則: (1)整數(shù)部分可以不寫,小數(shù)部分也可以不寫,但不能同時(shí)不寫。58/83 2.5 浮點(diǎn)數(shù)2.5.4 浮點(diǎn)常量 (2)指數(shù)部分可以省略。 (

27、3)若有指數(shù)部分,e(或E)兩邊都至少有一位數(shù)。 (4)指數(shù)的數(shù)字必須是整數(shù)(范圍為13位整數(shù)),可以為負(fù)或正,正號(hào)可以省略。例如:.1234,1.,等。 注意:浮點(diǎn)常量在存儲(chǔ)時(shí)按double類型存儲(chǔ),即占64位。浮點(diǎn)常量也會(huì)發(fā)生溢出。并且溢出并不會(huì)使程序出錯(cuò),而是得到一個(gè)不正確的結(jié)果。59/83 浮點(diǎn)數(shù)2.5.5 用printf函數(shù)顯示浮點(diǎn)數(shù) 輸出浮點(diǎn)數(shù)可以使用%f和e。f顯示的是用小數(shù)表示的普通浮點(diǎn)數(shù);e顯示的是使用科學(xué)計(jì)數(shù)法表示的浮點(diǎn)數(shù)。輸出雙精度類型時(shí),需要在轉(zhuǎn)換字符前加上字母l。 輸出浮點(diǎn)數(shù)時(shí)不僅可以控制域?qū)挘€可以控制有效位的輸出位數(shù)(又稱精度)。方法是在與f(或e)間加上兩個(gè)數(shù)字

28、并在兩個(gè)數(shù)字之間加上一個(gè)點(diǎn)號(hào)“.”。例如:表示輸出格式是域?qū)挒?,小數(shù)點(diǎn)右邊有兩位數(shù)字。60/83 浮點(diǎn)數(shù)2.5.5 用printf函數(shù)顯示浮點(diǎn)數(shù) 注意:域?qū)挷皇侵笖?shù)位的寬度,而是指整個(gè)浮點(diǎn)數(shù)的顯示寬度,還包括了小數(shù)點(diǎn)。 例如,的域?qū)捠?。也可以不指定域?qū)捄途?,默認(rèn)的精度是6,如果指定的域?qū)挻笥谒@示的數(shù)的實(shí)際寬度,則沒(méi)有用到的位置用空格填寫;如果指定的域?qū)捫∮谒@示的數(shù)的實(shí)際寬度,則按數(shù)的實(shí)際域?qū)掞@示。左對(duì)齊符號(hào)“-”在顯示浮點(diǎn)數(shù)時(shí)同樣適用。61/83 浮點(diǎn)數(shù)2.5.5 用printf函數(shù)顯示浮點(diǎn)數(shù) 例:輸出浮點(diǎn)數(shù)。62/83 浮點(diǎn)數(shù)2.5.5 用printf函數(shù)顯示浮點(diǎn)數(shù) 例的運(yùn)行結(jié)果如

29、下:63/83 浮點(diǎn)數(shù)2.5.6 用scanf函數(shù)輸入浮點(diǎn)數(shù) 浮點(diǎn)數(shù)的輸入也是使用轉(zhuǎn)換字符f和e,直接使用f和e可以輸入float類型的數(shù)據(jù),使用lf和le則輸入double類型的數(shù)據(jù)。 例:輸入浮點(diǎn)數(shù)。64/83 浮點(diǎn)數(shù)2.5.6 用scanf函數(shù)輸入浮點(diǎn)數(shù) 例的運(yùn)行結(jié)果如下:65/83 2.6 字符型數(shù)據(jù)問(wèn)題的提出與程序示例字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式字符常量與字符變量用printf函數(shù)顯示字符用scanf函數(shù)輸入字符2.6.6 getchar函數(shù)和putchar函數(shù)字符串常量66/83 2.6 字符型數(shù)據(jù)問(wèn)題的提出與程序示例 問(wèn)題:編寫程序,從鍵盤輸入若干個(gè)小寫字母(girl),然后輸出

30、其對(duì)應(yīng)的大寫字母(GIRL)。#include “”void main() char a,b,c,d,i; /*字符型變量的定義*/ printf(“please input four lowercase:n”); scanf(“%c%c %c%c”,&a,&b,&c,&d); /*輸入字符*/ i=a-A; /*取a與A的ASCII碼值之差*/ printf(“uppercase is:%c%c%c%cn”,a-i,b-i,c-i,d-i); 67/83 2.6 字符型數(shù)據(jù)問(wèn)題的提出與程序示例 例的運(yùn)行結(jié)果如下:68/83 2.6 字符型數(shù)據(jù)問(wèn)題的提出與程序示例例中,與字符型數(shù)據(jù)相關(guān)的內(nèi)容是

31、:(1)定義變量時(shí)使用的是char。(2)接收用戶輸入時(shí),使用的格式控制符是c。(3)字符常量的寫法:a和“a”。(4)輸出數(shù)據(jù)時(shí),使用的格式控制符是c。69/83 2.6 字符型數(shù)據(jù)字符型數(shù)據(jù)在內(nèi)存中的存儲(chǔ)方式 字符型數(shù)據(jù)在內(nèi)存中所占的位數(shù)是固定的,只占一個(gè)字節(jié)(8bit)。 不管是字母、數(shù)字、標(biāo)點(diǎn)符號(hào),這些字符在計(jì)算機(jī)內(nèi)部都是用0和1表示的,每個(gè)字符對(duì)應(yīng)一個(gè)固定的編碼,最常用的就是ASCII碼。 標(biāo)準(zhǔn)ASCII碼是把每個(gè)字符與0127之間的數(shù)值聯(lián)系起來(lái),用7位二進(jìn)制表示,再將最高位置0,這樣就占了一個(gè)字節(jié)。 例如:字母A在ASCII碼表中用數(shù)值65表示,用8位二進(jìn)制來(lái)表示它為:010000

32、01,所以在內(nèi)存中存儲(chǔ)的A實(shí)際上是01000001。70/83 2.6 字符型數(shù)據(jù) 字符變量與字符常量 字符變量的類型說(shuō)明符是char。 例如:char a,b,c,d; (a,b,c,d各占一個(gè)字節(jié)) 字符常量:用單引號(hào)將一個(gè)字符括起來(lái)就構(gòu)成了字符常量,可以用它來(lái)給字符變量賦值。 例如:char c;c=a; 注意: (1)單引號(hào)中的字符只能是一個(gè)字符。 (2)不能用雙引號(hào)括起一個(gè)字符表示一個(gè)字符常量。 (3)非圖形字符,如退格、換行等,也可以表示成字符型常量。71/83 2.6 字符型數(shù)據(jù) 字符變量與字符常量 (4)字符型數(shù)據(jù)可以像整型數(shù)據(jù)一樣參與四則運(yùn)算(實(shí)際上是ASCII碼值的運(yùn)算)。

33、 觀察一下ASCII碼表,看看小寫字母和大寫字母有什么關(guān)系? 小寫字母az的ASCII碼值是97122 大寫字母AZ的ASCII碼值是6590 求對(duì)應(yīng)字母的差值,都是32。所以,要將小寫字母轉(zhuǎn)換成大寫字母,只要將小寫字母的ASCII碼值減去32就可以了。72/83 2.6 字符型數(shù)據(jù) 用printf函數(shù)顯示字符 /* 例 用printf函數(shù)顯示字符。*/#include “”void main() char c=H; /*字符型變量的定義且同時(shí)賦初值*/ char d=I; char e=!; printf(“%c%c%cn”,c,d,e); 73/83 2.6 字符型數(shù)據(jù) 用printf函數(shù)

34、顯示字符 例的運(yùn)行結(jié)果如下:74/83 2.6 字符型數(shù)據(jù) 用scanf函數(shù)輸入字符上例中使用c輸出單個(gè)字符,同樣,c也可以用于控制輸入單個(gè)字符。當(dāng)用scanf函數(shù)讀入一組數(shù)據(jù)時(shí),如果不使用c進(jìn)行轉(zhuǎn)換,scanf函數(shù)將掃視輸入信息,跳過(guò)空格、Tab或換行符,尋找下一個(gè)輸入域。若使用c進(jìn)行轉(zhuǎn)換時(shí),情況則不同,scanf函數(shù)不會(huì)跳過(guò)空格、Tab或換行符,而是直接把下一個(gè)字符輸入給參數(shù)。例如:scanf(“%d%c”,&I,&c); 若從鍵盤輸入29_w,則c內(nèi)存放的是空格。解決的方法是在控制字符串中加空格分隔。75/83 2.6 字符型數(shù)據(jù) 用getchar函數(shù)輸入字符和用 putchar函數(shù)輸出

35、字符 getchar函數(shù):它是接收一個(gè)從標(biāo)準(zhǔn)輸入輸出設(shè)備上輸入的字符。該函數(shù)沒(méi)有參數(shù),返回的數(shù)據(jù)類型為整型,返回值為字符的ASCII碼值。 調(diào)用的一般方法是:字符變量=getchar(); 例如:char a; a=getchar(); 從鍵盤上接收的字符可以是可打印的字符,也可是非打印字符,如回車換行等。 76/83 2.6 字符型數(shù)據(jù)putchar函數(shù):用于向標(biāo)準(zhǔn)輸出設(shè)備上輸出一個(gè)字符。該函數(shù)把要輸出的字符作為參數(shù),放在括號(hào)里,括號(hào)里的內(nèi)容不能缺省。調(diào)用的一般方法是:putchar(字符變量或字符常量);例如:putchar(A);putchar函數(shù)返回的數(shù)據(jù)類型為整型,返回值為字符的AS

36、CII碼值。77/83 2.6 字符型數(shù)據(jù) 用getchar函數(shù)輸入字符和用 putchar函數(shù)輸出字符 若要輸出一個(gè)字符a,可以采用多種方法: (1) int c; c=a; putchar(c); (2) putchar(a); (3) putchar(97); 對(duì)于不可打印的字符,輸出方式有兩種: (1) putchar(007); (2) putchar(007);78/83 2.6 字符型數(shù)據(jù) 例 鍵盤輸入小寫字母,輸出相應(yīng)的大寫字母,用getchar和putchar函數(shù)完成。#include “”void main() char a,b,c,d,i; /*字符型變量的定義*/ pr

37、intf(“please input four lowercase:n”); a=getchar(); b=getchar(); c=getchar(); d=getchar(); i=a-A; /*取a與A的ASCII碼值之差*/ printf(“uppercase is:n”); putchar(a-i); putchar(b-i); putchar(c-i); putchar(d-i); putchar(n);79/83 2.6 字符型數(shù)據(jù) 例 的運(yùn)行結(jié)果如下:80/83 2.6 字符型數(shù)據(jù) 字符串常量 用雙引號(hào)括起來(lái)的字符序列是字符串常量。 例如:“how are you”和“123456”。 在環(huán)

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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)論