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

下載本文檔

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

文檔簡介

XXX學(xué)院授課方案

課名:教師:班級:時間:

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

教學(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)試方法的熟練掌握

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

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

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

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

勝信念;下面先來看看這樣一個問題;

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

#include<stdio.h>

intmain()

(

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

return0;

)

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

張三存款5000元!

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

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

展歷史、語言特點(diǎn)、運(yùn)行環(huán)境與開發(fā)工具,并學(xué)習(xí)一個簡單的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)

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

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

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

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

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

?程序書寫格式自由

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

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

?可移植性好

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

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

C語言作為高級語言,要想得到可以執(zhí)行的C程序,必須對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)境之

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

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

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

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

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

本的介紹。

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

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

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

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

(4)編輯源代碼

(5)編譯連接源程序

(6)執(zhí)行程序

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

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

#include<stdio.h>

intmain()

(

prinlf("welcome!");

return0;

}

XXX學(xué)院授課方案

課名:教師:班級:時間:

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

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

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

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

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

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

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

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

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

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

試步驟

簡單的c程序:

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

#includc<stdio.h>

intmain()

(

printf("welcome!");

return0;

)

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

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

試方法。

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

注意:包含庫和連接庫的配置;

XXX學(xué)院授課方案

課名:教師:班級:時間:

課題:利息的計算(1)

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

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

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

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

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

思政元素:

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

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

假設(shè)XXX銀行1年定期存款的利率為3%,并已知存款期為3年,存款本金為5000元,請計算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ī)操作處理時,要完成以下工作:

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

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

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

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

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

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

1、基本字符集

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

①大寫字母:ABC...XYZ

②小寫字母:abc...xyz

③數(shù)字:0123456789

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

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

2、標(biāo)識符

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

據(jù)類型筆。

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

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

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

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

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

double、printf等。

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

①關(guān)鍵字

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

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

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

表1?1C語音32美健)

,值。bmkdiednrcomlcoiitinixdrfaull(14doubkHtrmum

rxlrrnSoilgotoITlotlootMurnJ?ort血xd

UzeoftfitkUrurttwMrhunkNiumtcntdvoMvohtllrwhik

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

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

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

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

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

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

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

二、常量與變量

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

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

1、常量

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

例如:5000,3,0.03

一分類:符號常量和直接常量

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

定義格式:#define符號常量常量

?一般用大寫字母

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

(2)直接常量:

>整型常量

>實(shí)型常量

>字符型常量

>字符串常量

2、變量

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

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

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

變量定義語句的形式為:

類型說明符變量名表;

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

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

用戶命名。

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

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

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

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

同的概念。

三、基本數(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ù)號表示.如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)為它是無符號整型常量

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

(2)整型變量

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

⑴短整型shortint或short

⑵基本型ini

⑶長整型longint或long

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

分.

整型變量定義的語法:

類型說明符變量名標(biāo)識符1,變量名標(biāo)識符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ù))在寫作時可以有兩種表示方法:

①十進(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ù)形式存儲:

內(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<

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

?r?1c12)>

0JdIM

\HJ1Ke1270

3Lf

Ml3M<

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

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

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

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

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

\b退格\r回車

\f換頁\\反斜線

\,單引號\M雙引號

\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é)。

?字符型變量的分類:

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

符號正數(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)字符串常量

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

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

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

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

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

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

XXX學(xué)院授課方案

課名:教師:班級:時間:

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

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

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

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

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

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

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

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

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

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

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

通過對以上程序的調(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é)院授課方案

課名:教師:班級:時間:

課題:利息的計算(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é)時)引入新課:

前面我們學(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)算的符號,例如加運(yùn)算符(+)、乘運(yùn)算符(*)、取地址運(yùn)算符(&)等。

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

的運(yùn)算,根據(jù)運(yùn)算符需要參與的操作數(shù)的個數(shù)分為:單目運(yùn)算符、雙目運(yùn)算符和三目運(yùn)算符,一

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

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

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

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

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

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á)式時,運(yùn)算的結(jié)果將保持原來的數(shù)據(jù)

類型。因此,5/2的值是2,不是2.5。因為表達(dá)式5/2是整型表達(dá)式。

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

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

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

C語言中,減號(-)又是一個取反運(yùn)算符,在此之外C語言還提供了另外兩個用于算數(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)算符可■在變量名前,也可在變量名后,即可以用于前緩和后綴的形

式,但含義并不相同。

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

?對于后綴的形式,變量的值先在表達(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)含了賦值操作。

?兩個+和-之間不能有空格

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

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

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

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

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

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

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

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

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

(3)賦值運(yùn)算符的優(yōu)先級很低,僅高于逗號運(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

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

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

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

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

在程序中經(jīng)常需要比較兩個量的大小關(guān)系,以決定程序下一步的工作。比較兩個量的運(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==爭德曲I移

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

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

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

>大于泮得岫砥松

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

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

應(yīng)當(dāng)用關(guā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/*對變量a,b,c分別賦值為7.2、6.5和&9;*/

c=8.9;一

n=a>b>c;/*表達(dá)式n=a>b>c等價于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)算對象連接成的式子

例如:0&&'b'

a&&b||c&&d

a||b-5||c/4

!x+y>=z

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

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

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

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

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

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

非。1ho110

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

非。0010

今運(yùn)算對象為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)算對象只能是整型數(shù)據(jù)或字符型數(shù)據(jù),不能是實(shí)型數(shù)據(jù)

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

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

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

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

運(yùn)算對象邏輯運(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)先級與結(jié)合性

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

(實(shí)例見課件)

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

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

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

(實(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、逗號運(yùn)算符與逗號表達(dá)式

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

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

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

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

【例1-17]逗號表達(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)算對象是變量名或數(shù)據(jù)類型標(biāo)識符及數(shù)據(jù)常量等

-運(yùn)算結(jié)果為該對象的長度

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

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

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

+=加賦值-=減賦值

*=乘賦值/=除賦值

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

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

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

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

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

XXX學(xué)院授課方案

課名:教師:班級:時間:

課題:運(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)先級和結(jié)合性,以及運(yùn)算符在運(yùn)

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

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

思政元素:

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

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

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

題目:編寫一個C程序,計算算式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è)計過程中往往有同學(xué)不注意C算式的書寫形式,和數(shù)學(xué)中的算式混為一談,注意,C的

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

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

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

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

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

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

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

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

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

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

1、自動轉(zhuǎn)換

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

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

型轉(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不同

>錯誤的類型轉(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é)院授課方案

課名:教師:班級:時間:

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

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

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

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

思政元素:

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

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

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

算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è)計的簡單C程序中用到的數(shù)據(jù):Iraie、Dmoney.term;對數(shù)據(jù)進(jìn)行的運(yùn)算:-、*、

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

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

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

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

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

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

函數(shù)的調(diào)用實(shí)現(xiàn),primf函數(shù)就是負(fù)責(zé)數(shù)據(jù)輸出的庫函數(shù)之一,而我們在前面的任務(wù)中只對printf

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

具體使用方法。

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

新課講授:

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

格式字符tX

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

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

以十六注?一索>由無移號一-(和由

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

XM期t

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

溫馨提示

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

評論

0/150

提交評論