C語言程序設(shè)計(jì)進(jìn)階篇課件_第1頁
C語言程序設(shè)計(jì)進(jìn)階篇課件_第2頁
C語言程序設(shè)計(jì)進(jìn)階篇課件_第3頁
C語言程序設(shè)計(jì)進(jìn)階篇課件_第4頁
C語言程序設(shè)計(jì)進(jìn)階篇課件_第5頁
已閱讀5頁,還剩131頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

C語言程序設(shè)計(jì)

—進(jìn)階篇第1章數(shù)據(jù)類型與輸入輸出(二)2023/1/3C語言程序設(shè)計(jì)

—進(jìn)階篇第1章數(shù)據(jù)類1內(nèi)容概述1.C語言的數(shù)據(jù)類型及分類。2.C語言中的常量和變量。3.C語言的數(shù)據(jù)輸入/輸出。2023/1/3內(nèi)容概述1.C語言的數(shù)據(jù)類型及分類。2022/12/262教學(xué)目標(biāo)1.掌握數(shù)據(jù)類型的概念,了解C語言能夠處理的數(shù)據(jù)類型。2.掌握各種類型常量的特點(diǎn)及表示形式。3.掌握變量的概念,了解float、char型變量的特點(diǎn),掌握這二種類型變量的定義、賦值和使用方法。4.掌握數(shù)據(jù)的輸入輸出(包括漢字的輸入與輸出)的基本方法。2023/1/3教學(xué)目標(biāo)1.掌握數(shù)據(jù)類型的概念,了解C語言能夠處理的數(shù)據(jù)類型3數(shù)據(jù)是計(jì)算機(jī)程序處理的所有信息的總稱,數(shù)值、字符、文本等都是數(shù)據(jù),如整數(shù)、實(shí)數(shù)、英文字母、數(shù)字符號(hào)、英語單詞、漢字、一句話、一段文章、一個(gè)學(xué)生信息等。在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型、空類型四大類,共9種。 本章中,將介紹基本數(shù)據(jù)類型中的浮點(diǎn)型和字符型。其余類型在以后各章中陸續(xù)介紹。1.1C的數(shù)據(jù)類型

2023/1/3數(shù)據(jù)是計(jì)算機(jī)程序處理的所有信息的總稱,數(shù)值、字符、文本41.基本數(shù)據(jù)類型

基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型。基本類型整型字符型浮點(diǎn)型單精度雙精度枚舉短整型長(zhǎng)整型2023/1/31.基本數(shù)據(jù)類型基本數(shù)據(jù)類型最主要的特點(diǎn)是,52.整型變量整型變量分為四種:基本型、短整型、長(zhǎng)整型、無符號(hào)型基本型: 用“int”定義,在不同的系統(tǒng)中它的長(zhǎng)度可能不同,如在DOS下的int變量占2個(gè)字節(jié),相當(dāng)于短整型,而在Windows下的int變量占4個(gè)字節(jié),相當(dāng)于長(zhǎng)整型。2023/1/32.整型變量整型變量分為四種:基本型、短整型、長(zhǎng)整型、無62.整型變量短整型:用“shortint”或“short”定義,占2個(gè)字節(jié)。長(zhǎng)整型:用“l(fā)ong”或“l(fā)ongint”定義,占4個(gè)字節(jié)。無符號(hào)型:用“unsigned”定義

不存放符號(hào),數(shù)據(jù)不帶符號(hào)數(shù)。 無符號(hào)整型:“unsignedint”

無符號(hào)短整型:“unsignedshortint”

無符號(hào)長(zhǎng)整型:“unsignedlongint” 注意:如無指定,則為有符號(hào)數(shù)。2023/1/32.整型變量短整型:用“shortint”或“shor7【例1.1】整型數(shù)用法示例main(){ unsignedshortinta; shortintb; a=65535; b=32767; a=a+1;

b=b+1;

printf("a=%d\n",a); printf("b=%d\n",b);}運(yùn)行結(jié)果為:a=0b=-32768為什么?a從原來的65535加1后變?yōu)?,這說明a所能表示的值的大小是有限的!65535的二進(jìn)制數(shù)為1111111111111111,再加1=?32767的二進(jìn)制數(shù)為0111111111111111,再加1=?2023/1/3【例1.1】整型數(shù)用法示例main()運(yùn)行結(jié)果為:a從原來的8整型變量取值范圍類型說明符數(shù)的范圍 分配字節(jié)數(shù)

int-32768~32767 ■■

shortint-32768~32767 ■■

signedint-32768~32767 ■■

unsignedint0~65535 ■■

longint-2147483648~2147483647 ■■■■

unsignedlong0~4294967295 ■■■■int根據(jù)特定的系統(tǒng)對(duì)應(yīng)shortint或longintunsignedint根據(jù)特定的系統(tǒng)對(duì)應(yīng)unsignedshortint或unsignedlongint超過變量所能表示的范圍,產(chǎn)生計(jì)算錯(cuò)誤:溢出.2023/1/3整型變量取值范圍類型說明符數(shù)的范圍 分配字9整型常量即整數(shù),按不同的進(jìn)制區(qū)分,整數(shù)有三種表示方法:十進(jìn)制數(shù):以非0開始的數(shù),如:220、-560、+369等。八進(jìn)制數(shù):以0開始的數(shù),如:06、0106、0677等。

十六進(jìn)制數(shù):以0X或0x開始的數(shù),如:0X0D、0XFF、0x4e、0x123等。3.整型常量2023/1/3整型常量即整數(shù),按不同的進(jìn)制區(qū)分,整數(shù)有三種10另外,可在整型常數(shù)后添加一個(gè)“L”或“l(fā)”字母,表示該數(shù)為長(zhǎng)整型數(shù),如:22L、0773L、0Xae4l等。諸如38A、0578、0x29FG等,都是不合法的常數(shù)形式。2023/1/3另外,可在整型常數(shù)后添加一個(gè)“L”或“l(fā)”字母,表示該數(shù)為長(zhǎng)11(1)十進(jìn)制數(shù)形式 由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。

1.2.1實(shí)型常量的表示方法

實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制。它有二種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。1.2實(shí)型數(shù)據(jù)2023/1/3(1)十進(jìn)制數(shù)形式1.2.1實(shí)型常量的表示方法

實(shí)12(2)指數(shù)形式

由十進(jìn)制數(shù),加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為:

aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為a*10n。如: 2.1E5(等于2.1*105) 3.7E-2(等于3.7*10-2) 0.5E7(等于0.5*107) -2.8E-2(等于-2.8*10-2)2023/1/3(2)指數(shù)形式如:2022/12/2613以下則不是合法的實(shí)數(shù): 345(無小數(shù)點(diǎn))

E7(階碼標(biāo)志E之前無數(shù)字) -5(無階碼標(biāo)志) 53.-E3(負(fù)號(hào)位置不對(duì)) 2.7E(無階碼)標(biāo)準(zhǔn)C允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”即表示該數(shù)為浮點(diǎn)數(shù)。如356.f和356.是等價(jià)的。因此:(1)十進(jìn)制小數(shù)形式:必須有小數(shù)點(diǎn)。(2)指數(shù)形式:字母e前必須有數(shù)字,字母e后必須為整數(shù)

,規(guī)范化的指數(shù)形式輸出。

2023/1/3以下則不是合法的實(shí)數(shù):因此:2022/12/2614【例1.2】實(shí)型常量的使用#include<stdio.h>main(){ printf("%f\n",356.); printf("%f\n",356); printf("%f\n",356.f);}VC++輸出:356.000000-1.#QNAN0356.0000002023/1/3【例1.2】實(shí)型常量的使用VC++輸出:356.00000151.2.2實(shí)型變量

1實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間,按指數(shù)形式存儲(chǔ)。如實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:+.3141591數(shù)符小數(shù)部分指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。2023/1/31.2.2實(shí)型變量

1實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式+.162.實(shí)型變量的分類

實(shí)型變量分為:?jiǎn)尉龋╢loat型)、雙精度(double型)和長(zhǎng)雙精度(longdouble型)三類。如下表:類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)的范圍float32(4)6~710-37~1038double64(8)15~1610-307~10308longdouble128(16)18~1910-4931~1049322023/1/32.實(shí)型變量的分類類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)的范17實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如:

floatx,y; (定義x,y為單精度實(shí)型量)

doublea,b,c; (定義a,b,c為雙精度實(shí)型量)2023/1/3實(shí)型變量定義的格式和書寫規(guī)則與整型相同。20183實(shí)型數(shù)據(jù)的舍入誤差由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。不同的編譯器下處理的精度不同,如下例?!纠?.3】實(shí)型數(shù)據(jù)的舍入誤差。#include <stdio.h>main(){ floata,b; a=123456.789e5; b=a+20; printf("%f\n",a); printf("%f\n",b);}運(yùn)行結(jié)果(VC++):12345678848.00000012345678848.000000可見一個(gè)大數(shù)與一小數(shù)間運(yùn)算會(huì)產(chǎn)生什么結(jié)果?2023/1/33實(shí)型數(shù)據(jù)的舍入誤差【例1.3】實(shí)型數(shù)據(jù)的舍入誤差。運(yùn)行結(jié)19【例1.4】main(){ floata; doubleb; a=33333.33333; b=33333.33333333333333; printf("%f\n%f\n",a,b);}從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無效數(shù)字。

b是雙精度型,有效位為十一位(VC++)。

實(shí)型數(shù)據(jù)在實(shí)際運(yùn)用中要注意?。。。ㄝ^大數(shù)與小數(shù)算術(shù)運(yùn)算、比較等)運(yùn)行結(jié)果(VC++): 33333.332031 33333.3333332023/1/3【例1.4】從本例可以看出,由于a是單精度浮點(diǎn)型,20舍入誤差示例1.5(VC++):#include<stdio.h>#include<math.h>main(intargc,char**argv){ printf("%d\n",1.0/3*3); /*結(jié)果為0*/

printf("%f\n",1.0/3.*3.);/*結(jié)果為1.000000*/

printf("%d\n",sqrt(2.)*sqrt(2.)); /*結(jié)果為1*/

printf("%f\n",sqrt(2.)*sqrt(2.)); /*結(jié)果為2.000000*/}2023/1/3舍入誤差示例1.5(VC++):2022/12/26211.2.3實(shí)型常量的類型實(shí)型常量不分單、雙精度,都按雙精度double型處理。2023/1/31.2.3實(shí)型常量的類型2022/12/26221.3.1字符常量

1.3字符型數(shù)據(jù)1字符常量定界符為單引號(hào)(')的單字符。例如: 'a'、'A'、'3'、'='、'+'、'?'注意英文字母區(qū)分大小寫。C字符常量特點(diǎn):(1)字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào)。(2)字符常量只能是單個(gè)字符,不能是字符串。(3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運(yùn)算。如‘5’和5。2023/1/31.3.1字符常量1.3字符型數(shù)據(jù)1字符常量202232轉(zhuǎn)義字符轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個(gè)或幾個(gè)字符。 轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉(zhuǎn)義字符及其含義如下表:

2023/1/32轉(zhuǎn)義字符2022/12/2624轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號(hào)符39\"雙引號(hào)符34\a鳴鈴7\ddd1~3位八進(jìn)制數(shù)所代表的字符

\xhh1~2位十六進(jìn)制數(shù)所代表的字符

2023/1/3轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n換行10\t橫向跳到25廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進(jìn)制和十六進(jìn)制的ASCII代碼。如\101表示字母“A”(見附錄I),\102表示字母“B”,\134表示反斜線,\X0A表示換行等。

常見字符的值: 20H~空格 30H~‘0’-----39H~‘9' 41H~'A' 61H~'a'內(nèi)碼(ASCII碼)在32~126范圍內(nèi)為可顯示字符。

2023/1/3廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)26【例1.6】轉(zhuǎn)義字符的使用。main(){ inta,b,c; a=5; b=6; c=7; printf("abc\tde\rf\n"); printf("hijk\tL\bM\n");}運(yùn)行結(jié)果:fabcdehijkM2023/1/3【例1.6】轉(zhuǎn)義字符的使用。運(yùn)行結(jié)果:2022/12/26271.3.2字符變量

字符變量用來存儲(chǔ)字符常量,即單個(gè)字符。字符變量的類型說明符是char。在內(nèi)存中占一個(gè)字節(jié),字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:

chara,b;2023/1/31.3.2字符變量2022/12/26281.3.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法字符以ASCII碼形式存放在內(nèi)存單元中,因此ASCII碼被稱作字符的內(nèi)碼。字符型與整型的轉(zhuǎn)換:自動(dòng)進(jìn)行注意:字符型占一個(gè)字節(jié),整型占兩個(gè)字節(jié)(與編譯器有關(guān))。每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。

2023/1/31.3.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法2022/129如'x'的十進(jìn)制ASCII碼是120,'y'的十進(jìn)制ASCII碼是121。對(duì)字符變量a,b賦予'x'和'y'值:

a='x'; b='y';

實(shí)際上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼:0111100001111001a:

b:

可以把字符作為整型量進(jìn)行處理,也可以對(duì)整型變量賦以字符值,把整型量按字符量輸出。整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時(shí),只有低八位字節(jié)參與處理。

2023/1/3如'x'的十進(jìn)制ASCII碼是120,'y30【例1.7】向字符變量賦以整數(shù)。main(){ chara,b; a=120; b=121; printf("%c,%c\n",a,b); printf("%d,%d\n",a,b);}運(yùn)行結(jié)果:x,y120,1212023/1/3【例1.7】向字符變量賦以整數(shù)。運(yùn)行結(jié)果:2022/12/231【例1.8】字符運(yùn)算。main(){ chara,b; a='a'; b='b'; a=a-32; b=b-32; printf("%c,%c\n%d,%d\n",a,b,a,b);}運(yùn)行結(jié)果:A,B65,662023/1/3【例1.8】字符運(yùn)算。運(yùn)行結(jié)果:2022/12/2632

1.3.5字符串常量

字符串常量是由一對(duì)雙引號(hào)括起的字符序列。例如:"CHINA",“Cprogram”,"$12.5"等都是合法的字符串常量。字符串常量和字符常量之間區(qū)別:(1)字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。(2)字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。(3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。在C語言中沒有相應(yīng)的字符串變量,但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量。2023/1/3

1.3.5字符串常量2022/12/2633(4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符數(shù)加1。增加的一個(gè)字節(jié)中存放字符“\0”(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志,該字符不能顯示也不用顯式寫出來。例如:字符串"Cprogram"在內(nèi)存中所占的字節(jié)為:

C

program\0'a'和"a"的區(qū)別是?“A”存儲(chǔ)方式為A\0但‘A’存儲(chǔ)方式為:A2023/1/3(4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)34舉例"TES""""a"'T''E''S''T'\08469838400\0'a'\0009700字符串變量的使用在第6章數(shù)組(2)中介紹.2023/1/3'T''E''S''T'\08469838400\0'a'\35變量使用的三部曲:定義,賦初值,改變之。在程序中常常需要對(duì)變量賦初值,以便使用變量。C語言程序中可有多種方法為變量提供初值。方法:(1)先定義后賦值類型說明符變量1,變量2,……;(2)在變量定義中賦初值,一般形式為:

類型說明符變量1=值1,變量2=值2,……;1.4變量賦初值2023/1/3變量使用的三部曲:定義,賦初值,改變之36

變量定義的同時(shí)給變量賦以初值

以下程序與左邊的有什么區(qū)別?main(){ inta=3,b,c=5; b=a+c; printf("a=%d,b=%d,c=%d\n",a,b,c);}main(){ inta,b,c;a=3;c=5; b=a+c; printf("a=%d,b=%d,c=%d\n",a,b,c);}2023/1/3

變量定義的同時(shí)給變量賦以初值以下程序與左邊的有什么區(qū)別?371.5.1數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)1.5數(shù)據(jù)的輸入輸出

在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫(kù)函數(shù)完成的。因此都是函數(shù)語句。在使用C語言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令

#include將有關(guān)“頭文件”包含到源文件中。2023/1/31.5.1數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)1.5數(shù)38使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令: #include<stdio.h>或 #include"stdio.h"二者的區(qū)別:2023/1/3使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí)要用到“stdio391.5.2字符數(shù)據(jù)的輸入輸出1putchar函數(shù)(字符輸出函數(shù))功能:在顯示器上輸出單個(gè)字符。其一般形式為:

putchar(字符變量);例如:

putchar('A');(輸出大寫字母A) putchar(x);(輸出字符變量x的值)

putchar(‘\101’);(也是輸出字符A) putchar('\n');(換行)2023/1/31.5.2字符數(shù)據(jù)的輸入輸出2022/12/2640【例1.9】輸出單個(gè)字符。#include<stdio.h>main(){ chara,b,c; a='B'; b='o'; c='k'; /*以下書寫方式不提倡*/

putchar(a);putchar(b);putchar(b);putchar(c); putchar('\t'); putchar(a);putchar(b); putchar('\n'); putchar(b);putchar(c);}運(yùn)行結(jié)果:BookBook2023/1/3【例1.9】輸出單個(gè)字符。運(yùn)行結(jié)果:2022/12/26412.getchar函數(shù)(鍵盤輸入函數(shù))功能:從鍵盤上輸入一個(gè)字符。其一般形式為:

getchar();通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,如:

charc; c=getchar();2023/1/32.getchar函數(shù)(鍵盤輸入函數(shù))2022/12/2642使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:(1)getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。(2)使用本函數(shù)前必須包含文件“stdio.h”。2023/1/3使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:2022/12/2643【例1.10】getchar()示例--屏幕菜單設(shè)計(jì)及應(yīng)用。要求:在屏幕顯示上供用戶選擇的功能菜單,用戶通過鍵盤選擇后,計(jì)算機(jī)顯示用戶選擇的結(jié)果,不斷重復(fù),直到用戶選擇退出,結(jié)束程序運(yùn)行.分析:1)可以通過循環(huán)實(shí)現(xiàn)同一功能的重復(fù)執(zhí)行;2)在每一次循環(huán)中:

A.清除屏幕;

B.顯示菜單信息;

C.獲取用戶的鍵盤輸入;

D.分析用戶輸入并作出相應(yīng)處理;2023/1/3【例1.10】getchar()示例--屏幕菜單設(shè)計(jì)及應(yīng)用。44/*參考程序*/#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){charselect;while(1) /*(1)--為什么可以這樣用?*/{system(“cls”); /*執(zhí)行DOS系統(tǒng)命令:cls清屏*/

printf("\t\t屏幕菜單示例\n");printf("1--加法測(cè)試;\t2--減法測(cè)試\n");printf("3--除法測(cè)試;\t4--記憶力測(cè)試\n");printf("0--退出.\n");printf("請(qǐng)選擇(0--4):");

select=getchar(); /*等待用戶輸入,也可以用scanf()*/2023/1/3/*參考程序*/#include<stdio.h>202245

if(select<‘0’||select>‘4’)/*判斷輸入合法?*/printf("選擇錯(cuò)誤!請(qǐng)重新選擇!\n"); if(select==‘0’){ /*用"0"會(huì)如何?*/ printf("您選擇的是退出測(cè)試!\n");_beep(300,400);break; }

if(select==‘4‘) /*==換成“=”如何?*/printf("您選擇的是記憶力測(cè)試!\n"); system("PAUSE"); getchar();/*用戶的輸入是<字符>+Enter,清除<Enter>*/ }return(0);}2023/1/3if(select<‘0’||sel461.5.3格式輸入與輸出1printf函數(shù)(格式輸出函數(shù))函數(shù)功能:按用戶指定的格式,把指定的數(shù)據(jù)顯示到顯示器屏幕上。(1)printf函數(shù)調(diào)用的一般形式

printf(“格式控制字符串”,輸出表列);其中格式控制字符串用于指定輸出格式。格式控制串可由格式字符串和非格式字符串兩種組成。2023/1/31.5.3格式輸入與輸出2022/12/2647格式字符串是以%開頭的字符串,在%后面跟有各種格式字符,以說明輸出數(shù)據(jù)的類型、形式、長(zhǎng)度、小數(shù)位數(shù)等。如: “%d”表示按十進(jìn)制整型輸出; “%ld”表示按十進(jìn)制長(zhǎng)整型輸出; “%c”表示按字符型輸出等。非格式字符串在輸出時(shí)原樣照印,在顯示中起提示作用。輸出表列中給出了各個(gè)輸出項(xiàng),要求格式字符串和各輸出項(xiàng)在數(shù)量和類型上應(yīng)該一一對(duì)應(yīng)。

2023/1/3格式字符串是以%開頭的字符串,在%后面跟有各種48【例1.11】格式輸出main(){ inta,b; a=88; b=89; printf("%d%d\n",a,b); printf("%d,%d\n",a,b); printf("%c,%c\n",a,b); printf("a=%d,b=%d",a,b);}運(yùn)行結(jié)果:888988,89X,Ya=88,b=892023/1/3【例1.11】格式輸出運(yùn)行結(jié)果:2022/12/2649(2)格式字符串在C中格式字符串的一般形式為:

[標(biāo)志][輸出最小寬度][.精度][長(zhǎng)度]類型其中方括號(hào)[]中的項(xiàng)為可選項(xiàng)。各項(xiàng)的意義介紹如下:1)類型:類型字符用以表示輸出數(shù)據(jù)的類型,其格式符和意義如下表所示:

2023/1/3(2)格式字符串2022/12/2650格式字符意

義d以十進(jìn)制形式輸出帶符號(hào)整數(shù)(正數(shù)不輸出符號(hào))o以八進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴0)x,X以十六進(jìn)制形式輸出無符號(hào)整數(shù)(不輸出前綴Ox)u以十進(jìn)制形式輸出無符號(hào)整數(shù)f以小數(shù)形式輸出單、雙精度實(shí)數(shù)e,E以指數(shù)形式輸出單、雙精度實(shí)數(shù)g,G以%f或%e中較短的輸出寬度輸出單、雙精度實(shí)數(shù)c輸出單個(gè)字符s輸出字符串2023/1/3格式字符意義d以十進(jìn)制形式輸出帶符號(hào)512)

標(biāo)志:標(biāo)志字符為-、+、#、空格四種,其意義下表所示:標(biāo)

志意

義-結(jié)果左對(duì)齊,右邊填空格+輸出符號(hào)(正號(hào)或負(fù)號(hào))空格輸出值為正時(shí)冠以空格,為負(fù)時(shí)冠以負(fù)號(hào)#對(duì)c,s,d,u類無影響;對(duì)o類,在輸出時(shí)加前綴o;對(duì)x類,在輸出時(shí)加前綴0x;對(duì)e,g,f類當(dāng)結(jié)果有小數(shù)時(shí)才給出小數(shù)點(diǎn)2023/1/32)

標(biāo)志:標(biāo)志字符為-、+、#、空格四種,其意義下表所示:523)輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。若實(shí)際位數(shù)多于定義的寬度,則按實(shí)際位數(shù)輸出,若實(shí)際位數(shù)少于定義的寬度則補(bǔ)以空格或0。4)精度:精度格式符以“.”開頭,后跟十進(jìn)制整數(shù)。本項(xiàng)的意義是:如果輸出數(shù)字,則表示小數(shù)的位數(shù);如果輸出的是字符,則表示輸出字符的個(gè)數(shù);若實(shí)際位數(shù)大于所定義的精度數(shù),則截去超過的部分。5)長(zhǎng)度:長(zhǎng)度格式符為h,l兩種,h表示按短整型量輸出,l表示按長(zhǎng)整型量輸出。

2023/1/33)輸出最小寬度:用十進(jìn)制整數(shù)來表示輸出的最少位數(shù)。53【例1.12】格式輸出(2)#include<stdio.h>main(){ inta;floatb;doublec;chard; a=15; b=123.1234567; c=12345678.1234567; d='p'; printf("a=%d,%5d,%o,%x\n",a,a,a,a); printf("b=%f,%lf,%5.4lf,%e\n",b,b,b,b); printf("c=%lf,%f,%8.4lf\n",c,c,c); printf("d=%c,%8c\n",d,d);}2023/1/3【例1.12】格式輸出(2)2022/12/2654運(yùn)行結(jié)果:a=15,15,17,fb=123.123459,123.123459,123.1235,1.231235e+002c=12345678.123457,12345678.123457,12345678.1235d=p,p2023/1/3運(yùn)行結(jié)果:2022/12/2655說明:(1)C語言的格式化輸入/輸出比較繁瑣,在以GUI為主流的應(yīng)用程序的輸入輸出中較少使用(scanf()函數(shù)則用不到),但它的另一種形式sprintf()函數(shù)中的格式化數(shù)據(jù)處理則經(jīng)常會(huì)用到。(2)如何獲得有關(guān)sprintf()函數(shù)的用法知識(shí)?請(qǐng)使用微軟開發(fā)者網(wǎng)絡(luò)—MicrosoftDeveloperNetwork(MSDN)。它是一個(gè)有關(guān)計(jì)算機(jī)軟件設(shè)計(jì)知識(shí)的海洋,是微軟平臺(tái)的軟件開發(fā)和應(yīng)用人員的最好的獲取知識(shí)的工具。(3)讀者從現(xiàn)在開始,應(yīng)該逐步學(xué)會(huì)如何獲取書本上沒有的知識(shí),從MSDN、Internet……。請(qǐng)查閱字符串輸出函數(shù)puts()的用法。

2023/1/3說明:2022/12/26562scanf函數(shù)(格式輸入函數(shù))功能:按用戶指定的格式從鍵盤上把數(shù)據(jù)輸入到指定的變量之中。(1)scanf函數(shù)的一般形式

scanf(“格式控制字符串”,地址表列);其中,格式控制字符串的作用與printf函數(shù)相同,但不能顯示非格式字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符“&”后跟變量名組成的。

例如: &a,&b分別表示(取)變量a和變量b的地址。

2023/1/32scanf函數(shù)(格式輸入函數(shù))2022/12/2657變量的地址和變量值的關(guān)系如下:在賦值表達(dá)式中給變量賦值,如:

a=567則,a為變量名,567是變量的值,&a是變量a的地址。

2023/1/3變量的地址和變量值的關(guān)系如下:2022/12/2658【例1.13】格式輸入#include<stdio.h>main(){ inta,b,c; printf("請(qǐng)輸入整型量a,b,c的值:\n"); scanf("%d%d%d",&a,&b,&c); printf("a=%d,b=%d,c=%d",a,b,c);}2023/1/3【例1.13】格式輸入2022/12/2659(2)

格式字符串格式字符串的一般形式為: %[*][輸入數(shù)據(jù)寬度][長(zhǎng)度]類型其中有方括號(hào)[]的項(xiàng)為任選項(xiàng)。各項(xiàng)的意義如下:1)類型:表示輸入數(shù)據(jù)的類型.格式字符意義d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整數(shù)x輸入十六進(jìn)制整數(shù)u輸入無符號(hào)十進(jìn)制整數(shù)f或e輸入實(shí)型數(shù)(用小數(shù)形式或指數(shù)形式)c輸入單個(gè)字符s輸入字符串2023/1/3(2)格式字符串格式字符意義d輸入十進(jìn)制整數(shù)o輸入八進(jìn)制整602)“*”符:用以表示該輸入項(xiàng),讀入后不賦予相應(yīng)的變量,即跳過該輸入值。

如:

scanf("%d%*d%d",&a,&b);當(dāng)輸入為:123時(shí),把1賦予a,2被跳過,3賦予b。3)寬度:用十進(jìn)制整數(shù)指定輸入的寬度(即字符數(shù))。例如:

scanf("%5d",&a);

輸入:12345678,只把12345賦予變量a,其余部分被截去。又如:

scanf("%4d%4d",&a,&b);輸入:12345678,將把1234賦予a,而把5678賦予b。

4)長(zhǎng)度:長(zhǎng)度格式符為l和h,l表示輸入長(zhǎng)整型數(shù)據(jù)(如%ld)和雙精度浮點(diǎn)數(shù)(如%lf)。h表示短整型數(shù)據(jù)。2023/1/32)“*”符:用以表示該輸入項(xiàng),讀入后不賦予相應(yīng)的61【例1.14】輸入格式字符串#include<stdio.h>main(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("%c%c\n",a,b);}由于scanf函數(shù)“%c%c”中沒有空格,輸入MN,結(jié)果輸出只有M。而輸入改為MN時(shí)則可輸出MN兩字符。試一試:“%c%c”中加上空格會(huì)怎樣?(分別輸入MN或M,N)2023/1/3【例1.14】輸入格式字符串由于scanf函數(shù)“%c62【例1.15】輸入格式字符串(2)#include<stdio.h>main(){ chara,b; printf("inputcharactera,b\n"); scanf("%c%c",&a,&b); printf("\n%c%c\n",a,b);}本例表示scanf格式控制串"%c%c"之間有空格時(shí),輸入的數(shù)據(jù)之間可以有空格間隔。

2023/1/3【例1.15】輸入格式字符串(2)2022/12/2663【例1.16】輸入格式字符串(3)#include<stdio.h>main(){ chara,b,c; printf("inputcharactera,b,c\n"); scanf("%c%c%c",&a,&b,&c); printf("%d,%d,%d\n%c,%c,%c\n",a,b,c,a-32,b-32,c-32);}

輸入三個(gè)小寫字母,輸出其ASCII碼和對(duì)應(yīng)的大寫字母。

2023/1/3【例1.16】輸入格式字符串(3)2022/12/2664【例1.17】輸出各種數(shù)據(jù)類型的字節(jié)長(zhǎng)度。#include<stdio.h>

main(){ inta; longb; floatf; doubled; charc; printf("\nint:%d\nlong:%d\nfloat:%d\ndouble:%d\nchar:%d\n",sizeof(a),sizeof(b),sizeof(f),sizeof(d),sizeof(c));}運(yùn)行結(jié)果:int:4long:4float:4double:8char:12023/1/3【例1.17】輸出各種數(shù)據(jù)類型的字節(jié)長(zhǎng)度。運(yùn)行結(jié)果:2022651.5.4漢字的輸入與輸出1漢字信息的存儲(chǔ) 與用7位ASCII碼表示的英文字符不同,一個(gè)漢字占用二個(gè)字節(jié),每個(gè)字節(jié)的最高位為1,漢字在計(jì)算機(jī)中的存儲(chǔ)編碼表示稱為漢字的機(jī)內(nèi)碼,詳細(xì)的信息請(qǐng)查閱有關(guān)資料或GB2312-80。

如漢字“啊”的機(jī)內(nèi)碼為0xb0、0xa1,“阿”的機(jī)內(nèi)碼為0xb0、0xa2。 2漢字信息的輸出

漢字信息的形式輸出方法可見例1.20。

2023/1/31.5.4漢字的輸入與輸出2022/12/2666【例1.18】漢字信息的輸出#include<stdio.h>main(intargc,char**argv){ unsignedcharc1,c2;/*定義為無符號(hào)char型*/

c1=0xb0; /*漢字啊的機(jī)內(nèi)碼的第一字節(jié)*/

c2=0xa1; /*漢字啊的機(jī)內(nèi)碼的第二字節(jié)*/

puts("\n漢字輸出示例:");

printf("\n輸出的漢字:%c%c\n",c1,c2); puts("\n另一種輸出方法:");

putchar(c1); putchar(c2);}2023/1/3【例1.18】漢字信息的輸出2022/12/26673漢字信息的輸入

由于每個(gè)漢字實(shí)際存儲(chǔ)需要二個(gè)字節(jié),故每個(gè)漢字是一個(gè)字符串,字符串(西文或漢字)的輸入要通過數(shù)組或指針進(jìn)行,詳見進(jìn)階篇第6章數(shù)組(2)。

2023/1/33漢字信息的輸入2022/12/2668C語言程序設(shè)計(jì)

—進(jìn)階篇第1章數(shù)據(jù)類型與輸入輸出(二)2023/1/3C語言程序設(shè)計(jì)

—進(jìn)階篇第1章數(shù)據(jù)類69內(nèi)容概述1.C語言的數(shù)據(jù)類型及分類。2.C語言中的常量和變量。3.C語言的數(shù)據(jù)輸入/輸出。2023/1/3內(nèi)容概述1.C語言的數(shù)據(jù)類型及分類。2022/12/2670教學(xué)目標(biāo)1.掌握數(shù)據(jù)類型的概念,了解C語言能夠處理的數(shù)據(jù)類型。2.掌握各種類型常量的特點(diǎn)及表示形式。3.掌握變量的概念,了解float、char型變量的特點(diǎn),掌握這二種類型變量的定義、賦值和使用方法。4.掌握數(shù)據(jù)的輸入輸出(包括漢字的輸入與輸出)的基本方法。2023/1/3教學(xué)目標(biāo)1.掌握數(shù)據(jù)類型的概念,了解C語言能夠處理的數(shù)據(jù)類型71數(shù)據(jù)是計(jì)算機(jī)程序處理的所有信息的總稱,數(shù)值、字符、文本等都是數(shù)據(jù),如整數(shù)、實(shí)數(shù)、英文字母、數(shù)字符號(hào)、英語單詞、漢字、一句話、一段文章、一個(gè)學(xué)生信息等。在C語言中,數(shù)據(jù)類型可分為:基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、指針類型、空類型四大類,共9種。 本章中,將介紹基本數(shù)據(jù)類型中的浮點(diǎn)型和字符型。其余類型在以后各章中陸續(xù)介紹。1.1C的數(shù)據(jù)類型

2023/1/3數(shù)據(jù)是計(jì)算機(jī)程序處理的所有信息的總稱,數(shù)值、字符、文本721.基本數(shù)據(jù)類型

基本數(shù)據(jù)類型最主要的特點(diǎn)是,其值不可以再分解為其它類型?;绢愋驼妥址透↑c(diǎn)型單精度雙精度枚舉短整型長(zhǎng)整型2023/1/31.基本數(shù)據(jù)類型基本數(shù)據(jù)類型最主要的特點(diǎn)是,732.整型變量整型變量分為四種:基本型、短整型、長(zhǎng)整型、無符號(hào)型基本型: 用“int”定義,在不同的系統(tǒng)中它的長(zhǎng)度可能不同,如在DOS下的int變量占2個(gè)字節(jié),相當(dāng)于短整型,而在Windows下的int變量占4個(gè)字節(jié),相當(dāng)于長(zhǎng)整型。2023/1/32.整型變量整型變量分為四種:基本型、短整型、長(zhǎng)整型、無742.整型變量短整型:用“shortint”或“short”定義,占2個(gè)字節(jié)。長(zhǎng)整型:用“l(fā)ong”或“l(fā)ongint”定義,占4個(gè)字節(jié)。無符號(hào)型:用“unsigned”定義

不存放符號(hào),數(shù)據(jù)不帶符號(hào)數(shù)。 無符號(hào)整型:“unsignedint”

無符號(hào)短整型:“unsignedshortint”

無符號(hào)長(zhǎng)整型:“unsignedlongint” 注意:如無指定,則為有符號(hào)數(shù)。2023/1/32.整型變量短整型:用“shortint”或“shor75【例1.1】整型數(shù)用法示例main(){ unsignedshortinta; shortintb; a=65535; b=32767; a=a+1;

b=b+1;

printf("a=%d\n",a); printf("b=%d\n",b);}運(yùn)行結(jié)果為:a=0b=-32768為什么?a從原來的65535加1后變?yōu)?,這說明a所能表示的值的大小是有限的!65535的二進(jìn)制數(shù)為1111111111111111,再加1=?32767的二進(jìn)制數(shù)為0111111111111111,再加1=?2023/1/3【例1.1】整型數(shù)用法示例main()運(yùn)行結(jié)果為:a從原來的76整型變量取值范圍類型說明符數(shù)的范圍 分配字節(jié)數(shù)

int-32768~32767 ■■

shortint-32768~32767 ■■

signedint-32768~32767 ■■

unsignedint0~65535 ■■

longint-2147483648~2147483647 ■■■■

unsignedlong0~4294967295 ■■■■int根據(jù)特定的系統(tǒng)對(duì)應(yīng)shortint或longintunsignedint根據(jù)特定的系統(tǒng)對(duì)應(yīng)unsignedshortint或unsignedlongint超過變量所能表示的范圍,產(chǎn)生計(jì)算錯(cuò)誤:溢出.2023/1/3整型變量取值范圍類型說明符數(shù)的范圍 分配字77整型常量即整數(shù),按不同的進(jìn)制區(qū)分,整數(shù)有三種表示方法:十進(jìn)制數(shù):以非0開始的數(shù),如:220、-560、+369等。八進(jìn)制數(shù):以0開始的數(shù),如:06、0106、0677等。

十六進(jìn)制數(shù):以0X或0x開始的數(shù),如:0X0D、0XFF、0x4e、0x123等。3.整型常量2023/1/3整型常量即整數(shù),按不同的進(jìn)制區(qū)分,整數(shù)有三種78另外,可在整型常數(shù)后添加一個(gè)“L”或“l(fā)”字母,表示該數(shù)為長(zhǎng)整型數(shù),如:22L、0773L、0Xae4l等。諸如38A、0578、0x29FG等,都是不合法的常數(shù)形式。2023/1/3另外,可在整型常數(shù)后添加一個(gè)“L”或“l(fā)”字母,表示該數(shù)為長(zhǎng)79(1)十進(jìn)制數(shù)形式 由數(shù)碼0~9和小數(shù)點(diǎn)組成。例如:0.0、25.0、5.789、0.13、5.0、300.、-267.8230等均為合法的實(shí)數(shù)。注意,必須有小數(shù)點(diǎn)。

1.2.1實(shí)型常量的表示方法

實(shí)型也稱為浮點(diǎn)型。實(shí)型常量也稱為實(shí)數(shù)或者浮點(diǎn)數(shù)。在C語言中,實(shí)數(shù)只采用十進(jìn)制。它有二種形式:十進(jìn)制小數(shù)形式和指數(shù)形式。1.2實(shí)型數(shù)據(jù)2023/1/3(1)十進(jìn)制數(shù)形式1.2.1實(shí)型常量的表示方法

實(shí)80(2)指數(shù)形式

由十進(jìn)制數(shù),加階碼標(biāo)志“e”或“E”以及階碼(只能為整數(shù),可以帶符號(hào))組成。其一般形式為:

aEn(a為十進(jìn)制數(shù),n為十進(jìn)制整數(shù))其值為a*10n。如: 2.1E5(等于2.1*105) 3.7E-2(等于3.7*10-2) 0.5E7(等于0.5*107) -2.8E-2(等于-2.8*10-2)2023/1/3(2)指數(shù)形式如:2022/12/2681以下則不是合法的實(shí)數(shù): 345(無小數(shù)點(diǎn))

E7(階碼標(biāo)志E之前無數(shù)字) -5(無階碼標(biāo)志) 53.-E3(負(fù)號(hào)位置不對(duì)) 2.7E(無階碼)標(biāo)準(zhǔn)C允許浮點(diǎn)數(shù)使用后綴。后綴為“f”或“F”即表示該數(shù)為浮點(diǎn)數(shù)。如356.f和356.是等價(jià)的。因此:(1)十進(jìn)制小數(shù)形式:必須有小數(shù)點(diǎn)。(2)指數(shù)形式:字母e前必須有數(shù)字,字母e后必須為整數(shù)

,規(guī)范化的指數(shù)形式輸出。

2023/1/3以下則不是合法的實(shí)數(shù):因此:2022/12/2682【例1.2】實(shí)型常量的使用#include<stdio.h>main(){ printf("%f\n",356.); printf("%f\n",356); printf("%f\n",356.f);}VC++輸出:356.000000-1.#QNAN0356.0000002023/1/3【例1.2】實(shí)型常量的使用VC++輸出:356.00000831.2.2實(shí)型變量

1實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式實(shí)型數(shù)據(jù)一般占4個(gè)字節(jié)(32位)內(nèi)存空間,按指數(shù)形式存儲(chǔ)。如實(shí)數(shù)3.14159在內(nèi)存中的存放形式如下:+.3141591數(shù)符小數(shù)部分指數(shù)小數(shù)部分占的位(bit)數(shù)愈多,數(shù)的有效數(shù)字愈多,精度愈高。指數(shù)部分占的位數(shù)愈多,則能表示的數(shù)值范圍愈大。2023/1/31.2.2實(shí)型變量

1實(shí)型數(shù)據(jù)在內(nèi)存中的存放形式+.842.實(shí)型變量的分類

實(shí)型變量分為:?jiǎn)尉龋╢loat型)、雙精度(double型)和長(zhǎng)雙精度(longdouble型)三類。如下表:類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)的范圍float32(4)6~710-37~1038double64(8)15~1610-307~10308longdouble128(16)18~1910-4931~1049322023/1/32.實(shí)型變量的分類類型說明符比特?cái)?shù)(字節(jié)數(shù))有效數(shù)字?jǐn)?shù)的范85實(shí)型變量定義的格式和書寫規(guī)則與整型相同。例如:

floatx,y; (定義x,y為單精度實(shí)型量)

doublea,b,c; (定義a,b,c為雙精度實(shí)型量)2023/1/3實(shí)型變量定義的格式和書寫規(guī)則與整型相同。20863實(shí)型數(shù)據(jù)的舍入誤差由于實(shí)型變量是由有限的存儲(chǔ)單元組成的,因此能提供的有效數(shù)字總是有限的。不同的編譯器下處理的精度不同,如下例。【例1.3】實(shí)型數(shù)據(jù)的舍入誤差。#include <stdio.h>main(){ floata,b; a=123456.789e5; b=a+20; printf("%f\n",a); printf("%f\n",b);}運(yùn)行結(jié)果(VC++):12345678848.00000012345678848.000000可見一個(gè)大數(shù)與一小數(shù)間運(yùn)算會(huì)產(chǎn)生什么結(jié)果?2023/1/33實(shí)型數(shù)據(jù)的舍入誤差【例1.3】實(shí)型數(shù)據(jù)的舍入誤差。運(yùn)行結(jié)87【例1.4】main(){ floata; doubleb; a=33333.33333; b=33333.33333333333333; printf("%f\n%f\n",a,b);}從本例可以看出,由于a是單精度浮點(diǎn)型,有效位數(shù)只有七位。而整數(shù)已占五位,故小數(shù)二位后之后均為無效數(shù)字。

b是雙精度型,有效位為十一位(VC++)。

實(shí)型數(shù)據(jù)在實(shí)際運(yùn)用中要注意?。。。ㄝ^大數(shù)與小數(shù)算術(shù)運(yùn)算、比較等)運(yùn)行結(jié)果(VC++): 33333.332031 33333.3333332023/1/3【例1.4】從本例可以看出,由于a是單精度浮點(diǎn)型,88舍入誤差示例1.5(VC++):#include<stdio.h>#include<math.h>main(intargc,char**argv){ printf("%d\n",1.0/3*3); /*結(jié)果為0*/

printf("%f\n",1.0/3.*3.);/*結(jié)果為1.000000*/

printf("%d\n",sqrt(2.)*sqrt(2.)); /*結(jié)果為1*/

printf("%f\n",sqrt(2.)*sqrt(2.)); /*結(jié)果為2.000000*/}2023/1/3舍入誤差示例1.5(VC++):2022/12/26891.2.3實(shí)型常量的類型實(shí)型常量不分單、雙精度,都按雙精度double型處理。2023/1/31.2.3實(shí)型常量的類型2022/12/26901.3.1字符常量

1.3字符型數(shù)據(jù)1字符常量定界符為單引號(hào)(')的單字符。例如: 'a'、'A'、'3'、'='、'+'、'?'注意英文字母區(qū)分大小寫。C字符常量特點(diǎn):(1)字符常量只能用單引號(hào)括起來,不能用雙引號(hào)或其它括號(hào)。(2)字符常量只能是單個(gè)字符,不能是字符串。(3)字符可以是字符集中任意字符。但數(shù)字被定義為字符型之后就不能參與數(shù)值運(yùn)算。如‘5’和5。2023/1/31.3.1字符常量1.3字符型數(shù)據(jù)1字符常量202912轉(zhuǎn)義字符轉(zhuǎn)義字符是一種特殊的字符常量。轉(zhuǎn)義字符以反斜線“\”開頭,后跟一個(gè)或幾個(gè)字符。 轉(zhuǎn)義字符具有特定的含義,不同于字符原有的意義,故稱“轉(zhuǎn)義”字符。轉(zhuǎn)義字符主要用來表示那些用一般字符不便于表示的控制代碼。常用的轉(zhuǎn)義字符及其含義如下表:

2023/1/32轉(zhuǎn)義字符2022/12/2692轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n換行10\t橫向跳到下一制表位置9\b退格8\r回車13\f走紙換頁12\\反斜線符"\"92\'單引號(hào)符39\"雙引號(hào)符34\a鳴鈴7\ddd1~3位八進(jìn)制數(shù)所代表的字符

\xhh1~2位十六進(jìn)制數(shù)所代表的字符

2023/1/3轉(zhuǎn)義字符轉(zhuǎn)義字符的意義ASCII代碼\n換行10\t橫向跳到93廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)義字符來表示。表中的\ddd和\xhh正是為此而提出的。ddd和hh分別為八進(jìn)制和十六進(jìn)制的ASCII代碼。如\101表示字母“A”(見附錄I),\102表示字母“B”,\134表示反斜線,\X0A表示換行等。

常見字符的值: 20H~空格 30H~‘0’-----39H~‘9' 41H~'A' 61H~'a'內(nèi)碼(ASCII碼)在32~126范圍內(nèi)為可顯示字符。

2023/1/3廣義地講,C語言字符集中的任何一個(gè)字符均可用轉(zhuǎn)94【例1.6】轉(zhuǎn)義字符的使用。main(){ inta,b,c; a=5; b=6; c=7; printf("abc\tde\rf\n"); printf("hijk\tL\bM\n");}運(yùn)行結(jié)果:fabcdehijkM2023/1/3【例1.6】轉(zhuǎn)義字符的使用。運(yùn)行結(jié)果:2022/12/26951.3.2字符變量

字符變量用來存儲(chǔ)字符常量,即單個(gè)字符。字符變量的類型說明符是char。在內(nèi)存中占一個(gè)字節(jié),字符變量類型定義的格式和書寫規(guī)則都與整型變量相同。例如:

chara,b;2023/1/31.3.2字符變量2022/12/26961.3.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法字符以ASCII碼形式存放在內(nèi)存單元中,因此ASCII碼被稱作字符的內(nèi)碼。字符型與整型的轉(zhuǎn)換:自動(dòng)進(jìn)行注意:字符型占一個(gè)字節(jié),整型占兩個(gè)字節(jié)(與編譯器有關(guān))。每個(gè)字符變量被分配一個(gè)字節(jié)的內(nèi)存空間,因此只能存放一個(gè)字符。字符值是以ASCII碼的形式存放在變量的內(nèi)存單元之中的。

2023/1/31.3.3字符數(shù)據(jù)在內(nèi)存中的存儲(chǔ)形式及使用方法2022/197如'x'的十進(jìn)制ASCII碼是120,'y'的十進(jìn)制ASCII碼是121。對(duì)字符變量a,b賦予'x'和'y'值:

a='x'; b='y';

實(shí)際上是在a,b兩個(gè)單元內(nèi)存放120和121的二進(jìn)制代碼:0111100001111001a:

b:

可以把字符作為整型量進(jìn)行處理,也可以對(duì)整型變量賦以字符值,把整型量按字符量輸出。整型量為二字節(jié)量,字符量為單字節(jié)量,當(dāng)整型量按字符型量處理時(shí),只有低八位字節(jié)參與處理。

2023/1/3如'x'的十進(jìn)制ASCII碼是120,'y98【例1.7】向字符變量賦以整數(shù)。main(){ chara,b; a=120; b=121; printf("%c,%c\n",a,b); printf("%d,%d\n",a,b);}運(yùn)行結(jié)果:x,y120,1212023/1/3【例1.7】向字符變量賦以整數(shù)。運(yùn)行結(jié)果:2022/12/299【例1.8】字符運(yùn)算。main(){ chara,b; a='a'; b='b'; a=a-32; b=b-32; printf("%c,%c\n%d,%d\n",a,b,a,b);}運(yùn)行結(jié)果:A,B65,662023/1/3【例1.8】字符運(yùn)算。運(yùn)行結(jié)果:2022/12/26100

1.3.5字符串常量

字符串常量是由一對(duì)雙引號(hào)括起的字符序列。例如:"CHINA",“Cprogram”,"$12.5"等都是合法的字符串常量。字符串常量和字符常量之間區(qū)別:(1)字符常量由單引號(hào)括起來,字符串常量由雙引號(hào)括起來。(2)字符常量只能是單個(gè)字符,字符串常量則可以含一個(gè)或多個(gè)字符。(3)可以把一個(gè)字符常量賦予一個(gè)字符變量,但不能把一個(gè)字符串常量賦予一個(gè)字符變量。在C語言中沒有相應(yīng)的字符串變量,但是可以用一個(gè)字符數(shù)組來存放一個(gè)字符串常量。2023/1/3

1.3.5字符串常量2022/12/26101(4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串中字符數(shù)加1。增加的一個(gè)字節(jié)中存放字符“\0”(ASCII碼為0)。這是字符串結(jié)束的標(biāo)志,該字符不能顯示也不用顯式寫出來。例如:字符串"Cprogram"在內(nèi)存中所占的字節(jié)為:

C

program\0'a'和"a"的區(qū)別是?“A”存儲(chǔ)方式為A\0但‘A’存儲(chǔ)方式為:A2023/1/3(4)字符常量占一個(gè)字節(jié)的內(nèi)存空間。字符串常量占的內(nèi)存字節(jié)數(shù)102舉例"TES""""a"'T''E''S''T'\08469838400\0'a'\0009700字符串變量的使用在第6章數(shù)組(2)中介紹.2023/1/3'T''E''S''T'\08469838400\0'a'\103變量使用的三部曲:定義,賦初值,改變之。在程序中常常需要對(duì)變量賦初值,以便使用變量。C語言程序中可有多種方法為變量提供初值。方法:(1)先定義后賦值類型說明符變量1,變量2,……;(2)在變量定義中賦初值,一般形式為:

類型說明符變量1=值1,變量2=值2,……;1.4變量賦初值2023/1/3變量使用的三部曲:定義,賦初值,改變之104

變量定義的同時(shí)給變量賦以初值

以下程序與左邊的有什么區(qū)別?main(){ inta=3,b,c=5; b=a+c; printf("a=%d,b=%d,c=%d\n",a,b,c);}main(){ inta,b,c;a=3;c=5; b=a+c; printf("a=%d,b=%d,c=%d\n",a,b,c);}2023/1/3

變量定義的同時(shí)給變量賦以初值以下程序與左邊的有什么區(qū)別?1051.5.1數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)1.5數(shù)據(jù)的輸入輸出

在C語言中,所有的數(shù)據(jù)輸入/輸出都是由庫(kù)函數(shù)完成的。因此都是函數(shù)語句。在使用C語言庫(kù)函數(shù)時(shí),要用預(yù)編譯命令

#include將有關(guān)“頭文件”包含到源文件中。2023/1/31.5.1數(shù)據(jù)輸入輸出的概念及在C語言中的實(shí)現(xiàn)1.5數(shù)106使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí)要用到“stdio.h”文件,因此源文件開頭應(yīng)有以下預(yù)編譯命令: #include<stdio.h>或 #include"stdio.h"二者的區(qū)別:2023/1/3使用標(biāo)準(zhǔn)輸入輸出庫(kù)函數(shù)時(shí)要用到“stdio1071.5.2字符數(shù)據(jù)的輸入輸出1putchar函數(shù)(字符輸出函數(shù))功能:在顯示器上輸出單個(gè)字符。其一般形式為:

putchar(字符變量);例如:

putchar('A');(輸出大寫字母A) putchar(x);(輸出字符變量x的值)

putchar(‘\101’);(也是輸出字符A) putchar('\n');(換行)2023/1/31.5.2字符數(shù)據(jù)的輸入輸出2022/12/26108【例1.9】輸出單個(gè)字符。#include<stdio.h>main(){ chara,b,c; a='B'; b='o'; c='k'; /*以下書寫方式不提倡*/

putchar(a);putchar(b);putchar(b);putchar(c); putchar('\t'); putchar(a);putchar(b); putchar('\n'); putchar(b);putchar(c);}運(yùn)行結(jié)果:BookBook2023/1/3【例1.9】輸出單個(gè)字符。運(yùn)行結(jié)果:2022/12/261092.getchar函數(shù)(鍵盤輸入函數(shù))功能:從鍵盤上輸入一個(gè)字符。其一般形式為:

getchar();通常把輸入的字符賦予一個(gè)字符變量,構(gòu)成賦值語句,如:

charc; c=getchar();2023/1/32.getchar函數(shù)(鍵盤輸入函數(shù))2022/12/26110使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:(1)getchar函數(shù)只能接受單個(gè)字符,輸入數(shù)字也按字符處理。輸入多于一個(gè)字符時(shí),只接收第一個(gè)字符。(2)使用本函數(shù)前必須包含文件“stdio.h”。2023/1/3使用getchar函數(shù)還應(yīng)注意幾個(gè)問題:2022/12/26111【例1.10】getchar()示例--屏幕菜單設(shè)計(jì)及應(yīng)用。要求:在屏幕顯示上供用戶選擇的功能菜單,用戶通過鍵盤選擇后,計(jì)算機(jī)顯示用戶選擇的結(jié)果,不斷重復(fù),直到用戶選擇退出,結(jié)束程序運(yùn)行.分析:1)可以通過循環(huán)實(shí)現(xiàn)同一功能的重復(fù)執(zhí)行;2)在每一次循環(huán)中:

A.清除屏幕;

B.顯示菜單信息;

C.獲取用戶的鍵盤輸入;

D.分析用戶輸入并作出相應(yīng)處理;2023/1/3【例1.10】getchar()示例--屏幕菜單設(shè)計(jì)及應(yīng)用。112/*參考程序*/#include<stdio.h>#include<stdlib.h>intmain(intargc,char*argv[]){charselect;while(1) /*(1)--為什么可以這樣用?*/{system(“cls”); /*執(zhí)行DOS系統(tǒng)命令:cls清屏*/

printf("\t\t屏幕菜單示例\n");printf("1--加法測(cè)試;\t2--減法測(cè)試\n");printf("3--除法測(cè)試;\t4--記憶力測(cè)試\n");printf("0--退出.\n");printf("請(qǐng)選擇(0--4):");

select=getchar(); /*等待用戶輸入,也可以用scanf()*/2023/1/3/*參考程序*/#include<stdio.h>2022113

if(select<‘0’||select>‘4’)

溫馨提示

  • 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. 人人文庫(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)論