




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
計(jì)算機(jī)根底教學(xué)系列課程C語(yǔ)言程序設(shè)計(jì)課程性質(zhì):大學(xué)生公共根底課程(必修課)學(xué)時(shí):講課34課時(shí);實(shí)驗(yàn)64(課內(nèi)32/課外32)學(xué)分:2學(xué)分總評(píng)成績(jī)=平時(shí)成績(jī)40%+期末成績(jī)60%平時(shí)成績(jī):成績(jī)1(作業(yè)、考勤10%)+成績(jī)2(單元測(cè)驗(yàn)15%)+成績(jī)3(實(shí)驗(yàn)報(bào)告15%)期末成績(jī):期末理論機(jī)考60%C語(yǔ)言程序設(shè)計(jì)第一章C語(yǔ)言的開(kāi)展、特點(diǎn)與程序結(jié)構(gòu)第二章根本數(shù)據(jù)類型、運(yùn)算符和表達(dá)式第三章根本語(yǔ)句與順序結(jié)構(gòu)第四章選擇結(jié)構(gòu)第五章循環(huán)結(jié)構(gòu)第六章數(shù)組第七章函數(shù)第八章指針第十章結(jié)構(gòu)體第十二章文件C語(yǔ)言程序設(shè)計(jì)推薦參考書(shū):譚浩強(qiáng)主編《C程序設(shè)計(jì)》〔第二版〕北京:清華大學(xué)出版社第一章C語(yǔ)言的開(kāi)展、特點(diǎn)與程序開(kāi)發(fā)根本知識(shí)1.1C語(yǔ)言的開(kāi)展與特點(diǎn)1.2程序設(shè)計(jì)的根本方法1.3算法的概念及其表示1.4C語(yǔ)言的根本結(jié)構(gòu)1.5應(yīng)用程序的開(kāi)發(fā)步驟和運(yùn)行過(guò)程下一章目錄習(xí)題
C語(yǔ)言是一門(mén)優(yōu)秀的程序設(shè)計(jì)語(yǔ)言C語(yǔ)言是在1973年由美國(guó)貝爾實(shí)驗(yàn)室開(kāi)發(fā)的。1983年,ANSI為C語(yǔ)言制定了新的標(biāo)準(zhǔn),稱為ANSIC,并于1989年最終完成。目前使用較多的版本有ANSIC,BorlandC,TurboC,MicrosoftC/C++,VisualC++等。C語(yǔ)言的開(kāi)展WUCCC語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言功能強(qiáng)大,具有豐富的數(shù)據(jù)類型及運(yùn)算符。簡(jiǎn)潔緊湊,使用方便靈活。C語(yǔ)言具有自我擴(kuò)充能力C語(yǔ)言具有匯編語(yǔ)言的功能可移植性好WUCCC語(yǔ)言的特點(diǎn)程序的概念程序是計(jì)算機(jī)解決問(wèn)題所需的一系列指令的集合。著名計(jì)算機(jī)科學(xué)家NikiklausWirth提出了“算法+數(shù)據(jù)結(jié)構(gòu)=程序”的公式程序就是在數(shù)據(jù)的某些特定的表示方式和結(jié)構(gòu)的根底上,對(duì)抽象算法的具體描述。1.2程序設(shè)計(jì)的根本方法程序=數(shù)據(jù)結(jié)構(gòu)+算法+程序設(shè)計(jì)方法+語(yǔ)言工具數(shù)據(jù)結(jié)構(gòu)是數(shù)據(jù)的類型和數(shù)據(jù)的組織形式。算法是為解決一個(gè)問(wèn)題而采用的方法和有限的步驟。程序設(shè)計(jì)方法確定語(yǔ)言和編程環(huán)境WUCC面向過(guò)程的程序設(shè)計(jì)所謂面向過(guò)程的程序設(shè)計(jì),是指利用面向過(guò)程的語(yǔ)言工具(如Pascal、Fortran和C語(yǔ)言等)進(jìn)行程序開(kāi)發(fā)的各項(xiàng)活動(dòng)。基本思想:把一個(gè)需要求解的復(fù)雜問(wèn)題分為若干個(gè)模塊來(lái)處理,每個(gè)模塊處理一個(gè)子問(wèn)題;設(shè)計(jì)時(shí)遵循自頂向下、逐步細(xì)化、模塊化設(shè)計(jì)和結(jié)構(gòu)化編碼的原則。優(yōu)點(diǎn):編程簡(jiǎn)單、結(jié)構(gòu)性強(qiáng)、可讀性好;遵循這種結(jié)構(gòu)的程序只有一個(gè)入口和一個(gè)出口。缺點(diǎn):存在數(shù)據(jù)與程序模塊的別離和程序的可重用性差等問(wèn)題。WUCC面向?qū)ο蟮某绦蛟O(shè)計(jì)ProgramDesigninCLanguage面向?qū)ο蟮某绦蛟O(shè)計(jì)將一些新的理念和結(jié)構(gòu)化程序設(shè)計(jì)中好的思想相融合,提供了一種全新的程序設(shè)計(jì)方法?;舅枷雽⒁粋€(gè)需要解決的問(wèn)題分解為一系列實(shí)體(對(duì)象),然后圍繞這些對(duì)象建立數(shù)據(jù)和函數(shù);函數(shù)的功能決定了該對(duì)象的行為。規(guī)定一個(gè)對(duì)象的函數(shù)可以訪問(wèn)另一對(duì)象的函數(shù),但一個(gè)對(duì)象的數(shù)據(jù)不能應(yīng)用于另一對(duì)象的函數(shù)中。幾個(gè)基本概念:三類機(jī)制:類、對(duì)象、屬性、事件、方法封裝、繼承、多態(tài)1.3算法及其表示算法的特性有窮性一個(gè)算法的操作步驟應(yīng)當(dāng)是有限的;確定性
算法中的每一個(gè)步驟應(yīng)當(dāng)有確定的意義,不能
有二義性;有效性算法中的每一個(gè)步驟應(yīng)當(dāng)正確、可行,并且能
有效地執(zhí)行;有零個(gè)或多個(gè)輸入
執(zhí)行算法時(shí)需要從外界獲取的信息;有一個(gè)或多個(gè)輸出
執(zhí)行算法后應(yīng)當(dāng)?shù)玫秸_的結(jié)果。算法舉例【例1.1】輸入三個(gè)數(shù),然后輸出其中最大的數(shù)。(1)輸入變量x,y,z的值(2)比較x和y,如果x>y,那么x送max;否那么y送max。(3)比較max與z,如果z>max,那么將z送max。(4)輸出max,max即為最大數(shù)。算法對(duì)同一個(gè)問(wèn)題,算法是不唯一的,例如:求和
1+2+3+……+100
(1)=(…(((1+2)+3)+4)+…+100
)(2)=(1+100)×50一個(gè)好的算法應(yīng)該是:正確、易讀、效率高。
算法的表示方法常用的算法描述方法有:自然語(yǔ)言描述、偽代碼、流程圖、N-S圖、PAD圖等。
1.
自然語(yǔ)言就是用人們?nèi)粘J褂玫恼Z(yǔ)言來(lái)描述或表示算法的方法。英語(yǔ)和程序設(shè)計(jì)語(yǔ)言混合使用稱為偽代碼。
Begin
{算法開(kāi)始}inputx,y,zifx>ythenmax=xelsemax=yifz>maxthenmax=zprintmaxend{算法結(jié)束}2.
用偽代碼表示算法用一些圖框和方向線表示算法的圖形表示法。特點(diǎn):直觀形象,易于理解,便于檢查和交流。常用流程圖符號(hào)及含義如下:
起止框處理框判斷框輸入或輸出框流程線連接點(diǎn)3.
用流程圖表示算法流程圖:
【例1.1】對(duì)任意給定的三個(gè)整數(shù)x,y,z,求出其最大值。開(kāi)始讀入x,y,zmaxxmaxzmaxyz>max?輸出max結(jié)束TFx>y?TF讀入x,y,zx>yFTmaxxmaxyTFz>maxmaxz打印max單元的值
例:對(duì)任意給定的三個(gè)整數(shù)x,y,z,求出其最大值。
4.
用N-S流程圖表示算法結(jié)構(gòu)化程序設(shè)計(jì)C語(yǔ)言是結(jié)構(gòu)化程序設(shè)計(jì)語(yǔ)言,有三種根本結(jié)構(gòu)。順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)實(shí)踐證明,任何復(fù)雜的算法都可以用這三種根本結(jié)構(gòu)來(lái)描述。程序設(shè)計(jì)的目標(biāo)在正確的前提下,其重要性排列次序依次為:可讀、可維護(hù)、可移植和高效。順序結(jié)構(gòu)
矩形框—用于表示順序結(jié)構(gòu)。執(zhí)行時(shí)按語(yǔ)句的先后順序執(zhí)行。先執(zhí)行語(yǔ)句A,再執(zhí)行語(yǔ)句B。ABAB順序結(jié)構(gòu)的流程圖順序結(jié)構(gòu)的N-S圖選擇結(jié)構(gòu)〔分支結(jié)構(gòu)〕根據(jù)條件的真或假選擇執(zhí)行不同的操作內(nèi)容。當(dāng)條件成立執(zhí)行語(yǔ)句A,否那么執(zhí)行語(yǔ)句B。條件ABTF條件T
FA
B選擇結(jié)構(gòu)的流程圖選擇結(jié)構(gòu)的N-S圖循環(huán)結(jié)構(gòu)(1)當(dāng)型〔while型循環(huán)〕當(dāng)條件成立,執(zhí)行循環(huán)體,否那么跳出循環(huán)體。
條件
語(yǔ)句塊條件語(yǔ)句塊TFL形框——用于表示循環(huán)結(jié)構(gòu)(2)直到型循環(huán)〔do-while型循環(huán)〕首先執(zhí)行循環(huán)體,假設(shè)條件不成立繼續(xù)執(zhí)行循環(huán)體,直到條件成立為止。
語(yǔ)句塊
條件語(yǔ)句塊條件FT【例1.2】在屏幕上顯示一行文字“WelcometoC!”。#include<stdio.h>void
main()/*定義主函數(shù)*/
{
printf(“WelcometoC!\n”);}
程序運(yùn)行結(jié)果:
WelcometoC!
函數(shù)〔Function〕C程序包含一個(gè)或多個(gè)函數(shù),其中必須有一個(gè)main()圓括號(hào)指示一個(gè)函數(shù){}包含函數(shù)體,}表示main函數(shù)結(jié)束printf(“Welcome”);printf(“to
C!\n”);printf(“Welcome\nto\nC!\n”);程序運(yùn)行結(jié)果:
WelcometoC!程序運(yùn)行結(jié)果:WelcometoC!
注釋/*
文本
*/
或//
不被執(zhí)行以提高程序的可讀性語(yǔ)句〔Statement〕必須以;結(jié)尾格式輸出函數(shù)printf()。調(diào)用標(biāo)準(zhǔn)函數(shù),顯示引號(hào)中的內(nèi)容。#include<stdio.h>voidmain(){inta,b,sum;//聲明局部,定義變量類型a=123;b=456;//執(zhí)行局部,賦值語(yǔ)句sum=a+b;//執(zhí)行局部,賦值語(yǔ)句 printf(“sum=%d\n”,sum);//執(zhí)行局部,輸出語(yǔ)句 }程序運(yùn)行結(jié)果:sum=579 賦初值計(jì)算輸出①②③④定義變量【例1.3】求兩個(gè)整數(shù)的和函數(shù)體包括變量說(shuō)明局部語(yǔ)句執(zhí)行局部//文件包含預(yù)處理命令//將標(biāo)準(zhǔn)輸入輸出頭文件包含到源程序中預(yù)編譯命令void
main()主函數(shù){函數(shù)體開(kāi)始聲明部分執(zhí)行部分}函數(shù)體結(jié)束
#include<stdio.h>
voidmain(){inta,b,c;
//定義變量類型printf(“inputtwonumbers:\n”);//提示
scanf(“%d,%d”,
&a,
&b);
//輸入變量c=max(a,b);
//調(diào)用求最大值的函數(shù)printf(“max=%d\n”,c);
}
intmax(x,y)intx,y;
{intz;if(x>y)z=x;elsez=y;return(z);}【例1.4】求兩個(gè)數(shù)中的較大值程序由兩個(gè)函數(shù)組成:main函數(shù)和max函數(shù)。運(yùn)行程序屏幕顯示提示信息;鍵盤(pán)輸入a、b的值;屏幕顯示c的值。inputtwonumbers:123,456↙max=456一個(gè)C程序由一個(gè)或多個(gè)函數(shù)組成,其中必須有一個(gè)主函數(shù)main()。程序執(zhí)行時(shí)總是從主函數(shù)開(kāi)始,main()可以置于程序的任何位置。程序中需有預(yù)處理命令(如#include<stdio.h>
),預(yù)處理命令通常放在程序的最前面。分號(hào)是C語(yǔ)句結(jié)束的標(biāo)志,每個(gè)語(yǔ)句和數(shù)據(jù)定義后必須有一個(gè)分號(hào)。預(yù)處理命令、函數(shù)頭和花括號(hào)“}”之后不能加分號(hào)。C語(yǔ)言程序根本結(jié)構(gòu)C程序書(shū)寫(xiě)靈活,一行可以寫(xiě)幾個(gè)語(yǔ)句,一個(gè)語(yǔ)句可以寫(xiě)在多個(gè)程序行上。#include<stdio.h>voidmain(){inta,b,sum;
a=123;b=456;sum=a+b;printf(“sum=%d\n”,sum);}C語(yǔ)言本身沒(méi)有輸入輸出語(yǔ)句,輸入輸出的操作是由庫(kù)函數(shù)scanf()和printf()等函數(shù)完成的。
1.4.2C語(yǔ)言程序根本結(jié)構(gòu)
C程序嚴(yán)格區(qū)分大小寫(xiě)。一般變量、語(yǔ)句等用小寫(xiě)字母書(shū)寫(xiě);符號(hào)常量等用大寫(xiě)字母書(shū)寫(xiě)。標(biāo)識(shí)符、保存字之間必須至少加一個(gè)空格以示分隔。函數(shù)C語(yǔ)言的函數(shù)有兩種:標(biāo)準(zhǔn)庫(kù)函數(shù)和用戶定義的函數(shù)。用戶自定義函數(shù),可有可無(wú),數(shù)目不限。如例1.4中的int
max(intx,
inty)C語(yǔ)言提供的庫(kù)函數(shù),
如輸出函數(shù)printf()和輸入函數(shù)scanf()。函數(shù)定義:
函數(shù)頭+函數(shù)體函數(shù)頭:
說(shuō)明函數(shù)的類型、名字、參數(shù)及參數(shù)的類型。
intmax(intx,inty)#include<stdio.h>
voidmain(){inta,b,sum;
a=123;b=456;sum=a+b;printf(“sum=%d\n”,sum);}函數(shù)體函數(shù)頭函數(shù)體:由“{}”括起,包括變量聲明和執(zhí)行局部。函數(shù)定義1.4.3C語(yǔ)言的字符集、關(guān)鍵字和標(biāo)識(shí)符字符集:C語(yǔ)言允許使用字符的集合字符集的組成:26個(gè)小寫(xiě)字母abcdefghi......z26個(gè)大寫(xiě)字母ABCDEFG......Z
10個(gè)數(shù)字
0~9
其他符號(hào)+-*/=,
._:
;?\”’~|&^
!
%#()
[]{}<>空格(SPACE)
制表符(Tab)C語(yǔ)言的關(guān)鍵字關(guān)鍵字:C語(yǔ)言中預(yù)定的具有特定含義的詞,也稱保存字。共有32個(gè)。分四類:類型說(shuō)明:int,long,float,…。語(yǔ)句定義:if…else,while,for…。存儲(chǔ)類:auto,static,…。長(zhǎng)度運(yùn)算符:sizeof標(biāo)識(shí)符標(biāo)識(shí)符:用來(lái)標(biāo)識(shí)變量、符號(hào)常量、數(shù)組、函數(shù)的名字。組成:只能由英文字母、數(shù)字和下劃線組成。第一個(gè)字符不能是數(shù)字,只能是字母或下劃線。VC6.0中有效長(zhǎng)度為1~255個(gè)字符。例如:
x,m1,average,k123,_1,…
5AN,WA-11,alot
,$11,π,β,α,…
×√注意:標(biāo)識(shí)符嚴(yán)格區(qū)分大小寫(xiě)例如:ABC,abc是不同的標(biāo)識(shí)符不能和C語(yǔ)言的關(guān)鍵字、用戶定義的函數(shù)名以及系統(tǒng)庫(kù)函數(shù)同名。C的“.h”頭文件中經(jīng)常使用以下劃線開(kāi)頭的內(nèi)部變量名,因此用戶最好防止使用這類標(biāo)識(shí)符。取名應(yīng)盡可能見(jiàn)名知意。如:alfa,aver,pi,bata等。例:以下各標(biāo)識(shí)符組中,合法的用戶標(biāo)識(shí)符分別為:(1)A)PAdB)scanfC)voidD)4aP#Da10maxtemp(2)A)
b-b
B)
CCP
C)
hiy
D)
_isw
abc
float
<fr>
INT(3)A)
_0123
B)
del_word
C)
list
D)
keep%
ssiped
signed*jerwind√√√分隔符分隔符分隔符主要有逗號(hào)和空格兩種。逗號(hào)用于分隔變量或參數(shù),空格用于分隔單詞(在關(guān)鍵字和標(biāo)識(shí)符之間必須用空格分隔)。例如:int
a,
b,
c;
max(x,y,z)1.5應(yīng)用程序的開(kāi)發(fā)過(guò)程
應(yīng)用程序開(kāi)發(fā)階段:分析解決問(wèn)題的性質(zhì)、特點(diǎn)、目標(biāo)以及數(shù)據(jù)來(lái)源及其特征等。
需求分析確定解決問(wèn)題的方法和步驟,建立數(shù)學(xué)模型和確定相應(yīng)的求解方法。
確定算法確定應(yīng)用程序結(jié)構(gòu),設(shè)計(jì)出每個(gè)模塊的數(shù)據(jù)結(jié)構(gòu)和算法,畫(huà)出流程圖等。
程序設(shè)計(jì)根據(jù)確定的算法,用計(jì)算機(jī)語(yǔ)言(如C語(yǔ)言)編寫(xiě)源程序。
編寫(xiě)程序在一定的開(kāi)發(fā)環(huán)境下調(diào)試和運(yùn)行程序,得出程序運(yùn)行結(jié)果。
調(diào)試程序1.5應(yīng)用程序的開(kāi)發(fā)過(guò)程編輯編譯連接運(yùn)行編輯器file.cfile.cpp編譯器file.obj連接器file.exeLibrariesCPU裝載程序RAM建立、修改、保存源文件生成目標(biāo)文件生成可執(zhí)行文件運(yùn)行可執(zhí)行文件1.5應(yīng)用程序的開(kāi)發(fā)過(guò)程在VisualC++6.0環(huán)境下,開(kāi)發(fā)和運(yùn)行C程序的步驟如下:1.啟動(dòng)VC
“開(kāi)始”→“程序”→“Microsoft
VisualC++6.0”
即可啟動(dòng)VC6.0。2.編輯、建立源文件。3.編譯、連接和運(yùn)行源程序。習(xí)題1.一個(gè)C語(yǔ)言程序是由___組成
a)主程序b)子程序c)函數(shù)d)過(guò)程2.一個(gè)完整的C語(yǔ)言的程序
a)至少包含一個(gè)主函數(shù)
b)至少包含一個(gè)主函數(shù)與一個(gè)子函數(shù)
c)必須由一個(gè)主函數(shù)與一個(gè)以上的子函數(shù)組成
d)
必須由一個(gè)主函數(shù)與一個(gè)子函數(shù)組成√√習(xí)題3.
C語(yǔ)言程序的執(zhí)行總是從___。
a)
main函數(shù)的入口開(kāi)始
b)編譯預(yù)處理命令開(kāi)始
c)源程序的第一個(gè)函數(shù)開(kāi)始
d)源程序的第一行語(yǔ)句開(kāi)始√習(xí)題4.在C語(yǔ)言的源程序中,主函數(shù)的位置__。a)必須在源程序的最后b)任意c)必須在源程序的開(kāi)頭5.一個(gè)函數(shù)一般由兩局部組成,它們分別是__和__。6.函數(shù)體使用_____符號(hào)開(kāi)始,使用_____符號(hào)結(jié)束?!毯瘮?shù)頭函數(shù)體{
}習(xí)題7.C程序的每條語(yǔ)句的結(jié)束標(biāo)志是_____符號(hào)。8.在C程序中,注釋以____符號(hào)開(kāi)始,使用____符號(hào)結(jié)束。9.算法是__________________________。10.表示算法的常用方法有_____、_____、_____等。11.結(jié)構(gòu)化程序的三種根本結(jié)構(gòu)是_____、______、______。;
/**/解決某一問(wèn)題所采取的方法和步驟自然語(yǔ)言流程圖偽代碼順序結(jié)構(gòu)選擇結(jié)構(gòu)循環(huán)結(jié)構(gòu)12.判斷下述說(shuō)法是否正確。如不正確,說(shuō)明理由。a)printf函數(shù)總是從新行的起始位置開(kāi)始打印。b)計(jì)算時(shí)機(jī)把/*和*/之間的注釋文本打印到屏幕上。c)所有的變量在使用前都必須予以聲明。d)C語(yǔ)言認(rèn)為變量number和NuMbEr是相同的。e)聲明語(yǔ)句可放在函數(shù)體中的任何位置。f)打印三行輸出的C語(yǔ)言程序必須用三條printf語(yǔ)句。g)printf函數(shù)的格式控制串中使用轉(zhuǎn)義字符\n會(huì)把光標(biāo)定位到屏幕上下一行的開(kāi)始位置?!獭痢痢痢痢痢獭?.1數(shù)據(jù)與數(shù)據(jù)類型§2.2常量、變量和標(biāo)準(zhǔn)函數(shù)§2.3根本運(yùn)算符及其表達(dá)式第二章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式下一章上一章目錄習(xí)題整型:包括有、無(wú)符號(hào)的根本整型、短整型、長(zhǎng)整型實(shí)型:包括單精度實(shí)型、雙精度實(shí)型float,double字符型:用于表示和存儲(chǔ)ASCII字符。char
2.1數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型自定義是C語(yǔ)言數(shù)據(jù)類型的根本型,其值不可再分解為其他類型。一種特殊的數(shù)據(jù)類型,其值為某個(gè)量的內(nèi)存地址。一種無(wú)返回值函數(shù)的數(shù)據(jù)類型。void用新的類型名替代已有類型名使用。用typedef定義一種由單種或多種數(shù)據(jù)類型構(gòu)造而成的數(shù)據(jù)類型。數(shù)組結(jié)構(gòu)共用體枚舉類型C語(yǔ)言的根本數(shù)據(jù)類型
2.2常量、變量和標(biāo)準(zhǔn)函數(shù)2.2.1
常量
2.2.2變量
2.2.3標(biāo)準(zhǔn)函數(shù)
下一節(jié)第二章目錄習(xí)題
常量常量在程序執(zhí)行期間其值保持不變的量C語(yǔ)言有以下幾種類型的常量:整型常量實(shí)型(浮點(diǎn)型)常量字符常量字符串常量
有三種形式:十進(jìn)制整數(shù):八進(jìn)制整數(shù):由數(shù)字0
開(kāi)頭十六進(jìn)制整數(shù):由前綴0x
或
0X
開(kāi)頭1.整型常量如:
014-0110177777如:0x110XAFBDE
√0X00FFH
如:
11,-13,0,
65535,
…
√1,000
21/3
104
54.10*3
0199××整數(shù)又可分為:長(zhǎng)整型整數(shù):用后綴L/l表示。
012L,65536L,0XCL無(wú)符號(hào)整數(shù):用后綴U/u表示。
017u,
0xfdbU無(wú)符號(hào)長(zhǎng)整數(shù):用后綴UL/ul表示。15uL實(shí)型常量又稱實(shí)數(shù),指帶有小數(shù)局部的數(shù)。C語(yǔ)言中的實(shí)數(shù)是以十進(jìn)制表示的,有兩種表示形式:十進(jìn)制小數(shù)形式:由數(shù)字、數(shù)符和小數(shù)點(diǎn)組成。例:0.123,.123,123.,0.0,-2.5,…指數(shù)形式:
又稱科學(xué)記數(shù)法。用E(或e)表示以10為底的指數(shù)。
如:100000000→1×108→1E+80.0000125→1.25×10-5→1.25E-05
0.91×10-3
→
0.91E-03尾數(shù)局部指數(shù)局部字母E/e前必須有數(shù)字,而E后面的階碼必須為整數(shù)。
2.
實(shí)型常量——浮點(diǎn)數(shù)例:以下不合法的指數(shù)形式:①單獨(dú)的小數(shù)點(diǎn)和單獨(dú)的指數(shù)局部如:.E-5E10②階碼只能是整數(shù),不能帶小數(shù)點(diǎn)。如:1234E1.52.E6.5e〔2*3)E-35*E4③1012不能寫(xiě)成E12,必須寫(xiě)成:1E121.0E123.字符常量字符常量:是用單引號(hào)括起來(lái)的一個(gè)字符
如:‘a(chǎn)’,‘A’,‘9’,‘+’,‘?’,‘’
合法
“a”,‘99999’,‘’
非法在內(nèi)存中,字符常量以ASCII碼存儲(chǔ),一個(gè)字符占一個(gè)字節(jié)。由于字符常量是按整數(shù)存儲(chǔ)的,可以像整數(shù)一樣在程序中參與相關(guān)的運(yùn)算。如:‘a(chǎn)’-32;
//執(zhí)行結(jié)果97-32=65
‘9’-9;
//執(zhí)行結(jié)果57-9=48以“\”開(kāi)頭的字符序列,有特定的含義。如:‘\\’表示輸出一個(gè)反斜杠符‘\”’表示輸出一個(gè)雙引號(hào)\ddd〔ddd表示八進(jìn)制的ASCII碼〕\xhh〔hh表示十六進(jìn)制的ASCII碼〕例:‘\n’(回車(chē)換行)→‘\12’→‘\xa’‘A’→‘\101’→‘\x41’注:‘\0’或‘\000’是代表ASCII碼為0的字符,即空字符(NULL),表示整數(shù)0。轉(zhuǎn)義字符【例2.1】轉(zhuǎn)義字符的應(yīng)用
#include
<stdio.h>
void
main()
{
printf(“a\tb\nc\bd\100\x40\n”);
}
abd@@輸出到顯示屏字符串常量:用一對(duì)雙引號(hào)括起的字符序列。例:
“CHINA”,“a”,“$12.5”,“”,
“w\x53\\\np\103q”
字符串長(zhǎng)度:字符串中所有字符的個(gè)數(shù)系統(tǒng)自動(dòng)在每個(gè)字符串的末尾加上一個(gè)空字符NULL,即’\0’
作為字符串的結(jié)束。’\0’是一個(gè)ASCII碼為0的字符。例:“CHINA”在內(nèi)存中所占的字節(jié)為:4.字符串常量字符常量由單引號(hào)括起來(lái),字符串常量由雙引號(hào)括起來(lái)。
字符串常量和字符常量的主要區(qū)別:字符常量只能是單個(gè)字符,字符串常量可以含有多個(gè)字符。字符常量占一個(gè)字節(jié),字符串常量占的字節(jié)數(shù)等于字符個(gè)數(shù)加1。比較:’A’與”A”的區(qū)別假設(shè)輸出的字符串中含雙引號(hào)(”),那么要使用轉(zhuǎn)義字符(\”)。例:printf(“hesaid\“Iamastudent.\”\n”);輸出:hesaid“Iamastudent.”‘A’A占一個(gè)字節(jié)“A”A占兩個(gè)字節(jié)\05.符號(hào)常量符號(hào)常量:用標(biāo)識(shí)符表示的常量格式:
#define
標(biāo)識(shí)符常量功能:用該標(biāo)識(shí)符代表后面的常量值例:
#define
PI3.1415926
#define
STAR
‘*’預(yù)處理命令#define也稱為宏定義,一個(gè)#define命令只能定義一個(gè)符號(hào)常量,用一行書(shū)寫(xiě),不用分號(hào)結(jié)尾。
#include
<stdio.h>
#define
PI
3.1415926
//用預(yù)處理命令定義符號(hào)常量
voidmain(){floatr,
area,
l
;//定義變量類型為實(shí)型
scanf(“%f”,
&r);//輸入r的值
area=PI*r*r;
l=2*PI*r;
printf(“area=%f\nl=%f\n”,
area,
l
);}【例2.2】求半徑為r的圓面積和圓周長(zhǎng)說(shuō)明:符號(hào)常量名習(xí)慣用大寫(xiě)字母表示該命令通常放在文件頭在程序中,符號(hào)常量不允許重新賦值。例:#define
PI
3.1415926
PI=5.6;
×或scanf(“%f
”,
&PI);×5.符號(hào)常量2.2.2變量變量概述整型變量實(shí)型變量
字符型變量
變量的初始化
int
x=23;23FF022BytesRAM變量概述變量:在程序執(zhí)行期間其值可以改變的量變量在使用之前必須被聲明每一個(gè)變量有名字,類型,長(zhǎng)度和值。對(duì)變量賦值過(guò)程是“覆蓋”過(guò)程,用新值去替換舊值。從內(nèi)存中讀出變量的值,該變量保持不變。90x=90;printf(“%d”,x);定義變量的形式:
類型說(shuō)明符變量名表;例:inta,b;/*定義兩個(gè)整型變量a和b*/charc;/*定義字符型變量c*/floatf1,f2;
//定義單精度實(shí)型變量f1和f2變量概述變量類型〔type〕變量名〔name〕是一個(gè)標(biāo)識(shí)符1.整型變量─用來(lái)存放整型數(shù)據(jù)的變量整型變量的分類表與操作系統(tǒng)、編譯系統(tǒng)、機(jī)器字長(zhǎng)有關(guān)。有符號(hào)的整數(shù)─最高位是符號(hào)位正整數(shù)在內(nèi)存中以二進(jìn)制原碼形式存放。負(fù)整數(shù)在內(nèi)存中以二進(jìn)制補(bǔ)碼的形式存放。有符號(hào)正整數(shù)10
0000000000001010符號(hào)位0000000000001010RAM有符號(hào)負(fù)整數(shù)
-101111111111110110符號(hào)位1111111111110110RAM-10的原碼100000000000101011111111111101011111111111110110按位取反加1后得到-10的補(bǔ)碼無(wú)符號(hào)整數(shù)無(wú)符號(hào)整數(shù)的所有二進(jìn)制位全部用來(lái)存放數(shù)值,不能存放負(fù)數(shù)。
無(wú)符號(hào)整數(shù)65535u11111111111111111111111111111111RAM例:求50的三次方#include<stdio.h>voidmain(){shortintx;x=50*50*50;printf(“%d\n”,x);}程序運(yùn)行結(jié)果為:-6072〔錯(cuò)〕將以上程序改為:#include<stdio.h>voidmain(){
intx
;
x=50*50*50
;
printf(“%d\n”,
x);}運(yùn)行結(jié)果:125000因此,在定義整型變量時(shí),要注意數(shù)據(jù)類型允許的數(shù)值范圍。用來(lái)存放實(shí)型數(shù)據(jù)的變量分單精度型、雙精度型和長(zhǎng)雙精度型三類
2.實(shí)型變量#include<stdio.h>voidmain(){floatf;//f為單精度實(shí)型變量
doubled;//d為雙精度實(shí)型變量
f=33333.33333;
d=33333333333333.333333;
printf(“f=%f\nd=%f\n”,f,d);
}輸出結(jié)果:
f=33333.332031
d=33333333333333.332000【例2.3】實(shí)型變量的使用無(wú)效數(shù)字f;3.字符變量用來(lái)存放字符常量的變量例:
char
c1,
c2,
c3
;
c1=‘A’;
c2=‘\n’;
c3=97;
每個(gè)字符變量分配一個(gè)字節(jié)用于存放一個(gè)字符。(存放的是字符的ASCII碼值)字符數(shù)據(jù)與整型數(shù)據(jù)可相互賦值,直接運(yùn)算。可以把字符變量按整型量輸出,也允許把整型量按字符量輸出。‘A’的ASCII碼(值)為65‘\n’的ASCII碼(值)為100100000100001010c1c2
#include
<stdio.h>
voidmain(){int
a=‘b’;
//給一個(gè)整型變量賦一個(gè)字符值
char
c1=97;
//給一個(gè)字符變量賦一個(gè)整數(shù)值c1=c1-32;//將小寫(xiě)字母轉(zhuǎn)換為大寫(xiě)字母
printf(“%d%d\n”,
a,
c1);
printf(“%c%c\n”,
a,
c1);}輸出結(jié)果:
9865bA【例2.4】字符型變量的使用注意:只能將一個(gè)字符常數(shù)賦給一個(gè)字符變量,不能把一個(gè)字符串常量賦予字符變量。例:charc=“abc”;在C語(yǔ)言中沒(méi)有字符串變量〔但可以用一個(gè)字符數(shù)組來(lái)存放一個(gè)字符串常量〕×4.變量的初始化在說(shuō)明變量的同時(shí)給變量賦初值格式:
類型說(shuō)明符變量=常數(shù);例:
int
a=5;
//定義并初始化
char
c1=‘a(chǎn)’,
c2=‘B’;
doublearea,r=23.e-2
;int
x=10,
y=10,z=10
;
//不能寫(xiě)成intx=y=z=10;inta;a=5;
//賦初值2.2.3標(biāo)準(zhǔn)函數(shù)
C編譯系統(tǒng)提供的庫(kù)函數(shù)包括:輸入輸出函數(shù)、數(shù)學(xué)函數(shù)、字符和字符串函數(shù)等。數(shù)學(xué)函數(shù)x為弧度,doublex,doublesin(x)cos(x)sin(x)
cos(x)exp(x)log(x)log10(x)fabs(x)pow(x,y)sqrt(x)area=√s(s-a)(s-b)(s-c),s=(a+b+c)/2#include<stdio.h>
#include<math.h>
【例2.5】求三角形面積//預(yù)編譯命令,將系統(tǒng)提供的數(shù)學(xué)函數(shù)//作為頭文件包含到用戶源文件中voidmain(){doublea,b,c,s,area;scanf(“%lf,%lf,%lf”,
&a,&b,&c);s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“theareais%6.2f\n”,area);}運(yùn)行本節(jié)介紹算術(shù)運(yùn)算符賦值運(yùn)算符逗號(hào)運(yùn)算符邏輯運(yùn)算符條件運(yùn)算符求字節(jié)運(yùn)算符位邏輯運(yùn)算符位移動(dòng)運(yùn)算符位自反運(yùn)算符強(qiáng)制類型轉(zhuǎn)換運(yùn)算符指針運(yùn)算符下標(biāo)運(yùn)算符分量運(yùn)算符基本運(yùn)算符位運(yùn)算符特殊運(yùn)算符C運(yùn)算符2.3運(yùn)算符和表達(dá)式2.3.1
算術(shù)運(yùn)算符與算術(shù)表達(dá)式2.3.2
不同數(shù)據(jù)類型的轉(zhuǎn)換與運(yùn)算
2.3.3
關(guān)系運(yùn)算符與關(guān)系表達(dá)式2.3.4
邏輯運(yùn)算符與邏輯表達(dá)式2.3.5
條件運(yùn)算符與條件表達(dá)式2.3.6
賦值運(yùn)算符與賦值表達(dá)式
2.3.7
逗號(hào)運(yùn)算符與逗號(hào)表達(dá)式2.3根本運(yùn)算符及其表達(dá)式1.根本算術(shù)運(yùn)算符算術(shù)運(yùn)算符用于各類數(shù)值運(yùn)算。包括根本算術(shù)運(yùn)算符、自增運(yùn)算符、自減運(yùn)算符。下表為根本算術(shù)運(yùn)算符。
1在C語(yǔ)言中,規(guī)定了運(yùn)算符的優(yōu)先級(jí)和結(jié)合性。優(yōu)先級(jí):
C語(yǔ)言中,運(yùn)算符的優(yōu)先級(jí)共分為15級(jí)。1級(jí)最高,15級(jí)最低。表達(dá)式求值時(shí),先做優(yōu)先級(jí)高的操作。如:
d=a+b*c;當(dāng)運(yùn)算符的優(yōu)先級(jí)別相同時(shí),運(yùn)算次序由結(jié)合性決定。結(jié)合性:左結(jié)合性(先左后右)例:
d=3*5/4;
右結(jié)合性(先右后左)例:
d=a=3;/運(yùn)算符①整數(shù)相除截去余數(shù),此運(yùn)算為整除。5/2=2〔≠2.5〕1/3+1/3+1/3=0②對(duì)于浮點(diǎn)數(shù)那么為通常意義的除法5.0/2.0=2.51./3+1./3+1./3=1%模運(yùn)算符用于計(jì)算兩個(gè)數(shù)相除后得到的余數(shù)。如:
a%b
求a除以b以后得到的余數(shù)。運(yùn)算對(duì)象只能是整型量,其結(jié)果也是整型量。
如:
5%2=13%3=03%5=3
‘A’%2=13.0+10.0%5
所得結(jié)果的符號(hào)與運(yùn)算符左側(cè)操作數(shù)的符號(hào)相同×-5%2=-15%-2=12.自增、自減運(yùn)算符例:x=10;y=++x;此時(shí),y=11假設(shè):x=10;y=x++;那么y=10在這兩種情況下,x都被置為11。K=3;j=5;i=3;m=(++k)*j;n=(i++)*j;例:m=k=204n=i=154【例2.7】自增、自減運(yùn)算符的使用。#include<stdio.h>voidmain(){inti=6,a,b;printf(“%d\n”,
++i
);printf(“%d\n”,
i++
);a=--i;printf(“%d\n”,a);b=i--;printf(“%d\n”,b);printf(“%d\n”,
-i++);printf(“i=%d\n”,i);}i=?7777-67注意:自增、自減運(yùn)算只能用于變量,不能用于常量和表達(dá)式。例:
i++
為合法的運(yùn)算
++6,++(a+b)
為非法的運(yùn)算自增、自減運(yùn)算符是兩個(gè)+或兩個(gè)-的一個(gè)整體,中間不能有空格。如果有多于兩個(gè)+或兩個(gè)-連寫(xiě)的情況,那么編譯首先識(shí)別前兩個(gè)+或-為增量或減量運(yùn)算符。表達(dá)式x+++y等價(jià)于(x++)+y自增、自減運(yùn)算符的運(yùn)算順序是右結(jié)合,因此對(duì)-i++應(yīng)理解為:-(i++),而(-i)++是非法的。
例:
i=3;
printf(“%d”,-i++);
輸出:-3【例2.8】自增、自減運(yùn)算符的使用#include
<stdio.h>
voidmain(){inti,j,
k
;
i=1;
j=1;
k=i+++j;
printf(“i=%d,j=%d,k=%d\n”,i,j,k);}程序運(yùn)行結(jié)果:i=2,j=1,k=2k=(i++)+j;由算術(shù)運(yùn)算符和括號(hào)將運(yùn)算對(duì)象(如常量、變量、函數(shù)等)連接起來(lái)的一個(gè)有值的式子。例:‘A’*2-sqrt(4.)/-d(d=2)表達(dá)式求值的優(yōu)先次序:〔〕函數(shù)+、-*、/、%+、-高低3.算術(shù)表達(dá)式①“/”號(hào),如:→(a+b)/(c+d)②“*”不能省略,如:2(a+b)
→2*(a+b)
③括號(hào)只能使用圓括號(hào),且成對(duì)出現(xiàn),不能使用[]和{}。如:
a[x+b(y+c)]→
a*(x+b*(y+c))
書(shū)寫(xiě)問(wèn)題:⑴LN(-X)→例:將以下數(shù)學(xué)式子寫(xiě)成C算術(shù)表達(dá)式log(sqrt(a+x*x
)-x
)⑵
│a│e-st→abs(a)*exp(-s*t)⑶
→sqrt(fabs(sin(x*3.14/180)))⑷
xy→pow(x,
y)A>3*x^n/(2*x-1)B>3*x**n/(2*x-1)C>3*pow(x,n)*(1/(2*x-1))D>3*pow(n,x)/(2*x-1)例:與數(shù)學(xué)式子3乘以x的n次方除以(2x-1)對(duì)應(yīng)的C語(yǔ)言表達(dá)式是____?!?.3.2不同數(shù)據(jù)類型間的轉(zhuǎn)換與運(yùn)算在C程序中,當(dāng)不同類型的量進(jìn)行運(yùn)算時(shí),要轉(zhuǎn)換成同一種類型然后再進(jìn)行運(yùn)算。例:
10+‘a(chǎn)’+1.5-8765.1234*‘b’轉(zhuǎn)換方式:
自動(dòng)轉(zhuǎn)換:數(shù)據(jù)類型自動(dòng)由低級(jí)向高級(jí)轉(zhuǎn)換。強(qiáng)制轉(zhuǎn)換:將表達(dá)式的運(yùn)算結(jié)果強(qiáng)制轉(zhuǎn)換成指定的數(shù)據(jù)類型。自動(dòng)類型轉(zhuǎn)換這種類型轉(zhuǎn)換由編譯系統(tǒng)自動(dòng)完成轉(zhuǎn)換規(guī)那么:floatdoublelongunsignedintcharshort低高說(shuō)明:1.橫向的箭頭表示必定的轉(zhuǎn)換。2.縱向的箭頭表示當(dāng)運(yùn)算對(duì)象類型不同時(shí)轉(zhuǎn)換的方向。例:floatf=3.5;intn=6;longk=21;doubless=f*n+k/2;強(qiáng)制類型轉(zhuǎn)換格式: 〔數(shù)據(jù)類型說(shuō)明符〕(表達(dá)式〕注意:強(qiáng)制轉(zhuǎn)換屬單目運(yùn)算,運(yùn)算優(yōu)先級(jí)為2。強(qiáng)制轉(zhuǎn)換得到的是中間結(jié)果類型,原變量類型不變。數(shù)據(jù)類型說(shuō)明符和表達(dá)式都必須加括號(hào)(單個(gè)變量除外)例:intx,y;floatz;(float)(x+y);(int)z+x;(float)(5%3);(將5%3的值轉(zhuǎn)換為float型)#include<stdio.h>voidmain(){int
x=8;
float
f=6.85;
printf(“(float)x=%f,x=%d\n”,(float)x,x
);
printf(“(int)f=%d,f=%f\n”,(int)f
,f
);}【例2.12】強(qiáng)制類型轉(zhuǎn)換的應(yīng)用(float)x=8.000000,x=8(int)f=6,f=6.850000X,f的類型并未改變2,%4,f
);2.3.3關(guān)系運(yùn)算〔比較運(yùn)算〕即比較兩個(gè)量的大小,比較的結(jié)果為“真”或“假”。例:a>3如果a=8,那么結(jié)果為“真”;如果a=1,那么結(jié)果為“假”。1.關(guān)系運(yùn)算符2.關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個(gè)表達(dá)式連接起來(lái)的式子。格式:
<表達(dá)式1><關(guān)系運(yùn)算符><表達(dá)式2>
其中:表達(dá)式1和表達(dá)式2可以是任意表達(dá)式。例:
m+n<=20,測(cè)試此關(guān)系是否成立,成立為真,不成立為假。成立——關(guān)系表達(dá)式的值為1;不成立——關(guān)系表達(dá)式的值為0。例:
5>(4<5)
‘a(chǎn)’>‘b’+3
(a=4)>=(b=6)5>2>7>8000值為:
1例2.13讀程#include<stdio.h>voidmain(){int
a,b,c;
a=b=c=10;
a=b==c;
printf
(“%d,%d,%d\n”,
a
,b,c);
a==(b=c++*2
);
printf
(
“%d,%d,%d\n”,
a
,b,c);
a=b>c>=100
;
printf
(
“%d,%d,%d\n”,
a,b,c);
}輸出結(jié)果:1,10,101,20,110,20,11關(guān)系運(yùn)算的缺乏關(guān)系表達(dá)式只能表達(dá)簡(jiǎn)單的關(guān)系,如:sum>=1500y!=z即只能對(duì)一個(gè)條件進(jìn)行測(cè)試。而以下關(guān)系:0<x<5那么不能用關(guān)系表達(dá)式表示。x>0&&x<5
邏輯運(yùn)算符與邏輯表達(dá)式1.邏輯運(yùn)算符
C邏輯運(yùn)算符邏輯運(yùn)算真值表特點(diǎn):
全真為真,
其余為假。
特點(diǎn):全假為假,
其余為真。邏輯非!邏輯與&&邏輯或‖2.邏輯表達(dá)式用邏輯運(yùn)算符將表達(dá)式連接起來(lái)的式子。形式:[<表達(dá)式1>]<邏輯運(yùn)算符><表達(dá)式2>表達(dá)式1和表達(dá)式2可以是任何表達(dá)式如:
5>3&&2||4-!’a’邏輯表達(dá)式的值整數(shù)1:true
0:false判斷時(shí),0代表“假”,非0即表示“真”。將下面的條件用C語(yǔ)言的邏輯表達(dá)式表示例1:1≤x≤10且x≠7
x>=1&&x<=10&&x!=7例2:y能被4整除,但不能被100整除或y能被400整除。
y%4==0&&y%100!=0||y%400==0運(yùn)算順序:()→!→算術(shù)運(yùn)算→關(guān)系運(yùn)算→&&→||→賦值運(yùn)算例:假設(shè)a=2,b=‘a(chǎn)’,c=5,f=3.0c>3&&8<4-!0f/3&&a-b!(b-‘a(chǎn)’)(a=7)>6&&(b=-1)>60110邏輯與和邏輯或運(yùn)算符具有短路能力邏輯與:
(表達(dá)式1)
&&
(表達(dá)式2)
&&
…
只有表達(dá)式1的值為“真”時(shí)才求表達(dá)式2的值
如:x=y=-1;
++x&&++y;
/*x=?y=?*/0-1短路表達(dá)式邏輯或:
(表達(dá)式1)
||
(表達(dá)式2)
||…只有表達(dá)式1為假時(shí)才判斷表達(dá)式2的值
例:
voidmain(){int
num=3;5>4||(num=0);
printf(“num=%d\n”,num);}
輸出:
num=3條件運(yùn)算符:
?:
三目運(yùn)算符、右結(jié)合、13級(jí)。條件表達(dá)式:
<表達(dá)式1>?<表達(dá)式2>:<表達(dá)式3>執(zhí)行過(guò)程:2.3.5條件運(yùn)算符與條件表達(dá)式
例:
max=(a>b)?a∶b;
max=a>b?a∶b
;說(shuō)明:在程序中常把條件表達(dá)式的值賦給某個(gè)變量,
如:
①將ch中字母轉(zhuǎn)換為小寫(xiě)字母
char
ch=getchar();
ch=(ch>=‘A’&&ch<=‘Z’)?(ch+32):ch
;
②將x的絕對(duì)值賦給y
y=x>=0
?
x
:-x
;在條件表達(dá)式中,各表達(dá)式的類型可以不同,此時(shí),條件表達(dá)式值的類型為表達(dá)式2和表達(dá)式3中較高的類型。
如:
x>y
?1∶1.5
條件表達(dá)式的值為浮點(diǎn)型說(shuō)明:說(shuō)明:條件運(yùn)算符可以嵌套,這種嵌套是右結(jié)合的。
例:
inta=15,b=20,c=25,d=30,e;
e=a>b?c:c>d?b:d;()e=30例2.15讀程,寫(xiě)出運(yùn)行結(jié)果。#include<stdio.h>voidmain(){int
a=1,
b=1,
c=1;
a=a+b
;
b=b+c
;
c=c+a
;
printf(“(1)%d\n”,a>b?a
:b
);
printf(“(2)%d\n”,
a>c?a--:c++);
(a>=b>=c)?printf(“a\n”):printf(“b\n”);
printf(“(4)%d,
%d,
%d\n”,a,b,c
);}運(yùn)行結(jié)果:(1)2(2)3b(4)2,2,4例2.16:任意輸入三個(gè)數(shù),輸出最大值。#include<stdio.h>voidmain(){int
a,b,c,max
;
scanf(“%d%d%d”,
&a,
&b,
&c);
max=a>=b?
a>=c?a
:c:
b>=c?b:c;
printf(“最大數(shù)為:%d\n”,max);}程序運(yùn)行如下:
25-748↙最大數(shù)為:48
(())賦值運(yùn)算符分兩種:簡(jiǎn)單賦值運(yùn)算符:
=復(fù)合賦值運(yùn)算符:如+=、-=、*=、/=、%=
等優(yōu)先級(jí)14,右結(jié)合性。賦值表達(dá)式:由賦值運(yùn)算符連接起來(lái)式子作用:將表達(dá)式的值賦給變量賦值運(yùn)算符和賦值表達(dá)式簡(jiǎn)單賦值運(yùn)算符為“=”;由“=”連接的式子為(簡(jiǎn)單)賦值表達(dá)式。格式:<變量>=<表達(dá)式>作用:把右邊表達(dá)式的值,賦給左邊的變量。例:k=i+++--j(i=2,j=3,k的值為)x=(a=5)+(b=8)(x的值為〕d=e=2.1執(zhí)行順序是:先計(jì)算,再賦值。413
1.簡(jiǎn)單賦值運(yùn)算符和賦值表達(dá)式例:指出以下賦值表達(dá)式的錯(cuò)誤
⑴-s=x+y⑵5=n⑶a=a*3=2
⑷w=3.64E2.1/5.87⑸cos(β)=a/sqrt(a*a+b*b)
⑹y=int(i)⑺k=12.3%4⑻a=a+7;賦值運(yùn)算的類型轉(zhuǎn)換,規(guī)那么為:實(shí)型數(shù)據(jù)賦給整型變量時(shí),只取整數(shù)局部。如:inti=1.5*2/2;
(x的值為0.000000)
整型數(shù)據(jù)賦給實(shí)型變量時(shí),以浮點(diǎn)形式取值。(i值為1
)如:
floatx=1/4+1/4+1/4;字符型數(shù)據(jù)賦給整型變量時(shí),
整型變量的高位補(bǔ)的數(shù)與char的最高位相同,低八位為字符的ASCII碼值。整型數(shù)據(jù)賦給字符型時(shí),只把低8位賦給字符變量。如:
K=‘A’
(k值為65)k:
0000000001000001例2-13:void
main(){short
intx=300;
chary;y=x;
printf(“y=%dy=%c\n”,y,y);}
輸出結(jié)果:
y=44y=,x:
0000000100101100y2.復(fù)合賦值符及表達(dá)式復(fù)合賦值運(yùn)算符是在簡(jiǎn)單賦值運(yùn)算符前加雙目運(yùn)算符構(gòu)成。
共10種:+=,-=
*=、/=、%=
等。例:
c=c+3
c+=3
x*=y+7
x=x*(y+7)
設(shè)x,y,z的初始值分別為:10,20,30
x+=y+=z*z
x=x+(y=y+z*z)結(jié)果為:
930
設(shè)
t
的值為5t+=t-=t*t
t=t+(t=t-t*t)
結(jié)果為:
-40
例2-14void
main(){inta,b,c;
a=b=c=5;printf(”a=%d,b=%d,c=%d\n”,a,b,c);
a=(b=4)+(c=6);printf(”a=%d,b=%d,c=%d\n”,a,b,c);a+=b+c;printf(”a=%d,b=%d,c=%d\n”,a,b,c);
a+=a-=a*=a;printf(”a=%d\n”,a);}運(yùn)行結(jié)果:a=5,b=5,c=5a=10,b=4,c=6a=20,b=4,c=6a=0
逗號(hào)運(yùn)算符運(yùn)算符:
“
,
”優(yōu)先級(jí)15級(jí)最低,左結(jié)合用逗號(hào)運(yùn)算符將各表達(dá)式連接起來(lái)的式子為逗號(hào)表達(dá)式。格式:如:a=3*5,
a*10,
a+8
求解過(guò)程:先求表達(dá)式1的值,再求表達(dá)式2的值,最后求表達(dá)式n的值,表達(dá)式n的值作為整個(gè)逗號(hào)表達(dá)式的值。逗號(hào)運(yùn)算符和逗號(hào)表達(dá)式<表達(dá)式1>
,
<表達(dá)式2>
,…,<表達(dá)式n>
例:逗號(hào)表達(dá)式的應(yīng)用
#include<stdio.h>
voidmain(){int
a=2,b=4,c,y;y=(c=a*b,b+c);
printf(“y=%d\n”,y);}輸出結(jié)果:y=12例:1)
(a=3*5,a*4),
a+52)a=5,
a*=a
,
a+53)
int
a,
b;
a=2,
b=5,
a++,b++,
a+b;4)
intx=10,y=3,z;
printf(“%d\n”,z=(x%y,x/y));203093說(shuō)明:
(1)用一個(gè)逗號(hào)表達(dá)式語(yǔ)句,可代替多個(gè)賦值語(yǔ)句,如a=0;b=1;c=2;可寫(xiě)成:a=0,
b=1,
c=2;
(2)在變量說(shuō)明和函數(shù)參數(shù)表中逗號(hào)只是起分隔符作用
printf(“%d,%d,%d”,a,b,c);printf(“%d,%d,%d”,(a,
b,
c),b,c);例:交換變量a,b的值。
a=1.0,
b=2.0
1.02.02.01.02.01.0
void
main(){floata,b,c;a=1.0;b=2.0;printf(“a=%fb=%f”,a,b);
c=a;a=b;
b=c;printf(“a=%fb=%f”,a,b);
}abcaabbyx①②
③
2.01.01.01.02.0習(xí)題1.下面四個(gè)選項(xiàng)中,均是合法整型常量的選項(xiàng)是()。A)160B)-0xcdfC)-01
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 批發(fā)業(yè)務(wù)中的版權(quán)合作與版權(quán)輸出考核試卷
- 其他調(diào)味品發(fā)酵制品制造考核試卷
- 智能照明在博物館展品照明中的應(yīng)用考核試卷
- 企業(yè)知識(shí)管理與知識(shí)分享考核試卷
- 年金保險(xiǎn)投資渠道選擇考核試卷
- 有機(jī)肥料在育苗中的應(yīng)用考核試卷
- 冰球場(chǎng)冰面修整與保養(yǎng)考核試卷
- 智能無(wú)人機(jī)飛行控制系統(tǒng)考核試卷
- 小學(xué)生簡(jiǎn)單律動(dòng)課件圖片
- 廣州鋪位租賃合同范本
- ABB工業(yè)機(jī)器人編程-第五章
- 風(fēng)力發(fā)電機(jī)組安裝與調(diào)試第二版 課件全套 情境1-5 裝配基礎(chǔ)知識(shí) -風(fēng)力發(fā)電機(jī)組的吊裝
- Office辦公軟件應(yīng)用(Office2010)中職全套教學(xué)課件
- 幼兒園餐前播報(bào)
- “雙減”政策下的小學(xué)數(shù)學(xué)創(chuàng)新型作業(yè)設(shè)計(jì)
- 正確對(duì)待青春期交友-課件
- 部編版語(yǔ)文四年級(jí)下冊(cè) 教材解讀
- 全北京市29處建筑垃圾消納場(chǎng)所一覽表
- 佳龍食品人力資源招聘方案0720
- GB/T 19879-2023建筑結(jié)構(gòu)用鋼板
- 企業(yè)內(nèi)部控制調(diào)查表
評(píng)論
0/150
提交評(píng)論