




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第1章C語言概述01C語言的發(fā)展史02C語言的特性03一個(gè)簡單的C程序04一個(gè)完整的C程序05C語言程序的格式06開發(fā)環(huán)境C語言的發(fā)展史程序語言簡述低級語言機(jī)器語言匯編語言高級語言FortranALGOL60CobolBasicPascalPrologC/C++JavaC語言的歷史ALGOL6019601963CPLA語言1967BCPL1970B語言1973C語言第一個(gè)UNIX操作系統(tǒng)1988制定ANSI標(biāo)準(zhǔn)編程語言的學(xué)習(xí)方向C語言其他語言1其他語言2其他語言3其他語言4其他語言5……其他語言6編程語言的學(xué)習(xí)方向C語言C++Visual
C++JavaJavaScriptHTMLAndroidC#A嵌入式Objective-cC語言的特點(diǎn)C語言的特點(diǎn)特點(diǎn)高效性靈活性功能豐富表達(dá)力強(qiáng)移植性好一個(gè)簡單的C程序第一個(gè)C語言程序#include<stdio.h>intmain(){ printf("Hello,world!I'mcoming!\n"); /*輸出要顯示的字符串*/ return0; /*程序返回0*/}結(jié)果DOS窗口中顯示“Hello,world!I'mcoming!”代碼分析01#include<stdio.h>03intmain()04{02
05 printf("Hello,world!I'mcoming!\n"); /*輸出要顯示的字符串*/06 return0; /*程序返回0*/07}"stdio.h"轉(zhuǎn)義字符函數(shù)頭//輸出要顯示的字符串//程序返回0主函數(shù)的結(jié)束標(biāo)志一個(gè)完整的C程序完整的C程序定義頭文件宏定義函數(shù)聲明主函數(shù)的函數(shù)頭主函數(shù)的函數(shù)體定義變量輸出語句輸入語句調(diào)用函數(shù)calculate()函數(shù)返回值定義函數(shù)calculate()結(jié)果長方形的高度為:10請輸入長度2請輸入寬度5長方形的體積是:100C語言程序的格式C語言的格式特點(diǎn)主函數(shù)main(){}函數(shù);大小寫通用空格空行開發(fā)環(huán)境DevC++安裝DevC++1了解DevC++的主界面2常用快捷鍵3設(shè)置DOS窗口文字和背景顏色VisualC++6.0安裝VisualC++6.01了解VisualC++6.0的主界面2常用快捷鍵3VisualStudio2019VisualStudio20191了解VisualStudio2019的主界面2常用快捷鍵3第2章算法01算法的基本概念02算法的描述算法的基本概念什么是算法?食材配料操作步驟數(shù)據(jù)算法程序算法的特性有窮性確定性可行性輸入輸出算法的優(yōu)劣1、正確性2、可讀性3、健壯性4、時(shí)間復(fù)雜度與空間復(fù)雜度算法的描述算法的外在表現(xiàn)自然語言自然語言例任意輸入3個(gè)數(shù),求這3個(gè)數(shù)中的最小數(shù)。①、定義4個(gè)變量分別為x、y、z以及min②、輸入大小不同的3個(gè)數(shù)分別賦給x、y、z③、判斷x是否小于y,如果小于,則將x的值賦給min,否則將y的值賦給min④、判斷min是否小于z,如果小于,則執(zhí)行步驟
⑤,否則將z的值賦給min⑤、將min的值輸出流程圖流程圖起止輸入/輸出判斷處理流程1、順序結(jié)構(gòu)2、選擇結(jié)構(gòu)3、循環(huán)結(jié)構(gòu)順序結(jié)構(gòu)AB例輸入兩個(gè)數(shù)分別賦給變量i和j,再將這兩個(gè)數(shù)分別輸出。開始輸入兩個(gè)數(shù)賦值給i和j結(jié)束輸出變量i和j的值選擇結(jié)構(gòu)A判斷B成立不成立例輸入一個(gè)數(shù),判斷該數(shù)是否為偶數(shù),并給出相應(yīng)提示。開始輸入一個(gè)數(shù)賦值給i結(jié)束判斷i能否被2整除YNi是偶數(shù)i不是偶數(shù)循環(huán)結(jié)構(gòu)A判斷成立不成立例求1到100的整數(shù)和。開始結(jié)束i>100N輸出sumi=1;sum=0;sum=sum+i;i++;綜合練習(xí)例輸入a、b、c三個(gè)數(shù),并按大小輸出。開始結(jié)束a>bNa與b互換輸入a、b、c三個(gè)數(shù)Ya<c順序輸出c、a、bb<c順序輸出a、c、b順序輸出a、b、cNYNYN-S流程圖N-S流程圖ABA判斷B成立不成立A判斷成立不成立順序結(jié)構(gòu)AB輸入兩個(gè)值分別賦給變量i和j將變量i和j的值輸出例輸入兩個(gè)數(shù)分別賦給變量i和j,再將這兩個(gè)數(shù)分別輸出。選擇結(jié)構(gòu)輸入一個(gè)數(shù)賦給變量i輸出i是偶數(shù)例輸入一個(gè)數(shù),判斷該數(shù)是否為偶數(shù),并給出相應(yīng)提示。輸出i不是偶數(shù)ABPYN判斷i是否能被2整除YN循環(huán)結(jié)構(gòu)例求1到100的整數(shù)和。當(dāng)P成立i<=100i=1;sum=0;sum=sum+i;i++;輸出sum第3章數(shù)據(jù)類型01編程規(guī)范02關(guān)鍵字03標(biāo)識符04數(shù)據(jù)類型05常量06變量07變量的存儲類別08混合運(yùn)算編程規(guī)范編程規(guī)范代碼縮進(jìn)函數(shù)的命名規(guī)范變量、常量命名規(guī)范注釋Tab關(guān)鍵字32個(gè)關(guān)鍵字autodoubleintstructbreakelselongswitchcaseenumregistertypedefcharexternunionreturnconstfloatshortunsignedcontinueforsignedvoiddefaultgotosizeofvolatiledowhilestaticif標(biāo)識符什么是標(biāo)識符?標(biāo)識符變量名函數(shù)名數(shù)組名標(biāo)識符的命名規(guī)則1、以字母、下劃線開頭int!number;int2hao;int_hao;intnumber;2、除開頭外,其他位置都可以由字母、下劃線或數(shù)字組成intgood_way;intcar6V;3、區(qū)分大小寫字母intmingri;intMINGRI;intMingRi;≠≠4、標(biāo)識符不是關(guān)鍵字intint;intInt;5、具有相關(guān)的含義6、不要將標(biāo)識符設(shè)定的過長不推薦數(shù)據(jù)類型C語言中有哪些數(shù)據(jù)類型數(shù)據(jù)類型基本類型構(gòu)造類型指針類型空類型整型字符型實(shí)型枚舉型單精度型雙精度型數(shù)組型結(jié)構(gòu)體型共用體型常量什么是常量?常量的值在程序運(yùn)行過程中不可改變。常量數(shù)值型常量字符型常量符號常量整型常量可以直接使用的整型常數(shù)num=101;height=-4932;定義十進(jìn)制數(shù)字進(jìn)制數(shù)十進(jìn)制數(shù)字八進(jìn)制數(shù)字十六進(jìn)制數(shù)字不以0開頭包含數(shù)字0~9以0開頭包含數(shù)字0~7以0x開頭包含數(shù)字0~9及字母A~FOctalNumber1=356;OctalNumber2=0492;OctalNumber3=057;HexNumber1=0x123;HexNumber2=89j2;實(shí)型常量實(shí)型num1=10.1;num2=0.432;浮點(diǎn)型小數(shù)實(shí)型常量的表示法num1=10.1;num2=0.432;1、科學(xué)計(jì)數(shù)法2、指數(shù)方式eSciNum1=45e2=45*102=4500SciNum2=45e-2=45*10-2=0.45實(shí)型常量的分類雙精度double單精度float長雙精度longdouble6~715~1618~19FloatNum=1.2345e2F;LongDoubleNum=5.458e-1L;DoubleNum=1.2345e2;默認(rèn)字符型常量字符型常量字符常量字符串常量1、一個(gè)字符2、''3、區(qū)分大小寫'a''#''a''A'≠'a''ab'1、多個(gè)字符2、"""Haveagoodday!"轉(zhuǎn)移字符常量的值在程序運(yùn)行過程中不可改變。轉(zhuǎn)義字符意義轉(zhuǎn)義字符意義\n回車換行\(zhòng)\反斜杠“\”\t橫向跳到下一制表位置\'單引號符\v豎向跳格\a鳴鈴\b退格\ddd1~3位八進(jìn)制數(shù)所代表的字符\r回車\xhh1~2位十六進(jìn)制數(shù)所代表的字符\f走紙換頁符號常量#definePAI3.14符號變量什么是變量?變量的值在程序運(yùn)行過程中可以進(jìn)行改變。變量整型變量實(shí)型變量字符型變量整型變量整型變量基本型無符號型-231~(231-1)基本型短整型長整型占4個(gè)字節(jié)int-215~(215-1)占2個(gè)字節(jié)shortint或short-231~(231-1)占4個(gè)字節(jié)longint或long0~(232-1)短整型長整型unsignedint或unsigned占4個(gè)字節(jié)0~(216-1)unsignedshort占2個(gè)字節(jié)0~(232-1)unsignedlong占4個(gè)字節(jié)short<=int<=long實(shí)型變量3.1415926整數(shù)部分小數(shù)部分實(shí)型變量的分類雙精度double單精度float長雙精度longdouble占內(nèi)存4個(gè)字節(jié)占內(nèi)存8個(gè)字節(jié)占內(nèi)存8個(gè)字節(jié)floatfFloatStyle;fFloatStyle=1.2345e2f;longdoublefLongDouble;fLongDouble=5.458e-1L;doubledDoubleStyle;dDoubleStyle=1.2345e2;字符型變量charcharcChar;cChar='a';以ASCII碼形式存儲ASCII碼表49~57:數(shù)字(0-9)65~90:大寫字母(A-Z)97~122:小寫字母(a-z)字符型變量charcChar;cChar='a';存儲單元屏幕a97輸出字符輸出整型97轉(zhuǎn)換a變量的存儲類別靜態(tài)存儲和動態(tài)存儲靜態(tài)存儲動態(tài)存儲程序運(yùn)行分配的固定的存儲方式程序運(yùn)行期間根據(jù)需要動態(tài)地分配存儲空間auto變量修飾一個(gè)局部變量為自動的,每次執(zhí)行到定義該變量時(shí),都會產(chǎn)生一個(gè)新的變量,并且對其重新進(jìn)行初始化。作用auto關(guān)鍵字可省略static變量局部變量全局變量靜態(tài)變量函數(shù)調(diào)用結(jié)束后保留原值register變量內(nèi)存變量運(yùn)算器寄存器普通變量register變量速度快extern變量外部存儲變量混合運(yùn)算類型轉(zhuǎn)換10+'a'-1.5+3.2*6char、shortintunsignedlongdoublefloat第4章運(yùn)算符與表達(dá)式01表達(dá)式02賦值運(yùn)算符與賦值表達(dá)式03算術(shù)運(yùn)算符與算術(shù)表達(dá)式04關(guān)系運(yùn)算符與關(guān)系表達(dá)式05邏輯運(yùn)算符與邏輯表達(dá)式06位邏輯運(yùn)算符與位邏輯表達(dá)式07逗號運(yùn)算符與逗號表達(dá)式08復(fù)合賦值運(yùn)算符表達(dá)式表達(dá)式表達(dá)式操作符操作數(shù)5+5iNumber+9Height=iBase+(iPay*iDay)賦值運(yùn)算符與賦值表達(dá)式賦值運(yùn)算符等號=iAge=20;Total=Counter*3;變量賦初值
在聲明變量時(shí),可以為其賦一個(gè)初值,就是將一個(gè)常數(shù)或者一個(gè)表達(dá)式的結(jié)果賦值給一個(gè)變量,變量中保存的內(nèi)容就是這個(gè)常量或者賦值語句中表達(dá)式的值。這就是為變量賦初值。intiNumber=100;fBase+Day*3自動類型轉(zhuǎn)換短的數(shù)據(jù)類型的值長的數(shù)據(jù)類型的值強(qiáng)制類型轉(zhuǎn)換數(shù)據(jù)類型A數(shù)據(jù)類型Bfloati=10.1f;intj=(int)i;強(qiáng)制類型轉(zhuǎn)換(類型名)(表達(dá)式)(float)(x+y)算術(shù)運(yùn)算符與算術(shù)表達(dá)式算數(shù)運(yùn)算符符號功能符號功能+單目正%取模-單目負(fù)+加法*乘法-減法/除法算數(shù)表達(dá)式
在表達(dá)式中使用算術(shù)運(yùn)算符,則將表達(dá)式稱為算術(shù)表達(dá)式。Number=(3+5)/Rate;Height=Top–Bottom+1;Area=Height*Width;算術(shù)運(yùn)算符的優(yōu)先級
在表達(dá)式求值時(shí),先按照運(yùn)算符的優(yōu)先級別高低次序執(zhí)行,算術(shù)運(yùn)算符中*、/、%的優(yōu)先級別高于+、-的級別。R=x+y*z;R=(x+y)
*z;算術(shù)運(yùn)算符的結(jié)合級
當(dāng)算術(shù)運(yùn)算符的優(yōu)先級相同時(shí),結(jié)合方向?yàn)椤白宰笙蛴摇?。a–b+c自增/自減運(yùn)算符自增運(yùn)算符:++自減運(yùn)算符:--
a++++aa先參與運(yùn)算,再加1a先加1,再參與運(yùn)算關(guān)系運(yùn)算符與關(guān)系表達(dá)式關(guān)系運(yùn)算符符號功能符號功能>大于<=小于等于>=大于等于==等于<小于!=不等于關(guān)系表達(dá)式
關(guān)系運(yùn)算符用于對兩個(gè)表達(dá)式的值進(jìn)行比較,返回一個(gè)真值或者假值。返回真值還是假值取決于表達(dá)式中的值和所用的運(yùn)算符。其中真值為1,假值為0,真值表示指定的關(guān)系成立,假值則表示指定的關(guān)系不正確。7>57>=57<57<=57==57!=5優(yōu)先級與結(jié)合性
關(guān)系運(yùn)算符的結(jié)合性都是自左向右的。if(Number=NewNum!=10){ …}
if((Number=NewNum)!=10){ …}
邏輯運(yùn)算符與邏輯表達(dá)式邏輯運(yùn)算符邏輯運(yùn)算符根據(jù)表達(dá)式的真或者假屬性返回真值或假值。符號功能&&邏輯與||邏輯或!單目邏輯非邏輯表達(dá)式Result=Func1&&Func2;Result=Func1||Func2;Result=!Func2;邏輯運(yùn)算符的優(yōu)先級!&&||
“&&”和“||”是雙目運(yùn)算符,它們要求有兩個(gè)操作數(shù),結(jié)合方向自左至右
“!”是單目運(yùn)算符,要求有一個(gè)操作數(shù),結(jié)合方向自左向右。位邏輯運(yùn)算符與位邏輯表達(dá)式位邏輯運(yùn)算符符號功能&位邏輯與|位邏輯或^位邏輯非~取補(bǔ)位邏輯表達(dá)式
在程序中,位邏輯運(yùn)算符一般被程序員用作開關(guān)標(biāo)志。較低層次的硬件設(shè)備驅(qū)動程序,經(jīng)常需要對輸入/輸出設(shè)備進(jìn)行位操作。if(Field&BITMASK)逗號運(yùn)算符與逗號表達(dá)式逗號表達(dá)式表達(dá)式1,表達(dá)式2,…,表達(dá)式nValue=2+5,1+2,5+7;Value=(2+5,1+2,5+7);復(fù)合賦值運(yùn)算符復(fù)合賦值運(yùn)算符Value=Value+3;Value+=3;第5章常用的數(shù)據(jù)輸入/輸出函數(shù)01語句02字符數(shù)據(jù)輸入/輸出03字符串輸入/輸出04格式輸出函數(shù)05格式輸入函數(shù)06順序程序設(shè)計(jì)應(yīng)用語句語句C語言的語句用來向計(jì)算機(jī)系統(tǒng)發(fā)出操作指令。一條語句編寫完成經(jīng)過編譯后產(chǎn)生若干條機(jī)器指令。實(shí)際程序中包含若干條語句,因此語句的作用就是完成一定的操作任務(wù)。字符數(shù)據(jù)輸入/輸出字符數(shù)據(jù)輸出putchar('A');putchar('\101');putchar字符轉(zhuǎn)義字符A、字符型變量、整型變量、常量字符數(shù)據(jù)輸入cChar=getchar();getchar字符getchar字符字符putchar字符串輸入/輸出字符串輸出函數(shù)putsputs(“ILOVECHINA!”);字符串“\0”為結(jié)束符
puts("ILOVE\0CHINA!");結(jié)束符輸出結(jié)果:ILOVE字符串輸入函數(shù)gets(cString);gets格式輸出函數(shù)printf格式輸出函數(shù)printf(格式控制,輸出列表)普通字符格式字符格式字符功能說明d,i以帶符號的十進(jìn)制形式輸出整數(shù)(整數(shù)不輸出符號)o以八進(jìn)制無符號形式輸出整數(shù)x,X以十六進(jìn)制無符號形式輸出整數(shù)。用x輸出十六進(jìn)制數(shù)的a~f時(shí)以小寫形式輸出;用X時(shí),則以大寫字母輸出u以無符號十進(jìn)制形式輸出整數(shù)c以字符形式輸出,只輸出一個(gè)字符s輸出字符串f以小數(shù)形式輸出e,E以指數(shù)形式輸出實(shí)數(shù),用e時(shí)指數(shù)以“e”表示,用E時(shí)指數(shù)以“E”表示g,G選用“%f”或“%e”格式中輸出寬度較短的一種格式,不輸出無意義的0。若以指數(shù)形式輸出,則指數(shù)以大寫表示printf格式輸出函數(shù)printf(格式控制,輸出列表)變量表達(dá)式intiInt=10;printf("thisis%d",iInt);例普通字符格式字符格式輸入函數(shù)scanf格式輸入函數(shù)scanf(格式控制,輸出列表)scanf("%d",&iInt);取地址符順序程序設(shè)計(jì)應(yīng)用順序程序設(shè)計(jì)例將一個(gè)輸入的大寫字符轉(zhuǎn)換成小寫字符選擇結(jié)構(gòu)程序設(shè)計(jì)01if語句02if語句的基本形式03if的嵌套形式04條件運(yùn)算符05switch語句06if…else語句和switch語句的區(qū)別07選擇結(jié)構(gòu)程序應(yīng)用if語句if語句判斷if語句if語句的基本形式if語句形式if(表達(dá)式){
語句塊}if(iSignal==1){printf("theSignalLightis%d:\n",iSignal);printf("Carscanrun");}if語句中的易錯點(diǎn)if(value=0){…}if(value==0){…}賦值等于if…else語句形式if(表達(dá)式){
語句塊1;}else{
語句塊2;}if(value){printf("thevalueistrue");}else{printf("thevalueisfalse");}elseif語句形式if(表達(dá)式1){
語句1}elseif(表達(dá)式2){
語句2}…elseif(表達(dá)式m){
語句m}else語句nelseif語句形式if(iSelection==1){…}elseif(iSelection==2){…}elseif(iSelection==3){…}else{…}if的嵌套形式if的嵌套形式if(表達(dá)式1){if(表達(dá)式2) {語句塊1}else {語句塊2}}else{if(表達(dá)式3) {語句塊3}else {語句塊4}}條件運(yùn)算符條件運(yùn)算符if(a>b){max=a;}else{max=b;}?:max=(a>b)?a:b;表達(dá)式1?表達(dá)式2:表達(dá)式3;switch語句switch語句的基本形式switch(表達(dá)式){case情況1:
語句塊1;case情況2:
語句塊2;…case情況n:
語句塊n;default:
默認(rèn)情況語句塊;}表達(dá)式語句塊1語句塊2語句塊n默認(rèn)語句...情況1情況2情況n默認(rèn)情況switch語句的基本形式switch(selection){case1: printf("ProcessingReceivables\n"); break;case2: printf("ProcessingPayables\n"); break;case3: printf("Quitting\n"); break;default: printf("Error\n"); break;}多路開關(guān)模式的switch語句switch(表達(dá)式){case1:
語句1 break;case2:case3:
語句2 break;…default:
默認(rèn)語句 break;}if…else語句和switch語句的區(qū)別if…else語句和switch語句的區(qū)別語法效率選擇結(jié)構(gòu)程序應(yīng)用選擇結(jié)構(gòu)程序?qū)嵗褂胹witch語句計(jì)算運(yùn)輸公司的計(jì)費(fèi)。路程(km)運(yùn)費(fèi)s<250沒有折扣250≤s<5002%折扣500≤s<10005%折扣1000≤s<20008%折扣2000≤s<300010%折扣3000≤s15%折扣循環(huán)控制01循環(huán)語句02while語句03do-while語句04for語句05三種循環(huán)語句的比較06循環(huán)嵌套07轉(zhuǎn)移語句循環(huán)語句循環(huán)語句循環(huán)的特點(diǎn)是,反復(fù)執(zhí)行某程序段,知道條件不成立為止。給定的條件稱為循環(huán)條件,反復(fù)執(zhí)行的程序段稱為循環(huán)體。whiledo-whileforwhile語句while語句while(表達(dá)式)語句while(iSum<100){iSum+=1;}do-while語句do-while語句do{
循環(huán)體語句}while(表達(dá)式);do{iNumber++;}while(iNumber<100);for語句for語句使用for(表達(dá)式1;
表達(dá)式2;
表達(dá)式3)for(i=1;i<100;i++){printf("theiis:%d",i);}循環(huán)變量賦初值循環(huán)條件循環(huán)變量增量for語句使用for循環(huán)的變體for語句中省略表達(dá)式1for(;iNumber<10;iNumber++)for循環(huán)的變體for語句中省略表達(dá)式2for(iCount=1;;iCount++){sum=sum+iCount;}for循環(huán)的變體for語句中省略表達(dá)式3for(iCount=1;iCount<50;){sum=sum+iCount;iCount++;}for循環(huán)的變體3個(gè)表達(dá)式都省略for(;;){
語句}while(1){
語句}for循環(huán)的變體表達(dá)式1為與循環(huán)變量賦值無關(guān)的表達(dá)式for(sum=0;iCount<50;iCount++){sum=sum+iCount;}for語句中的逗號應(yīng)用for(iSum=0,iCount=1;iCount<100;iCount++){iSum=iSum+iCount;}for(表達(dá)式1;
表達(dá)式2;
表達(dá)式3)逗號表達(dá)式for(iCount=1;iCount<100;iCount++,iCount++){iSum=iSum+iCount;}for(iCount=1;iCount<100;iCount=iCount+2)3種循環(huán)語句的比較3種循環(huán)語句的比較while和do-while循環(huán)只在while后面指定循環(huán)條件,在循環(huán)體中應(yīng)包含使循環(huán)趨于結(jié)束的語句(如i++或者i=i+1等);for循環(huán)可以在表達(dá)式3中包含使循環(huán)趨于結(jié)束的操作,也可以設(shè)置將循環(huán)體中的操作全部放在表達(dá)式3中。
用while和do-while循環(huán)時(shí),循環(huán)變量初始化的操作應(yīng)在while和do-while語句之前完成;而for語句可以在表達(dá)式1中實(shí)現(xiàn)循環(huán)變量的初始化。while循環(huán)、do-while循環(huán)和for循環(huán)都可以用break語句跳出循環(huán),用continue語句結(jié)束本次循環(huán)。循環(huán)嵌套循環(huán)嵌套的結(jié)構(gòu)while(表達(dá)式){
語句while(表達(dá)式){
語句}}do{
語句do{
語句}while(表達(dá)式);}while(表達(dá)式);while結(jié)構(gòu)中嵌套while結(jié)構(gòu)do-while結(jié)構(gòu)中嵌套do-while結(jié)構(gòu)循環(huán)嵌套的結(jié)構(gòu)for(表達(dá)式;表達(dá)式;表達(dá)式){
語句for(表達(dá)式;表達(dá)式;表達(dá)式){
語句}}do{
語句while(表達(dá)式);{
語句}}while(表達(dá)式);for結(jié)構(gòu)中嵌套for結(jié)構(gòu)do-while結(jié)構(gòu)中嵌套while結(jié)構(gòu)循環(huán)嵌套實(shí)例例使用嵌套語句打印歡迎界面的邊框。轉(zhuǎn)移語句goto語句goto標(biāo)識符;gotoShow;printf("themessagebeforeShowMessage");Show:printf("ShowMessage");break語句while(1){printf("Break");break;}break;continue語句continue;數(shù)組01一維數(shù)組02二維數(shù)組03字符數(shù)組04多維數(shù)組05數(shù)組的排序算法06字符串處理函數(shù)07數(shù)組應(yīng)用一維數(shù)組一維數(shù)組的定義類型說明符
數(shù)組標(biāo)識符[常量表達(dá)式];數(shù)組,相同數(shù)據(jù)類型的元素按一定順序排列的集合。intiArray[5];一維數(shù)組的引用數(shù)組標(biāo)識符[下標(biāo)]iArray[2];一維數(shù)組初始化inti,iArray[6]={1,2,3,4,5,6};定義數(shù)組時(shí)直接對數(shù)組元素賦初值對其中一部分元素進(jìn)行賦值intiArray[6]={0,1,2};不指定數(shù)組長度intiArray[]={1,2,3,4};一維數(shù)組應(yīng)用例使用數(shù)組保存學(xué)生姓名。二維數(shù)組數(shù)據(jù)類型
數(shù)組名[常量表達(dá)式1][常量表達(dá)式2];二維數(shù)組的定義intarray[3][4];行下標(biāo)列下標(biāo)array[0][0]array[0][1]array[0][2]array[0][3]array[0][0]array[0][1]array[0][2]array[0][3]array[0][0]array[0][1]array[0][2]array[0][3]二維數(shù)組的引用array[1][2];intarray[2][4];…array[2][4]=9;數(shù)組名[下標(biāo)][下標(biāo)];二維數(shù)組初始化intarray[2][2]={1,2,3,4};intarray[][3]={1,2,3,4,5,6};inta[2][3]={{1,2,3},{4,5,6}};inta[2][3];a[0][0]=1;a[0][1]=2;二維數(shù)組應(yīng)用例
打印趣味俄羅斯方塊的游戲窗口,并設(shè)置左右下橫框上有圖案。字符數(shù)組字符數(shù)組的定義char數(shù)組標(biāo)識符[常量表達(dá)式]charcArray[5];字符數(shù)組的引用cArray[0]='H';cArray[1]='e';cArray[2]='l';cArray[3]='l';cArray[4]='o';字符數(shù)組的初始化charcArray[5]={'H','e','l','l','o'};逐個(gè)字符賦給數(shù)組中各元素如果在定義字符數(shù)組時(shí)進(jìn)行初始化,可以省略數(shù)組長度charcArray[]={'H','e','l','l','o'};字符數(shù)組的初始化charcArray[]={"Hello"};利用字符串給字符數(shù)組賦初值charcArray[]="Hello";字符數(shù)組的結(jié)束標(biāo)志charcArray[]="Hello";\0Hello\0charcArray[]={'H','e','l','l','o','\0'};字符數(shù)組的輸入輸出for(i=0;i<5;i++) { printf("%c",cArray[i]);}使用格式符“%c”進(jìn)行輸入和輸出charcArray[]="GoodDay!";printf("%s",cArray); 使用格式符“%s”進(jìn)行輸入或輸出使用格式符“%s”的注意事項(xiàng)
輸出字符不包括結(jié)束符“\0”
用“%s”格式輸出字符串時(shí),printf函數(shù)中的輸出項(xiàng)是字符數(shù)組名cArray,而不是數(shù)
組中的元素名cArray[0]等
如果數(shù)組長度大于字符串實(shí)際長度,則也只輸出到“\0”為止
如果一個(gè)字符數(shù)組中包含多個(gè)“\0”結(jié)束字符,則在遇到第一個(gè)“\0”時(shí)輸出就結(jié)束字符數(shù)組的應(yīng)用例
計(jì)算字符串中單詞的個(gè)數(shù)。多維數(shù)組返回語句數(shù)據(jù)類型數(shù)組名[常量表達(dá)式1][常量表達(dá)式2]…[常量表達(dá)式n];intiArray1[3][4][5]; //三維數(shù)組intiArray2[4][5][7][8]; //四維數(shù)組數(shù)組的排序算法選擇法排序
元素【0】元素【1】元素【2】元素【3】元素【4】起始值第1次第2次第3次第4次排序結(jié)果排序過程數(shù)組元素9 6 15 4 2296 15 442615 92 461592 4 69152 4 6 9 15冒泡法排序
元素【0】元素【1】元素【2】元素【3】元素【4】起始值第1次第2次第3次第4次排序結(jié)果排序過程數(shù)組元素9 6 15 4 2222 42 4 62 4 6 9 159 6 15 449 6 15 69159 15交換法排序
元素【0】元素【1】元素【2】元素【3】元素【4】起始值第1次第2次第3次第4次排序結(jié)果排序過程數(shù)組元素9 6 15 4 22 4 6 9 159615422915642 4 6 15 92 4 6 9 15插入法排序
元素【0】元素【1】元素【2】元素【3】元素【4】起始值第1次第2次第3次第4次排序結(jié)果排序過程數(shù)組元素9 6 15 4 22 4 6 9 1596 96 9 15 4 6 9 15 折半法排序
元素【0】元素【1】元素【2】元素【3】元素【4】起始值第1次第2次第3次第4次排序結(jié)果排序過程數(shù)組元素9 6 15 4 22 4 6 9 159 6 2 4 154 6 2 9 154 2 6 9 152 4 6 9 15排序算法比較選擇法排序冒泡法排序交換法排序插入法排序折半法排序n(n-1)/2次比較
交換n-1次1~n2次比較n-1次比較字符串處理函數(shù)字符串復(fù)制STRCPYstrcpy(目的字符數(shù)組名,源字符數(shù)組名)字符串連接STRCATstrcat(目的字符數(shù)組名,源字符數(shù)組名)字符串比較STRCMPstrcmp(字符數(shù)組名1,字符數(shù)組名2)
字符串1=字符串2,返回值為0
字符串1>字符串2,返回值為正數(shù)
字符串1<字符串2,返回值為負(fù)數(shù)字符串大小寫轉(zhuǎn)換strlwr(字符串)STRLWRstrupr(字符串)小寫字母大寫字母大寫字母小寫字母STRLEN獲得字符串長度strlen(字符數(shù)組名)strupr數(shù)組應(yīng)用反轉(zhuǎn)輸出字符串輸出系統(tǒng)日期和時(shí)間例
設(shè)計(jì)一個(gè)應(yīng)用程序,當(dāng)用戶輸入命令字符“0”時(shí)顯示幫助信息,輸入命令字符“1”時(shí)顯示系統(tǒng)日期,輸入命令字符“2”時(shí)顯示系統(tǒng)時(shí)間,輸入命令字符“3”時(shí)退出系統(tǒng)。密碼:字符串的加密和解密mrsoft密碼:@#$#^&函數(shù)01函數(shù)概述02函數(shù)的定義03返回語句04函數(shù)參數(shù)05函數(shù)的調(diào)用06內(nèi)部函數(shù)和外部函數(shù)07局部變量和全局變量08函數(shù)應(yīng)用函數(shù)概述函數(shù)主函數(shù)..........a函數(shù)b函數(shù)..............................a函數(shù)b函數(shù)工程師函數(shù)的注意事項(xiàng)主函數(shù)不允許被其他函數(shù)調(diào)用在主函數(shù)中實(shí)現(xiàn)程序的開始和結(jié)束一個(gè)C程序必須有,也只能有一個(gè)主函數(shù)函數(shù)的定義函數(shù)定義的形式返回值類型
函數(shù)名(參數(shù)列表){
函數(shù)體(函數(shù)實(shí)現(xiàn)特定功能的過程);}函數(shù)頭函數(shù)體intAddTwoNumber(intiNum1,intiNum2){ intresult; result=iNum1+iNum2; returnresult; }有參函數(shù)無參函數(shù)返回值類型函數(shù)名(){
函數(shù)體}voidShowTime() /*函數(shù)頭*/{printf("It'stimetoshowyourself!");/*顯示一條信息*/}函數(shù)定義的注意事項(xiàng)不能嵌套定義voidShowTime() {printf("It'stimetoshowyourself!");intAddTwoNumber(intiNum1,intiNum2){ intresult; result=iNum1+iNum2; returnresult; }}函數(shù)定義的注意事項(xiàng)不能嵌套定義voidShowTime(){printf("%d\n",AddTwoNumber(3,4));}intAddTwoNumber(intiNum1,intiNum2){ intresult; result=iNum1+iNum2; returnresult; ShowTime();}可以嵌套調(diào)用定義和聲明返回值類型
函數(shù)名(參數(shù)列表);intShowNumber(intiNumber);返回語句返回語句return0;立即從所在的函數(shù)中退出,即返回到調(diào)用的程序中去。返回值返回值intMinus(intiNumber1,intiNumber2){intiResult; /*定義一個(gè)整型變量用來存儲返回的結(jié)果*/iResult=iNumber1-iNumber2; /*進(jìn)行減法計(jì)算,得到計(jì)算結(jié)果*/returnresult; /*return語句返回計(jì)算結(jié)果*/}intmain(){intiResult; /*定義一個(gè)整型變量*/iResult=Minus(9,4); /*進(jìn)行9-4的減法計(jì)算,并將結(jié)果賦值給變量iResult*/return0; /*程序結(jié)束*/}函數(shù)參數(shù)函數(shù)參數(shù)intAddTwoNumber(intiNum1,intiNum2){ intresult; result=iNum1+iNum2; returnresult; }函數(shù)參數(shù)形式參數(shù)實(shí)際參數(shù)形式參數(shù)與實(shí)際參數(shù)數(shù)組作函數(shù)參數(shù)數(shù)組元素作為函數(shù)參數(shù)
由于實(shí)參可以是表達(dá)式形式,數(shù)組元素可以是表達(dá)式的組成部分,因此數(shù)組元素可以作為函數(shù)的實(shí)參,與用變量作為函數(shù)實(shí)參一樣,是單向傳遞。數(shù)組元素作為函數(shù)參數(shù)
可以用數(shù)組名作為函數(shù)參數(shù),此時(shí)實(shí)參與形參都使用數(shù)組名。數(shù)組作函數(shù)參數(shù)可變長度數(shù)組作為函數(shù)參數(shù)voidFunction(iintiArrayName[]);
intiArray[10]; /*定義整型數(shù)組*/Function(iArray); /*將數(shù)組名作為實(shí)參進(jìn)行傳遞*/使用指針作為函數(shù)參數(shù)voidFunction(int*pPoint);
intiArray[10]; /*定義整型數(shù)組*/Function(iArray); /*將數(shù)組名作為實(shí)參進(jìn)行傳遞*/main函數(shù)的參數(shù)main(intargc,char*argv[])函數(shù)的調(diào)用函數(shù)的調(diào)用方式函數(shù)的調(diào)用函數(shù)語句調(diào)用函數(shù)表達(dá)式調(diào)用函數(shù)參數(shù)調(diào)用Display();/*函數(shù)在表達(dá)式中,這時(shí)AddTwoNum(3,5)位置應(yīng)該為具體的值*/iResult=iNum3*AddTwoNum(3,5); /*函數(shù)在參數(shù)中*/iResult=AddTwoNum(10,AddTwoNum(3,5));嵌套調(diào)用intmain(){voidDisplay() {printf("IwanttoshowtheNestingfunction");}return0;}voidShowMessage() { printf("TheShowMessagefunction");}
voidDisplay(){ShowMessage();}遞歸調(diào)用內(nèi)部函數(shù)和外部函數(shù)內(nèi)部函數(shù)函數(shù)內(nèi)部函數(shù)外部函數(shù)
定義一個(gè)函數(shù),如果希望這個(gè)函數(shù)只被所在的源文件使用,那么就稱這樣的函數(shù)為內(nèi)部函數(shù)。
使用內(nèi)部函數(shù),可以使函數(shù)只局限在函數(shù)所在的源文件中,如果在不同的源文件中有同名的內(nèi)部函數(shù),則這些同名的函數(shù)是互不干擾的。內(nèi)部函數(shù)staticstatic
返回值類型
函數(shù)名(參數(shù)列表)staticintAdd(intiNum1,intiNum2)外部函數(shù)externexternintAdd(intiNum1,intiNum2);局部變量和全局變量作用域{....................}形參變量在此區(qū)域,形參變量有效局部變量在一個(gè)函數(shù)的內(nèi)部定義的變量是局部變量。intmain(){intiD;for(iD=1;iD<10;iD++){charcD;...}return0;}cD的作用范圍iD的作用范圍全部變量如果一個(gè)變量在所有函數(shù)的外部聲明,這個(gè)變量就是全局變量。#include<stdio.h>inta,b;voidf1(){ ......}floatx,y;intfz(){ ......}main(){ ......}函數(shù)應(yīng)用有關(guān)數(shù)學(xué)的常用函數(shù)abs() 求整數(shù)的絕對值labs() 求長整數(shù)的絕對值fabs() 求浮點(diǎn)數(shù)的絕對值sin() 正弦函數(shù)cos() 余弦函數(shù)tan() 正切函數(shù)isalpha() 檢測字母isdigit() 檢測數(shù)字isalnum() 檢測字母或數(shù)字指針01指針相關(guān)概念02數(shù)組與指針03指向指針的指針05指針變量作函數(shù)參數(shù)06返回指針值的函數(shù)07指針數(shù)組作main函數(shù)的參數(shù)指針的相關(guān)概念地址與指針變量與指針
變量的地址是變量和指針二者之間連接的紐帶,如果一個(gè)變量包含了另一個(gè)變量的地址,則可以理解成第一個(gè)變量指向第二個(gè)變量。這個(gè)“指向”就是通過地址來體現(xiàn)的。因?yàn)橹羔樧兞渴侵赶蛞粋€(gè)變量的地址,所以將一個(gè)變量的地址值賦給這個(gè)指針變量后,這個(gè)指針變量就“指向”了該變量。指針變量指針變量的一般形式類型說明*變量名int*a;指針變量指針變量的賦值&變量名;inta;int*p=&a;inta;int*p;p=&a;指針變量指針變量的引用*指針變量指針變量“&”和“*”運(yùn)算符“&*”和“*&”的區(qū)別p=&i;&*q=*p;inta;p=&a;指針自加自減運(yùn)算
指針的自加自減運(yùn)算不同于普通變量的自加自減運(yùn)算,也就是說并非簡單地加1減1數(shù)組與指針一維數(shù)組與指針
當(dāng)定義一個(gè)一維數(shù)組時(shí),系統(tǒng)會在內(nèi)存中為該數(shù)組分配一個(gè)存儲空間,其數(shù)組的名稱就是數(shù)組在內(nèi)存中的首地址。若再定義一個(gè)指針變量,并將數(shù)組的首地址傳給指針變量,則該指針就指向了這個(gè)一維數(shù)組。int*p,a[10];p=a;int*p,a[10];p=&a[0];二維數(shù)組與指針3行5列的二維數(shù)組&a[0][0]既可以看作數(shù)組0行0列的首地址,也可以看作二維數(shù)組的首地址。&a[m][n]就是第m行n列元素的地址。a[0]+n表示第0行第n個(gè)元素的地址。&a[0]是第0行的首地址,當(dāng)然&a[n]就是第n行的首地址。a+n表示第n行的首地址。字符串與指針
訪問一個(gè)字符串可以通過兩種方式,第一種方式就是前面講過的使用字符數(shù)組來存放一個(gè)字符串,從而實(shí)現(xiàn)對字符串的操作;另一種方式就是下面將要介紹的使用字符指針指向一個(gè)字符串,此時(shí)可不定義數(shù)組。字符串?dāng)?shù)組charcountry[5][20]={"China","Japan","Russia","Germany","Switzerland"}
一個(gè)數(shù)組,其元素均為指針類型數(shù)據(jù),稱為指針數(shù)組。也就是說,指針數(shù)組中的每一個(gè)元素都相當(dāng)于一個(gè)指針變量。類型名數(shù)組名[數(shù)組長度]指向指針的指針指向指針的指針類型標(biāo)識符**指針變量名;int**p;指針變量作函數(shù)參數(shù)指針變量作函數(shù)參數(shù)
整型變量、實(shí)型變量、字符型變量、數(shù)組名和數(shù)組元素等均可作為函數(shù)參數(shù)。此外,指針型變量也可以作為函數(shù)參數(shù)。返回指針值的函數(shù)返回指針值的函數(shù)int*fun(intx,inty)
一個(gè)函數(shù)可以帶回一個(gè)整型值、字符值、實(shí)型值等,也可以帶回指針型的數(shù)據(jù),即地址。其概念與之前介紹的類似,只是帶回的值的類型是指針類型而已。返回指針值的函數(shù)簡稱為指針函數(shù)。類型名*函數(shù)名(參數(shù)表列);指針數(shù)組作main函數(shù)的參數(shù)指針數(shù)組作main函數(shù)的參數(shù)main()main(intargc,char*argv[])結(jié)構(gòu)體和共用體01結(jié)構(gòu)體02結(jié)構(gòu)體數(shù)組03結(jié)構(gòu)體指針04包含結(jié)構(gòu)的結(jié)構(gòu)05鏈表06鏈表相關(guān)操作07共用體08枚舉類型結(jié)構(gòu)體結(jié)構(gòu)體、共用體、枚舉圖書圖書編號圖書名稱作者 出版社
單價(jià) 存儲量 學(xué)生學(xué)生編號學(xué)生姓名年齡 性別 年級 班級號
intcharxx[]charxx[]charxx[]floatintintcharxx[]intcharintint數(shù)組結(jié)構(gòu)體、共用體、枚舉結(jié)構(gòu)體的類型的概念結(jié)構(gòu)體成員結(jié)構(gòu)體聲明定義引用結(jié)構(gòu)體變量的聲明structstruct
結(jié)構(gòu)體名{
數(shù)據(jù)類型成員名1;
數(shù)據(jù)類型成員名2;......
數(shù)據(jù)類型成員名n;};structstu{intnum;charname[20];charsex;floatscore;};結(jié)構(gòu)體變量的定義1.先定義結(jié)構(gòu)體后定義變量structstudentstudent1,student2;結(jié)構(gòu)體變量的定義struct
結(jié)構(gòu)體名{
數(shù)據(jù)類型成員名1;
數(shù)據(jù)類型成員名2;......
數(shù)據(jù)類型成員名n;}變量1,...,變量n;2.定義類型同時(shí)定義變量structProduct{charcName[10]; /*產(chǎn)品名稱*/charcShape[20]; /*形狀*/charcColor[10]; /*顏色*/intiPrice; /*價(jià)格*/charcArea[20]; /*產(chǎn)地*/}product1,product2; /*定義結(jié)構(gòu)體變量*/結(jié)構(gòu)體變量的定義struct{
數(shù)據(jù)類型成員名1;
數(shù)據(jù)類型成員名2;......
數(shù)據(jù)類型成員名n;}變量1,...,變量n;3.直接定義變量struct{charcName[10]; /*產(chǎn)品名稱*/charcShape[20]; /*形狀*/charcColor[10]; /*顏色*/intiPrice; /*價(jià)格*/charcArea[20]; /*產(chǎn)地*/}product1,product2; /*定義結(jié)構(gòu)體變量*/結(jié)構(gòu)體注意事項(xiàng)類型和變量是不同的概念,不要混淆。變量可以復(fù)制、存取或運(yùn)算分配內(nèi)存單位。結(jié)構(gòu)體中的成員,可以單獨(dú)使用,它的作用相當(dāng)于普通變量。成員也可以是一個(gè)結(jié)構(gòu)體變量。成員名可以與程序中的變量名相同,但二者不代表同一對象。結(jié)構(gòu)體變量的引用printf("%s%s%s%d%s",product1);printf("%s%s%s%d%s",product2);結(jié)構(gòu)體變量名.成員名結(jié)構(gòu)成員運(yùn)算符product1.cName="Icebox";product2.iPrice=2000;scanf("%s",&product1.cName);student1.birthday.year=1986;student1.birthday.month=12;student1.birthday.day=6;結(jié)構(gòu)體類型的初始化structStudent{charcName[20];charcSex;intiGrade;}student1={"HanXue","W",3}; /*定義變量并設(shè)置初始值*/結(jié)構(gòu)體數(shù)組結(jié)構(gòu)體數(shù)組與數(shù)組的區(qū)別結(jié)構(gòu)體數(shù)組和數(shù)組的定義與引用規(guī)則是相同的相同點(diǎn)不同點(diǎn)結(jié)構(gòu)體數(shù)組中的所有元素為結(jié)構(gòu)體變量普通數(shù)組中的所有元素為基本類型變量定義結(jié)構(gòu)體數(shù)組struct結(jié)構(gòu)體名{
成員列表}數(shù)組名[數(shù)組長度];structStudent /*學(xué)生結(jié)構(gòu)*/{charcName[20]; /*姓名*/intiNumber; /*學(xué)號*/charcSex; /*性別*/intiGrade; /*年級*/}student[5]; /*定義結(jié)構(gòu)體數(shù)組*/structStudentstudent[5];/*定義結(jié)構(gòu)體數(shù)組*/struct /*學(xué)生結(jié)構(gòu)*/{charcName[20]; /*姓名*/intiNumber; /*學(xué)號*/charcSex; /*性別*/intiGrade; /*年級*/}student[5]; /*定義結(jié)構(gòu)體數(shù)組*/初始化結(jié)構(gòu)體數(shù)組struct結(jié)構(gòu)體名{
成員列表;}數(shù)組名={初始值列表};structStudent /*學(xué)生結(jié)構(gòu)*/{charcName[20]; /*姓名*/intiNumber; /*學(xué)號*/charcSex; /*性別*/intiGrade; /*年級*/}student[5]={{"WangJiasheng",12062212,'M',3}, {"YuLongjiao",12062213,'W',3}, {"JiangXuehuan",12062214,'W',3}, {"ZhangMeng",12062215,'W',3}, {"HanLiang",12062216,'M',3}}; /*定義數(shù)組并設(shè)置初始值*/結(jié)構(gòu)體指針指向結(jié)構(gòu)體變量的指針結(jié)構(gòu)體類型*指針名;structStudent*pStruct;引用成員的方法:1(*pStruct).成員名2pStruct->成員名;指向結(jié)構(gòu)體數(shù)組的指針
結(jié)構(gòu)體指針變量不但可以指向一個(gè)結(jié)構(gòu)體變量,還可以指向結(jié)構(gòu)體數(shù)組,此時(shí)指針變量的值就是結(jié)構(gòu)體數(shù)組的首地址。結(jié)構(gòu)體指針變量也可以直接指向結(jié)構(gòu)體數(shù)組中的元素,這時(shí)指針變量的值就是該結(jié)構(gòu)體數(shù)組元素的首地址。結(jié)構(gòu)體作為函數(shù)參數(shù)使用結(jié)構(gòu)體變量作為函數(shù)參數(shù)voidDisplay(structStudentstu);結(jié)構(gòu)體作為函數(shù)參數(shù)使用指向結(jié)構(gòu)體變量的指針作為函數(shù)參數(shù)voidDisplay(structStudent*stu)結(jié)構(gòu)體作為函數(shù)參數(shù)使用結(jié)構(gòu)體變量的成員作為函數(shù)參數(shù)Display(student.fScore[0]);包含結(jié)構(gòu)的結(jié)構(gòu)包含結(jié)構(gòu)的結(jié)構(gòu)structstudent /*學(xué)生信息結(jié)構(gòu)*/{charname[30]; /*姓名*/intnum; /*學(xué)號*/charsex[20]; /*性別*/structdatebirthday; /*出生日期*/}student={"蘇玉群",12061212,"女",{1986,12,6}}; /*為結(jié)構(gòu)變量初始化*/鏈表鏈表概述數(shù)組鏈表定義固定長度連續(xù)性存儲空間過長過小頭指針數(shù)據(jù)部分指針部分動態(tài)內(nèi)存分配函數(shù)malloc函數(shù)calloc函數(shù)free函數(shù)void*calloc(unsignedn,unsignedsize);voidfree(void*ptr);void*malloc(unsignedintsize);創(chuàng)建動態(tài)鏈表
所謂建立動態(tài)鏈表就是指在程序運(yùn)行過程中從無到有地建立起一個(gè)鏈表,即一個(gè)一個(gè)地分配節(jié)點(diǎn)的內(nèi)存空間,然后輸入節(jié)點(diǎn)中的數(shù)據(jù)并建立節(jié)點(diǎn)間的相連關(guān)系。輸出鏈表鏈表相關(guān)操作鏈表的插入操作鏈表的刪除操作共用體共用體的概念union
共用體名{
成員列表}變量列表;unionDataUnion{intiInt;charcChar;floatfFloat;}variable;共用體變量的引用共用體變量.成員名;variable.iInt;variable.cChar;variable.fFloat;共用體變量的初始化unionDataUnionUnion={97};共用體類型的數(shù)據(jù)特點(diǎn)
共用體變量中,可以包含若干個(gè)成員及若干種類型,但共用體成員不能同時(shí)使用。共用體變量中起作用的成員值是最后一次存放的成員值。共用體變量的地址和它的各成員的地址是一樣的。不能對共用體變量名賦值,也不能企圖引用變量名來得到一個(gè)值。枚舉類型枚舉的概念輸
贏星期一星期二星期三星期四星期五星期六星期日#defineUP 1;#defineDOWN 2;#defineLEFT 3;#defineRIGHT 4;上下左右枚舉類型的定義enum
枚舉標(biāo)識符{常量列表}enumColors(Red=1,Green,Blue);位運(yùn)算01位與字節(jié)02位運(yùn)算操作符03循環(huán)位移04位段位與字節(jié)位與字節(jié)
位是計(jì)算機(jī)存儲數(shù)據(jù)的最小單位。一個(gè)二進(jìn)制位可以表示兩種狀態(tài)(0和1),多個(gè)二進(jìn)制位組合起來便可表示多種信息。整型4個(gè)字節(jié)32位字符型1個(gè)字節(jié)8位位運(yùn)算操作符位運(yùn)算操作符運(yùn)算符含義&按位與|按位或~取反^按位異或<<左移>>右移“與”運(yùn)算符aba&b00001010011189&38&“或”運(yùn)算符aba|b00001110111117|31|“取反”運(yùn)算符~25-25~“異或”運(yùn)算符aba^b000011101110^107^127“左移”運(yùn)算符<<a=39a左移兩位a變成了156“右移”運(yùn)算符>>a=6a右移兩位a變成了10000011000000001循環(huán)位移循環(huán)位移循環(huán)移位就是將移出的低位放到該數(shù)的高位或者將移出的高位放到該數(shù)的低位循環(huán)左移循環(huán)位移循環(huán)右移位段位段的概念
位段類型是一種特殊的結(jié)構(gòu)類型,其所有成員的長度均是以二進(jìn)制位為單位定義的,結(jié)構(gòu)中的成員被稱為位段。結(jié)構(gòu)結(jié)構(gòu)名{
類型
變量名1:長度;
類型
變量名2:長度;……
類型
變量名n:長度;}structpacked_data{
unsigneda:2;
unsignedb:1;unsignedc:1;unsignedd:2;}data;位段相關(guān)說明
因?yàn)槲欢晤愋褪且环N結(jié)構(gòu)類型,所以位段類型和位段變量的定義,以及對位段(即位段類型中的成員)的引用均與結(jié)構(gòu)類型和結(jié)構(gòu)變量相同。
一個(gè)位段必須存儲在一個(gè)存儲單元(通常為一字節(jié))中,不能跨兩個(gè)存儲單元。如果本單元不夠容納某位段,則從下一個(gè)單元開始存儲該位段。
在數(shù)值表達(dá)式中引用位段時(shí),系統(tǒng)自動將位段轉(zhuǎn)換為整型數(shù)。ftell函數(shù)longftell(文件類型指針)第13章預(yù)處理01宏定義02#include指令03條件編譯宏定義不帶參數(shù)的宏定義
宏定義指令#define用來定義一個(gè)標(biāo)識符和一個(gè)字符串,以這個(gè)標(biāo)識符來代表這個(gè)字符串,在程序中每次遇到該標(biāo)識符時(shí)就用所定義的字符串替換它。宏定義的作用相當(dāng)于給指定的字符串起一個(gè)別名。#define宏名
字符串預(yù)處理命令的標(biāo)志標(biāo)識符常數(shù)、表達(dá)式、格式字符串等#definePI3.14159帶參數(shù)的宏定義#define宏名(參數(shù)表)字符串對兩個(gè)數(shù)實(shí)現(xiàn)乘法加法混合運(yùn)算例#include指令#include指令
在一個(gè)源文件中使用#include指令可以將另一個(gè)源文件的全部內(nèi)容包含進(jìn)來,也就是將另外的文件包含到本文件之中。#include使編譯程序?qū)⒘硪辉次募度霂в?include的源文件,被讀入的源文件必須用雙引號或尖括號括起來。#include"stdio.h"#include<stdio.h>條件編譯#if命令#if的基本含義是:如果#if命令后的參數(shù)表達(dá)式為真,則編譯#if到#endif之間的程序段,否則跳過這段程序。#endif命令用來表示#if段的結(jié)束。#if常數(shù)表達(dá)式語句段
溫馨提示
- 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 衛(wèi)生間耐低溫窗簾考核試卷
- 體育場地設(shè)施與城市文化景觀融合策略考核試卷
- 2025年中國PP中空瓦楞板數(shù)據(jù)監(jiān)測報(bào)告
- 2025年中國FR4玻璃纖維板數(shù)據(jù)監(jiān)測研究報(bào)告
- 2025年中國CBZ-甘氨酸數(shù)據(jù)監(jiān)測報(bào)告
- 2025年中國2合1抗紫外線水性防水涂料數(shù)據(jù)監(jiān)測報(bào)告
- 2025至2030年中國需氣閥市場分析及競爭策略研究報(bào)告
- 2025至2030年中國鋁扶把(羊角)市場分析及競爭策略研究報(bào)告
- 2025至2030年中國連續(xù)式電熱軟化爐市場分析及競爭策略研究報(bào)告
- 2025至2030年中國草本美顏寶面貼膜市場分析及競爭策略研究報(bào)告
- 2025屆湖南長沙雅禮實(shí)驗(yàn)中學(xué)七年級數(shù)學(xué)第二學(xué)期期末學(xué)業(yè)水平測試試題含解析
- 2025云南鋁業(yè)股份限公司高校畢業(yè)生招聘100人易考易錯模擬試題(共500題)試卷后附參考答案
- 黃旭華人物介紹
- TCWEA6-2019水利水電工程施工期度汛方案編制導(dǎo)則
- 2025成都勞動合同范本
- 國網(wǎng)四川省電力公司電網(wǎng)工程設(shè)備材料補(bǔ)充信息參考價(jià)2025
- 2025年科技節(jié)活動小學(xué)科普知識競賽題庫及答案(共80題)
- 露天礦山事故警示教育
- 簡易信號通信工具操作使用
- 探尋漆扇之美邂逅漆扇探秘和玩轉(zhuǎn)漆扇課件
- 《安全心理學(xué)》課件
評論
0/150
提交評論