版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
C語言的起源及發(fā)展全套可編輯PPT課件第1章C語言概述第2章數(shù)據(jù)類型、運(yùn)算符和表達(dá)式第3章選擇結(jié)構(gòu)程序設(shè)計第4章循環(huán)結(jié)構(gòu)程序設(shè)計第5章函數(shù)第6章數(shù)組第7章指針第8章文件C語言的發(fā)展1972年1983年1999年C語言誕生,C語言源自B語言,而B語言則源自BCPL語言美國國家標(biāo)準(zhǔn)協(xié)會(AmericanNationalStandardsInstitue)制定了一個C語言標(biāo)準(zhǔn)。稱之為ANSIC發(fā)布ISO/IEC9899:1999標(biāo)準(zhǔn),通常被成為C99D.M.RitchieC語言之父1972—1973年間,美國貝爾實驗室的D.M.Ritchie在B語言的基礎(chǔ)上設(shè)計出了C語言。了解C語言C語言是一種結(jié)構(gòu)化、模塊化方式組織程序,易于調(diào)試和維護(hù)C語言具有豐富的運(yùn)算符和數(shù)據(jù)類型,便于實現(xiàn)各類復(fù)雜的數(shù)據(jù)結(jié)構(gòu)C語言集高級語言和低級語言的功能于一體,即可用于系統(tǒng)軟件的開發(fā),又可用于應(yīng)用軟件的開發(fā)C語言運(yùn)行效率高、可執(zhí)行性強(qiáng)010203非結(jié)構(gòu)化的語言規(guī)定:程序必須由具有良好特性的基本結(jié)構(gòu)(順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu))構(gòu)成,程序中的流程不允許隨意跳轉(zhuǎn),程序總是由上而下順序執(zhí)行各個基本結(jié)構(gòu)。特點(diǎn):程序結(jié)構(gòu)清晰,易于編寫、閱讀和維護(hù)。面向?qū)ο蟮恼Z言結(jié)構(gòu)化語言高級語言的發(fā)展機(jī)器語言計算機(jī)能直接識別和接受的二進(jìn)制代碼稱為機(jī)器指令。機(jī)器指令的集合就是該計算機(jī)的機(jī)器語言。特點(diǎn):難學(xué),難記,難檢查,難修改,難以推廣使用。依賴具體機(jī)器難以移植。二進(jìn)制代碼計算機(jī)直接讀取,不便于記憶、維護(hù)、編程匯編語言機(jī)器語言的符號化。用英文字母和數(shù)字表示指令的符號語言。特點(diǎn):相比機(jī)器語言簡單好記,但仍然難以普及。匯編指令需通過匯編程序轉(zhuǎn)換為機(jī)器指令才能被計算機(jī)執(zhí)行。依賴具體機(jī)器難以移植。MOVAX383MOVBX5451972年C語言誕生1983年制定ANSIC1999年制定C99高級語言高級語言更接近于人們習(xí)慣使用的自然語言和數(shù)學(xué)語言。特點(diǎn):功能強(qiáng)大,不依賴于具體機(jī)器。用高級語言編寫的源程序需要通過編譯程序轉(zhuǎn)換為機(jī)器指令的目標(biāo)程序。C語言)JAVA語言C++語言結(jié)構(gòu)化,效率高,可移植性好計算機(jī)語言感謝觀看C語言程序設(shè)計C語言程序設(shè)計——為什么要學(xué)習(xí)C語言?我又不是學(xué)計算機(jī)專業(yè)的,為什么要學(xué)編程?C語言已經(jīng)過時了,為什么要學(xué)C語言呢?直接學(xué)C++、java就好了,為什么要學(xué)C語言呢?C語言的優(yōu)點(diǎn)語言簡潔、緊湊,使用方便、靈活0102030405060708C語法限制不太嚴(yán)格,程序設(shè)計自由度大運(yùn)算符豐富數(shù)據(jù)類型豐富具有結(jié)構(gòu)化的控制語句用函數(shù)作為程序的模塊單位,便于實現(xiàn)程序的模塊化C語言是完全模塊化和結(jié)構(gòu)化的語言生成目標(biāo)代碼質(zhì)量高,程序執(zhí)行效率高程序可移植性好允許直接訪問物理地址能進(jìn)行位(bit)操作能實現(xiàn)匯編語言的大部分功能可以直接對硬件進(jìn)行操作因此C語言既具有高級語言的功能,又具有低級語言的許多功能,可用來編寫系統(tǒng)軟件C語言的優(yōu)點(diǎn)什么是C語言?C語言是一門面向過程的計算機(jī)編程語言,與C++、Java等面向?qū)ο缶幊陶Z言有所不同。C語言的設(shè)計目標(biāo)是提供一種能以簡易的方式編譯、處理低級存儲器、僅產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語言。最簡單的C語言程序【例1.1】要求在屏幕上輸出:ThisisaCprogram.解題思路:
在主函數(shù)中用printf函數(shù)原樣輸出以上文字。#include<stdio.h>
//這是編譯預(yù)處理指令intmain()
//定義主函數(shù){
//函數(shù)開始的標(biāo)志
printf("ThisisaCprogram.\n"); //輸出所指定的一行信息
return0; //函數(shù)執(zhí)行完畢時返回函數(shù)值0}
//函數(shù)結(jié)束的標(biāo)志程序分析main是函數(shù)的名字,表示“主函數(shù)”;每一個C語言程序都必須有一個main函數(shù)。main前面的int表示此函數(shù)的類型是int類型(整型),即在執(zhí)行主函數(shù)后會得到一個值(即函數(shù)值),其值為整型。return0;的作用是當(dāng)main函數(shù)執(zhí)行結(jié)束前將整數(shù)0作為函數(shù)值,返回到調(diào)用函數(shù)處。函數(shù)體由花括號{}括起來。printf是C編譯系統(tǒng)提供的函數(shù)庫中的輸出函數(shù)(詳見第4章)。printf函數(shù)中雙引號內(nèi)的字符串″ThisisaCprogram.″按原樣輸出。\n是換行符,即在輸出″ThisisaCprogram.″后,顯示屏上的光標(biāo)位置移到下一行的開頭。每個語句最后都有一個分號,表示語句結(jié)束。感謝觀看C語言的運(yùn)行步驟一、C語言軟件的使用1.打開VC++6.02.新建工程3.新建源文件4.編寫程序5.編譯程序6.組建程序7.運(yùn)行程序8.保存4、5、6、7四步為C語言開發(fā)過程編輯編譯組建執(zhí)行一、C語言的開發(fā)過程如果執(zhí)行結(jié)果不正確,則需要再編輯、再編譯、再組建、再執(zhí)行,直到獲得正確的運(yùn)行結(jié)果.cpp.obj.exe一、C語言的開發(fā)過程【例1.2】編寫一個問好程序#include<stdio.h>頭文件voidmain()主函數(shù){
printf(“Hello,MissHan!”);輸出函數(shù)}函數(shù)體小結(jié)1、在VC++中編寫程序的步驟是:新建工程、新建源程序、編寫代碼、編譯、執(zhí)行、保存。2、編寫C語言程序程序時,首先是把需要用到的頭文件包含進(jìn)來,然后把程序?qū)懺诤瘮?shù)中。小結(jié)1、在VC++中C語言程序編譯后的擴(kuò)展名是()A.CppB.exeC.cD.doc2、在一個完整的C語言程序中,以下正確的是()A.最少有一個main()函數(shù)B.有且僅有一個main()函數(shù)小結(jié)3、C語言程序的開發(fā)順序是()a、編輯b、執(zhí)行c、組建d、編譯A、
abcdB、
adcbC、abdcD、bacd4、如果一個程序通過編譯說明()A、
該程序正確B、
該程序無語法錯誤
感謝觀看C語言的運(yùn)行環(huán)境內(nèi)容提要一安裝DevC++二DevC++中文界面設(shè)置三編譯運(yùn)行源程序一、安裝DevC++1、雙擊安裝包一、安裝DevC++2、在下拉框中選擇“English”,點(diǎn)“OK”。一、安裝DevC++3、點(diǎn)擊Iagree,選擇Next。
一、安裝DevC++4、點(diǎn)擊Install,開始安裝。
一、安裝DevC++5、完成安裝,點(diǎn)擊Finish,進(jìn)入DevC++工作界面。
二、DevC++中文界面設(shè)置1.在DevC++的“Tools”菜單中選擇“EnvironmentOptions”選項,在彈出的對話框中選擇“簡體中文/Chinese”。
二、DevC++中文界面設(shè)置二、DevC++中文界面設(shè)置2.
DevC++中文界面設(shè)置完成。
三、編譯運(yùn)行源程序三、編譯運(yùn)行源程序1.新建源程序,從主菜單選擇“File”—〉“New”—〉“SourceFile”(“文件”—〉“新建”—〉“源代碼”)即可
三、編譯運(yùn)行源程序2.保存源程序到硬盤在主菜單選擇“File(文件)”—〉“Saveas(另存為)”,在彈出的對話框中指定文件要存放的目錄(此處為D:\Cprogram)、文件名以及保存類型。保存后在指定目錄下為test.c的源文件
三、編譯運(yùn)行源程序3.在程序編輯區(qū)域中編輯源程序
三、編譯運(yùn)行源程序4.編譯運(yùn)行源程序從主菜單選“運(yùn)行”—〉“編譯”或快捷鍵“ctrl+F9”,可以一次性完成程序的預(yù)處理、編譯和鏈接過程。再選擇“運(yùn)行”或快捷鍵“Ctrl+F10”可以運(yùn)行輸出結(jié)果。也可點(diǎn)擊工具欄“編譯運(yùn)行”按鈕或快捷鍵“F9”,一次性完成編譯運(yùn)行
三、編譯運(yùn)行源程序5.運(yùn)行輸出結(jié)果
感謝觀看整型常量及其表示本講內(nèi)容常量整型常量及其表示整型常量及其表示常量在程序運(yùn)行過程中,其值保持不變的量稱為常量。在C語言中,常量是有類型的,常量的類型不需要事先說明,而是由書寫方法自動默認(rèn)的。
如:32,1.75整型常量及其表示常量按表現(xiàn)形態(tài)來分類主要有兩種:直接常量和符號常量。直接常量按數(shù)據(jù)類型來分類有4種:整型常量、實型常量、字符常量和字符串常量;整型常量及其表示整型常量整型常量習(xí)慣稱為常數(shù)、整數(shù)??梢杂檬M(jìn)制、八進(jìn)制和十六進(jìn)制來表示。在每一種常量后加小寫字母l或大寫字母L又得到十進(jìn)制長整型常量、八進(jìn)制長整型常量和十六進(jìn)制長整型常量。整型常量及其表示整型常量的表示類型開頭數(shù)碼舉例長整型舉例思考十進(jìn)制整型常量0~932,-764L,65783l八進(jìn)制整型常量00~7027,036,-015032l,057L049十六進(jìn)制整型常量0x或0X0~9,a~f,A~F0xa8,0X59,-0X390XFFl,0x64L0xag,2f說明:在VC++6.0環(huán)境中,整型常量在內(nèi)存中占4個字節(jié)。感謝觀看實型常量及其表示本講內(nèi)容01常量02實型常量及其表示常量在程序運(yùn)行過程中,其值保持不變的量稱為常量。在C語言中,常量是有類型的,常量的類型不需要事先說明,而是由書寫方法自動默認(rèn)的。
如:32,1.75常量按數(shù)據(jù)類型來分類有4種:整型常量、實型常量、字符常量和字符串常量;按表現(xiàn)形態(tài)來分類主要有兩種:直接常量和符號常量。
本節(jié)將介紹實型常量及其表示。實型常量及其表示實型常量也稱為實數(shù)或者浮點(diǎn)數(shù)。在C語言中實型常量有兩種表示方法:十進(jìn)制小數(shù)形式(定點(diǎn)形式)和指數(shù)形式(浮點(diǎn)形式)2種。(1)十進(jìn)制小數(shù)形式(定點(diǎn)形式):由數(shù)碼0~9、正負(fù)號和小數(shù)點(diǎn)(必須有小數(shù)點(diǎn))組成的十進(jìn)制小數(shù)表示的實數(shù)。如圖所示,例如:3.14、-0.271、0.0、0.6。十進(jìn)制小數(shù)形式(定點(diǎn)形式)數(shù)碼0~9正負(fù)號小數(shù)點(diǎn)(必須有)如:3.14,-0.271,0.0,0.,.6說明:在VC++6.0環(huán)境中,實型常量在內(nèi)存中占8個字節(jié)。實型常量及其表示由十進(jìn)制數(shù)、字母e或E、階碼三部分組成,一般格式為:aEn,表示為a×10n。其中階碼為-308~308的十進(jìn)制整數(shù)。如圖所示(2):指數(shù)形式(浮點(diǎn)形式):指數(shù)形式(浮點(diǎn)形式)3.14159e2尾數(shù):十進(jìn)制小數(shù)或整數(shù)階碼:為-308至308的十進(jìn)制整數(shù)E或e3.14159×102=31415.9E-231415.9×10-2314.1591e03表示十進(jìn)制數(shù)1×103,這里的尾數(shù)1不能省。E03,-2e314都是不合法的實型常量,因為E03中缺少尾數(shù);-2e314中階碼超過了階碼所允許的范圍。注意:實型常量及其表示感謝觀看字符型常量及其表示字符型常量C語言中的字符型常量代表ASCII碼字符集里的所有字符,分為顯示字符和不顯示字符。一個字符常量占1個字節(jié)(8位)的內(nèi)存單元,字符在內(nèi)存中以ASCII碼值的形式存儲。字符型常量字符型常量有2種表示方法:(1)用單引號括起來的一個字符。如‘A’,‘a(chǎn)’,‘8’,‘+’,‘@’等。字符常量只能用單引號括起來,不能用雙引號或者其它符號。字符常量只能是單個字符,不能包括多個字符。字符常量可以是字符集中的任意字符,但數(shù)字被定義成字符型后就不能參加數(shù)值運(yùn)算,如5是數(shù)值常量和‘5’是字符常量。(2)轉(zhuǎn)義字符,用單引號括起來的由反斜杠“\”開頭的一個字符或一個數(shù)字序列。轉(zhuǎn)義字符是一種特殊的字符常量,具有特殊的含義,不同于字符原有的意義,故稱為“轉(zhuǎn)義”字符。轉(zhuǎn)義字符的四種形式字符型常量有2種表示方法:1以反斜杠“\”開頭后跟一個規(guī)定的字母,代表一個控制字符。如:\n。2\\代表反斜杠字符“\”,\'代表單撇號字符“'”等。3以反斜杠開頭后跟1~3位八進(jìn)制數(shù)代表ASCII碼值為該八進(jìn)制數(shù)的字符(此方法可表示ASCII字符集中的任一字符)。如:‘\101’表示大寫字母A。4以反斜杠和小寫字母x開頭,即以\x開頭,后跟1~2位十六進(jìn)制數(shù)代表ASCII碼值為該十六進(jìn)制數(shù)的字符(也可表示ASCII字符集中的任一字符)。轉(zhuǎn)義字符及其含義列表字符形式含義ASCII碼值(十進(jìn)制)\a響鈴7\b退格(將光標(biāo)前移一列)8\t水平制表(橫向跳格到下一個制表區(qū))9\n回車換行(將光標(biāo)移到下一行開頭)10\v垂直制表(豎向跳格)11\f換頁(將光標(biāo)移到下頁開頭)12\r回車(將光標(biāo)移到本行開頭)13\"雙撇號字符“"”34\'單撇號字符“'”39\?問號字符“?”63\\反斜杠字符“\”92\0空字符0\dddddd為1到3位八進(jìn)制數(shù),ddd所代表的字符需轉(zhuǎn)換\xhhhh為1到2位十六進(jìn)制數(shù),hh所代表的字符需轉(zhuǎn)換幾點(diǎn)說明注意\n和\r的區(qū)別,\n是回車換行,而\r只是回車但不換行。(1)\t的作用是橫向跳格,屏幕的每一行被分為10個制表區(qū),每個制表區(qū)占8列。(2)\0代表ASCII碼值為0的控制字符NUL,即空操作。(3)字符常量在內(nèi)存中占1個字節(jié),按字符的ASCII碼值對應(yīng)的二進(jìn)制數(shù)形式存放。(4)【示例】'a','\141','\x61'都是合法的字符常量,都代表字符a;'\n','\12'都代表控制字符“回車換行”;而'\29','\x3g'都是不合法的字符常量,因為'\29'中有數(shù)碼9,'\x3g'中有字符g。感謝觀看字符串常量及其表示字符串常量及其表示用雙撇號括起來的字符序列稱為字符串常量,簡稱字符串。字符串中含字符的個數(shù)稱為該字符串的長度。注意:\154和\n都是轉(zhuǎn)義字符,都只代表一個字符。字符串長度"Howdoyoudo"13"A"1“abc”3"He\154lo.\n"7字符串的存儲長度C語言中,字符串的存儲是按字符串中每個字符的存儲形式存儲,每個字符占一個字節(jié),并在字符串的結(jié)尾系統(tǒng)自動加上一個字符串結(jié)束標(biāo)志“\0”,用以表明字符串的結(jié)束。所以,字符串的存儲長度為字符串長度加1。思考:‘A’與“A”一樣嗎?比如:“abc”,長度為3,存儲長度為4A\0“A”字符串常量例:
【例1】“helloworld”在內(nèi)存中占多少個字節(jié)?hello
world/0字符串常量
字符串常量和字符常量是不同類型的常量。字符常量由單引號括起來,字符串常量由雙引號括起來。字符常量只能是單個字符,字符串常量則可以是多個字符。字符常量占一個字節(jié)的內(nèi)存空間,字符串常量占的內(nèi)存字節(jié)數(shù)等于字符串長度加1,增加的一個字節(jié)中存放字符串結(jié)束標(biāo)志“\0”。如字符常量‘a(chǎn)’和字符串常量"a"雖然都只有一個字符,但在內(nèi)存中的情況是不同的。感謝觀看符號常量及其表示符號常量在C語言中,使用標(biāo)識符代表的常量,稱為符號常量。符號常量是用“宏定義”方式表示某個常量。符號常量的定義方法:在程序的開頭,使用如下的編譯預(yù)處理命令。格式:#define符號常量常量例如:#definePI3.14159符號常量的使用:程序中經(jīng)常出現(xiàn)的常量,可以考慮定義成符號常量。優(yōu)點(diǎn):1.能減輕編程的工作量。2.修改起來比較方便。符號常量的使用符號常量名通常用大寫字母來表示,以區(qū)別程序中的變量。此處PI的值用3.14159代替程序代碼:求圓面積(1)#include<stdio.h>(2)#definePI3.14159(3)doubleArea(doubler);
(4)intmain()(5){ (6)doubleRadii,s;(7)printf("請輸入圓的半徑:");(8)
scanf("%lf",&Radii);(9)
s=Area(Radii);
(10)
printf("半徑為%lf的圓的面積是%lf\n",Radii,s);(11)return0;(12)}(13)doubleArea(doubler)(14){(15)
doubles;(16)
s=PI*r*r;(17)
return
s;(18)}符號常量的使用
程序中的第(1)行是一條編譯預(yù)處理命令,稱為文件包含,由于程序中用到的函數(shù)printf和scanf的有關(guān)信息都在頭文件stdio.h中,所以,通過該命令使頭文件stdio.h
中的信息包含到程序中來,才能夠正確調(diào)用這兩個函數(shù)。符號常量的使用
程序中的第(2)行用#define定義了一個符號常量PI,它代表常量3.14159,經(jīng)編譯預(yù)處理后,該文件中所有出現(xiàn)PI的位置(第(16)行)都用3.14159來代替。由此可以看出,使用符號常量可以減輕程序輸入的工作量;符號常量的使用
如果想把程序中的PI用3.14來代替,只須把編譯預(yù)處理命令#definePI3.14159修改為#definePI3.14,而不必對整個程序進(jìn)行修改。所以,使用符號常量便于對程序的修改,給程序設(shè)計帶來了很大的方便。符號常量的使用程序代碼:求圓面積(1)#include<stdio.h>(2)#definePI3.14159(3)doubleArea(doubler);
(4)intmain()(5){ (6)doubleRadii,s;(7)printf("請輸入圓的半徑:");(8)
scanf("%lf",&Radii);(9)
s=Area(Radii);
(10)
printf("半徑為%lf的圓的面積是%lf\n",Radii,s);(11)return0;(12)}(13)doubleArea(doubler)(14){(15)
doubles;(16)
s=PI*r*r;(17)
return
s;(18)}符號常量名通常用大寫字母來表示,以區(qū)別程序中的變量。此處PI的值用3.14159代替程序中經(jīng)常出現(xiàn)的常量,可以考慮定義成符號常量。1.能減輕編程的工作量。優(yōu)點(diǎn)2.修改起來比較方便。感謝觀看實型變量及其表示實型變量實型變量的類型主要有兩種,單精度實型和雙精度實型,它們的類型標(biāo)識符分別是:float(單精度實型)double(雙精度實型)注意對于實型變量都是有符號的。doublex,y;定義了兩個雙精度實型變量x,y實型數(shù)據(jù)的存儲長度和取值范圍類型存儲長度取值范圍有效數(shù)字float4字節(jié)±(3.4×10-38~3.4×1038)6~7位double8字節(jié)±(1.7×10-308~1.7×10308)15~16位1.單精度型單精度型變量的類型聲明符為float,在TurboC中,單精度型占4個字節(jié)(32位)內(nèi)存空間,其數(shù)值范圍為3.4E-38-3.4E+38,只能提供7位有效數(shù)字。floatx,y;/*x、y為單精度實型變量*/也可在聲明變量為實型的同時,給出變量的初值。floatx=3.2,y=5.3;/*x、y為單精度實型變量,且有初值*/解:
單精度變量定義:2.雙精度型雙精度型變量的類型聲明符為double,在TurboC中,雙精度型占8個字節(jié)(64位)內(nèi)存空間,其數(shù)值范圍為1.7E-308—1.7E+308,可提供16位有效數(shù)字。實型變量聲明的格式和書寫規(guī)則與整型相同。雙精度變量定義:doublea,b;/*a、b為雙精度實型變量*/也可在聲明變量為實型的同時,給出變量的初值。doublea=0.2,b=1.8;/*a、b為雙精度實型變量且有初值*/說明:實型常量部分單精度和雙精度。一個實型常量可以賦給一個float和double型變量,根據(jù)變量的類型截取實型常量中相應(yīng)的有效位數(shù)字。下面舉例說明實型變量對有效位數(shù)字的限制。例題[例]單精度實型變量對有效位數(shù)字的限制。程序代碼如下:Main(){floata;a=0.123456789printf(“a=%f”,a);}運(yùn)行結(jié)果:a=0.1234567例題[例]演示float和double的區(qū)別。程序代碼如下:Main()floata;doubleb;a=3333.333333333;b=3333.333333333;Printf(“a=%f\nb=%f\n”,a,b);/*用格式化輸出函數(shù)函數(shù)輸出a和b的值*/}說明:本例中,由于a是單精度浮點(diǎn)型,有效位數(shù)只有7位。而整數(shù)已占4位,故小數(shù)三位之后均為無效數(shù)字。b是雙精度型,有效位為16位。但C規(guī)定小數(shù)后最多保留6位,其余部分四舍五入。實型變量#include“stdio.h”main(){floatf=12.123456789;/*定義float類型的變量f*/doubled=12.123456789;/定義double類型的變量d*/doubled1=-3.168E-6;/*定義double類型的變量d1*/doubled2=3.23e+3;/*定義double類型的變量d2*/printf(“f=%f,d=%f,%f\n”,f,d,ld);/*輸出f,d*/printf(“d1=%f,d2=%f\n”,d1,d2);/*輸出d1,d2*/}運(yùn)行結(jié)果:f=12.123457,d=12.123457d1=-0.000003,d2=3230.000000感謝觀看字符型變量字符型變量(有符號)字符型:[signed]char
無符號字符型:unsignedcharchara,b;unsignedcharc;定義a,b為(有符號)字符型變量;定義c為無符號字符型變量。注意:對于字符型變量只能存放一個字符,而不能存放字符串。字符型數(shù)據(jù)的存儲字符型數(shù)據(jù)在內(nèi)存中占1個字節(jié),以其相應(yīng)的ASCII碼值的8位二進(jìn)制數(shù)(補(bǔ)碼)形式存儲,每一個數(shù)值對應(yīng)一個字符?!產(chǎn)’的ASCII碼值為97,97對應(yīng)的八位二進(jìn)制數(shù)為01100001,所以,字符‘a(chǎn)’在內(nèi)存中存儲形式如下圖。舉例:01100001類型數(shù)據(jù)取值范圍char-128~127unsignedchar0~255字符型和整型字符型數(shù)據(jù)可以按整型數(shù)據(jù)處理,可以作為整數(shù)參加運(yùn)算,按整數(shù)形式輸出;在ASCII碼值范圍內(nèi)的整數(shù)可以按字符型數(shù)據(jù)來處理,按字符形式輸出,即字符型數(shù)據(jù)與整型數(shù)據(jù)具有通用性。程序代碼(1)#include<stdio.h>(2)intmain()(3){ (4)charx;(5)inty;(6)x=65;(7)y='B';(8)printf("x=%c\ny=%c\n",x,y);(9)printf("x=%d\ny=%d\n",x,y);(10)return0;(11)}示例該程序通過第(15)行的操作,能將一個大寫字母轉(zhuǎn)換為小寫字母。即字符型數(shù)據(jù)可以看成是整型數(shù)據(jù),整型數(shù)據(jù)可以看成是字符型數(shù)據(jù)。說明程序代碼:將大寫字母轉(zhuǎn)換為小寫字母(1)#include<stdio.h>(2)charToLower(charch);(3)intmain()(4){ (5)charch,low;(6)printf("請輸入一個大寫字母:");(7)scanf("%c",&ch);(8)
low=ToLower(ch);(9)
printf("大寫字母%c轉(zhuǎn)換為小寫字母是%c\n",ch,low);(10)return0;(11)}(12)charToLower(charch)(13){(14)chartlow;(15)
tlow=ch+32;(16)
returntlow;(17)}感謝觀看數(shù)據(jù)的輸出數(shù)據(jù)的輸出
把數(shù)據(jù)從計算機(jī)內(nèi)部送到計算機(jī)外部設(shè)備的操作稱為輸出。我們講的輸出設(shè)備主要指的是鍵盤和顯示器。C語言的輸出操作是通過調(diào)用函數(shù)來實現(xiàn)的,在C標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸出函數(shù)。
在使用C語言的庫函數(shù)時,由于庫函數(shù)的有關(guān)信息都在相關(guān)的頭文件中,所以在使用前應(yīng)在程序的開頭使用相應(yīng)的編譯預(yù)處理命令,即在使用前必須在程序的前面使用命令:#include
<stdio.h>
或#include"stdio.h"。格式化輸出函數(shù)2.3.1格式化輸出函數(shù)將輸出列表中的各個表達(dá)式的值,按格式控制字符串中對應(yīng)的格式,輸出到標(biāo)準(zhǔn)輸入/輸出設(shè)備上。1、
printf函數(shù)的功能格式化輸出函數(shù)printf("格式控制字符串",輸出列表);例如:printf("%d,%c,%f",a,b,c);通過上面的一般形式,可以看出printf函數(shù)有兩個參數(shù)(用逗號分隔),分別是格式控制字符串(注意該參數(shù)必須要用雙引號括起來)和輸出列表。2、
printf函數(shù)的調(diào)用格式格式化輸出函數(shù)#include<stdio.h>
voidmain()
{printf("thisisacprogram"); } 其在顯示器上的輸出結(jié)果為:thisisacprogram例:格式化輸出函數(shù)#include<stdio.h>voidmain(){
printf("*\n**\n***");}編譯運(yùn)行該程序后的輸出為:(注意在該例中“\n”為換行轉(zhuǎn)義字符)
******例:格式化輸出函數(shù)通過此例可以看出printf函數(shù)的第二個參數(shù)(輸出列表)不是必需的,那么到底什么時候該有第二個參數(shù)呢?printf函數(shù)輸出時會原樣輸出格式控制字符串中的非格式字符內(nèi)容,如格式控制字符串中有格式字符,則用輸出列表的相應(yīng)值代替該格式字符,上面的例子就是原樣輸出了格式控制字符串,因為其中并沒有格式字符,所以也沒有輸出列表。在有格式字符的情況下才要有輸出列表,那么什么是格式字符呢?格式化輸出函數(shù)編程計算半徑為2.1圓的面積。 #include<stdio.h> voidmain() {floatr,s; r=2.1;
s=3.14*r*r;}
例:編譯運(yùn)行該程序都沒有問題,但是運(yùn)行后我們無法查看結(jié)果(面積是多少?),原因是所求的面積是保存在變量s中的,但是程序并沒有輸出s的值,所以無法看到結(jié)果。格式化輸出函數(shù)作如下修改: #include<stdio.h> voidmain() {floatr,s; r=2.1; s=3.14*r*r; printf("area=s"); } 改:為程序添加了一條輸出語句,再次運(yùn)行該程序發(fā)現(xiàn)有輸出結(jié)果,但輸出的是“area=s”,而并不是具體的數(shù)值,也就是它輸出了變量s的變量名而不是變量值。原因還是上一小節(jié)所說的printf函數(shù)會原樣輸出格式控制字符串的非格式字符內(nèi)容,此例的printf函數(shù)中的s是一個普通字符而非格式字符。那么要輸出s的值該怎么做呢?格式化輸出函數(shù)對程序再作如下修改: #include
<stdio.h> void
main
()
{ float
r,s;
r=2.1; s=3.14*r*r;
printf("area=%f",s)
; }改:運(yùn)行程序后的輸出結(jié)果是:area=13.847399。此時可以看出上例中的“%f”就是一種格式字符,輸出時用輸出列表中的相應(yīng)值代替它(該例的輸出列表相應(yīng)值就是變量s的值)。格式化輸出函數(shù)格式字符由“%”開始(如上例的“%f”),后跟類型控制符。不同類型的數(shù)據(jù)輸出要使用不同的格式字符。(1)d格式符:用來輸出十進(jìn)制整數(shù)。3、
格式字符的形式和分類格式化輸出函數(shù)例: #include<stdio.h> voidmain() {
inta=3;
printf("a=%d",a); }
編譯運(yùn)行程序后輸出結(jié)果為:a=3格式化輸出函數(shù)格式字符說
明d,i以帶符號的十進(jìn)制形式輸出整數(shù)(正數(shù)不輸出符號)u用來輸出無符號的十進(jìn)制數(shù)o以八進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0)X,x以十六進(jìn)制無符號形式輸出整數(shù)(不輸出前導(dǎo)符0x),用x則輸出十六進(jìn)制的a-f時以小寫形式輸出,用X時,則以大寫形式輸出c輸出單個字符s輸出字符串f以小數(shù)形式輸出單、雙精度數(shù),隱含6位小數(shù)。用e時指數(shù)以“e”表示(如1.2e+02),用E時指數(shù)以E表示(如1.2E+02)g,G選用%f和%e格式中輸出寬度較短的一種格式,不輸出無意義的0;用G時,若以指數(shù)形式輸出,則指數(shù)以大寫表示E,e以指數(shù)形式輸出實數(shù),用E則輸出時,指數(shù)用E表示表printf格式字符格式化輸出函數(shù)字符說
明l用于長整型,可加在格式符d,o,x,u之前m(代表一個正整數(shù))數(shù)據(jù)最小寬度.n(代表一個正整數(shù))對實數(shù),表示輸出n位小數(shù);對字符串表示截取的字符個數(shù)-輸出的數(shù)字或字符在域內(nèi)向左靠表printf的修飾符字符數(shù)據(jù)操作之字符輸出函數(shù)字符輸出函數(shù)1.putchar調(diào)用格式:putchar(c);2.putchar函數(shù)的功能說明:(1)函數(shù)參數(shù)c的范圍(2)函數(shù)的功能【示例】
chara,b,c,d; a='g';b='o';c=111;d='d';
putchar(a);putchar(b);putchar(c);putchar(d);
程序段的運(yùn)行結(jié)果為:good注意:putchar
函數(shù)只能用于單個字符的輸出,并且一次只能輸出一個字符。感謝觀看數(shù)據(jù)操作之格式化輸入函數(shù)數(shù)據(jù)的輸入
從計算機(jī)外部設(shè)備將數(shù)據(jù)送到計算機(jī)內(nèi)部的操作稱為輸入。C語言的輸入操作是通過調(diào)用函數(shù)來實現(xiàn)的,在C標(biāo)準(zhǔn)函數(shù)庫中提供了一些輸入函數(shù)。
在使用C語言的庫函數(shù)時,由于庫函數(shù)的有關(guān)信息都在相關(guān)的頭文件中,所以在使用前,應(yīng)在程序的開頭使用相應(yīng)的編譯預(yù)處理命令,即在使用前必須在程序的前面使用命令:#include
<stdio.h>
或#include"stdio.h"。格式化輸入函數(shù)scanf函數(shù)稱為格式輸入函數(shù),即按用戶指定的格式從鍵盤將數(shù)據(jù)輸入到指定的變量之中。scanf(“格式控制字符串”,地址表列);1、
scanf函數(shù)調(diào)用格式:格式化輸入函數(shù)scanf("%d,%d",&a,&b);其中,格式控制字符串的作用和printf函數(shù)的相同,但不能顯示非格式字符串,也就是不能顯示提示字符串。地址表列中給出各變量的地址。地址是由地址運(yùn)算符“&”后跟變量名組成的。例如:&a,&b,分別表示變量a和變量b的地址。符號“&”的作用是取得變量在內(nèi)存中的地址,如:例:圖表示變量a所在內(nèi)存單元的地址為102,其存放的值為28;變量b所在內(nèi)存單元的地址為106,其存放的值為29。那么&a的值是多少呢?不是28而是102。scanf函數(shù)用取地址運(yùn)算符“&”的作用就是將從鍵盤輸人的數(shù)據(jù)存到對應(yīng)地址的內(nèi)存單元中。格式化輸入函數(shù)編程實現(xiàn)輸入一個圓的半徑,輸出其面積。例:#include<stdio.h> main() { floatr,s; scanf("%f",&r); s=3.14*r*r; printf("r=%3.1f,s=%5.2f",r,s); } 若輸人的半徑為3,則輸出是:r=3.0,s=28.26。格式化輸入函數(shù)例:inta,b;scanf("%d%*d%d",&a,&b);printf("%d,%d\n",a,b);如果輸入數(shù)據(jù)為:12345678↙輸出結(jié)果為:123,678。格式化輸入函數(shù)1系統(tǒng)如何分割數(shù)據(jù)流中的數(shù)據(jù)送給相應(yīng)的變量呢?有以下4種方法。①根據(jù)格式說明規(guī)定的數(shù)據(jù)類型從數(shù)據(jù)流中取得數(shù)據(jù),即當(dāng)數(shù)據(jù)流的數(shù)據(jù)類型與格式說明的類型不一致時,就認(rèn)為這一數(shù)據(jù)項結(jié)束。例:inta;charch;floatx;scanf("%d%c%f",&a,&ch,&x);如果輸入流為:123%456.78↙如果輸入流為123%456.78↙,
系統(tǒng)將輸入流送入緩沖區(qū),然后按格式%d為變量a讀入數(shù)據(jù),當(dāng)讀到數(shù)據(jù)%時發(fā)現(xiàn)類型不符,于是把123存入變量a的內(nèi)存單元,再把字符%存入變量ch的內(nèi)存單元,最后把456.78存入變量x的內(nèi)存單元。②根據(jù)格式說明中指定的域?qū)拸臄?shù)據(jù)流中分割數(shù)據(jù)。格式化輸入函數(shù)例:chara;intb;scanf("%3c%3d",&a,&b);printf("%c,%d\n",a,b);如果輸入流為:ab12345↙,則輸出結(jié)果為:a,234。③通過在格式字符串指定分割符來分割數(shù)據(jù),分割符可以是一切非格式字符。格式化輸入函數(shù)例:inta,b;printf("a=,b=:");scanf("a=%d,b=%d",&a,&b);在輸入數(shù)據(jù)時應(yīng)輸入:a=456,b=789↙。④在格式字符串中沒有指定分割符時,常使用空格、Tab鍵、回車鍵來分割數(shù)據(jù)。格式化輸入函數(shù)例:intk1,k2;scanf("%d%d",&k1,&k2);輸入流可以是1020↙,也可以是10↙20↙,還可以是10(按Tab鍵)20↙。格式化輸入函數(shù)表scanf格式字符格式字符說
明d,i用來輸入有符號的十進(jìn)制數(shù)u用來輸入無符號的十進(jìn)制數(shù)o用來輸入無符號的八進(jìn)制數(shù)X,x用來輸入無符號的十六進(jìn)制數(shù)(大小寫效果一致)c用來輸入單個字符s用來輸入字符串,將字符串送到一個字符數(shù)組中,在輸入時以非空白字符開始,以第一個空白字符結(jié)束。字符串以串結(jié)束標(biāo)志’\0’作為其最后一個字符f用來輸入實數(shù),可以用小數(shù)形式或指數(shù)形式輸入E,e,g,G與f的作用相同,e與f,g可以相互替換(大小寫作用相同)格式化輸入函數(shù)表scanf的附加格式說明字符字符說
明l用于輸入長整型數(shù)據(jù)(可用%ld,%lo,%lx)以及double型數(shù)據(jù)(%lf,%le)域?qū)捴付ㄝ斎霐?shù)據(jù)所占寬度(列數(shù)),域?qū)拺?yīng)該是正整數(shù)*表示本輸入項在讀入后不賦給相應(yīng)的變量格式化輸入函數(shù)使用scanf函數(shù)時應(yīng)注意的問題如果在格式控制字符串中除了格式字符外還有其它字符,則在輸入數(shù)據(jù)時在對應(yīng)的位置輸入這些字符,如通過下列語句將x賦值為3:intx; scanf("x=%d",&x);應(yīng)該輸入x=3,而不是直接輸入3.(1):
格式化輸入函數(shù)在用“%c”格式輸入字符時,空格作為有效字符輸入。如:char
a,b,c;scanf
("%c%c%c",
&a,
&b,
&c)
;若輸入
mnk后回車,則m賦給a,第一個空格賦給b,n賦給c。如想a、b、c得到的值為m、n、k,則應(yīng)輸入mnk后回車。(2):
在用“%c”格式輸入字符時,空格作為有效字符輸入。如:char
a,b,c;scanf
("%c%c%c",
&a,
&b,
&c)
;若輸入
mnk后回車,則m賦給a,第一個空格賦給b,n賦給c。如想a、b、c得到的值為m、n、k,則應(yīng)輸入mnk后回車。(3):
格式化輸入函數(shù)例:inta,b,c,d;scanf("%d%d",&a,&b);scanf("%d%d",&c,&d);若輸入流為1234567890↙程序段執(zhí)行時,先執(zhí)行第一個scanf
函數(shù),若輸入流為1234567890↙,則把這些數(shù)據(jù)存入緩沖區(qū),并從緩沖區(qū)中讀入數(shù)據(jù)12、34分別存入變量a、b的存儲單元,由于緩沖區(qū)中還有數(shù)據(jù),所以,在執(zhí)行第二個scanf函數(shù)時,直接從緩沖區(qū)中讀入數(shù)據(jù)56、78分別存入變量c、d的存儲單元。數(shù)據(jù)操作之字符輸入函數(shù)字符輸入函數(shù)1.getchar調(diào)用格式:ch=getchar();2.getchar函數(shù)的功能說明:(1)該函數(shù)沒有參數(shù)(2)從鍵盤輸入的數(shù)據(jù)通過回車鍵確認(rèn)結(jié)束(3)該函數(shù)得到字符的使用情況(4)該函數(shù)常與putchar配合使用
【示例】
charc; c=getchar(); putchar(c);如果從鍵盤輸入a↙則輸出結(jié)果為:a【示例】
putchar(getchar());用getchar讀入的字符直接用putchar輸出。
感謝觀看關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符和關(guān)系表達(dá)式在C語言中,比較符(或稱比較運(yùn)算符)稱為關(guān)系運(yùn)算符。所謂“關(guān)系運(yùn)算”就是“比較運(yùn)算”,將兩個數(shù)值進(jìn)行比較,判斷其比較的結(jié)果是否符合給定的條件。關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算什么是關(guān)系運(yùn)算?“關(guān)系運(yùn)算”就是“比較運(yùn)算”。即將兩個值進(jìn)行比較,判斷是否符合或滿足給定的條件。符合或滿足給定的條件真1不符合或不滿足給定的條件假0關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符<
(小于)關(guān)系運(yùn)算符1<=(小于等于)2>(大于)3>=(大于等于)4==(等于)5!=(不等于)6關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符優(yōu)先級(1)前4種關(guān)系運(yùn)算符的優(yōu)先級別相同,后2種也相同。前4種高于后2種。a>b==c等效于(a>b)==c(大于運(yùn)算符>的優(yōu)先級高于相等運(yùn)算符==)a==b<c等效于a==(b<c)(小于運(yùn)算符<的優(yōu)先級高于相等運(yùn)算符==)<
(小于)關(guān)系運(yùn)算符1<=(小于等于)2>(大于)3>=(大于等于)4==(等于)5!=(不等于)6關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符優(yōu)先級(2)關(guān)系運(yùn)算符的優(yōu)先級低于算術(shù)運(yùn)算符。c>a+b等效于c>(a+b)(關(guān)系運(yùn)算符>的優(yōu)先級低于算術(shù)運(yùn)算符+)a==b-c等效于a==(b-c)(等于運(yùn)算符==的優(yōu)先級低于算數(shù)運(yùn)算符-)<
(小于)關(guān)系運(yùn)算符1<=(小于等于)2>(大于)3>=(大于等于)4==(等于)5!=(不等于)6算術(shù)運(yùn)算符高優(yōu)先級低關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符優(yōu)先級<
(小于)關(guān)系運(yùn)算符1<=(小于等于)2>(大于)3>=(大于等于)4==(等于)5!=(不等于)6算術(shù)運(yùn)算符賦值運(yùn)算符高優(yōu)先級低(3)關(guān)系運(yùn)算符的優(yōu)先級高于賦值運(yùn)算符。a=b>c等效于a=(b>c)(關(guān)系運(yùn)算符>的優(yōu)先級高于賦值運(yùn)算符=)關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系運(yùn)算符結(jié)合性關(guān)系運(yùn)算符的結(jié)合性:自左到右。等效于(a>b)>c(大于運(yùn)算符>的結(jié)合性是從左到右,因此,先判斷左邊的a>b,再依次判斷a>b的結(jié)果是否大于c。)等效于(a>b)<c(由于大于運(yùn)算符和小于運(yùn)算符的優(yōu)先級相同,結(jié)合性都是從左到右,因此,先判斷左邊的a>b,再依次判斷a>b的結(jié)果是否小于c。)關(guān)系運(yùn)算符和關(guān)系表達(dá)式關(guān)系表達(dá)式用關(guān)系運(yùn)算符將兩個數(shù)值或數(shù)值表達(dá)式連接起來的式子,稱為關(guān)系表達(dá)式。關(guān)系表達(dá)式的值是一個邏輯值,即“真”或“假”。在C的邏輯運(yùn)算中,以“1”代表“真”,以“0”代表“假”。若a=3,b=2,c=1,則:d=a>b,由于a>b為真,因此關(guān)系表達(dá)式a>b的值為1,所以賦值后d的值為1。f=a>b>c,則f的值為0。因為“>”運(yùn)算符是自左至右的結(jié)合方向,先執(zhí)行“a>b”得值為1,再執(zhí)行關(guān)系運(yùn)算“1>c”,得值0,賦給f,所以f的值為0關(guān)系運(yùn)算符和關(guān)系表達(dá)式總結(jié)在關(guān)系表達(dá)式計算過程當(dāng)中,計算順序由參與運(yùn)算的優(yōu)先級和結(jié)合性來確定。關(guān)系運(yùn)算符和關(guān)系表達(dá)式舉例(1)若a=3,b=2,c=1,判斷下列表達(dá)式的值:a>b、b+c<a(2)用關(guān)系表達(dá)式描述以下簡單條件:兒童、老人、及格、偶數(shù)關(guān)系運(yùn)算符和關(guān)系表達(dá)式舉例解:(1)由于a=3,b=2,c=1,因此:a>b相當(dāng)于3>2,為真,即表達(dá)式a>b的值為1;b+c<a相當(dāng)于(b+c)<a,即:3<3,為假,表達(dá)式b+c<a的值為0。(2)兒童:age<=6老人:age>=60及格:score>=60偶數(shù):n%2==0關(guān)系運(yùn)算符和關(guān)系表達(dá)式思考若a=5,b=3,c=1,則表達(dá)式a>b>c的值是多少呢?關(guān)系運(yùn)算符和關(guān)系表達(dá)式解:由于a=5,b=3,c=1,因此:a>b相當(dāng)于5>3,為真,即表達(dá)式a>b的值為1;
(a>b)>c相當(dāng)于1>c,即:1>1,為假,表達(dá)式a>b>c的值為0。先計算a>b,結(jié)果為真,值為1。再計算1>c,結(jié)果為假,值為0。所以,表達(dá)式a>b>c的值是0。感謝觀看邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符和邏輯表達(dá)式用邏輯運(yùn)算符將關(guān)系表達(dá)式或其他邏輯量連接起來的式子就是邏輯表達(dá)式。邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算什么是邏輯運(yùn)算?邏輯運(yùn)算又稱布爾運(yùn)算。用等式表示判斷,把推理看作等式的變換。這種變換的有效性不依賴人們對符號的解釋,只依賴于符號的組合規(guī)律。它通常用來測試真假值。邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符“&&”和“‖”是雙目運(yùn)算符,要求有兩個運(yùn)算對象(操作數(shù));“!”是單目運(yùn)算符,只要有一個運(yùn)算對象。邏輯運(yùn)算結(jié)果不是0就是1,不可能是其他數(shù)值。而在邏輯表達(dá)式中作為參加邏輯運(yùn)算的運(yùn)算對象可以是0(“假”)或任何非0的數(shù)值(按“真”對待)運(yùn)算符含義舉例說明!邏輯非(NOT)!a如果a為假,則!a為真;如果a為真,則!a為假&&邏輯與(AND)a&&b如果a和b都為真,則結(jié)果為真,否則為假|(zhì)|邏輯或(OR)a||b如果a和b有一個以上為真,則結(jié)果為真,二者都為假時,結(jié)果為假邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符的真值表ab!a!ba&&ba||b真(非0)真(非0)假(0)假(0)真(1)真(1)真(非0)假(0)假(0)真(1)假(0)真(1)假(0)真(非0)真(1)假(0)假(0)真(1)假(0)假(0)真(1)真(1)假(0)假(0)邏輯運(yùn)算符和邏輯表達(dá)式邏輯運(yùn)算符優(yōu)先級:!(非)→&&(與)→‖(或)即,“!”為三者中最高的;邏輯運(yùn)算符中的“&&”和“‖”低于關(guān)系運(yùn)算符,“!”高于算術(shù)運(yùn)算符。結(jié)合性:“&&”和“‖”的結(jié)合性為左結(jié)合性;“!”的結(jié)合性為右結(jié)合性。邏輯運(yùn)算符和邏輯表達(dá)式邏輯表達(dá)式使用邏輯運(yùn)算符將比較對象連接而成的表達(dá)式稱為邏輯表達(dá)式。其中,比較對象可以是常量、變量,也可以是一個表達(dá)式。邏輯運(yùn)算符和邏輯表達(dá)式邏輯表達(dá)式在判斷一個參與運(yùn)算的量為真或為假時,以0為假,而所有非0的數(shù)都為真。邏輯表達(dá)式可以嵌套,組成邏輯表達(dá)式嵌套。如:(a&&b)&&c //可寫成a&&b&&c在使用多個&&和||連接的邏輯表達(dá)式中,并不是每一個表達(dá)式都一定要被執(zhí)行。如:(a=1)&&(b=0)//要得出這個表達(dá)式的值,先求a=1的值,為1,這時還不能判斷整個表達(dá)式的值,必須再執(zhí)行b=O,這個表達(dá)式的值為O,所以由1&&0得到0。(a=0)&&(b=5)//要得出這個表達(dá)式的值,先求a=0的值,為0,這時真?zhèn)€表達(dá)式的值必定為0,得到這個結(jié)果不需要執(zhí)行表達(dá)式b=5。邏輯運(yùn)算符和邏輯表達(dá)式舉例求以下表達(dá)式的值:(1)(b=1)&&(a=2)(2)(b=5)||(a=0)邏輯運(yùn)算符和邏輯表達(dá)式解析解:(1)由于b=1的值為1,邏輯值為真,即:1;a=2的值為2,邏輯值為真,即:1;(b=1)&&(a=2)可化為1&&1,為真,值為1。因此:(b=1)&&(a=2)的值為1.
(2)由于b=5的值為5,邏輯值為真,根據(jù)或運(yùn)算的運(yùn)算規(guī)則,表達(dá)式(b=5)||(a=0)的值必定為真,值為1。邏輯運(yùn)算符和邏輯表達(dá)式舉例根據(jù)下面所給出的判定條件寫出關(guān)系或邏輯表達(dá)式。(1)年齡在18歲至25歲之間(2)整數(shù)i是偶數(shù)且不能被7整除(3)字符變量ch的值是一個英文字母邏輯運(yùn)算符和邏輯表達(dá)式解析解:(1)(age>=18)&&(age<=50)或age>=18&&age<=50
(2)(i%2==0)&&(i%7!=0)
(3)(ch>=’a’&&ch<=’z’)||(ch>=’A’&&ch<=’Z’)或:(ch>=97&&ch<=122)||(ch>=65&&ch<=90)邏輯運(yùn)算符和邏輯表達(dá)式總結(jié)關(guān)系表達(dá)式和邏輯表達(dá)式的值是0和1,而且在判斷一個量是否為“真”時,以0代表“假”,以非0代表“真”。那么就可以理解為什么在if語句中表達(dá)式可以是任何數(shù)值表達(dá)式。if(x!=0)語句1 //括號內(nèi)的表達(dá)式是關(guān)系表達(dá)式,如果x不等于0,執(zhí)行語句1if(x>0&&y>0)語句2 //表達(dá)式是邏輯表達(dá)式,如果x和y都大于0,執(zhí)行語句2if(x)語句3 //表達(dá)式是變量,如果x不等于0,則條件判斷結(jié)果為真,執(zhí)行語句3if(1)語句4 //表達(dá)式是非0整數(shù),條件判斷結(jié)果為真,執(zhí)行語句4if(0)語句5 //表達(dá)式是整數(shù)0,條件判斷結(jié)果為假,不執(zhí)行語句5,接著執(zhí)行下一語句邏輯運(yùn)算符和邏輯表達(dá)式思考判別用year表示的某一年是否閏年,可以用一個邏輯表達(dá)式來表示。閏年的條件是符合下面二者之一:①能被4整除,但不能被100整除,如2008。②能被400整除,如2000。(year%4==0&&year%100!=0)‖year%400==0感謝觀看if語句if語句if語句用if語句可以編寫選擇結(jié)構(gòu)的程序,它根據(jù)給定的條件進(jìn)行判斷,根據(jù)判斷結(jié)果決定執(zhí)行結(jié)果決定執(zhí)行對應(yīng)的語句(塊)。if語句最基本的if語句if(條件表達(dá)式)語句最基本的if語句的一般形式:或:if(條件表達(dá)式)語句執(zhí)行過程:如果條件表達(dá)式的值為真,則執(zhí)行緊跟其后的語句,否則不執(zhí)行該語句,跳到下一條語句執(zhí)行。表達(dá)式語句真(非0)假(0)流程圖:if語句最基本的if語句if后面括號中的表達(dá)式可以是各種類型的表達(dá)式。如:if(a>b&&b>c)、if(!n)、if(x=5)、if(i%5==0)若滿足表達(dá)式后要執(zhí)行多條語句,必須將這些語句用大括號括起來。如:if(a>b){t=a;a=b;b=t;}if語句舉例輸入兩個整數(shù),輸出其中較大的數(shù)。解:程序代碼:
#include“stdio.h”voidmain(){inta,b,max;printf(“pleaseinputtwonumber:”);scanf(“%d%d”,&a,&b);max=a;if(max<b)max=b;printf(“\nthemaximunis:%d\n”,max);}if語句舉例輸入一個數(shù),并求其絕對值。解:程序代碼:
#include“stdio.h”voidmain(){intx;printf(“\npleaseinputanumber:”);scanf(“%d”,&x);if(x<0)x=-x;printf(“%d”,x);}if語句if-else語句if(條件表達(dá)式)語句1else語句2if-else語句的一般形式:執(zhí)行過程:如果條件表達(dá)式的值為真,則執(zhí)行語句1,否則執(zhí)行語句2。流程圖:表達(dá)式真(非0)語句A語句B假(0)if語句舉例輸入兩個整數(shù),用if-else語句輸出其中較大的數(shù)。解:程序代碼:#include“stdio.h”main(){inta,b,max;printf(“pleaseinputtwonumber:”);scanf(“%d,%d”,&a,&b);if(a>b)max=a;elsemax=b;printf(“themaximunis:%d\n”,max);}if語句舉例判斷某一年是否是閏年,判斷閏年的條件為下面二者之一:(1)能被4整除,但不能被100整除;(2)能被400整除。解:程序代碼:#include“stdio.h”main(){intyear;printf(“pleaseinputtheyear(0-9999:)”);scanf(“%d”,&year);if(year%4==0&&year%100!=0||year%400==0)printf(“%dThisisaleapyear.\n”,year);elseprintf(“%dThisisnotaleapyear.\n”,year);}if語句if-else-if語句if(條件表達(dá)式1)語句1elseif(條件表達(dá)式2)語句2elseif(條件表達(dá)式3)語句3……elseif(條件表達(dá)式m)語句melse語句nif-else-if語句的一般形式:執(zhí)行過程:如果條件表達(dá)式1的值為真,則執(zhí)行語句1,否則判斷表達(dá)式2;如果表達(dá)式2的值為真,則執(zhí)行語句2,否則判斷表達(dá)式3……,直到找到一個條件成立,執(zhí)行其中一條語句。然后跳到整個if語句之外,執(zhí)行下一條語句。如果所有的表達(dá)式均為假,則執(zhí)行語句n,然后結(jié)束該if機(jī)構(gòu),執(zhí)行下一條語句。if語句if-else-if語句流程圖:表達(dá)式1語句1Y表達(dá)式2NNYYN…表達(dá)式3語句2語句3if語句if-else-if語句最后一個else和語句n并不是必須的。如果是這種情況,且所有的if條件都不滿足,則什么也不做,跳出該if結(jié)構(gòu)去執(zhí)行下一條語句(相當(dāng)于else后面寫一個空語句)。如:if(x>0)y=1;elseif(x<0)y=-1;elsey=0;可改寫為:y=0;if(x>0)y=1;elseif(x<0)y=-1;else;y=0;if(x>0)y=1;elseif(x<0)y=-1;或:if語句舉例編寫程序,根據(jù)輸入的學(xué)生成績給出相應(yīng)的等級,大于或等于90分以上的等級為A,60分以下的等級為E,其余每10分為一個等級。解:程序代碼:#include“stdio.h”main(){intscore;printf("Pleaseinputscore:");scanf("%d",&score);if(score<60)printf("%d----------E\n",score);elseif(score<70)printf("%d----------D\n",score);elseif(score<80)printf("%d----------C\n",score)elseif(score<90)printf("%d----------B\n",score);elseprintf("%d----------A\n",score);
}if語句if語句的嵌套
if(表達(dá)式1)if(表達(dá)式2)語句1else語句2elseif(表達(dá)式3)語句3else語句4if語句嵌套的一般形式:(1)嵌套if語句使用非常靈活,任何if語句都可以嵌套;(2)在嵌套內(nèi)的if語句中也可以嵌套if結(jié)構(gòu),即出現(xiàn)多重嵌套的情況;(3)在多個if和else出現(xiàn)是嵌套結(jié)構(gòu)中,要注意if和else的配對,else總是與離它最近并且沒有配對的if配對。如:if(x!=0)if(x>0)y=1;elsey=-1;上述else與第二個if配對。if語句舉例根據(jù)下面算式的要求,編寫程序,輸入x,輸出對應(yīng)的y值。
-1(x<0)y=
0(x=0)
1(x>0)用一個嵌套的if語句處理S1:輸入xS2:若x<0,則y=-1S3:否則S4:若x=0,則y=0S5:否則(即x>0),則y=1S6:輸出y算法步驟if語句舉例解:程序代碼:#include“stdio.h”main(){intx,y;scanf(“%d”,&x);if(x<0)y=-1;elseif(x==0)y=0;elsey=1;printf(“x=%d,y=%d\n”,x,y);}感謝觀看switch語句switch語句switch語句switch語句又稱為開關(guān)語句,專門用于處理多分支選擇問題,比復(fù)合if
語句及嵌套if語句更方便靈活,程序可讀性也更高。switch語句switch語句switch語句的一般形式:執(zhí)行過程:首先計算表達(dá)式的值,并逐個與case后面的常量表達(dá)式值相比較,當(dāng)該表達(dá)式的值與某個常量表達(dá)式的值相等時,即執(zhí)行這個case后面的語句。然后跳出switch機(jī)構(gòu),去執(zhí)行下一條語句。如果表達(dá)式的值與所有case后的常量表達(dá)式均不同,則執(zhí)行default后所跟的語句。switch(表達(dá)式){case常量表達(dá)式1:語句1;break;case常量表達(dá)式2:語句2;break;……case常量表達(dá)式n:語句n;break;default:語句n+1;}switch語句switch語句流程圖:=常量1語句1=常量2=常量nbreak;計算表達(dá)式Y(jié)NN...語句2break;Y語句nbreak;Ydefault:語句n+1switch語句swicth語句說明(1)switch括號后面的表達(dá)式,允許為任何類型。一般為整型或字符型等有序類型;(2)當(dāng)“表達(dá)式”的值與某個case后面的常量表達(dá)式的值相等時,就執(zhí)行此case后面的語句。如果表達(dá)式的值與所有常量表達(dá)式都不匹配,就執(zhí)行default后面的語句(如果沒有default就執(zhí)行跳出switch,執(zhí)行switch語句后面的語句);switch(a){case1:printf(“A\n”);break;case2:printf(“B\n”);break;case3:printf(“C\n”);break;default:printf(“inputerror\n”);}switch語句swicth語句說明(3)每個case后的常量表達(dá)式的值不能相同,即不能出現(xiàn)同時可選多個case的情況;(4)各個case、default出現(xiàn)的順序不影響執(zhí)行結(jié)果;switch(a){case1:printf(“A\n”);break;case2:printf(“B\n”);break;case3:printf(“C\n”);break;default:printf(“inputerror\n”);}switch語句swicth語句說明(5)多個case可以關(guān)聯(lián)到同一個執(zhí)行語句上,共用一個執(zhí)行語句,即:執(zhí)行完一個case后面的語句后(子句最后沒有break),流程控制轉(zhuǎn)移到下一個case中的語句繼續(xù)執(zhí)行;(6)在執(zhí)行一個分支后,可以使用break語句使流程跳出switch結(jié)構(gòu),即終止switch語句的執(zhí)行(最后一個分支可以不用break語句);switch(a){case1:case2:printf(“A\n”);break;case3:printf(“C\n”);break;default:printf(“inputerror\n”);}switch語句swicth語句說明(7)case后面如果有多條語句,不必用{}括起來。switch(a){case1:printf(“A\n”);break;case2:printf(“B\n”);break;case3:{t=a;a=b;b=t;}break;default:printf(“inputerror\n”);}switch語句舉例輸入一個1到7之間的數(shù),并將其轉(zhuǎn)換為英文的星期幾輸出。解:程序代碼:
#include“stdio.h”voidmain(){inta;printf(“inputaintegernumber:”
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024版大數(shù)據(jù)分析與運(yùn)用許可合同3篇
- 2024版休閑農(nóng)業(yè)場地租賃服務(wù)承諾書3篇
- 2024年度股權(quán)轉(zhuǎn)讓合同標(biāo)的與對價2篇
- 2024版二手房預(yù)約買賣合同模板2篇
- 2024年度金融科技合作開發(fā)合同范本2篇
- 2024年度泵房租賃及運(yùn)營合同6篇
- 2024年度全職媽媽離婚前知識產(chǎn)權(quán)保護(hù)合同2篇
- 2024年汽車修理廠合伙經(jīng)營市場拓展協(xié)議3篇
- 分伙協(xié)議合同范例
- 養(yǎng)殖企業(yè)入股合同范例
- 三基考試題庫與答案
- 2024年廣東省2024屆高三二模英語試卷(含標(biāo)準(zhǔn)答案)
- 全飛秒激光近視手術(shù)
- 2024年制鞋工專業(yè)知識考試(重點(diǎn))題庫(含答案)
- 2023-2024學(xué)年廣州大附屬中學(xué)中考一模物理試題含解析
- 綠化養(yǎng)護(hù)工作日記錄表
- 2024美的在線測評題庫答案
- 2024版高考數(shù)學(xué)二輪復(fù)習(xí):解析幾何問題的方法技巧
- 輿情監(jiān)測服務(wù)方案
- 北京市海淀區(qū)2023-2024學(xué)年八年級上學(xué)期期末英語試卷
- 果品類原料的烹調(diào)應(yīng)用課件
評論
0/150
提交評論