C語言程序設(shè)計(jì)實(shí)例教程(第三版) 教案_第1頁(yè)
C語言程序設(shè)計(jì)實(shí)例教程(第三版) 教案_第2頁(yè)
C語言程序設(shè)計(jì)實(shí)例教程(第三版) 教案_第3頁(yè)
C語言程序設(shè)計(jì)實(shí)例教程(第三版) 教案_第4頁(yè)
C語言程序設(shè)計(jì)實(shí)例教程(第三版) 教案_第5頁(yè)
已閱讀5頁(yè),還剩160頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:銀行存款原樣的輸出

教學(xué)目的及要求:要求學(xué)生了解C語言的發(fā)展歷史、特點(diǎn),掌握C語言編譯和運(yùn)行工具環(huán)境及其使

用方法。

教學(xué)重點(diǎn):掌握c語言的編譯和運(yùn)行工具環(huán)境及其使用方法。

教學(xué)難點(diǎn):C語言程序調(diào)試方法的熟練掌握

思政元素:對(duì)于編程課程,應(yīng)不斷堅(jiān)持編程練習(xí),培養(yǎng)百折不撓、堅(jiān)忍不拔的必勝信勺;

教學(xué)步驟及內(nèi)容:(講授一2學(xué)時(shí))引入新課:

這是本學(xué)期第一次課,這學(xué)期將一起學(xué)習(xí)“C語言程序設(shè)計(jì)”這門課程。這是一門編程語

言課,編程課程可能使人感到枯燥乏味,但不斷堅(jiān)持編程練習(xí)卻能培養(yǎng)百折不撓、堅(jiān)忍不拔的必

勝信念;下面先來看看這樣一個(gè)問題;

問題情景及其實(shí)現(xiàn)

#include<stdio.h>

intmain()

(

printf(“張三存款5000元!\n0);

return0;

)

程序運(yùn)行結(jié)果:

張三存款5000元!

在開發(fā)一個(gè)簡(jiǎn)單程序前,我們首先需要選擇一種語言,那么我們?yōu)槭裁催x擇這種語言?這種

語言有哪些特點(diǎn)?語言運(yùn)行環(huán)境與開發(fā)工具是什么?......,帶著這些問題,我們來認(rèn)識(shí)一下C的發(fā)

展歷史、語言特點(diǎn)、運(yùn)行環(huán)境與開發(fā)工具,并學(xué)習(xí)一個(gè)簡(jiǎn)單的C程序的編程過程。

新課教學(xué):

一、C語言發(fā)展歷史

[CPL語K:W0?大學(xué).一I

1~

[acpij**:州橋大學(xué).|

I

B*X:Bdl夕4*.

4PDP機(jī)N上用其&系線

治黔空.1972-197g-陽其改寫系他|

二、C涪言的特點(diǎn)

?語言簡(jiǎn)潔,表達(dá)能力強(qiáng),易于理解

令只有32個(gè)關(guān)鍵字,9種控制語句

?有大量的標(biāo)準(zhǔn)庫(kù)函數(shù)

令數(shù)據(jù)類型豐富

?運(yùn)算符種類多,功能強(qiáng)

?程序書寫格式自由

?可直接訪問物理地址,實(shí)現(xiàn)對(duì)硬件和低層系統(tǒng)軟件的訪問

?語言生成的代碼質(zhì)量高

?可移植性好

?應(yīng)用面廣,適于教學(xué)

三、C語言運(yùn)行環(huán)境與開發(fā)工具

C語言作為高級(jí)語言,要想得到可以執(zhí)行的C程序,必須對(duì)C源程序進(jìn)行編譯和連接,而該

過程需要在開發(fā)工具特定的運(yùn)行環(huán)境下進(jìn)行。

1、C語言的運(yùn)行環(huán)境

VisualC++6.0(后面稱VC6.0)是當(dāng)今Windows操作系統(tǒng)下最流行的C類集成開發(fā)環(huán)境之

一。這類編譯程序也兼容了對(duì)C語言的編譯和運(yùn)行。

它具有方便、直觀、快捷的編輯器,功能強(qiáng)大的調(diào)試器,功能更完善的編譯器,還具有豐富

的庫(kù)函數(shù)。它向用戶提供了一個(gè)集成環(huán)境,把程序的編輯、編譯、連接和運(yùn)行等操作全部集中在

一個(gè)界面上進(jìn)行,使用十分方便。

本教程采用VC6.0編譯程序作為C語言程序的運(yùn)行環(huán)境,下面我們先對(duì)VC6.0的使用進(jìn)行基

本的介紹。

2、C語言的開發(fā)工具的使用

(1)啟動(dòng)VC6.0編譯程序。

(2)創(chuàng)建項(xiàng)目

(3)C源文件的創(chuàng)建

(4)編輯源代碼

(5)編譯連接源程序

(6)執(zhí)行程序

?知識(shí)擴(kuò)展:字符原樣輸出程序

/*-----------Aprogramtoprintwelcome------------*/

#include<stdio.h>

intmain()

(

prinlf("welcome!");

return0;

}

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:簡(jiǎn)單C程序調(diào)試

教學(xué)目的及要求:掌握編輯工具VC6.0調(diào)試C程序的方法。

教學(xué)重點(diǎn):掌握簡(jiǎn)單C程序的編輯、編譯,連接、運(yùn)行過程,及幾種程序錯(cuò)誤的查看方法。

教學(xué)難點(diǎn):C程序的查錯(cuò)處理

思政元素:在實(shí)踐教學(xué)環(huán)節(jié),要求學(xué)生養(yǎng)成認(rèn)真負(fù)責(zé)的工作態(tài)度,一絲不茍的工匠精神和求真務(wù)實(shí)的科學(xué)精神。

教學(xué)步驟及內(nèi)容:(實(shí)驗(yàn)-1學(xué)時(shí))

上節(jié)課講解了C的編譯程序VC6.0,本節(jié)課將在計(jì)算機(jī)上熟悉運(yùn)用VC6.0編輯調(diào)試簡(jiǎn)單的C程序“

對(duì)于編寫程序,實(shí)踐教學(xué)環(huán)節(jié)是鍛煉學(xué)生的實(shí)作技能,我們需要認(rèn)真調(diào)試程序,掌握程序調(diào)

試的步驟與方法,為后續(xù)編寫程序和測(cè)試程序打下堅(jiān)實(shí)的基礎(chǔ),作為學(xué)生需要養(yǎng)成認(rèn)真負(fù)責(zé)的工

作態(tài)度,一絲不茍的工匠精神和求真務(wù)實(shí)的科學(xué)精神。下面看看對(duì)于程序調(diào)試需要執(zhí)行的相關(guān)調(diào)

試步驟

簡(jiǎn)單的c程序:

/*......................Aprogramtoprintwelcome----------------*/

#includc<stdio.h>

intmain()

(

printf("welcome!");

return0;

)

或編輯調(diào)試書上項(xiàng)目一種的其他程序代碼。

通過對(duì)以上簡(jiǎn)單程序的調(diào)試,熟悉并掌握C程序在VC6.0下的編輯、編譯、連接及運(yùn)行的調(diào)

試方法。

對(duì)于C語言的編譯環(huán)境可以根據(jù)教學(xué)需要自行選擇(主要注意編譯環(huán)境支持的版本);

注意:包含庫(kù)和連接庫(kù)的配置;

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:利息的計(jì)算(1)

教學(xué)目的及要求:要求學(xué)生掌握C語言的字符集、標(biāo)識(shí)符概念,掌握C語言中基本數(shù)據(jù)類型中的整

型、實(shí)型和字符型(包含字符串)。

教學(xué)重點(diǎn):掌握整型、實(shí)型和字符型(包含字符串)的常量與變量的使用。

教學(xué)難點(diǎn):整型、實(shí)型、字符型(包含字符串)的內(nèi)存存儲(chǔ)形式,及其常量與變量的表示范圍,及

實(shí)型數(shù)據(jù)有效性的理解

思政元素:

教學(xué)步驟及內(nèi)容:(講授-2~3學(xué)時(shí))引入新課:

1.2.1問題情景及其實(shí)現(xiàn)

假設(shè)XXX銀行1年定期存款的利率為3%,并已知存款期為3年,存款本金為5000元,請(qǐng)計(jì)算3

年后可以得到的利息是多少。

#include<stdio.h>

#inclidc<math.h>

intmain()

doubleIrate=0.03;

doubleDmoney=5000,Dinterest;

intterm=3;

Dinterest=Dmoneypow((l+Irate),term)-Dmoney;

printfC存款金額為%』lf的%(1年存款利息是:%.21f元g",Dmoney,term,Dinterest);

return0;

程序運(yùn)行結(jié)果如下:

存款金額為5000.0的3年存款利息是:463.64元

分析:

計(jì)算機(jī)操作處理時(shí),要完成以下工作:

?在內(nèi)存中給存款金額Dmoney、存款利率Irate、存款期限term和存款利息Dinterest開辟存

儲(chǔ)空間,存放它們的值。應(yīng)該留多大的地方來存放它們的值?

?數(shù)據(jù)3和0.03與term、Irate不同,它們是在編寫程序時(shí)就給出確定的值,在運(yùn)算過程

中不會(huì)改變。這樣的數(shù)計(jì)算機(jī)怎么處理?對(duì)整數(shù)3和小數(shù)0.03,計(jì)算機(jī)存放時(shí)是否有區(qū)別?

?+、-、*、=等這些符號(hào)計(jì)算機(jī)的識(shí)別與執(zhí)行是怎樣的?

一、C的字符集及詞法約定

1、基本字符集

字符集是C語言的基本字符集,C語言使用基本字符集如下:

①大寫字母:ABC...XYZ

②小寫字母:abc...xyz

③數(shù)字:0123456789

④特殊符號(hào):+-*/><()[]{)_=!#%.

⑤空白符:空格符、換行符、制表符

2、標(biāo)識(shí)符

標(biāo)識(shí)符是用來標(biāo)識(shí)某種對(duì)象的名字,這些對(duì)象可以是程序中的變量、符號(hào)常量、數(shù)組、函數(shù)和數(shù)

據(jù)類型筆。

e標(biāo)識(shí)符的構(gòu)成成份是:字母、數(shù)字和下劃線;

e構(gòu)成規(guī)則是:以字母或下劃線開頭的序列。

c語言中標(biāo)識(shí)符分為系統(tǒng)定義標(biāo)識(shí)符和用戶定義標(biāo)識(shí)符兩種

(1)系統(tǒng)定義標(biāo)識(shí)符

系統(tǒng)定義標(biāo)識(shí)符是指具有固定名字和特定含義的標(biāo)識(shí)符,如前面程序中看到的mt、float、

double、printf等。

系統(tǒng)定義標(biāo)識(shí)符又可以進(jìn)一步分為關(guān)鍵字和預(yù)定義標(biāo)識(shí)符兩種類型。

①關(guān)鍵字

關(guān)鋌字是C語言系統(tǒng)使用的具有特定含義的標(biāo)識(shí)符,它們都是一些英文單詞或縮寫,也稱為

特定字或保留字,不能作為預(yù)定義標(biāo)識(shí)符和用戶定義標(biāo)識(shí)符使用。

C語言定義了32個(gè)關(guān)鍵字,如下所示:

表1?1C語音32美健)

,值。bmkdiednrcomlcoiitinixdrfaull(14doubkHtrmum

rxlrrnSoilgotoITlotlootMurnJ?ort血xd

UzeoftfitkUrurttwMrhunkNiumtcntdvoMvohtllrwhik

②預(yù)定義標(biāo)識(shí)符

是具有特定含義的標(biāo)識(shí)符,包括系統(tǒng)標(biāo)準(zhǔn)

庫(kù)函數(shù)名和編譯預(yù)處理命令等。

例如:printf、scanfsdefine和include等都是預(yù)定義標(biāo)識(shí)符。

(2)用戶定義標(biāo)識(shí)符

用戶定義標(biāo)識(shí)符用于對(duì)用戶使用的變量、數(shù)組和函數(shù)等操作對(duì)象進(jìn)行命名。

例如:將兩個(gè)變量命名為a和b,將一個(gè)數(shù)組命名為student,將一個(gè)函數(shù)命名為max等“

二、常量與變量

在計(jì)算機(jī)處理的程序中,我們不免經(jīng)常與數(shù)據(jù)打交道,根據(jù)數(shù)據(jù)的值是固定的,還是可變的,我

們將數(shù)據(jù)分為兩大類:常量和變量。

1、常量

定義:程序運(yùn)行時(shí)其值不能改變的量(即常數(shù))

例如:5000,3,0.03

一分類:符號(hào)常量和直接常量

(1)符號(hào)常量:用標(biāo)識(shí)符代表常量

定義格式:#define符號(hào)常量常量

?一般用大寫字母

?是宏定義預(yù)處理命令,不是C語句

(2)直接常量:

>整型常量

>實(shí)型常量

>字符型常量

>字符串常量

2、變量

在程序運(yùn)行過程中其值可以改變的量稱為變量。變量有整型變量、實(shí)型變量、字符變量等。

程序中的變星由用戶標(biāo)識(shí)符來表示,在C語言中,所有變雖必須遵循“先定義,后使用”的

原則。變量的定義一般放在函數(shù)體的開頭,即聲明部分。

變量定義語句的形式為:

類型說明符變量名表;

即:類型說明符變量名1,變量名2,…;

其中:類型說明符由關(guān)鍵字表示,不同的關(guān)健字表示不同的數(shù)據(jù)類型,變量名是用戶標(biāo)識(shí)符,由

用戶命名。

通常,定義了一個(gè)變量而未賦初值時(shí),一般變量中存放的是隨機(jī)值。因此,為使定義的變量

有一確切的數(shù)值,需給定義的變量賦一初值。

注意:一個(gè)變量代表著內(nèi)存中一個(gè)具體的存儲(chǔ)單元,用變量名來標(biāo)識(shí)。存儲(chǔ)單元中存放的數(shù)據(jù)稱

為變量的值,變量的值可以通過賦值的方法獲得和改變。一定要區(qū)分開變量名和變量值這兩個(gè)不

同的概念。

三、基本數(shù)據(jù)類型

「整型

廣本類型I瑟菰型){慧然

I空類型

「數(shù)組類型

結(jié)構(gòu)體類型

C數(shù)據(jù)類型<構(gòu)造類型j聯(lián)合體類型

、枚舉類型

I指針類型

1、整型

(1)整型常量

表示形式:

。十進(jìn)制整數(shù):由數(shù)字0~9和正負(fù)號(hào)表示.如123.-456,0

O八進(jìn)制整數(shù):由數(shù)字。開頭,后跟數(shù)字0~7表示.如0123、011

e十六進(jìn)制整數(shù):由0x開頭,后跟0~9,a~f或A~F表示.如0xl23、0xff

整型常量的類型根據(jù)其值所在范圍確定其數(shù)據(jù)類型

O在整常量后加字母u或U,認(rèn)為它是無符號(hào)整型常量

場(chǎng)在整常量后加字母1或L,認(rèn)為它是longint型常量(可以加lu,表示unsignedlong常量

(2)整型變量

整型變量的數(shù)據(jù)類型根據(jù)存儲(chǔ)空間的大小分為:

⑴短整型shortint或short

⑵基本型ini

⑶長(zhǎng)整型longint或long

另外,整型變量還有指示的修飾符signed或unsigned,也即整型數(shù)據(jù)有正數(shù)/負(fù)數(shù)、無符號(hào)數(shù)之

分.

整型變量定義的語法:

類型說明符變量名標(biāo)識(shí)符1,變量名標(biāo)識(shí)符2,……;

【例1-2]整型變量的定義與使用

#include<stdio.h>

intmain()

inta=-10;

unsignedu=-10;

longL=180;

printf('a=%d,b=%u,L=%ld\nn,a,u,L);

return0;

程序運(yùn)行結(jié)果:

a=-10,b=65535,L=180

【例1-3】整型數(shù)據(jù)的溢出

#include<stdio.h>

intmain()

shortinta;

a=32767;

printf('*%dM,a);

a=a+2:

printf('%d\n';a);

return0;

}

2、實(shí)型

(1)實(shí)型常量

實(shí)型常量數(shù)據(jù)(浮點(diǎn)數(shù))在寫作時(shí)可以有兩種表示方法:

①十進(jìn)制小數(shù)形式:

由教字和小數(shù)點(diǎn)組成(必須有小數(shù)點(diǎn))。

例如:0.1234,1234.0,0.0

②指數(shù)形式:

使用e或E代表10的指數(shù),“E”前必須有數(shù)字(有效數(shù)據(jù));“E”后為指數(shù)且必須為整數(shù)

(2)實(shí)型變量

float(單精度):占4字節(jié),提供7位有效數(shù)字

double(雙精度):占8字節(jié),提供15位有效數(shù)字

實(shí)型變量的語法:

類型說明符變量名

實(shí)型數(shù)據(jù)在內(nèi)存以指數(shù)形式存儲(chǔ):

內(nèi)存形式:

3141—___________111

楨1E小分指數(shù)數(shù)制楨觸分

?rt-?*■

【例1乂】實(shí)型數(shù)據(jù)的舍入誤差

#include<stdio.h>

intmain()

(

floata.b;

a=123456.789e5;

b=a+20;

printf(,%f\n",a);

printf('%f\n",b);

return0;

)

【例1-5】實(shí)型數(shù)據(jù)的有效值位數(shù)

#include<stdio.h>

intmain()

(

floata;

doubleb;

a=33333.33333;

b=33333.33333333333333;

prinif("%f\n”,a);

printf(M%lf\n,,,b);

看量A6用字管與ASCHfMW

returnU;1rAsnrAM11ASCIIASCII

?lT單

4IMk

S0W5i

■e1WI

■?q107k

)AeR1(01

*SI▼9S100■

TIMa

?n0111■

<THl

■WI1J

3、字符型靜*Ms>X114f

(toe)TIBs

g?naa1Ml

(CR)?jjA117.

(1)字符型常量|,<Bnt▼

OMlC1w

AM2D1201

M3121T

tF122I

V?tfGa<

表示形式:用單引號(hào)括起來的單個(gè)普通字符或轉(zhuǎn)義字符。|H.124

?r?1c12)>

0JdIM

\HJ1Ke1270

3Lf

Ml3M<

字符常量的值:該字符的ASCII碼值。

轉(zhuǎn)義字符:反斜線后面跟一個(gè)字符或一個(gè)代碼值表示

表V4常用的轉(zhuǎn)義字符及其含義:

轉(zhuǎn)義字符含義轉(zhuǎn)義字符含義

\n換行\(zhòng)t水平制表

\b退格\r回車

\f換頁(yè)\\反斜線

\,單引號(hào)\M雙引號(hào)

\ddd1~3位8進(jìn)制數(shù)代表的字符\xhh1~2位16進(jìn)制數(shù)代表的字符

【例1-6】轉(zhuǎn)義字符的使用

#include<stdio.h>

intmain()

printf(1\101\x42C\n");

printf('Isay:\"Howareyou?\"\n");

printf('\\CProgramWXn");

printf('Turbo\'C\H,);

return0;

)

程序運(yùn)行結(jié)果:

ABC

Isay:"Howareyou?"

\CProgram\

TurboC'

(2)字符型變量

?字符型變量的數(shù)據(jù)類型為char,占1字節(jié)。

?字符型變量的分類:

字符型變量還有符號(hào)指示的修飾符signed或unsigned,也即字符型數(shù)據(jù)有正數(shù)/負(fù)數(shù)、無

符號(hào)正數(shù)之分。

?字符型變量的數(shù)值范圍:

>unsignedchar的數(shù)值范圍:0—255

>char的數(shù)值范圍:-128—+127

注意:字符變量存放的是字符ASCII碼

【例1-7】向字符變量賦以整數(shù)

#include<stdio.h>

intmain()

chara,b;

a=115;b=116;

printf("字符型變量字符型輸出:%c,%c\n",a,b);

primf("字符型變量的整型輸出:%d,%d\n\a,b);

return0;

程序運(yùn)行結(jié)果:

字符型變量字符型輸出:M

字符型變量的整型輸出:115,116

【例1-8】字符類型與整型間的轉(zhuǎn)換

#include<stdio.h>

intmain()

{

chara,b;

a=y;

b='f;

printf("初始小寫字符:%c,%c\n",a,b);

printf("初始字符的ASCII碼值:%d,%d\n",a,b);

a=a-32;

b=b-32;

printfC轉(zhuǎn)換后的大寫字符:%c,%c\n",a,b);

prinif(,轉(zhuǎn)換后字符的ASCII碼值:%d,%d\n”,a,b);

return0;

程序運(yùn)行結(jié)果:

初始小寫字符:s,t

初始字符的ASCH碼值:115,116

轉(zhuǎn)換后的大寫字符:S,T

轉(zhuǎn)換后字符的ASCII碼值:83,84

(3)字符串常量

一表示形式:用雙引號(hào)I"")括起來的字符序列

一存儲(chǔ)規(guī)則:每個(gè)字符串尾自動(dòng)加一個(gè)''0’作為字符串結(jié)束的標(biāo)志

一字符常量與字符串常量的不同:見課件。

注意:沒有字符串變量,字符串用字符數(shù)組存放!

前而講解了C的基本數(shù)據(jù)類型,這些婁型在C中怎么應(yīng)用呢?當(dāng)然使用它們離不開運(yùn)算符.

什么是運(yùn)算符呢?怎樣使用C中豐富的運(yùn)算符呢?下面我們就來看看。

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:數(shù)據(jù)類型的合理應(yīng)用

教學(xué)目的及要求:掌握c程序中的基本數(shù)據(jù)類型。

教學(xué)重點(diǎn):了解掌握并簡(jiǎn)單c程序中的整型、實(shí)型、字符型數(shù)據(jù)的表示形式。

教學(xué)難點(diǎn):c程序中各種數(shù)據(jù)類型的合理運(yùn)用,及其同異。

思政元素:理論與實(shí)踐一致:使學(xué)生知道軟件編程思想運(yùn)行的嚴(yán)密性、理論方法與實(shí)現(xiàn)技術(shù)的高

度一致是計(jì)算機(jī)科學(xué)與技術(shù)學(xué)科同數(shù)學(xué)學(xué)科密切相關(guān)的根本原因。

教學(xué)步驟及內(nèi)容:(實(shí)驗(yàn)?2學(xué)時(shí))

上節(jié)課講解了C的基本數(shù)據(jù)類型,結(jié)合課后習(xí)題,運(yùn)用VC6.0編輯調(diào)試簡(jiǎn)單的C程序,了解

各種數(shù)據(jù)類型的存儲(chǔ)方式,讓理論與實(shí)踐一致,使學(xué)生了解軟件編程思想運(yùn)行的嚴(yán)密性,在編程

中需要嚴(yán)格遵循編程的語法格式,了解編程設(shè)計(jì)要求以及靈活應(yīng)用。

參考書上實(shí)例,結(jié)合課后習(xí)題,嘗試編輯C程序調(diào)試,了解各種數(shù)據(jù)類型間的異同。

通過對(duì)以上程序的調(diào)試,進(jìn)一步掌握C程序在VC6.0下的編輯、編譯、連接及運(yùn)行的調(diào)試方

法。

1、

#include<stdio.h>

intmain()

(

charc1=,a,.c2='b;c3=,c;c4='\10l;c5='\ll6':

printf("a%cb%c\tc%c\tabc\n'*,c1,c2,c3);

printf("\t\b%c%c';c4,c5);

return0;

)

3、

#include<stdio.h>

intmain()

|

inty=3,x=3,z=l;

printf("%d%d\n”,(++x,y++),z+2);

return0;

)

4、

#include<stdio.h>

intmain()

(

inta=12345;

floatb=-198.345,c=6.5;

printf(Ha=%4d,b=%-l0.2e,c=%6.2f\n",a,b,c);

return0;

)

5、

#include<stdio.h>

intmain()

(

intx=-2345;

floaty=-12.3;

printf(n%6d,%6.2f;x,y);

return0;

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:利息的計(jì)算(2)

教學(xué)目的及要求:要求學(xué)生掌握C語言中的運(yùn)算符和表達(dá)式,掌握運(yùn)各種運(yùn)算符的運(yùn)算。

教學(xué)重點(diǎn):掌握基本類型的使用,熟練進(jìn)行運(yùn)算符的運(yùn)算。

教學(xué)難點(diǎn):運(yùn)算符的靈活使用。

思政元素:

教學(xué)步驟及內(nèi)容:(講授-2~3學(xué)時(shí))引入新課:

前面我們學(xué)習(xí)了基本數(shù)據(jù)類型,我們需要運(yùn)用這些類型的數(shù)據(jù)進(jìn)行運(yùn)算處理,就要使用到運(yùn)

算符,C語言提供了豐富的運(yùn)算符。

新課教學(xué):

四、運(yùn)算符與表達(dá)式

變量用來存放數(shù)據(jù),運(yùn)算符則用來處理數(shù)據(jù)。

所謂運(yùn)算符就是指運(yùn)算的符號(hào),例如加運(yùn)算符(+)、乘運(yùn)算符(*)、取地址運(yùn)算符(&)等。

表達(dá)式與運(yùn)算符密不可分,它由運(yùn)算符與操作數(shù)組合而成,并由運(yùn)算符指定對(duì)操作數(shù)要進(jìn)行

的運(yùn)算,根據(jù)運(yùn)算符需要參與的操作數(shù)的個(gè)數(shù)分為:?jiǎn)文窟\(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符,一

個(gè)表達(dá)式的運(yùn)算結(jié)果是一個(gè)值。

C語言提供的運(yùn)算符有以下幾種:算術(shù)運(yùn)算符、關(guān)系運(yùn)算符、邏輯運(yùn)算符、位運(yùn)算符、條件

運(yùn)算符、賦值運(yùn)算符、逗號(hào)運(yùn)算符、sizeof運(yùn)算符及其它運(yùn)算符。

注:可以根據(jù)需要有選擇性的講解以下運(yùn)算符,有些運(yùn)算符可以讓學(xué)生自行學(xué)習(xí),不理解部分可

以在實(shí)現(xiàn)時(shí)提出,老師在講解。

1、算數(shù)運(yùn)算符與算術(shù)表達(dá)式

(1)基本的算術(shù)運(yùn)算符及算數(shù)表達(dá)式

①基本的算術(shù)運(yùn)算符

C語言中提供的基本的算數(shù)運(yùn)算符包括:加(+)、減(-)、乘(*)、除(/)和求余(%)。如

表1-5所示。

表1-55種基本的茸術(shù)運(yùn)真符

運(yùn)算符名字實(shí)例

+加10+2.5/嚅出12.5*/

-般3.8-4/*融-0.2*/

*乘2*2.4/*得出4.8*/

/除7/2.0/*得出3.5*/

%取余10?3/*得出1*/

②算術(shù)表達(dá)式

用算術(shù)運(yùn)算符連接而成的式子稱為算術(shù)表達(dá)式。

【例1-9】基本算數(shù)運(yùn)算。

#include<stdio.h>

intmain()

unsignedshortu=65500;

u=u+50;

printf('u=%u\n",u);

return0;

程序運(yùn)行結(jié)果:

u=14

注意:

?當(dāng)算數(shù)運(yùn)算符兩邊的操作數(shù)是相同的數(shù)據(jù)類型的表達(dá)式時(shí),運(yùn)算的結(jié)果將保持原來的數(shù)據(jù)

類型。因此,5/2的值是2,不是2.5。因?yàn)楸磉_(dá)式5/2是整型表達(dá)式。

?生不能用于實(shí)型數(shù)據(jù),2.5%2是非法表達(dá)式。

?算術(shù)表達(dá)式的結(jié)果應(yīng)該不超過其所能表示的數(shù)的范圍。

(2)取反運(yùn)算符和自增自減運(yùn)算符

C語言中,減號(hào)(-)又是一個(gè)取反運(yùn)算符,在此之外C語言還提供了另外兩個(gè)用于算數(shù)運(yùn)算的單

目運(yùn)算符:++(自增)和--(自減)。++的作用是使變量的值自己增1,而--的作用是使變量

的值自己減1。

假定變量value已預(yù)定義:intvalue=5;如表1-6所示

表36自地和自減運(yùn)算符

運(yùn)算符名字實(shí)例

++自加(前綴)(+4-yaiue)+10/*得出16,value變?yōu)?*/

++自加(后綴)(value**)+10/*得出15,value變?yōu)?*/

——自減(前綴)(—value)+10/*得出14,value變?yōu)?*/

—自派(后嫄(value")+10/*黜15,value變?yōu)?*/

由此可■見,自增和自減運(yùn)算符可■在變量名前,也可在變量名后,即可以用于前緩和后綴的形

式,但含義并不相同。

?對(duì)于前綴的形式,變量先作自增或自減運(yùn)算,然后將運(yùn)算結(jié)果用于表達(dá)式中;

?對(duì)于后綴的形式,變量的值先在表達(dá)式中參與運(yùn)算,然后再作自增或自減運(yùn)算。

【例1-10]自增自減運(yùn)算。

#include<stdio.h>

intmain()

(

inti=3,a;

a=20-i++;

printfCa=%d,i=%d\n",a,i);

b=++i+2;

printfCb=%d,i=%d\nb,i);

return0;

)

程序運(yùn)行結(jié)果:

a=17,i=4

b=7,i=5

說明:

?++運(yùn)算符只能用于變量,不能用于常量和表達(dá)式,因?yàn)?+和一蘊(yùn)含了賦值操作。

?兩個(gè)+和-之間不能有空格

?作為前綴和后綴的區(qū)別

2、賦值運(yùn)算符與賦值表達(dá)式

C語言中,“二”被稱為賦值運(yùn)算符,其含義是將運(yùn)算符右邊表達(dá)式的值送到左邊變量名所代

表的存儲(chǔ)單元內(nèi)。

其簡(jiǎn)單形式是:變量;表達(dá)式

這和形式的整個(gè)表達(dá)式稱為賦值表達(dá)式。執(zhí)行賦值表達(dá)式時(shí),一般首先計(jì)算右邊表達(dá)式的值,

然后賦給左邊變量。在使用賦值表達(dá)式時(shí)應(yīng)注意以下幾點(diǎn)。

(1)“二”左邊必須是變量名或者是對(duì)應(yīng)某特定內(nèi)存單元的表達(dá)式。

(2)C語言允許在一個(gè)表達(dá)式中對(duì)多個(gè)變量連續(xù)賦值

(3)賦值運(yùn)算符的優(yōu)先級(jí)很低,僅高于逗號(hào)運(yùn)算符。

(4)賦值表達(dá)式的值就是“二”右邊表達(dá)式的值。

【例1-11]賦值運(yùn)算。

#include<stdio.h>

intmain()

(

inta=38,b=6,c;

floatf=4;

c=a/f-b

printf("c=%d",c);

return0;

)

程序運(yùn)行結(jié)果:c=3

在這個(gè)賦值語句中,右邊的表達(dá)式的類型是double,而c是int型,所以賦值執(zhí)行后結(jié)果的類

型是int,即對(duì)double型的值截去小數(shù)部分之后的整數(shù)部分。

注意這里是截去,不是四舍五入。

3、關(guān)系運(yùn)算符與關(guān)系表達(dá)式

在程序中經(jīng)常需要比較兩個(gè)量的大小關(guān)系,以決定程序下一步的工作。比較兩個(gè)量的運(yùn)算符

稱為關(guān)系運(yùn)算符。

C提供6種關(guān)系運(yùn)算符,用于數(shù)值之間的比較,表達(dá)式的值用整型量1(表示true),0(表

示false),見表1-7。

表1-7關(guān)系運(yùn)算圓

運(yùn)算符名字

==等于3==爭(zhēng)德曲I移

J=不等于產(chǎn)福鹿,與

<小于產(chǎn)檄器1探

<=小于或等于5<='5產(chǎn)錫瞄1移

>大于泮得岫砥松

>=大于、或等于臚德般工移

說明:第一:<=和>=運(yùn)算符不能寫成=<和=>,=<和。是無效的運(yùn)算符。第二:字符串不

應(yīng)當(dāng)用關(guān)系運(yùn)算符比較,因?yàn)楸槐容^的不是字符串的內(nèi)容本身,而是字符串的地址。

【例1-12]關(guān)系運(yùn)算。

#include<stdio.h>

intmain()

(

intn;

floata,b,c;

a=7.2:f

b=6.5;A/*對(duì)變量a,b,c分別賦值為7.2、6.5和&9;*/

c=8.9;一

n=a>b>c;/*表達(dá)式n=a>b>c等價(jià)于n=((a>b)>c)o*/

printf('n=%d,a=%f,b=%f,c=%f\n'\n,a,b,c);

return0;

)

程序運(yùn)行結(jié)果:

n=O,a=7.2OOOOO,b=6.5OOOOO.c=8.9OOOOO

4、邏輯運(yùn)算符與邏輯表達(dá)式

?邏輯運(yùn)算符

&&||!

?邏輯表達(dá)式

用邏輯運(yùn)算符將運(yùn)算對(duì)象連接成的式子

例如:0&&'b'

a&&b||c&&d

a||b-5||c/4

!x+y>=z

?邏輯運(yùn)算符的優(yōu)先級(jí)和結(jié)合性:

>!是單目運(yùn)算符,右結(jié)合,高于算術(shù)運(yùn)算符

>&&和II是雙目運(yùn)算符,左結(jié)合,高于賦值運(yùn)算符,低于關(guān)系運(yùn)算符。

邏輯運(yùn)算符的運(yùn)算規(guī)則

運(yùn)算對(duì)象邏輯運(yùn)算結(jié)夕I

從左到右依次進(jìn)行邏輯計(jì)算aba&&balib!a

非。1ho110

?運(yùn)算對(duì)象為非。表示邏輯真

非。0010

今運(yùn)算對(duì)象為0表示邏輯假0非。011

000Q1

>邏輯運(yùn)算的結(jié)果為0或1

?運(yùn)算按照從左至右的順序進(jìn)行,一旦能夠確定邏輯表達(dá)式的值,就立即結(jié)束運(yùn)算——邏輯

運(yùn)算的短路性質(zhì)

【例1-13)邏輯運(yùn)算。

#include<stdio.h>

intmain()

inta=5,b=0,c=-2,m;

m=a++&&b++&&c++;

printf("a=%d,b=%d,c=%d,m=%d\n,1,a,b,c,m);

m=a++||b++||c++;

printf(',a=%d,b=%d,c=%d,m=%d\nH,a,b,c,m);

m=(a-7)||b-&&c++;

printf("a=%d,b=%d,c=%d,m=%d\n',,a,b,c,m);

return0;

)

程序運(yùn)行結(jié)果:

a=6,b=l,c=-2,m=0

a=7,b=l,c=-2,m=1

a=7,b=0,c=-1,m=1

5、位運(yùn)算符與位表達(dá)式

?位運(yùn)算符:~&A|??

>位運(yùn)算符的運(yùn)算對(duì)象只能是整型數(shù)據(jù)或字符型數(shù)據(jù),不能是實(shí)型數(shù)據(jù)

>運(yùn)算對(duì)象一律按二進(jìn)制補(bǔ)碼參加運(yùn)算,并按位進(jìn)行運(yùn)算

>位運(yùn)算的結(jié)果是一個(gè)整型數(shù)據(jù)

?位邏輯運(yùn)算符運(yùn)算規(guī)則

假設(shè)ai和bi均是一個(gè)二進(jìn)制位(bit)

運(yùn)算對(duì)象邏輯運(yùn)算結(jié)果

alb]帆&bjallbi限?F

000001

010111

100110

111100

【例1-14]邏輯位運(yùn)算(見課件)

?位移位運(yùn)算符運(yùn)算規(guī)則

■a?b將a的值(二進(jìn)制編碼)左移b位,右補(bǔ)0

■a?b將a的值(二進(jìn)制編碼)右移b位,左補(bǔ)?;?

【例1-15]邏輯移位運(yùn)算(見課件)

6、條件運(yùn)算符與條件表達(dá)式

?條件運(yùn)算符:?:

?條件表達(dá)式的一般形式

表達(dá)式1?表達(dá)式2:表達(dá)式3

例如:m<n?x:a+3

a++>=10&&b—>20?a:b

x=3+a>5?100:200

>C語言中唯一的三目運(yùn)算符,要正確區(qū)分用?和:分隔的表達(dá)式

>涉及條件運(yùn)算符的優(yōu)先級(jí)與結(jié)合性

?條件運(yùn)算符優(yōu)先級(jí)高于賦值、逗號(hào)運(yùn)算符,低于其他運(yùn)算符

(實(shí)例見課件)

?條件運(yùn)算符具有右結(jié)合性

?當(dāng)一個(gè)表達(dá)式中出現(xiàn)多個(gè)條件運(yùn)算符時(shí),應(yīng)該將位于最右邊的問號(hào)與離它最近的冒號(hào)配

對(duì),并按這一原則正確區(qū)分各條件運(yùn)算符的運(yùn)算對(duì)象。

(實(shí)例見課件)

【例1-16]條件表達(dá)式

#include<stdio.h>

intmain()

(

charch='a*;

ch=ch>='a,&&ch<=,z'?ch-'a'+'A':ch;

printf('%c\n'\ch);

return0;

)

程序運(yùn)行結(jié)果:

A

7、逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式

?逗號(hào)運(yùn)算符形成逗號(hào)表達(dá)式的一般形式

表達(dá)式1,表達(dá)式2,……,表達(dá)式n

?逗號(hào)表達(dá)式的值

從左向右,依次對(duì)表達(dá)式求值,最后得到表達(dá)式n的值就是逗號(hào)表達(dá)式的值

【例1-17]逗號(hào)表達(dá)式

#include<stdio.h>

intmain()

inta=3,b=5,c=7,x,y;

y=(x=a+b,++b);

printf('x=%d,y=%d\n",x,y);

return0;

)

程序運(yùn)行結(jié)果:

x=8,y=6

8、其它運(yùn)算符及其運(yùn)算

(1)sizeof運(yùn)算符

-為單目運(yùn)算符

-運(yùn)算對(duì)象是變量名或數(shù)據(jù)類型標(biāo)識(shí)符及數(shù)據(jù)常量等

-運(yùn)算結(jié)果為該對(duì)象的長(zhǎng)度

(2)復(fù)合的賦值運(yùn)算符

復(fù)合的賦值運(yùn)算符,又稱為帶有運(yùn)算的賦值運(yùn)算符,也叫賦值縮寫。

例如:i=i+j;可表示為i+=j;這里+=是復(fù)合賦值運(yùn)算符。

+=加賦值-=減賦值

*=乘賦值/=除賦值

%=求余賦值&=按位與賦值

1=按位或賦值人=按位異或賦值

?=左移位賦值>>=右移位賦值

注意:x*=y+8等價(jià)于x=x*(y+8),不等價(jià)于x=x*y+8。

z&=y-x等價(jià)于z=z&(y-x)?而不等價(jià)于z=z&y-x0

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:運(yùn)算符的合理使用

教學(xué)目的及要求:掌握運(yùn)算符的靈活與合理使用,解決編程問題,并運(yùn)用編輯工具VC6.0調(diào)試C程

序,進(jìn)一步熟悉其編輯和調(diào)式的方法。

教學(xué)重點(diǎn):掌握運(yùn)算符的合理使用及其編程方法,學(xué)習(xí)運(yùn)算符的優(yōu)先級(jí)和結(jié)合性,以及運(yùn)算符在運(yùn)

算過程中起參與運(yùn)算的數(shù)據(jù)類型的轉(zhuǎn)換方式。

教學(xué)難點(diǎn):C程序數(shù)據(jù)類型轉(zhuǎn)換理解,及其C程序的查錯(cuò)處理

思政元素:

教學(xué)步驟及內(nèi)容:(實(shí)驗(yàn)與講授-2學(xué)時(shí))

上節(jié)課講解了C的運(yùn)算符極其表達(dá)式,本節(jié)課將運(yùn)用學(xué)過的運(yùn)算符,設(shè)計(jì)編寫程序,解決相

關(guān)問題,并在計(jì)算機(jī)上運(yùn)用VC6.0編輯調(diào)試所設(shè)計(jì)的C程序。

題目:編寫一個(gè)C程序,計(jì)算算式2■x(9+2士^)+201族4+1的結(jié)果。

24

#include<stdio.h>

intmain()

{

doubles;

s=(9+(2.5+3)/4)/2+2010%4+l;

printf('s=%lf\n",s);

return0;

)

程序運(yùn)行結(jié)果:

s=8.187500

在設(shè)計(jì)過程中往往有同學(xué)不注意C算式的書寫形式,和數(shù)學(xué)中的算式混為一談,注意,C的

表達(dá)式與數(shù)學(xué)算式有一定的區(qū)別,在設(shè)計(jì)這道題時(shí),我們要注意兩點(diǎn),就是運(yùn)算符的優(yōu)先級(jí)和結(jié)

合性,以及數(shù)據(jù)的類型轉(zhuǎn)換。

五、運(yùn)算符的優(yōu)先級(jí)和結(jié)合性

運(yùn)用C語言運(yùn)算符進(jìn)行運(yùn)算時(shí),需要掌握運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。

>優(yōu)先級(jí):運(yùn)算符運(yùn)算的先后順序

>結(jié)合性:運(yùn)算符運(yùn)算的方向。

六、數(shù)據(jù)的類型轉(zhuǎn)換

C語言表達(dá)式中可以將不同類型的數(shù)據(jù),按一定的運(yùn)算規(guī)則進(jìn)行計(jì)算,運(yùn)算中這些數(shù)據(jù)將會(huì)

作某種轉(zhuǎn)換,把它們轉(zhuǎn)換成同一類型的數(shù)據(jù),然后再進(jìn)行運(yùn)算。這種轉(zhuǎn)換的方法包含兩種:自動(dòng)

轉(zhuǎn)換和強(qiáng)制轉(zhuǎn)換。

1、自動(dòng)轉(zhuǎn)換

就是系統(tǒng)根據(jù)規(guī)則自動(dòng)將兩個(gè)不同數(shù)據(jù)類型的運(yùn)算對(duì)象轉(zhuǎn)換成同一數(shù)據(jù)類型的過程。

轉(zhuǎn)換原則:自動(dòng)將精度低、表示范圍小的運(yùn)算對(duì)象類型向精度高、表示范圍大的運(yùn)算對(duì)象類

型轉(zhuǎn)換doublefloat

高精度

(示例見課件)t

long

2、強(qiáng)制轉(zhuǎn)換?

強(qiáng)制轉(zhuǎn)換的一般形式unsigned

低精度

(類型名)表達(dá)式inItsl…ion,cndi

例如:(int)('b,+3*x)%3

l/(float)a+6

>(float)22/5與(fl不同

>錯(cuò)誤的類型轉(zhuǎn)換:

(int)b=a+5

b=int(3*a)

注意:強(qiáng)制轉(zhuǎn)換只是中間代換量的提取轉(zhuǎn)換,而不能真正改變某變量的類型.

【例1-18]數(shù)據(jù)的強(qiáng)制類型轉(zhuǎn)換(示例見課件)

XXX學(xué)院授課方案

課名:教師:班級(jí):時(shí)間:

課題:存款的輸入與利息的輸出(1)

教學(xué)目的及要求:掌握C語言輸出函數(shù)的使用方法。

教學(xué)重點(diǎn):掌握C語言格式化格式化輸出函數(shù)printf。

教學(xué)難點(diǎn):C程序中結(jié)合各種類型的數(shù)據(jù)及其豐富的運(yùn)算符進(jìn)行程序設(shè)計(jì),合理使用輸出函數(shù)。

思政元素:

教學(xué)步驟及內(nèi)容:(講授-2學(xué)時(shí))引入新課:

13.1問題情景及其實(shí)現(xiàn)

假設(shè)XXX銀行1年定期存款的利率為3%,,并已知存款期為n年,存款本金為X元,請(qǐng)計(jì)

算n年后可以得到的本利總和是多少。

#include<stdio.h>

#include<math.h>

intmain()

{

doubleIrate=O.O3;

doubleDmoney=5000,Dinterest;

intterm;

printf。存款金額為:");

scanf("%lf\&Dmoney);

prinlfC存款期限為:”);

scanf("%d'\&term);

Dinterest=Dmoney*pow((1+Irate),term)-Dmoney;

printf("存款金額為%.1岬的%(1年存款利息是:%.21元也",Dmoney,term,Dinterest);

return0;

)

程序運(yùn)行結(jié)果如下:

存款金額為:6000Z

存款期限為:4/

存款金額為6000.0的4年存款利息是:753.05元

在上面設(shè)計(jì)的簡(jiǎn)單C程序中用到的數(shù)據(jù):Iraie、Dmoney.term;對(duì)數(shù)據(jù)進(jìn)行的運(yùn)算:-、*、

首先需要考慮在程序開始執(zhí)行時(shí)存款、年限是不確定的值?應(yīng)該怎樣設(shè)計(jì)它們的值?這樣設(shè)

計(jì)有什么好處?這樣的設(shè)計(jì)計(jì)算機(jī)怎么處理?通過對(duì)利息的計(jì)算后,我們需要輸出利息,如果我

們希望輸出結(jié)果保留兩位小數(shù)該怎么設(shè)計(jì)呢?隨著這些問題的提出,我們需要了解在C程序在運(yùn)

行過程中,往往需要由用戶輸入一些數(shù)據(jù),而程序運(yùn)算所得到的結(jié)果又需要輸出給用戶,由此實(shí)

現(xiàn)了人和計(jì)算機(jī)之間的交互。所以在程序設(shè)計(jì)中,輸入輸出語句是一類必不可少的重要語句,在

C語言中,沒有專門的輸入輸出語句,任何的輸入輸出操作都是通過對(duì)標(biāo)準(zhǔn)I/O(輸入/輸出)庫(kù)

函數(shù)的調(diào)用實(shí)現(xiàn),primf函數(shù)就是負(fù)責(zé)數(shù)據(jù)輸出的庫(kù)函數(shù)之一,而我們?cè)谇懊娴娜蝿?wù)中只對(duì)printf

函數(shù)進(jìn)行了初步的介紹。學(xué)習(xí)C語言,不僅要學(xué)習(xí)C的語法規(guī)則,更重要的是學(xué)習(xí)各種庫(kù)函數(shù)的

具體使用方法。

帶著以上這些問題,我們來認(rèn)識(shí)一下C語言基本的輸入和輸出庫(kù)函數(shù)的使用。

新課講授:

-1中聯(lián)楨―俘/___________________

格式字符tX

一、C程序數(shù)據(jù)的輸出w以十塔“一,■出2號(hào)M(正故不—號(hào))

wI—帽勸就神―(不—0—

以十六注?一索>由無移號(hào)一-(和由

1、printf()函數(shù)%■I-+1?期式■出無

XM期t

(1)printf函數(shù)調(diào)用的一般形式為:

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(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)論