C語言程序設計 課件 (張惠濤 )第1、2章 C語言程序概述;C語言數(shù)據(jù)類型、運算符與表達式_第1頁
C語言程序設計 課件 (張惠濤 )第1、2章 C語言程序概述;C語言數(shù)據(jù)類型、運算符與表達式_第2頁
C語言程序設計 課件 (張惠濤 )第1、2章 C語言程序概述;C語言數(shù)據(jù)類型、運算符與表達式_第3頁
C語言程序設計 課件 (張惠濤 )第1、2章 C語言程序概述;C語言數(shù)據(jù)類型、運算符與表達式_第4頁
C語言程序設計 課件 (張惠濤 )第1、2章 C語言程序概述;C語言數(shù)據(jù)類型、運算符與表達式_第5頁
已閱讀5頁,還剩72頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

第1章C語言程序概述《C語言程序設計》課程簡介

C語言是當今使用最廣泛的高級語言,是操作系統(tǒng)、編譯系統(tǒng)等大型復雜系統(tǒng)的首選語言。實踐證明,用該語言編寫的程序,靈活、方便、簡潔、高效、數(shù)據(jù)結(jié)構(gòu)豐富、功能齊全。C語言自問世以來,很快就流行于全世界,并為各種規(guī)模的通用計算機所必備。同時,C語言以其靈活方便的特點,成為培養(yǎng)學生計算機語言思維,了解計算機編程思想的最佳語言,它已被當今國內(nèi)外眾多主要高校列為各理工科專業(yè)必修課程。《C語言程序設計》概述6C語言程序的開發(fā)環(huán)境1.1C語言的發(fā)展及特點1.2C語言的基本結(jié)構(gòu)1.3C語言的字符集、標識符、關鍵字1.4C語言的開發(fā)環(huán)境1.5實踐1.1C語言的發(fā)展及特點

C語言是當今社會應用很廣泛,受到眾多用戶歡迎的一種計算機算法語言。它既可適合于作為系統(tǒng)軟件的描述語言,也可用來開發(fā)應用軟件。

D.M.Ritchie1972年在B的基礎上研制了C語言,并用C語言寫成了第一個在PDP-11計算機上實現(xiàn)的UNIX操作系統(tǒng)。目前在微型計算機上使用的C語言有多種版本,這些不同的版本,基本部分是相同的,但在有關規(guī)定上又略有差異。1.1.1C語言的發(fā)展概況1.1C語言的發(fā)展及特點1.1.2C語言的特點簡潔緊湊、靈活方便01020304運算符豐富數(shù)據(jù)結(jié)構(gòu)豐富C是結(jié)構(gòu)式語言C語法限制不太嚴格、程序設計自由度大050607C語言允許直接訪問物理地址,可以直接對硬件進行操作用C語言編程,生成的目標代碼質(zhì)量高,程序執(zhí)行效率高、可移植性好。1.2C語言的基本結(jié)構(gòu)第一個入門編程代碼便是"HelloWorld!"#include<stdio.h>//頭文件intmain()//主函數(shù),程序的入口函數(shù){/*代碼區(qū)*/printf(“Hello,World!”);//printf輸出函數(shù)return0;//返回值為0}1.2C語言的基本結(jié)構(gòu)頭文件說明:#include<stdio.h>(1)#:預處理指令(2)include:文件包含指令,只能包含頭文件,xxx.h----頭文件xxx.c----源文件(3)<>,"":表示搜索頭文件的一種方式<>:庫文件,庫函數(shù)所在的頭文件,系統(tǒng)自帶的頭文件表示程序會在系統(tǒng)目錄(軟件安裝的目錄)中查找頭文件"":適用于程序員自定義的頭文件(4)stdio.h:標準輸入輸出的頭文件,有關標準輸入輸出函數(shù)的聲明都在該文件(5)頭文件:關于一類功能相近的函數(shù)的聲明信息如:pow()--求冪,sqrt()--開方關于數(shù)學計算的功能------#include<math.h>關于字符串操作的功能------#include<string.h>關于輸入輸出功能------#include<stdio.h>注意:用到哪個函數(shù),則需要包含該函數(shù)的所在頭文件1.2C語言的基本結(jié)構(gòu)主函數(shù)的理解intmain()//main函數(shù){.......return0;}int指明main()函數(shù)的返回值類型,表示函數(shù)的返回值類型是int型。函數(shù)名后面的括號一般包含傳遞給函數(shù)的信息,沒有則表示為空。main函數(shù)結(jié)論:(1)C語言程序執(zhí)行過程中,主函數(shù)是程序的入口函數(shù),即程序是從主函數(shù)開始執(zhí)行的,而不是從第一個函數(shù)開始執(zhí)行;(2)main函數(shù)中語句執(zhí)行。其他函數(shù)體的內(nèi)容不執(zhí)行;(3)main函數(shù)執(zhí)行結(jié)束,意味著整體的C程序執(zhí)行結(jié)束;(4)一個c程序,有并且只有一個main函數(shù),如果是兩個則會出錯;(5)main()書寫只能是這樣,不能寫成其他形式;(6)主函數(shù)是自動調(diào)用,程序運行,主函數(shù)自動調(diào)用了,子函數(shù)必須人為調(diào)用才行1.2C語言的基本結(jié)構(gòu)注釋的解釋:

(1)功能:解釋說明,代碼的調(diào)試(2)特性:被注釋掉的代碼不再進行編譯,即使有語法錯誤,也不會檢測出來(3)形式:單行注釋://之后的內(nèi)容為被注釋的內(nèi)容。(4)多行注釋:/**/其中的內(nèi)容為被注釋掉的內(nèi)容。用法:(1)對文件注釋(2)對函數(shù)注釋(3)對程序語句注釋1.3C語言的字符集、標識符與關鍵字英文字母:大小寫各26個,共計52個。01020304阿拉伯數(shù)字:0到9共計10個。下劃線:_。其它特殊符號:主要指運算符,運算符通常由一至兩個特殊符號組成。

特殊符號集如下:+-*/%++--<>=>=<===!=|&!‖&&∧~《》()[]{}\?:.,;1.3.1C語言的字符集1.3C語言的字符集、標識符與關鍵字1.3.1C語言的標識符1、標識符只能以英文大小寫字母、和下劃線開頭,而不能用其他任何字符或數(shù)字開頭。例如以下就是錯誤的例子:int%a;//錯誤,標識符不能以符號開頭int8C[8];//錯誤,不能以數(shù)字開頭2、標識符中只能包含英文大小寫字母、下劃線和阿拉伯數(shù)字,但是不能以阿拉伯數(shù)字開頭。inta8;//正確int_adf589S_5;//正確3、標識符區(qū)分大小寫,Acd和acd、caDd和cadd、_8Fc9和_8fc9都是不相同的標識符。4、標識符不能是關鍵字。intfloat;//錯誤,float是關鍵字。intFloat;//正確1.3C語言的字符集、標識符與關鍵字1.3.1C語言的標識符除了這些硬性規(guī)則外,標識符的命名最好具有具體的意義,以便于觀察、閱讀和維護。//定義某長方體的長度、寬度和高度inta;//高度intb;//寬度intc;//高度可以改成如下定義:intc_Long;intc_Width;intc_Height;1.3C語言的字符集、標識符與關鍵字1.3.1C語言的關鍵字關鍵字是一種語言中規(guī)定具有特定含義的標識符。關鍵字不能作為變量或函數(shù)名來使用,用戶只能根據(jù)系統(tǒng)的規(guī)定使用它們。根據(jù)ANSI標準,C語言可使用以下32個關鍵字:autobreakcasecharconstcontinuedefault

dodoubleelseenumexternfloatforgotoifintlongregisterreturnshortsignedsizeofstaticstructswitchtypedefunionunsignedvoidvolatilewhile1.4C語言程序的開發(fā)環(huán)境編寫好的C語言程序要經(jīng)過編輯(輸入)、編譯和連接后才能形成可執(zhí)行的程序。程序源程序目標程序可執(zhí)行程序結(jié)果*?c?obj?exe編譯編輯連接運行C語言程序上機過程1、編輯是在程序編譯之前做的準備工作,主要包括:頭文件的包含(include),宏定義(define,替換),條件編譯(ifdef,ifndef)將源文件通過編輯生成預處理文件(*.c或*.cpp)2、編譯:將編輯過后的文件編譯生成目標文件(*.obj)3、連接:將目標文件通過連接生成可執(zhí)行文件(*.exe)4、執(zhí)行:運行可執(zhí)行文件。DevC++開發(fā)環(huán)境

(1)新建源文件打開DevC++,在上方菜單欄中選擇“文件-->新建-->源代碼”:以創(chuàng)建一個“helloworld!”簡單源程序為例:DevC++開發(fā)環(huán)境

可以增加如下設置,直接生成固定的程序框架。選擇工具-->編輯器選項-->代碼-->缺省值,說明:#include<bits/stdc++.h>為萬能頭文件,包含了常用的如【輸入輸出頭文件】#include<stdio.h>、【數(shù)學計算頭文件】#include<math.h>、【字符串頭文件】#include<string.h>等。DevC++開發(fā)環(huán)境

經(jīng)過如上設置后,新建文件窗口如圖:在空白文件中輸入要執(zhí)行的代碼DevC++開發(fā)環(huán)境

在上方菜單欄中選擇“文件-->保存”,或者按下Ctrl+S組合鍵,都可以保存源文件說明:C++是在C語言的基礎上進行的擴展,C++已經(jīng)包含了C語言的全部內(nèi)容,所以大部分IDE默認創(chuàng)建的是C++文件。編譯器會根據(jù)源文件的后綴來判斷代碼的種類,這里我們選擇*.cpp,將源文件命名為helloworld.cpp。DevC++開發(fā)環(huán)境

(3)生成可執(zhí)行程序在上方菜單欄中選擇“運行-->編譯”,就可以完成helloworld.cpp源文件的編譯工作?;蛘咧苯影垂ぞ邫诘牡谝粋€圖標對源文件進行編譯?;蛘咧苯影聪翭9鍵,也能夠完成編譯工作,這樣更加便捷。單擊第二個圖標,運行該程序,運行結(jié)果如下:1.5實踐環(huán)節(jié)解釋例1.1使用printf()與%d格式化輸出整數(shù)。#include<stdio.h>intmain(){intnumber;printf("輸入一個整數(shù):");scanf("%d",&number);//通過鍵盤給程序中的變量賦值//printf("你輸入的整數(shù)是:%d\n",number);return0;}1.5實踐環(huán)節(jié)解釋例1.2使用printf()與%c格式化輸出一個字符。#include<stdio.h>intmain(){charc;//聲明一個字符串變量C//printf("輸入一個字符(僅限1個字母):");scanf("%c",&c);//通過鍵盤給程序中的變量賦值//printf("輸入的字符為%c\n",c);return0;}1.5實踐環(huán)節(jié)解釋例1.3使用printf()與%f輸出浮點數(shù)。#include<stdio.h>intmain(){floatf;//聲明浮點數(shù)變量printf("輸入一個浮點數(shù):");scanf("%f",&f);//通過鍵盤給程序中的變量賦值//printf("輸入的浮點數(shù)為%f\n",f);return0;}1.5實踐環(huán)節(jié)解釋例1.4使用scanf()來接收輸入,printf()與%d格式化輸出整數(shù),實現(xiàn)兩數(shù)相加。#include<stdio.h>intmain(){intfirstNumber,secondNumber,sumOfTwoNumbers;printf("輸入兩個數(shù)(以空格分割):");scanf("%d%d",&firstNumber,&secondNumber);//通過scanf()函數(shù)接收用戶輸入的兩個整數(shù)sumOfTwoNumbers=firstNumber+secondNumber;printf("%d+%d=%d\n",firstNumber,secondNumber,sumOfTwoNumbers);return0;}1.5實踐環(huán)節(jié)解釋例1.5輸入兩個浮點數(shù),計算乘積。#include<stdio.h>intmain(){doublefirstNumber,secondNumber,product;printf("輸入兩個浮點數(shù):");scanf("%lf%lf",&firstNumber,&secondNumber);product=firstNumber*secondNumber;printf("%lf*%lf=%.2lf\n",firstNumber,secondNumber,product);//輸出結(jié)果,%.2lf保留兩個小數(shù)點return0;}1.5實踐環(huán)節(jié)解釋例1.6兩數(shù)相除,如果有余數(shù),輸出余數(shù)。#include<stdio.h>intmain(){intdividend,divisor,quotient,remainder;//4個變量是被除數(shù)、除數(shù)、商和余數(shù)//printf("輸入被除數(shù):");scanf("%d",÷nd);printf("輸入除數(shù):");scanf("%d",&divisor);quotient=dividend/divisor;//運算符/用來計算商//remainder=dividend%divisor;//運算符%用來計算余數(shù)//printf("商=%d\n",quotient);printf("余數(shù)=%d\n",remainder);return0;}1.5實踐環(huán)節(jié)解釋例1.7輸入兩個數(shù),比較大小#include<stdio.h>intmain(){doublea,b;printf("輸入第一個數(shù):");scanf("%le",&a);printf("輸入第二個數(shù):");scanf("%le",&b);if(a>b)printf("%le大于%le\n",a,b);elseprintf("%le小于等于%le\n",a,b);return0;}1.5實踐環(huán)節(jié)解釋例1.8比較三個數(shù)大小#include<stdio.h>intmain(){inta,b,c;printf("輸入第一個整數(shù):");scanf("%d",&a);printf("輸入第二個整數(shù):");scanf("%d",&b);printf("輸入第三個整數(shù):");scanf("%d",&c);if(a>b&&a>c)printf("%d最大\n",a);elseif(b>a&&b>c)printf("%d最大\n",b);elseif(c>a&&c>b)printf("%d最大\n",c);elseprintf("有兩個或三個數(shù)值相等\n");return0;}1.5實踐環(huán)節(jié)解釋例1.9判斷奇數(shù)還是偶數(shù)。#include<stdio.h>intmain(){intnumber;printf("請輸入一個整數(shù):");scanf("%d",&number);if(number%2==0)printf("%d是偶數(shù)\n",number);elseprintf("%d是奇數(shù)\n",number);return0;}1.5實踐環(huán)節(jié)解釋例1.10判斷正數(shù)、負數(shù)。#include<stdio.h>intmain(){doublenumber;printf("輸入一個數(shù)字:");scanf("%lf",&number);if(number<=0.0){if(number==0.0)printf("你輸入的是0\n");elseprintf("你輸入的是負數(shù)\n");}elseprintf("你輸入的是正數(shù)\n");return0;}本章小結(jié)

本章介紹了C語言的發(fā)展和特點,基本算法結(jié)構(gòu),字符集及關鍵字,著重介紹了本書采用的程序開發(fā)環(huán)境DEVC++,舉例了一些簡單例題,熟悉開發(fā)環(huán)境的同時也能掌握C語言算法的編寫習慣。舉例了司馬遷史記的故事,促進培養(yǎng)堅定理想,矢志不渝為之奮斗的新一代大學生。第2章

C語言數(shù)據(jù)類型、運算符與表達式C語言數(shù)據(jù)類型、運算符與表達式62.1C語言的數(shù)據(jù)類型2.2常量和變量2.3運算符和表達式2.4數(shù)據(jù)類型轉(zhuǎn)換2.1.1數(shù)據(jù)類型概述C語言為不同類型的數(shù)據(jù)使用了不同的格式存儲,占用內(nèi)存單元的字節(jié)數(shù)也不同。字符型(char)整型(short,int,long,unsigned)單精度型(float)實型雙精度型(double)枚舉類型(enum)

數(shù)組類型([])構(gòu)造類型結(jié)構(gòu)體類型(struct)共用體類型(union)指針類型(*)空類型(void)基本類型數(shù)據(jù)類型2.1.2整數(shù)類型基本型以int表示01030204長整型以longint表示短整型以shortint表示無符號型存儲單元中全部二進位用來存放數(shù)據(jù)本身,不包括符號。無符號型中又分為無符號整型unsignedint、無符號短整型unsignedshort和無符號長整型unsignedlong。2.1.2整數(shù)類型類型名稱關鍵字所占位數(shù)取值范圍短整型short[int]16-32768~

32767無符號短整型unsignedshort[int]160~

65535整型int32-2147483648~2147483647無符號整型unsigned[int]320~

4294967295長整型long[int]32-2147483648~2147483647無符號長整型unsignedlong[int]320~

4294967295C語言所支持的整型數(shù)據(jù)2.1.2整數(shù)類型

(1)十進制整數(shù)的表示與數(shù)學上的表示相同,例如:

256,-321,0(2)八進制整數(shù)的表示以數(shù)字0開頭,如:

0234表示八進制整數(shù)(234)8,所對應的十進制數(shù)為2×82+3×81+4×80=156。(3)十六進制整數(shù)的表示以0x開頭,如:

0x234

表示十六進制整數(shù)(234)16(注意:十六進制數(shù)前導字符Ox,x前面是數(shù)字0)。在一個整型數(shù)據(jù)后面加一個字母L或l(小寫),則認為是longint型量。如342L、0L、78L等,這往往用于函數(shù)調(diào)用中。如果函數(shù)的形參為longint型,則要求實參也為longint型,此時需要用342L作實參。2.1.3實數(shù)類型實數(shù)類型的數(shù)據(jù)即實型數(shù)據(jù),在C語言中實型數(shù)據(jù)又稱之為浮點型數(shù)據(jù)。實型數(shù)據(jù)的值域在計算機中的表示只是數(shù)學中實數(shù)的一個子集。C語言所支持的實型數(shù)據(jù)類型名稱關鍵字字節(jié)數(shù)取值范圍精度(位)單精度型float4-3.4×10-38~+3.4×10387雙精度型double8-1.7×10-308~+3.4×1030815

(1)十進制數(shù)形式。由正負號、數(shù)字和小數(shù)點組成。如5.734、-0.273、.8、-224.等。(2)指數(shù)形式。如546E+3或546E3都代表546×103。字母E(或e)之前必須有數(shù)字,E(或e)后面的指數(shù)必須為整數(shù)。如E8、4.6E+2.7、6e、e、9E7.5都是不合法的指數(shù)形式。5.74E-7、-3E+6是合法的指數(shù)形式實型常量。2.1.4字符類型字符類型的數(shù)據(jù)即指字符型數(shù)據(jù),它可分為字符和字符串兩種表達方式。

C語言的字符表示是用單引號括起來的一個字符。如‘A’、‘y’、‘*’、‘!’、‘+’等都是字符量。注意:‘e’和‘E’是不同的字符量。反斜杠引導的字符稱轉(zhuǎn)義字符,其意思是將反斜杠(\)后面的字符轉(zhuǎn)變成另外的意義。如\n中的n不代表字母n而作為“換行”符。這種轉(zhuǎn)義字符我們稱之為特殊字符。例如:‘\101’代表字符‘A’(八進制的ASCII碼);‘\X41’也代表字符‘A’(十六進制的ASCII碼);‘\012’代表‘換行’符。2.1.4字符類型字符變量字符變量是用類型符char定義字符變量。如:charc=’?’;定義c為字符型變量并使初值為字符’?’。’?’的ASCII代碼是63,系統(tǒng)把整數(shù)63賦給變量c。注意:’a’和”a”是不同的,一個是字符量’a’,一個是字符串量”a”。字符串不能用于賦值,而字符可以用于賦值。因此,c=”a”不正確,應用c=’a’才正確。c是字符變量,實質(zhì)上是一個字節(jié)的整型變量,由于它常用來存放字符,所以稱為字符變量。可以把0~127之間的整數(shù)賦給一個字符變量。2.1.4字符類型轉(zhuǎn)義字符\n 換行\(zhòng)t 橫向跳格(跳到下一個輸出區(qū))\v 豎向退格\b 退格\r 回車\f 走紙換頁\\ 反斜杠字符\’ 單引號字符2.2常量與常量

常量是指在程序運行中,其數(shù)值不能被改變的量。

直接常量即指C語言的數(shù)值常量和字符類型常量。符號常量則是指C語言用標識符定義的常量。數(shù)值常量可分為整型常量和實型常量。字符型常量可分為字符常量和字符串常量。2.2.1常量與符號常量

1.整型常量256,-75,0(十進制整型常量)0237,045,0621(八進制整型常量,用數(shù)字0作前導)0X28AF,0XED4(十六進制整型常量,用數(shù)字0與X作前導)435L,350L(長整型常量)合法的整型常量表示形式096(9非八進制數(shù)碼)48EA(十六進制數(shù)缺前導字符0X)0XK(K非十六進制計數(shù)字符)不合法的整型常量表示形式

2.字型常量實型常量只能用十進制形式表示,不能用八進制和十六進制形式表示。合法的實型常量28.76,564.03,2.34E+8,15.78E-2不合法的實型常量6.4E+4.8,E9,E-72.2.1常量與符號常量

3.字符常量

‘x’,‘+‘,‘\n’,‘\101’都是合法的字符常量。

“changsha”,“centralsouthuniversity”,“+++\\?ab”都是合法的字符串常量。而‘a(chǎn)b’既不是字符常量,也不是字符串常量。

4.字符串常量2.2.1常量與符號常量在C語言中可以用標識符定義一個常量,其一般定義格式如下:

#define標識符常量數(shù)據(jù)

5.符號常量例如:#defineMAX 1000#defineMIX10#definePI 3.14159#defineEND ‘$’2.2.1常量與符號常量2.2.2變量與變量定義在C語言程序中,所有的變量必須加以說明,沒有任何隱含的變量。變量說明主要是指出變量的名稱,確定變量的數(shù)據(jù)類型。在C語言程序中,變量必須“先定義、后使用”。變量是以某標識符為名字,其值是可以改變的量。它是以字母或下劃線開頭的一串字母、數(shù)字或下劃線構(gòu)成的序列,最長為1~32個字符。變量代表計算機內(nèi)存中的某一存儲空間,這個存儲空間可以存放不同的數(shù)據(jù)。2.2.2變量與變量定義

變量可以在程序的三種地方定義:函數(shù)內(nèi)部、所有函數(shù)的外部和函數(shù)的參數(shù)定義中。由此定義的變量對應地稱為局部變量、全程變量和形式參數(shù)。例如:

inti,j,k;

/*定義三個整型變量i,j,k*/floatx1,y1;

/*定義兩個單精度型變量x1,y1*/char profit,loss; /*定義了兩個字符型變量profit,loss*/變量定義(或叫說明、聲明)語句的一般格式為:

類型標識符變量名1,變量名2,……;

1.變量定義語句2.2.2變量與變量定義變量名在定義時可以賦初值。例如:

int a=5,b=8,c;

float x1=6.27,x2,x3=5.94;

char ch=‘a(chǎn)’,kk=‘A’;變量名6ab、4x-y、xy·2a、A7+B2都是不合法的,因為它們不符合標識符的組成原則。

注意:大寫字母和小寫字母被認為是兩個不同的字符。因此,sum和SUM是兩個不同的變量名。習慣上變量名定義時多用小寫字母表示,以增加可讀性。2.2.2變量與變量定義若程序中錯將teacher打成tcacher,出現(xiàn):

tcacher=80;編譯將查出tcacher未定義。凡未被定義的標識符,不得作為變量名使用。如:

intteacher;每一變量被定義成某一類型,編譯時將據(jù)此為其分配相應長度的存儲單元。2.2.2變量與變量定義定義變量時,變量不能連續(xù)賦初值。

inta=b=c=24.5;

/*非法賦值*/變量使用“=”賦初值,但必須保證“=”右邊的常量(或表達式的值)與“=”左邊的變量類型一致。例如:

intx=3.2E5,a=15.6;變量賦值類型不一致將引起錯誤。

2.變量賦初值程序上機運行結(jié)果為:2022年1月有31天

IloveCHINAIloveChina

例題intmain(){ intyear=2022,month=1,day=31; printf("%d年的%d月共有%d天\n",year,month,day); charc1,c2,c3,c4,c5; c1='C',c2='H',c3='I',c4='N',c5='A'; printf("Ilove%c%c%c%c%c\n",c1,c2,c3,c4,c5); c2='H'+32,c3='I'+32,c4='N'+32,c5='A'+32; printf("Ilove%c%c%c%c%c\n",c1,c2,c3,c4,c5); return0;}2.2.2變量與變量定義程序上機運行結(jié)果為:應付金額=64606.402344例題intmain(){ intnum_dress;//定義整型變量衣服的件數(shù) floatprice,money;//定義浮點型變量單價和應付錢數(shù) num_dress=298;//給衣服的件數(shù)賦值 price=216.8;//給價格賦值 money=num_dress*price;//計算應付金額 printf("\n應付金額=%f\n",money);//輸出結(jié)果 return0;}2.2.2變量與變量定義2.3運算符與表達式1、算術(shù)運算符。用于各類數(shù)值運算。包括加(+)、減(-)、乘(*)、除(/)、求余(%)、自增(++)、自減(--)共7種。2、關系運算符。包括大于(>)、小于(<)、等于(==)、大于或等于(>=)、小于或等于(<=)和不等于(!=)6種。3、邏輯運算符。包括與(&&))、或(||)、非(!)三種。4、位操作運算符。參與二進制位運算。包括位與(&)、位或(|)、位非(~)、位異或(^)左移(<<)、右移(>>)6種。5、賦值運算符。分為簡單賦值(=)、復合算術(shù)賦值(+=,-=,*=,/=,%=)和復合位運算賦值(&=,|=,^=,>>=,<<=)三類共11種。6、條件運算符。這是一個三目運算符,用于條件求值(?:)7、逗號運算符:(,)。8、指針運算符。(*)、(&)。2.3.1運算符的種類2.3.2算術(shù)運算符與算術(shù)表達式

+(加)、-(減)、*(乘)、/(除)、%(求余,模運算)。

1.運算符

(1)要求%運算左右兩數(shù)必須為整型數(shù)據(jù),如7%4的值為3。(2)兩個整數(shù)相除(/),結(jié)果為整數(shù),舍去小數(shù)部分。如5/3=1,-5/3=-1,采取“向零取整”的方法,即取整后向零靠攏(即向?qū)崝?shù)軸的原點靠攏)。(3)參加運算的兩個數(shù)中有一個數(shù)為實數(shù),則結(jié)果為double型,因為所有的實數(shù)都按double型進行運算。(4)字符型數(shù)據(jù)可以和數(shù)值型數(shù)據(jù)混合運算。因為字符型數(shù)據(jù)在計算機內(nèi)部是用一個字節(jié)的整型數(shù)表示的。2.3.2算術(shù)運算符與算術(shù)表達式

(1)算術(shù)表達式定義。用算術(shù)運算符和括號將運算對象(也稱操作數(shù))連接起來,符合C語言規(guī)則的式子,稱為算術(shù)表達式。運算對象包括常量、變量、函數(shù)等。

2.運算符

(2)運算符的優(yōu)先級與結(jié)合性。和數(shù)學上一樣,C語言的算術(shù)表達式運算時,運算符是有優(yōu)先級高低之分的,遵循的原則是“先乘除,后加減”?!?、/、%“為同一級別,“+、-“為同一級別?!?、/、%“優(yōu)先級高于“+、-“。

(3)類型轉(zhuǎn)換。如果一個運算符兩側(cè)的數(shù)據(jù)類型不同,先自動進行類型轉(zhuǎn)換,使兩者具有同一種類型,然后再進行運算。2.3.2算術(shù)運算符與算術(shù)表達式

(4)取負值運算符。C的取負值運算符為:-(負號)。它是一元運算符,如:

-x,-b(5)自增與自減運算符。C的自增運算符為++,自減運算符為--,其操作對象只能是變量。作用是使變量的值增1或減1,如:

++i,--i(在使用i之前,i值先加(減)1)

i++,i--(在使用i之后,i值再加(減)1)

(6)自增與自減運算符優(yōu)先級高于算術(shù)運算符優(yōu)先級,而與負值(-)運算符同級。如:

i=2;

j=-i++;//“++”“-”是同級優(yōu)先。2.3.2算術(shù)運算符與算術(shù)表達式

(7)運算符優(yōu)先級關系和結(jié)合方向。高級

++、--、-、sizeof、!*、/、%+、-<<、>>(左、右移位)<、<=、>、>===、!=&(按位與)^(按位異或)|(按位或)&&(邏輯與)||(邏輯或)?:(條件運算)=、+=、-=、*=、/=、%=、>>=、<<=、&=、^=、|=低級,(逗號)2.3.2算術(shù)運算符與算術(shù)表達式

(8)C語言的運算符有時不太好理解,如:表達式i+++j是理解成(i++)+j呢?還是理解成i+(++j)呢?C語言編譯處理將自左至右對其解釋為:(i++)+j,而不是i+(++j)。

++i,--i(變量在使用之前先自增(減)1)

i++,i--(變量在使用之后再自增(減)1)

在表達式中若包含有自增或自減運算符時,給表達式的運算帶來了靈活性,但也易給人造成一些混淆的問題。因此,使用“++”或“--”自增與自減運算符要小心謹慎。例如:設i=3,k=(i++)+(i++)+(i++),則k=?

注意:2.3.2算術(shù)運算符與算術(shù)表達式例2.4自增和自減的應用#include<bits/stdc++.h>intmain(){ inta,b,c,d,e,f,i,j; a=5; b=++a; printf("a的值為%d,b的值為%d\n",a,b); c=5; d=c++; printf("c的值為%d,d的值為%d\n",c,d); e=5; f=--e; printf("e的值為%d,f的值為%d\n",e,f); f=e--; printf("e的值為%d,f的值為%d\n",e,f); i=2; j=-i++; printf("i的值為%d,j的值為%d\n",i,j); return0;}程序運行結(jié)果:說明:++和--運算符具有右結(jié)合性,如表達式-i++相當于-(i++),不是(-i)++,而(-i)是表達式不能作為++運算符的操作數(shù)。2.3.2算術(shù)運算符與算術(shù)表達式總結(jié)了所有運算符的優(yōu)先級與結(jié)合性,同一行中的各運算符具有相同的優(yōu)先級,各行間從上往下優(yōu)先級逐行降低。運算符結(jié)合性()[]從左向右!~++--sizeof從右向左*/%從左向右+-從左向右<< >>從左向右<= < > >=從左向右== !=從左向右&從左向右^從左向右|從左向右&&從左向右||從左向右?:從左向右=+=-=/=*=%=&=^=|=<<=>>=從左向右,從左向右2.3.3關系運算符與關系表達式C語言提供了6種關系運算符,它們分別是:小于、小于等于、大于、大于等于、等于、不等于注意:在書寫關系運算符>=、<=、==、!=時,中間不允許有空格,否則會產(chǎn)生語法錯誤。關系運算符兩邊的運算對象可以是C語言中任意合法的表達式。關系表達式的形式為:表達式1關系運算符表達式2C語言的表達式中產(chǎn)生的結(jié)果只能是0(假)或1(真)。例如,表達式1<2的值為1,而表達式2<1的值為0。關系運算符可以用于比較整數(shù)和浮點數(shù),也允許比較混合類型的操作數(shù)。因此,表達式2<2.3的值為1。2.3.3關系運算符與關系表達式由于關系運算符優(yōu)先級低于算術(shù)運算符,所以關系表達式c>a+b等價于c>(a+b)。由于關系運算符優(yōu)先級高于賦值運算符,所以關系表達式c=a>b等價于c=(a>b)。若a=3,b=2,c=1,數(shù)學表達式a>b>c是成立的,但在程序中關系表達式a>b>c等價于(a>b)>c,其中a>b返回值為1,但1不大于c,因此整個關系表達式返回值為0。例如:a>=b、(a=4)>(b=3)、a>c==d等都是合法的關系表達式。關系運算的值為“邏輯值”,只有兩種可能:整數(shù)0或者整數(shù)1。如,a=3>b=4是不合法的關系表達式,因為先運算的3>b的返回結(jié)果除了0就是1,結(jié)果為常數(shù),4不能賦值給常數(shù),所以出錯。2.3.3關系運算符與關系表達式當字符參加關系運算時,使用字符的ASCII碼值進行比較,如a=97,則表達式a==’a’的值為1。兩個字符串進行關系運算(比較大?。r,從兩個字符串左邊開始,逐個字符比較。如果前面的字符相同,就比較右邊下一個字符,一旦某個字符不同,則按其ASCII碼值的大小決定兩個字符串的大小。如果所有字符都相同,則兩個字符串相等。如:"abc"<"abd"(第3個字符’c’<’d’)"ab"=="ab"等的返回值都為1。2.3.3關系運算符與關系表達式intmain(){ printf("%d%d\n",1<2,2<1);//返回1和0 printf("%d\n",2<2.3);//返回1 inta=3,b=2,c=1; printf("%d%d\n",c>a+b,c=a>b);//返回0和1 printf("%d\n",c>b>c);//返回0 //printf("%d\n",a=4>b=3);//不合法 printf("%d\n",(a=4)>(b=3));//返回1 a=97; printf("%d\n",a=='a');//返回1 printf("%d\n","abc"<"abd");//返回1 return0;}關系運算符算法練習運行結(jié)果2.3.4逗號運算符逗號運算符是將多個表達式用逗號運算符“,”連接起來,逗號表達式的一般形式為:表達式1,表達式2,……,表達式n逗號運算符的結(jié)合性為從左到右,即先計算表達式1,然后計算表達式2,依次進行,最后計算表達式n,最后一個表達式的值就是此逗號表達式的值。逗號運算符在C語言所有運算符中優(yōu)先級別最低。如:i=5,i++,++i,i+8這個逗號運算符表達式的值為15,因為i+8改變的是表達式的值,i的值沒有改變,所以i的值自加了兩次,值為72.3.4逗號運算符如:x=(y=4,y+5,18)這個逗號運算符表達式的值為18,并且將該結(jié)果賦給了x,y的值為4。t為int類型,表達式t=1,t+5,t++的值是1,t的值為2。已定義m和n為double類型,則表達式:m=1,n=m+3/2的值是2.000000。(a=3,b=5,b+=a,c=b*5),逗號表達式的值40main(){intx,y,z;x=1;y=1;z=x++,y++,++y;printf(“%d,%d,%d\n”,x,y,z);}的結(jié)果為2,3,12.3.4逗號運算符逗號運算符算法練習intmain(){ intx,y,z; x=1; y=1; z=x++,y++,++y; printf("%d,%d,%d\n",x,y,z); inti; printf("%d,%d\n",(i=5,i++,++i,i+8),i); printf("%d,%d,%d\n",(x=(y=4,y+5,18)),x,y); intt; printf("%d,%d\n",(t=1,t+5,t++),t); doublem,n; printf("%lf,%lf,%lf\n",(m=1,n=m+3/2),m,n); inta,b,c; printf("%d",(a=3,b=5,b+=a,c=b*5)); return0;}2.3.5邏輯運算符與邏輯表達式C語言有三種邏輯運算符:邏輯與(&&)、邏輯或(||)和邏輯非(?。?。邏輯與和邏輯或運算符為雙目運算符,具有左結(jié)合性。邏輯非為單目運算符,具有右結(jié)合性。邏輯表達式的結(jié)果只有兩個值,真和假,分別用1和0表示。邏輯表達式的形式為:表達式1&&表達式2表達式1||表達式2!表達式邏輯表達式的運算規(guī)則為:邏輯與(&&):當兩邊的表達式的值均為非0時,邏輯表達式的值才為1,其余情況均為0。邏輯或(||):當兩邊表達式的值均為0時,邏輯表達式的值為0,其余情況均為1。邏輯非(!):當表達式的值為非0時,邏輯表達式的值為0,反之當表達式的值為0時,邏輯表達式的值為1。2.3.5邏輯運算符與邏輯表達式邏輯表達式的用法舉例:1、寫出判斷變量x中的值是否是大寫字母的表達式。正確的表達式:x>='A'&&x<='Z'或x>=65&&x<=95錯誤的表達式:'A'<=x<='Z'或65<=x<=902、寫出判斷x中的值是否是字母的表達式。正確的表達式:(x>='A'&&x<='Z')||(x>='a'&&x<='z')或(x>=65&&x<=90)||(x>=97&&x<=122)錯誤的表達式:x>='A'&&x<='z'或x>=65&&x<=122解析:大寫字母是'A'~'Z',ASCII碼值為65~90;小寫字母是'a'~'z',ASCII碼值為97~122。即大小寫字母之間并不連續(xù),所以表達式需分成兩段。3、寫出判斷a、b、c中的值能否構(gòu)成三角形的表達式。正確的表達式:(a+b>c)&&(a+c>b)&&(b+c>a)錯誤的表達式:(a+b>c)|

溫馨提示

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