版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1
上機(jī)實驗中出現(xiàn)的問題一.編寫時候注意符號在英文格式下面輸入二.語句結(jié)束后“;”容易遺漏,但是也不能亂加,如while,if后面不能加”;”三.對于函數(shù)來說,基本格式:函數(shù)頭+一對{}四.scanf和printf函數(shù)1上機(jī)實驗中出現(xiàn)的問題一.編寫時候注意符號在英文2
第2章
C程序的基本構(gòu)成2第2章32.1C語言源文件
C語言是結(jié)構(gòu)化的程序設(shè)計語言,一個C源程序可以由一個或多個文件組成,C源程序文件的擴(kuò)展名一般為.c
或.cpp,下面通過實例學(xué)習(xí)多文件系統(tǒng)中的函數(shù)調(diào)用。
說明:文件-是指存放在存儲器上以文件名進(jìn)行管理的一組信息.
函數(shù)-指具有獨立功能、按一定格式構(gòu)成的代碼段。
一個大型,典型的C語言源程序大致如下所示:32.1C語言源文件說明:一個大型,典型的C4C語言源程序
源程序文件1
源程序文件n
源程序文件2…..
預(yù)處理命令
全局變量
聲明
函數(shù)1…..
函數(shù)n
函數(shù)首部
函數(shù)體
局部變量
聲明
執(zhí)行語句4C語言源程序源程序文件1源程序文件n源程序文件5
文件包含的概念:一個文件可以將另一個源文件的全部內(nèi)容包含進(jìn)來,這叫文件包含處理。
當(dāng)然文件包含予處理也可在特定的盤,特定的目錄(文件夾)中尋找包含文件.
如:#include“c:\myfolder\myfile.c”
文件包含的一般格式:
#include<文件名>
或者#include“文件名”
5文件包含的概念:當(dāng)然文件包含予處理也可在特定的6#include“file2.C”file1.cA
在編譯時,將file2.c全部內(nèi)容復(fù)制到#include“file2.c“的位置上,將file1.c作為一個源文件單位進(jìn)行編譯。file1.c
BA+Bfile2.c包含6#include“file2.C”file1.cA7例2.1
在VisualC++環(huán)境下新建兩個文件,其文件名分別
為2_1_1.c、2_1_2.c,其中2_1_1.c文件定義一個做乘法的函數(shù)f(),定義另一個主調(diào)函數(shù)main().
在主調(diào)函數(shù)中分別調(diào)用函數(shù)f()以及存放在2_1_2.c中的函數(shù)disp(),在main函數(shù)中輸出f()的返回值。7例2.1在VisualC++環(huán)境下新建兩個文件,其82_1_2.c文件disp()函數(shù)分析:
在文件2_1_1.c中由兩個函數(shù)構(gòu)成,文件2_1_2.c由一個函數(shù)構(gòu)成.
程序的執(zhí)行從main()函數(shù)開始,main函數(shù)調(diào)用f()函數(shù),然后再調(diào)用disp()函數(shù)。2_1_1.c文件f()函數(shù)main()函數(shù)#include“2_1_2.c調(diào)用調(diào)用82_1_2.c文件disp()函數(shù)分析:2_1_1.c文9910總結(jié):
1.C程序是由函數(shù)組成,必須要包含一個主函數(shù)main().
函數(shù)之間可以相互調(diào)用.
因此,函數(shù)是C程序的基本單位。
(1).C用各種各樣的函數(shù)來完成某些特定功能。
(2).
C函數(shù)庫十分豐富,標(biāo)準(zhǔn)C提供一百多個函數(shù).
被調(diào)函數(shù)可以是系統(tǒng)提供的庫函數(shù),如:printf(),
scanf();也可以是根據(jù)需要自己編寫的函數(shù),如:disp().10總結(jié):(1).C用各種各樣的函數(shù)來完成某些112.一個C程序總是從main()函數(shù)開始執(zhí)行,不管這
個main()在整個程序中處于什么位置。
main()函數(shù)可放在整個程序的最上頭,或最后,或
一些函數(shù)的中間.3.C程序書寫格式自由:一行內(nèi)可以寫幾條語句.
一條語句可寫在多行上,行尾使用續(xù)行符:“\”.
*書寫程序時,一律使用英文標(biāo)點符號.
113.C程序書寫格式自由:一行內(nèi)可以寫幾條語句.12*C語言程序中區(qū)分大小寫。
*在程序中int、return、include叫保留字,在C語言
中有特定的含義,一般不作它用。*而disp、f、a、b等為用戶自定義標(biāo)識符,通常為
了定義函數(shù)、變量所取的名字,取名要有一定的規(guī)
則。12134.每條語句及變量定義的最后要有一個分號(;),
分號(;)是語句的必要組成部分。如:intx,y=7;c=a+b;
注
:變量定義必須放在函數(shù)的開頭部分,執(zhí)行語句之前,
不能插入在語句當(dāng)中.C++可放程序任何位置.5.C語言本身并沒有輸入,輸出語句.輸入,輸出的操
作是由庫函數(shù),像printf(),scanf()函數(shù)來完成。
C語言對輸入、輸出實行“函數(shù)化”管理。134.每條語句及變量定義的最后要有一個分號(;142.2C函數(shù)函數(shù)是完成特定任務(wù)的獨立模塊,函數(shù)的使用最主要涉及到函數(shù)的定義與調(diào)用。
C程序是由一個或多個文件構(gòu)成,而文件可由一個或多個函數(shù)組成.
如在前述的文件2_1_1.c中,由兩個函數(shù)main()、F()構(gòu)成.
文件2_1_2.c由一個函數(shù)disp()構(gòu)成。142.2C函數(shù)C程序是由一個或多個文15一.函數(shù)的調(diào)用形式為:
函數(shù)名(
[參數(shù)]);
注:函數(shù)的原型:
函數(shù)返回值類型函數(shù)名(形式參數(shù)表);參數(shù):
執(zhí)行一個函數(shù)所必須提供的數(shù)據(jù)叫參數(shù).15一.函數(shù)的調(diào)用形式為:注:函數(shù)的原型:參16返回值類型函數(shù)名(形式參數(shù)聲明){
數(shù)據(jù)聲明部分語句部分
}二.
C函數(shù)定義的結(jié)構(gòu)示意圖16返回值類型函數(shù)名(形式參數(shù)聲明)二.C函數(shù)定義17
intadd(intx,inty)
{
intz;/*變量定義,給變量分配內(nèi)存空間*/z=x+y;/*執(zhí)行語句*/returnz;
}
1718注:在C語言中,變量在使用前,一定要先定義:
指定變量的名字及類型,在編譯時給變量分配存儲空間。
例如:
intz;
指定變量的名字為z,及類型為int.(在編譯時給變量分配存儲空間)。18注:指定變量的名字為z,及類型為int.(在編譯時給19變量的定義
變量定義的一般形式:
類型名變量名表;注:
變量名按C語言的命名規(guī)則命名.
變量名一般用小寫字母,見名知義.例如:intx3,n;定義整型變量floaty2;定義單精度浮點型變量doublearea,length;
定義雙精度浮點型變量
多個變量用逗號(,)分開,最后加一分號(;).19變量的定義變量定義的一般形式:注:例如:多個20
每一個變量有二個特性:
有一個名字和相應(yīng)的類型,并在編譯時分配相應(yīng)的內(nèi)存單元。
該存儲單元的大小由變量的數(shù)據(jù)類型決定.
1.5x3變量名變量值存儲單元20每一個變量有二個特性:
1.5x3變量名變量值21C語言中的變量和代數(shù)中的變量含義不同.
數(shù)學(xué)中的變量代表未知數(shù).
如在C語言中的式子:x=x+1在代數(shù)中沒有意義.但在C語言中,式子x=x+1表示把變量x中的值加1,然后再保存到x中.
這里的”=“是賦值運算符.
構(gòu)成了一賦值表達(dá)式.x=x+121C語言中的變量和代數(shù)中的變量含義不同.但在C語222.3C語句
C文件由函數(shù)構(gòu)成,函數(shù)由語句構(gòu)成,語句的結(jié)束符用“;”表示.
在例2.1中的文件2_1_1.c中的main函數(shù),由5條語句構(gòu)成,每條語句用“;”表示語句的結(jié)束。
intx=3,y=4,z;---變量定義語句.表示定義了x、y、z三個變量,并給x、y分別賦予一個最初的值3與4.intx=3,y=4,z;disp();z=f(x,y);printf("%d*%d=%d\n",x,y,z);disp();disp();---函數(shù)調(diào)用語句.表示調(diào)用函數(shù)disp().輸出:******************222.3C語句intx=3,y=4,z;--23
intx=3,y=4,z;
disp();z=f(x,y);printf("%d*%d=%d\n",x,y,z);disp();z=f(x,y);
表示調(diào)用函數(shù)f(),在調(diào)用函數(shù)f()時把實參x、y的值分別傳給形參a、b.
返回值最后賦給變量z.
printf(“%d*%d=%d\n”,x,y,z);表示調(diào)用系統(tǒng)函數(shù)printf輸出,其輸出形式為:3*4=12intf(inta,intb){intc;c=a*b;
returnc;}在被調(diào)函數(shù)f()中把a(bǔ)、b的乘積賦給變量c,然后函數(shù)f()把返回值c賦給main函數(shù)中的z。23intx=3,y=4,z;z=f(x,y);242.4保留字與標(biāo)識符語句由保留字、標(biāo)識符、運算符和表達(dá)式構(gòu)成。2.4.1保留字保留字是指C語言中有特殊含義的名字,只能用于C語言中特定的場合。
例如:
int:
用于定義整型類型變量
float:
用于定義實型變量
double:
用于定義雙精度變量
char:
用于定義字符變量或字符串變量
242.4保留字與標(biāo)識符例如:25注意:保留字只能用于規(guī)定的場合,不能用作給變量取名或用戶自定義標(biāo)識符。if:
用于判斷for:
用于循環(huán)while:
用于循環(huán)在C語言中其它的保留字見附錄C,其含義在以后的章節(jié)中陸續(xù)學(xué)到。25if:用于判斷262.4.2標(biāo)識符
標(biāo)識符簡單的理解就是給在程序中涉及的對象取的名字.
標(biāo)識符分為系統(tǒng)命名的標(biāo)識符與用戶自命名標(biāo)識符,系統(tǒng)標(biāo)識符通常用于系統(tǒng)函數(shù)的命名,如:
printf、strlen、scanf、fabs、malloc等。
用戶自命名標(biāo)識符是用戶為命名變量或定義函數(shù)等而取的名字,通常用戶自定義標(biāo)識符以字母、數(shù)字、下劃線組成,并以字母或下劃線開頭。262.4.2標(biāo)識符用戶自命名標(biāo)識符是用戶為命名變量27注意:
a_12、_12、ab12等都是正確命名的標(biāo)識符。
12a、a/b等都是不正確的標(biāo)識符。思考:是否可用:intif=5;
定義一個整型變量?為什么?27注意:思考:282.5運算符在C程序中有極為豐富的運算符,例如:
賦值運算符、算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符等。
運算符及其優(yōu)先級請參閱附錄282.5運算符運算符及其優(yōu)先級請參閱附錄292.5.1算術(shù)運算符算術(shù)運算符有:加、減、乘、除、取余數(shù),它們的表達(dá)方式及含義如下表所示。運算符含義例備注
+加5+2結(jié)果7-減5-2結(jié)果3*乘5*2結(jié)果10/除5/2結(jié)果2%求余5%2結(jié)果1只適用于整型數(shù)
++
自增
--
自減
292.5.1算術(shù)運算符運算符含義30
算術(shù)運算符的優(yōu)先級:運算符
+-*/%
相同相同低高30算術(shù)運算符的優(yōu)先級:運算符311.關(guān)于除法運算符:/
兩個整數(shù)相除結(jié)果為整數(shù):5/2結(jié)果25/3結(jié)果1
2.關(guān)于求余運算符:
%
%兩邊的操作數(shù)都應(yīng)是整數(shù).
5%2結(jié)果1
7%4結(jié)果3
除法運算符”“/“的運算結(jié)果跟兩個操作數(shù)的類型有關(guān):(1).如果兩邊都是整形,結(jié)果必定為整形.(2).如果兩邊是其它類形,結(jié)果不是整形.311.關(guān)于除法運算符:/2.關(guān)于求余運算符:%323.C語言也規(guī)定了算術(shù)運算符的優(yōu)選級和結(jié)合性。
在表達(dá)式求值時:*先按運算符的優(yōu)先級別高低次序執(zhí)行,如a-b*c,
*如果在一個運算對象兩側(cè)的運算符級別一樣,則按
“結(jié)合方向”處理。
算術(shù)運算符的結(jié)合方向是“自左至右”,即先左后右.又稱“左結(jié)合性”——
即運算對象先與左邊的運算符相結(jié)合。323.C語言也規(guī)定了算術(shù)運算符的優(yōu)選級和結(jié)合性。
33
如:
a-b+c
,因此b先與減號結(jié)合,執(zhí)行a-b的運算,再執(zhí)行加+c的運算.
以后還將遇到“右結(jié)合性”的運算符,其結(jié)合方向為自
右至左。即運算對象與右邊運算符的相結(jié)合.
結(jié)合性是在別的高級語言中沒有的,是C特有的。請參閱附錄:
列出所有運算符的優(yōu)先級和結(jié)合性。33如:以后還將遇到“右結(jié)合性”的運算符,其結(jié)合343、算術(shù)表達(dá)式
:算術(shù)表達(dá)式:
用算術(shù)運算符將運算對象連接起來的,符合C語言語法規(guī)則的式子.
什么是表達(dá)式?由常量,變量,各種運算符,函數(shù)和括號連接而成的,合符c語言語法規(guī)則的有意義的式子,稱為表達(dá)式。如:
a+23,t+sqrt(y),z=x+y,Pi*r*r343、算術(shù)表達(dá)式:算術(shù)表達(dá)式:35從廣義上來講,單個變量,單個常量也可看作表達(dá)式。
c具有眾多運算符,可以構(gòu)成多種表達(dá)式:
賦值表達(dá)式,算術(shù)表達(dá)式、字符串表達(dá)式、
關(guān)系表達(dá)式,邏輯表達(dá)式.35從廣義上來講,單個變量,單個常量也可看作表達(dá)式。
36算術(shù)表達(dá)式的書寫規(guī)則:
在數(shù)學(xué)表達(dá)式中省略的內(nèi)容要寫上:
如:2x
要寫成2*x2r要寫成2**r
abca<=b&&b<=cs(s-a)(s-b)(s-c)要寫成
s*(s-a)*(s-b)*(s-c)
(5÷9)(F-32)
要寫成
(5/9)*(F-32)
x1+x2要寫成x1+x236算術(shù)表達(dá)式的書寫規(guī)則:在數(shù)學(xué)表達(dá)式中省略的內(nèi)容要寫37
4.自增、自減運算符:
在算術(shù)運算符中,C語言又增加了兩個很有用的運
算符:
++
……
加1運算符(自增)
--
……
減1運算符(自減)作用:
使變量的值加1或減1。如;
++x;相當(dāng)于x=x+1;
--x;相當(dāng)于x=x-1;
374.自增、自減運算符:作用:38
增1,減1運算符可放在操作數(shù)之前,也可放在其后。如:
++i,--i變量使用之前,先使i
增1,減1.
i++,i--變量使用之后,再使i加1,減1設(shè):i=3;
j=++i;(j的值為4)j=i++;(j的值為3,i的值為4)注意!38增1,減1運算符可放在操作數(shù)之前,也可放在其后。如39例:
main(){inta=100;printf(“%d\n”,++a);printf(“%d\n”,a++);printf(“%d\n”,a);}結(jié)果:
10110110239例:結(jié)果:10110240(2).結(jié)合方向是“自右至左”,即“右結(jié)合”.
如有:-i++
負(fù)號和“++”同一優(yōu)先級,結(jié)合方向同為“自右而左”,即相當(dāng)于-(i++).
注:(1).++,--運算符只能用于變量,不能用于常量與表
達(dá)式。
如:5++,(a+b)++都不合法.40(2).結(jié)合方向是“自右至左”,即“右結(jié)合”.注:41思考:表達(dá)式y(tǒng)=1+x++
是否等同于x++,y=1+x
還是等同于
y=1+x,x++?4142上機(jī)練習(xí)21:上機(jī)調(diào)試下列程序,總結(jié)余數(shù)的符號與什么相關(guān)。#include<stdio.h>intmain(){
printf("%d%d\n",5%2,-5%2);return0;}42上機(jī)練習(xí)2432:上機(jī)調(diào)試下列程序,分析程序輸出的結(jié)果。#include<stdio.h>intmain(){intx,y,z;
scanf("%d",&x);y=x++;z=++x;printf("y=%dz=%dx=%d\n",y,z,x);}&的含義是“取地址”的意思,函數(shù)的作用是:
從鍵盤輸入的兩個值,分別送到x所占地址的內(nèi)存單元中去,也就是輸入x的值.
%d為輸入格式說明,d為十進(jìn)制整數(shù)格式說明符。
現(xiàn)設(shè)給x輸入了一個5,問:y,z,x輸出各為多少?輸出:y=5,z=7,x=7432:上機(jī)調(diào)試下列程序,分析程序輸出的結(jié)果。&的含義是44
又:#include<stdio.h>intmain(){intx,y,z;
scanf("%d",&x);y=x--;z=--x;printf("y=%dz=%dx=%d\n",y,z,x);}
3:把前程序中的++都改為--,再次調(diào)試程序,觀察程序運行的結(jié)果。
現(xiàn)設(shè)給x輸入了一個5,問:y,z,x輸出各為多少?輸出:y=5,z=3,x=344又:3:把前程序中的++都改為--,再次調(diào)試程序,45
5.賦值運算符:=
在C中,把賦值符“=”也列為運算符之列,“=”執(zhí)行賦值操作。如:y=23.3x=45.3+y*4執(zhí)行過程如下:
變量=表達(dá)式注:
左邊必須是一個變量.
1.
首先計算表達(dá)式的值.
同時把其類型轉(zhuǎn)為左邊變量的類型.
2.把右邊表達(dá)式的值賦
給左邊的變量.455.賦值運算符:=在C中,把賦值符46說明:1.如果在賦值運算中,賦值符兩側(cè)類型不一致,在賦值時要進(jìn)行類型轉(zhuǎn)換。規(guī)則:
賦值符右邊的值轉(zhuǎn)變?yōu)橘x值符左邊變量所屬的類型(系統(tǒng)自動轉(zhuǎn)換)。
例如:
a.將實型數(shù)據(jù)賦給整型變量時,小數(shù)部分自動丟失。
inti;i=8.56;(i為整型變量,
i的值就為8)46說明:規(guī)則:賦值符右邊的值轉(zhuǎn)變?yōu)橘x值符左邊變量所屬的類47b.將整型數(shù)據(jù)賦給實型變量時,數(shù)值不變,但以浮點形
式存于內(nèi)存。
如:floatf2;f2=28;
f2將以28.000000存于內(nèi)存。
(單精度以6位有效數(shù)字存入,
雙精度有15位有效數(shù)字)47b.將整型數(shù)據(jù)賦給實型變量時,數(shù)值不變,但以浮48例:
若x是整型變量,表達(dá)式(x=10.0/4.0)的值是____
A.2.5B、2.0C、3D、248例:若x是整型變量,表達(dá)式(x=10.0/4.0)的值496、復(fù)合賦值運算符:(1).如果在賦值符‘=‘之前加上其它運算符,可構(gòu)成
復(fù)合賦值運算符,如:
+=(相加賦值)
*=
(相乘賦值)
例如:
a+=
3相當(dāng)于a=a+3x*=y+8相當(dāng)于x=x*(y+8)x%=3相當(dāng)于x=x%3
C采用這種形式,一是為了簡化程序,二是為了提高編譯效率。
凡是二目(二元)運算符,都可與賦值符組成復(fù)合賦值符.496、復(fù)合賦值運算符:例如:C采用這種形式,一是50
為了便于記憶,可以這樣理解:
設(shè)有
:a+=b又設(shè)a為變量,b為表達(dá)式
a+=b(“=”左邊部分,插入“=”右邊)
a=a+b(“=”左邊補(bǔ)上變量名)
如果b表達(dá)式是包含若干項的表達(dá)式,它相當(dāng)于有括號:
x%=y+3x%=(y+3)x=x%(y+3)5051(2).賦值表達(dá)式:
由賦值運算符將一個變量和一個表達(dá)式連接起來的式子稱為“賦值表達(dá)式”.
如:
“a=5*b”
就是一個賦值表達(dá)式,賦值表達(dá)式的值就是
被賦值的變量的值.
51(2).賦值表達(dá)式:如:
“a=5*b”527、強(qiáng)制類型轉(zhuǎn)換運算符
如:(double)a2….(將a2變量強(qiáng)制轉(zhuǎn)換成double型)
(int)(x+y)...(將(x+y)的類型強(qiáng)制轉(zhuǎn)換int型)
一般形式為:(類型名)(表達(dá)式)說明:進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,得到一個所需的中間變量,
原來的變量類型不變。例:floatx1;inti;x1=13.6;i=(int)x1
;\*i的值為13*\527、強(qiáng)制類型轉(zhuǎn)換運算符說明:進(jìn)行強(qiáng)制類型轉(zhuǎn)換時,得到一個53
類型轉(zhuǎn)換有二種方法:
a.系統(tǒng)自動進(jìn)行.
b.強(qiáng)制進(jìn)行.
強(qiáng)制類型轉(zhuǎn)換在函數(shù)調(diào)用時,當(dāng)要求形參與實參的類型一致時使用。53類型轉(zhuǎn)換有二種方法:542.5.2關(guān)系運算符一、關(guān)系運算符與關(guān)系表達(dá)式:
關(guān)系運算符也就是一種比較大小的運算符。1.關(guān)系運算符及優(yōu)先級:
<
(小于)
<=
(小于等于)
高
>
(大于)
>=
(大于等于)
==
(等于)低
!=
(不等于)
優(yōu)先級相同(低)優(yōu)先級相同(高)542.5.2關(guān)系運算符優(yōu)先級相同(低)優(yōu)先級相同(高)55
算術(shù)運算符:*,/,%
+,-
高關(guān)系運算符:<,<=,>,>=,==,!=
賦值運算符:=
低
復(fù)合賦值運算符:+=,%=,*=
運算符的優(yōu)先級請見附錄B55運算符的優(yōu)先級請見附錄B562.關(guān)系表達(dá)式:
用關(guān)系運算符將兩個表達(dá)式連起來的式子——關(guān)系表
達(dá)式。關(guān)系表達(dá)式由于是一種比較的操作,其結(jié)果是成
立,不成立的關(guān)系。
也即產(chǎn)生一個邏輯值
,“真”或“假”。
C語言中沒有設(shè)邏輯型數(shù)據(jù).
C中用1代表邏輯真,0代表邏輯假。0~1562.關(guān)系表達(dá)式:C語言中沒有設(shè)邏輯型數(shù)據(jù).
57
如:設(shè):a=4,b=3,c=2;
則:(1).a>b的值為“真”,表達(dá)式的值為1.
(2).d=b>c/*d的值為1
.*/(3).e=a>b>c/*e的值為0.*/
/*因“>”運算符自左到右結(jié)合,先執(zhí)行a>b,值為1,再執(zhí)行1>c,值為0*/
(4).f=(a>b)+af的值為557如:設(shè):a=4,b=3,c=2;58思考:表達(dá)式y(tǒng)=6<10==1
它等同于
y=(6<10)==1
還是y=6<(10==1)?
高
算術(shù)運算符:*,/,%
+,-
關(guān)系運算符:<,<=,>,>=,
==,!=
賦值運算符:=
低
58思考:高592.5.3邏輯運算符1.邏輯運算符及優(yōu)先級:邏輯運算符是對邏輯量進(jìn)行操作.共有三種:
!
……邏輯非(NOT)
(對操作數(shù)取反,如操作數(shù)為真,結(jié)果就為假.)
&&……邏輯與(AND)
(只有兩個操作數(shù)的值同時為真時,結(jié)果為真.)
||……邏輯或(OR)
(只要兩個操作數(shù)中的一個值為真時,結(jié)果就為真.)高
低592.5.3邏輯運算符!60
邏輯運算符的功能
邏輯與:
&&
,
邏輯或:||,邏輯非:!真值表:
aba&&ba||b!a假假假假真假真假真真真假假真假真真真真假
&&,||是雙目(二元)運算符,!是單目(一元)運算符.60邏輯運算符的功能邏輯與:&&,邏輯或:61
優(yōu)先級:
邏輯運算符:!
高
算術(shù)運算符:+,*
關(guān)系運算符:>,=<
邏輯運算符:&&,||
賦值運算符:=低61優(yōu)先級:62例:(a>b)&&(x>y)a>b&&x>y
(!a)||a>b!a||a>b2.邏輯表達(dá)式:
用邏輯運算符將關(guān)系表達(dá)式,或邏輯量連起來的式
子,叫邏輯表達(dá)式。邏輯表達(dá)式的值應(yīng)該是一個邏輯量:真(1),假(0).622.邏輯表達(dá)式:63
但在判斷一個量是否為真或為假時,即以非0為真(包括負(fù)值),以0值為假.
這種表示方法法最先在C中使用,因為它使得編程顯示特別方便。說明
:
C語言在編譯時,給出邏輯運算結(jié)果時(如關(guān)系表
達(dá)式、邏輯表達(dá)式),如果是真,用數(shù)值1表示;
是假用0表示。63但在判斷一個量是否為真或為假時,即以非0為64例:設(shè)a=4,b=5
那么:
!a的值為0(因為a的值為非0,認(rèn)為是真)
a&&b的值為1.
a||b的值為1.4&&0||2的值為1(自左向右運算).可見:
(1).邏輯運算結(jié)果不是0,就是1.(2).參加邏輯運算的操作數(shù)可以是1,0(真,假),也可是
整數(shù),也可以是任何類型的數(shù)據(jù)。系統(tǒng)最終是以:
0判斷為假,非0判斷為真.64例:設(shè)a=4,b=5那么:可見65例:求表達(dá)式的值:5>3&&2||8<4-!0①4-!0即:3得:5>3&&2||8<3②5>3結(jié)果為1;8<3結(jié)果為
0
得:1&&2||0
③1&&2結(jié)果為1
最后結(jié)果為1
注:
邏輯表達(dá)式求解自左向右,且一旦知道結(jié)果的真假
值,求值即停止。例.
若設(shè):a=1,b=1,c=3,d=4,m,n原值為1,那么:(m=a>b)&&(n=c>d)
則m新值為0,n不再賦值。
65例:求表達(dá)式的值:5>3&&2||8<4-!0注:661.判斷ch是否為小寫英文字母:
(ch>='a')&&(ch<='z')2.判斷ch是否為英文字母:(ch>='a'&&ch<='z')||(ch>='A'&&ch<='Z')
熟練掌握關(guān)系運算符和邏輯運算符,可以巧妙地用一個邏輯表達(dá)式來表示一個復(fù)雜的條件。
661.判斷ch是否為小寫英文字母:2.判斷ch67例:閏年的條件:a.能被4整除,但不能被100整除
b.能被400整除
設(shè)year為某一年份,year為閏年的表達(dá)式:((year%4==0&&year%100!=0)||year%400==0)
當(dāng)上述邏輯表達(dá)式為1時,year這一年為閏年,當(dāng)為0時,year這一年為非閏年。67例:閏年的條件:a.能被4整除,但不能被100整68例2.3
#include<stdio.h>intmain(){intx=20,y=3,z=0,a;a=x>y;printf("%d>%d=%d\n",x,y,a);
a=x/y;printf("%d/%d=%d\n",x,y,a);
a=x%y;printf("%d%%%d=%d\n",x,y,a);
….ch2_2_3.c輸出符號%時,需寫成:68例2.3ch2_2_3.c輸出符號%時,需寫成:69…..
a=x==y;printf("%d==%d=%d\n",x,y,a);
a=x!=y;printf("%d!=%d=%d\n",x,y,a);
a=x&&y;printf("%d&&%d=%d\n",x,y,a);
a=x||y;printf("%d||%d=%d\n",x,y,a);
a=!x>y;printf("!%d>%d=%d\n",x,y,a);}69…..70注:由于%通常用于格式控制符中,當(dāng)在printf中輸出符號%時,需寫成:
printf(“%d%%%d=%d\n”,x,y,a);,而不是:
printf("%d%%d=%d\n",x,y,a);
說明:
在編譯新程序前要關(guān)閉前一程序的[工作空間]。
注意!70注意!71思考:1.寫出判斷x大于0并且小于10的表達(dá)式。
(x>0)&&(x<10)2.寫出判斷ch是大寫字母的的表達(dá)式。
3.寫出判斷ch是字母的表達(dá)式。
4.寫出整型數(shù)a、b、c能構(gòu)成一個三角形的表達(dá)式。71思考:722.5.4位運算符位運算符的運算對象為二進(jìn)制數(shù).
運算符含義1.
~
按位取反例:
~1結(jié)果0~1010結(jié)果0101
2.
&
按位與
例:
1&1為1;1&0為01100&1010結(jié)果1000722.5.4位運算符2.&733.
|
按位或
例:
1|1為1;1|0為1;0|0為0.
1100|1010結(jié)果11104.
^
按位異或例:
1^1為0;0^0為0;1^0為1.1100&1010結(jié)果0110733.|按位或4747475
5.
<<
按位左移例:
0010<<1
左移1位結(jié)果01006.
>>
按位右移例:
0010>>1
右移1位
結(jié)果0001755.<<按位左移6.76例2.4
從鍵盤輸入一個整型數(shù),判斷此數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后第2位是否為1。分析:假定此整數(shù)為12,轉(zhuǎn)化為二進(jìn)制后為1100(你可以用windows中的計算器轉(zhuǎn)換).
判斷第2位是否為1,即此數(shù)只要與二進(jìn)制數(shù)0100作“與”運算.
如結(jié)果不為0,即可判斷此數(shù)的二進(jìn)制數(shù)的第2位不為0.第0位76例2.4從鍵盤輸入一個整型數(shù),判斷此數(shù)轉(zhuǎn)化為二進(jìn)制數(shù)后77數(shù)制與編碼二進(jìn)制與八進(jìn)制、十六進(jìn)制之間相互轉(zhuǎn)換準(zhǔn)備知識:①二進(jìn)制與八進(jìn)制的對應(yīng)關(guān)系
②二進(jìn)制與十六進(jìn)制的對應(yīng)關(guān)系不同數(shù)制之間的轉(zhuǎn)換0000010100111001011101110123456700000001001000110100010101100111012345671000100110101011110011011110111189ABCDEF77數(shù)制與編碼二進(jìn)制與八進(jìn)制、十六進(jìn)制之間相互轉(zhuǎn)換不同數(shù)制之78#include<stdio.h>intmain(){ intx,y; scanf("%d",&x); y=(x&4)!=0; printf("此數(shù)的二進(jìn)制數(shù)的第2位為:%d\n",y);}
請讀者自行調(diào)試,如程序運行時分別輸入7、8,輸出是什么?為什么?ch2_2_4.c輸入12
(12)
1100
(4)
0100
78#include<stdio.h>請讀者自行調(diào)試792.6編輯C程序時應(yīng)注意的問題1.C程序中區(qū)分大小寫字母,書寫格式自由,一行內(nèi)可寫幾個語句。用“;”作為語句的結(jié)束標(biāo)記。3.函數(shù)定義如:main()、#include<stdio.h>、#definePI3.14159不是語句,后面不能用“;”號。注釋用符號“/*”和“*/”來界定,“/”和“*”之間不可以有空格。一個好的程序應(yīng)該有詳細(xì)的注釋。792.6編輯C程序時應(yīng)注意的問題3.函數(shù)定義如:ma80
第2章
C程序的基本構(gòu)成
結(jié)束80第2章81例:
執(zhí)行下列程序段后,a值為____: inta,b; a=15;b=-1; a=a+b&&a;
A)15B)0C)1D)16例:寫出下列程序段的輸出結(jié)果:
floatx1,x2;x1=3/2;x2=x1/2;printf("%d,%.1f",(int)x1,x2);C).11,0.53/2的值為181例:執(zhí)行下列程序段后,a值為____:例:寫出下列82練習(xí)與實踐一、選擇題1.()是構(gòu)成C語言程序的基本單位。(A)函數(shù) (B)過程(C)子程序 (D)文件82練習(xí)與實踐832.在下述程序段中,()是錯誤的程序注釋方法(注:本例多個選擇)。(A)
#in/*包含*/clude<stdio.h>voidmain(){printf("Howareyou?\n");}(B)#include<stdio.h>voidmain(){inti=3;/*整型數(shù)*/}83(B)84(C)#include<stdio.h>voidmain(){intx/*初始化*/=10;/*打印*/printf("%d",x);}(D)#include<stdio.h>voidmain(){intx=10;printf("%d",x);/*打印x/*x=10*/的值*/}84(C)853.()是C語言提供的合法的數(shù)據(jù)類型關(guān)鍵字。(A)Float (B)signed(C)integer (D)Char4.以下選項中不合法的用戶標(biāo)識符是()。(A)abc.c (B)file(C)Main (D)PRINTF5.合法的C語言字符常數(shù)是()。(A)‘\084’ (B)"A"(C)‘a(chǎn)b’ (D)‘\x43’85866.C語言中,要求運算數(shù)必須是整型的運算符是()。(A)% (B)/(C)< (D)!7.以下選項中不正確的實型常量是()。(A)2.607E-1(B)0.8103e2.(C)77.77 (D)456e-28.合法的C語言賦值語句為()。(A)a=b=58(B)i++;(C)a=50,b=50(D)k=int(a+b);86879.不合法的C語言賦值語句為()。(A)++a;(B)n1=(n2=(n3=0));(C)a=b==c;(D)k=a+b=1;10.正確的語句是()。(A)intx=y=z=0;(B)intz=(x+y)++;(C)x=+3==2;(D)x%=2.5;878811.下述程序的輸出是()。#include<stdio.h>voidmain(){intx=023;printf("%d",--x);}(A)17 (B)18(C)23 (D)24888912.設(shè)a,b,c均定義為int型,且已賦于大于1的數(shù),能正確表達(dá)1/(abc)的表達(dá)式是()。(A)1/a*b*c (B)1/(a*b*c)(C)1.0/a*b*c(D)1.0/a/b/c8990二、寫出表達(dá)式或程序的運行結(jié)果1.以下程序輸出結(jié)果是()。#include<stdio.h>voidmain(){inta,d=241;a=d/100%9;printf("%d\n",a);}90二、寫出表達(dá)式或程序的運行結(jié)果91
2.定義:
inta=5,b=4;floatx=5.5,y=3.7;(float)(a+b)/2+(int)x/(int)y+(int)(x+y)%4/2值為()。3.定義inta=2,b=3,c=4;
執(zhí)行完下列語句后:a*=10+(b++)–(++c);
a=(),b=(),c=()。
91924.定義:inty=0,x=3;y=++x*++x*++x;
執(zhí)行后x,y的值為:x=(),y=()5.定義:inta=20,n=10;求各式的值。(A)a/=a+a; (a=)(B)a%=n%=7; (a=)(C)a+=a-=a*=a; (a=)
924.定義:inty=0,x=3;936.若x、y、z均為int型變量,則執(zhí)行以下語句后的輸出為()。x=(y=(z=10)+5)–5;printf("x=%d,y=%d,z=%d\n",x,y,z);y=(z=x=0,x+10);printf("x=%d,y=%d,z=%d\n",x,y,z);936.若x、y、z均為int型變量,則執(zhí)行以下語句后的輸C語言程序的基本構(gòu)成課件94演講完畢,謝謝觀看!演講完畢,謝謝觀看!9596
上機(jī)實驗中出現(xiàn)的問題一.編寫時候注意符號在英文格式下面輸入二.語句結(jié)束后“;”容易遺漏,但是也不能亂加,如while,if后面不能加”;”三.對于函數(shù)來說,基本格式:函數(shù)頭+一對{}四.scanf和printf函數(shù)1上機(jī)實驗中出現(xiàn)的問題一.編寫時候注意符號在英文97
第2章
C程序的基本構(gòu)成2第2章982.1C語言源文件
C語言是結(jié)構(gòu)化的程序設(shè)計語言,一個C源程序可以由一個或多個文件組成,C源程序文件的擴(kuò)展名一般為.c
或.cpp,下面通過實例學(xué)習(xí)多文件系統(tǒng)中的函數(shù)調(diào)用。
說明:文件-是指存放在存儲器上以文件名進(jìn)行管理的一組信息.
函數(shù)-指具有獨立功能、按一定格式構(gòu)成的代碼段。
一個大型,典型的C語言源程序大致如下所示:32.1C語言源文件說明:一個大型,典型的C99C語言源程序
源程序文件1
源程序文件n
源程序文件2…..
預(yù)處理命令
全局變量
聲明
函數(shù)1…..
函數(shù)n
函數(shù)首部
函數(shù)體
局部變量
聲明
執(zhí)行語句4C語言源程序源程序文件1源程序文件n源程序文件100
文件包含的概念:一個文件可以將另一個源文件的全部內(nèi)容包含進(jìn)來,這叫文件包含處理。
當(dāng)然文件包含予處理也可在特定的盤,特定的目錄(文件夾)中尋找包含文件.
如:#include“c:\myfolder\myfile.c”
文件包含的一般格式:
#include<文件名>
或者#include“文件名”
5文件包含的概念:當(dāng)然文件包含予處理也可在特定的101#include“file2.C”file1.cA
在編譯時,將file2.c全部內(nèi)容復(fù)制到#include“file2.c“的位置上,將file1.c作為一個源文件單位進(jìn)行編譯。file1.c
BA+Bfile2.c包含6#include“file2.C”file1.cA102例2.1
在VisualC++環(huán)境下新建兩個文件,其文件名分別
為2_1_1.c、2_1_2.c,其中2_1_1.c文件定義一個做乘法的函數(shù)f(),定義另一個主調(diào)函數(shù)main().
在主調(diào)函數(shù)中分別調(diào)用函數(shù)f()以及存放在2_1_2.c中的函數(shù)disp(),在main函數(shù)中輸出f()的返回值。7例2.1在VisualC++環(huán)境下新建兩個文件,其1032_1_2.c文件disp()函數(shù)分析:
在文件2_1_1.c中由兩個函數(shù)構(gòu)成,文件2_1_2.c由一個函數(shù)構(gòu)成.
程序的執(zhí)行從main()函數(shù)開始,main函數(shù)調(diào)用f()函數(shù),然后再調(diào)用disp()函數(shù)。2_1_1.c文件f()函數(shù)main()函數(shù)#include“2_1_2.c調(diào)用調(diào)用82_1_2.c文件disp()函數(shù)分析:2_1_1.c文1049105總結(jié):
1.C程序是由函數(shù)組成,必須要包含一個主函數(shù)main().
函數(shù)之間可以相互調(diào)用.
因此,函數(shù)是C程序的基本單位。
(1).C用各種各樣的函數(shù)來完成某些特定功能。
(2).
C函數(shù)庫十分豐富,標(biāo)準(zhǔn)C提供一百多個函數(shù).
被調(diào)函數(shù)可以是系統(tǒng)提供的庫函數(shù),如:printf(),
scanf();也可以是根據(jù)需要自己編寫的函數(shù),如:disp().10總結(jié):(1).C用各種各樣的函數(shù)來完成某些1062.一個C程序總是從main()函數(shù)開始執(zhí)行,不管這
個main()在整個程序中處于什么位置。
main()函數(shù)可放在整個程序的最上頭,或最后,或
一些函數(shù)的中間.3.C程序書寫格式自由:一行內(nèi)可以寫幾條語句.
一條語句可寫在多行上,行尾使用續(xù)行符:“\”.
*書寫程序時,一律使用英文標(biāo)點符號.
113.C程序書寫格式自由:一行內(nèi)可以寫幾條語句.107*C語言程序中區(qū)分大小寫。
*在程序中int、return、include叫保留字,在C語言
中有特定的含義,一般不作它用。*而disp、f、a、b等為用戶自定義標(biāo)識符,通常為
了定義函數(shù)、變量所取的名字,取名要有一定的規(guī)
則。121084.每條語句及變量定義的最后要有一個分號(;),
分號(;)是語句的必要組成部分。如:intx,y=7;c=a+b;
注
:變量定義必須放在函數(shù)的開頭部分,執(zhí)行語句之前,
不能插入在語句當(dāng)中.C++可放程序任何位置.5.C語言本身并沒有輸入,輸出語句.輸入,輸出的操
作是由庫函數(shù),像printf(),scanf()函數(shù)來完成。
C語言對輸入、輸出實行“函數(shù)化”管理。134.每條語句及變量定義的最后要有一個分號(;1092.2C函數(shù)函數(shù)是完成特定任務(wù)的獨立模塊,函數(shù)的使用最主要涉及到函數(shù)的定義與調(diào)用。
C程序是由一個或多個文件構(gòu)成,而文件可由一個或多個函數(shù)組成.
如在前述的文件2_1_1.c中,由兩個函數(shù)main()、F()構(gòu)成.
文件2_1_2.c由一個函數(shù)disp()構(gòu)成。142.2C函數(shù)C程序是由一個或多個文110一.函數(shù)的調(diào)用形式為:
函數(shù)名(
[參數(shù)]);
注:函數(shù)的原型:
函數(shù)返回值類型函數(shù)名(形式參數(shù)表);參數(shù):
執(zhí)行一個函數(shù)所必須提供的數(shù)據(jù)叫參數(shù).15一.函數(shù)的調(diào)用形式為:注:函數(shù)的原型:參111返回值類型函數(shù)名(形式參數(shù)聲明){
數(shù)據(jù)聲明部分語句部分
}二.
C函數(shù)定義的結(jié)構(gòu)示意圖16返回值類型函數(shù)名(形式參數(shù)聲明)二.C函數(shù)定義112
intadd(intx,inty)
{
intz;/*變量定義,給變量分配內(nèi)存空間*/z=x+y;/*執(zhí)行語句*/returnz;
}
17113注:在C語言中,變量在使用前,一定要先定義:
指定變量的名字及類型,在編譯時給變量分配存儲空間。
例如:
intz;
指定變量的名字為z,及類型為int.(在編譯時給變量分配存儲空間)。18注:指定變量的名字為z,及類型為int.(在編譯時給114變量的定義
變量定義的一般形式:
類型名變量名表;注:
變量名按C語言的命名規(guī)則命名.
變量名一般用小寫字母,見名知義.例如:intx3,n;定義整型變量floaty2;定義單精度浮點型變量doublearea,length;
定義雙精度浮點型變量
多個變量用逗號(,)分開,最后加一分號(;).19變量的定義變量定義的一般形式:注:
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 供貨協(xié)議屬合同
- 零售業(yè)財務(wù)評估師全攻略及常見問題解析
- 作業(yè)許可管理員面試題集
- 聯(lián)想集團(tuán)研發(fā)工程師面試題及答案詳解
- 健康管理師面試題及答案解析
- 城市管理督查專員的面試題及答案解析
- 2025年健身產(chǎn)業(yè)綜合體建設(shè)項目可行性研究報告
- 2025年智慧城市數(shù)據(jù)管理系統(tǒng)集成可行性研究報告
- 2025年大健康產(chǎn)業(yè)發(fā)展論壇可行性研究報告
- 2025年農(nóng)作物精準(zhǔn)灌溉技術(shù)推廣項目可行性研究報告
- 業(yè)主授權(quán)租戶安裝充電樁委托書
- 化工建設(shè)綜合項目審批作業(yè)流程圖
- 親子鑒定的報告單圖片
- 遼寧軌道交通職業(yè)學(xué)院單招《職業(yè)技能測試》參考試題庫(含答案)
- 馬工程《經(jīng)濟(jì)法學(xué)》教學(xué)
- 新概念二單詞表新版,Excel 版
- 2023年陜西西安經(jīng)濟(jì)技術(shù)開發(fā)區(qū)招聘120人(共500題含答案解析)筆試必備資料歷年高頻考點試題摘選
- 第八講 發(fā)展全過程人民民主PPT習(xí)概論2023優(yōu)化版教學(xué)課件
- 篇12pmc窗口功能指令舉例講解
- GB/T 7332-2011電子設(shè)備用固定電容器第2部分:分規(guī)范金屬化聚乙烯對苯二甲酸酯膜介質(zhì)直流固定電容器
- GB/T 38658-20203.6 kV~40.5 kV交流金屬封閉開關(guān)設(shè)備和控制設(shè)備型式試驗有效性的延伸導(dǎo)則
評論
0/150
提交評論