版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
一、C語言字符集自然語言:字符、單詞、語句、段落、文章、文檔C語言:字符、單詞、語句、函數(shù)模塊、程序文件、完整程序1.大、小寫英文字母(52個)A-Z,a-z。如A和a不同,Abc和abc不同。2.十進制數(shù)字符號(10個)0-9。3.標(biāo)點符號,;’":<空格>{}
等。半角西文。4.單字符運算符號()[]+-*/%.>=<!~&^|?。半角西文。5.特殊用途的符井字號(#)、反斜線(\)、下劃線(_);含128個字符的單字節(jié)的ASCII編碼表;含65536個字符的雙字節(jié)的Unicode編碼表;一對雙引號括起來的為字符串,其中可以使用任何字符。如"abc=5"、"姓名:王明"為合法字符串。由C語言中規(guī)定的字符可以組成每個單詞,有些為單個字符本身,有些為連續(xù)若干個字符組合。1.保留字又稱為關(guān)鍵字。如int,char,if,for等。2.標(biāo)識符由英文字母或下劃線開頭的字母數(shù)字串所組成。如x2,Time,a,maxMage等。標(biāo)識符length表示長度,標(biāo)識符age表示年齡。3.常量在運算過程中不能被改變值的量。常數(shù)
如5、23、-256、2.307等都是常數(shù)。字符
就是單個西文字符或者各種符號,即ASCII碼字符。如'a'、'D'、'5'、'+'、'%'等。字符串
用雙引號括起來的一串字符。如"5"、"apple"、"姓名"、"A+B="等。又如"張華"、"食品安全鑒定會"。4.運算符就是能夠進行運算的符號。算術(shù)運算符、關(guān)系(比較)運算符、字符串運算符、邏輯運算符等。單目、雙目、三目。單字符運算符
如+、-、*、/、>、<、=等。雙字符運算符
如>=、<=、==、++、--、&&等。三字符運算符
如>>=、<<=等。5.標(biāo)點符號每個標(biāo)點符號都可以單獨作為單詞使用。1.用戶類型定義語句把一個標(biāo)識符定義為一種數(shù)據(jù)類型。如typedefintinData;2.變量定義語句把標(biāo)識符定義為一個變量,如intx;3.函數(shù)原型語句函數(shù)聲明語句或函數(shù)說明語句。函數(shù)定義、函數(shù)聲明和函數(shù)調(diào)用。一個函數(shù)的聲明或定義必須在前,而對它的函數(shù)調(diào)用在后。4.表達式語句表達式就是進行運算的式子。表達式后加分號構(gòu)成表達式語句。
如y=3*x+5是賦值表達式,而y=3*x+5;是賦值表達式語句。5.復(fù)合語句由一對花括號括起來的一條或若干條語句。如{intx;x=10;}6.選擇類語句根據(jù)已知條件從多個分支語句塊中選擇一個滿足條件的語句塊執(zhí)行。if語句和switch語句。如if(x>=60)cn=1;elsecn=0;。7.循環(huán)類語句根據(jù)所設(shè)定的循環(huán)條件控制一個程序段反復(fù)執(zhí)行。for循環(huán)語句、while循環(huán)語句和do循環(huán)語句。如for(i=1;i<=10;i++)s=s+i;1+2+···+10=55。8.跳轉(zhuǎn)類語句改變程序從上到下順序執(zhí)行語句的次序,轉(zhuǎn)移到其他指定的位置執(zhí)行。goto語句、return語句、break語句、continue語句等。如gotoL1;函數(shù):函數(shù)頭和函數(shù)體。可以帶參數(shù),可以返回值。1.函數(shù)分類帶參函數(shù)和無參函數(shù);有返回值函數(shù)和無返回值函數(shù);數(shù)值函數(shù)、日期與時間函數(shù)、邏輯函數(shù)、字符串函數(shù)、存儲空間分配函數(shù)、文件函數(shù)、輸入與輸出函數(shù)等;系統(tǒng)函數(shù)和用戶函數(shù)。2.系統(tǒng)函數(shù)和用戶函數(shù)系統(tǒng)函數(shù)由C語言系統(tǒng)內(nèi)部的函數(shù)庫所定義的函數(shù),系統(tǒng)函數(shù)的所有函數(shù)原型被組織到系統(tǒng)頭文件中。
系統(tǒng)頭文件如math.h,stdio.h;
系統(tǒng)函數(shù)如printf(),scanf()。
用戶函數(shù)由用戶根據(jù)需要自己編寫函數(shù)定義的函數(shù)。3.C語言中的頭文件系統(tǒng)頭文件和用戶頭文件。
系統(tǒng)頭文件是在C語言系統(tǒng)內(nèi)已經(jīng)定義的頭文件。
用戶頭文件由用戶在程序中根據(jù)需要而定義的頭文件。
頭文件的使用:通過在程序文件開始使用#include命令。
頭文件的擴展名為h。如stdio.h是系統(tǒng)頭文件。
C頭文件的內(nèi)容:數(shù)據(jù)類型定義、常量定義、函數(shù)原型語句等。4.#include包含命令格式命令格式:#include<頭文件名>
#include"頭文件名"
尖括號表示引入的是系統(tǒng)頭文件;雙引號表示引入的是用戶頭文件。
如#include"abc.h"
#include"d:\\c語言\\abc.h"
包含命令可以包含頭文件,也可以包含一般的程序文件。
在編譯一個程序的過程中,用包含命令中的文件內(nèi)容取代該命令。
帶井字符開頭#include或其他命令都稱為編譯預(yù)處理命令。這些命令不能以分號結(jié)束,以示同語句的區(qū)別,無論是否被編譯,將始終保持在源文件中。
一個#include命令只能包含一個文件。5.C語言中函數(shù)的定義格式<函數(shù)類型><函數(shù)標(biāo)識符>(<參數(shù)表>)<函數(shù)體>
函數(shù)頭:<函數(shù)類型><函數(shù)標(biāo)識符>(<參數(shù)表>),是函數(shù)說明部分。
函數(shù)體:是一條復(fù)合語句,是函數(shù)的執(zhí)行部分。
intf1(intn){intp;p=n*n+1;returnp;}//n=5,返回26。6.主函數(shù)定義和作用定義格式:
<函數(shù)類型>main(<參數(shù)表>)<函數(shù)體>
主函數(shù)不是系統(tǒng)函數(shù),而是由用戶自己定義的用戶函數(shù),函數(shù)名main。
如intmain(intargc,char*argv){…}
常用格式:voidmain(void){語句序列}
若返回值類型為int,則函數(shù)體最后使用return0;結(jié)束7.使用主函數(shù)的程序舉例
#include
//包含的頭文件用來進行輸入和輸出
voidmain(void)
//主函數(shù)的頭部,無返回類型,無參數(shù)
{
//向下是函數(shù)體
printf("這是一個C語言程序的例子!\n");
//標(biāo)準(zhǔn)輸出函數(shù)
}
這是一個C語言程序的例子!
//輸出內(nèi)容
Pressanykeytocontinue//運行結(jié)束提示1.多文件結(jié)構(gòu)一個C語言程序包含一個或多個程序文件;每個程序文件是一個獨立的存儲單位和編譯單元;一個完整程序是一個獨立的程序運行單元。2.主程序文件一個完整的程序包含有一個主程序文件;一個主程序文件包含有主函數(shù)的定義的程序文件,主函數(shù)名main;一個C語言程序包含一個主程序文件,可以包含0個、1個或多個一般程序文件。3.程序文件的函數(shù)結(jié)構(gòu)一個程序文件可以包含一個或若干個用戶定義的函數(shù)。4.程序中的注釋注釋的作用:增強程序的可讀性注釋方法:雙斜線//;/*開始,*/結(jié)束使用注釋的程序舉例程序舉例1:
#include
//包含命令
intAdd(intx,inty);
//Add用戶函數(shù)定義的原型聲明語句
intmain(void)
//主函數(shù)的定義
{
inta;
//變量定義語句
a=Add(3,4);
//調(diào)用并賦值語句
printf("a=%d\n",a);//屏幕輸出函數(shù)調(diào)用
return0;//返回語句
}
intAdd(intx,inty)//Add函數(shù)定義
{
intz=x+y;returnz;//此返回x+y的和7
}
程序舉例2:
#include//標(biāo)準(zhǔn)I/O操作需包含stdio.h
#include//調(diào)用數(shù)學(xué)函數(shù)需包含math.h
/*以下是主函數(shù)定義*/
voidmain()//主函數(shù)頭
{//向下為函數(shù)體
doublex,y,z;//定義三個實數(shù)變量
x=9.0;//給變量x賦值為常數(shù)9.0
y=pow(x,3);//計算x3,其值729.0賦給y
z=sqrt(x);//計算x的平方根,其值3.0賦給z
printf("%5.0Lf%5.0Lf%5.0Lf\n",x,y,z);//輸出變量值
}
輸出結(jié)果:
97293
Pressanykeytocontinue
程序舉例3:
#include/*標(biāo)準(zhǔn)I/O操作需包含stdio.h*/
/*以下是主函數(shù)定義*/
voidmain()/*主函數(shù)頭*/
{/*向下為函數(shù)體*/
intx,y,z,w;//定義四個整型變量
scanf("%d%d%d",&x,&y,&z);//給x,y和z輸入整數(shù)
w=x+y+z;//x+y+z的值賦給w
printf("%d%d%d%d\n",x,y,z,w);//輸出x,y,z,w的值
}
程序運行結(jié)果如下:
234//鍵盤輸入
2349
Pressanykeytocontinue1.printf()函數(shù)的來歷和作用printf()函數(shù)是系統(tǒng)函數(shù),標(biāo)準(zhǔn)輸出函數(shù),向顯示器屏幕窗口輸出數(shù)據(jù)。需要在程序文件的開始使用#include包含命令,包含stdio.h。2.printf()函數(shù)格式函數(shù)原型聲明語句格式(包含在stdio.h頭文件中):intprintf(<字符指針參數(shù)>,<形式參數(shù)表>);函數(shù)調(diào)用格式(由編程者/用戶使用在用戶函數(shù)的定義中):printf(<格式字符串>,<實際參數(shù)表>);函數(shù)功能:將格式字符串中的非格式字符的內(nèi)容和實際參數(shù)表中每個數(shù)據(jù)項的值輸出到顯示器屏幕窗口上顯示出來。實際參數(shù)表:含有0個、一個或多個數(shù)據(jù)項,數(shù)據(jù)項之間用逗號分開。3.格式字符串格式字符串是用雙引號括起來的包含格式字符的字符序列。每個格式字符用來表示一種數(shù)據(jù)類型,以一個百分號%開始。格式字符串中可包含需原樣輸出的一般字符,如空格、換行等。在百分號%和格式字符之間帶有對齊方式、占用寬度、小數(shù)位數(shù)等。4.簡單格式字符串舉例如"%d*%d=%d\n",3個格式字符d,d代表整數(shù)int類型。格式字符串中3個格式字符d,對應(yīng)實際參數(shù)表中3個整型數(shù)據(jù)項。實際參數(shù)表中各數(shù)據(jù)項值的類型決定格式字符串中對應(yīng)格式字符的類型。如要輸出整數(shù)變量x的值,則對應(yīng)的格式字符為%d。5.常用的格式字符d、i、f、e、c、s、p、o、u、x、%。d和i:整數(shù)類型f和e:單精度類型,f是定點表示法,e是浮點表示法。如23.05是定點表示法的常數(shù),而2.305e+002是浮點表示法的常數(shù)??茖W(xué)表示法:尾數(shù)部分、指數(shù)符號e和指數(shù)部分。格式字符c:字符類型格式字符s:字符指針類型6.printf函數(shù)調(diào)用舉例a是char,值¢,¢,x是int,值32,wg是float,值2.56。printf("%c%d%f\n",a,,wg);輸出結(jié)果:,322.5600007.?dāng)?shù)據(jù)項的輸出寬度控制每個格式字符與它前面的百分號%之間,可以使用一個正整數(shù),用來規(guī)定對應(yīng)值的輸出寬度。printf("%5d\n",36);數(shù)據(jù)值按右對齊方式輸出,用負(fù)整數(shù)按左對齊方式輸出。printf("%-5d\n",36);8.輸出單精度數(shù)和雙精度數(shù)格式字符f將對應(yīng)輸出一個單精度數(shù),對于"%m.nf",m表示總寬度,n表示純小數(shù)部分所占用的寬度。printf("%6.2f\n",35.8);得到的輸出結(jié)果為“35.80”。格式字符lf或Lf表示雙精度類型。例如:printf("%lf",x)或printf("%Lf",x);將輸出一個雙精度變量x的值。9.輸出各種整數(shù)類型的數(shù)據(jù)短整數(shù)類型shortint、標(biāo)準(zhǔn)整數(shù)類型int、長整數(shù)類型longint。格式字符d表示標(biāo)準(zhǔn)整數(shù)類型int格式字符hd表示短整型類型shortint格式字符ld或Ld表示長整型類型longint假定標(biāo)識符a、b和c分別是短整型、標(biāo)準(zhǔn)整型和長整型的變量printf("%hd%d%ld\n",a,b,c);1.scanf()函數(shù)的來歷和作用標(biāo)準(zhǔn)輸入函數(shù)scanf()也是系統(tǒng)函數(shù),從標(biāo)準(zhǔn)輸入設(shè)備鍵盤輸入各種類型的數(shù)據(jù),給程序中的變量賦值。在使用scanf()函數(shù)調(diào)用前,也要使用#include命令包含stdio.h。2.scanf()函數(shù)格式函數(shù)原型聲明語句格式:intscanf(<字符指針參數(shù)>,<形式參數(shù)表>);函數(shù)調(diào)用格式:scanf(<格式字符串>,<實際參數(shù)表>);函數(shù)功能:執(zhí)行此函數(shù)調(diào)用時,等待用戶從鍵盤上為實際參數(shù)表中的每個變量依次輸入數(shù)據(jù)。接著從鍵盤緩沖區(qū)中讀取數(shù)據(jù),并依次賦值給實際參數(shù)表中的每個參數(shù)變量。實際參數(shù)表:是一個含有一個或多個實際參數(shù)的列表,每兩個參數(shù)之間必須用逗號分開,每個參數(shù)只能是指針類型的變量。若利用scanf()函數(shù)調(diào)用從鍵盤緩沖區(qū)為x輸入一個整數(shù),則應(yīng)書寫為scanf("%d",&x)。格式字符串:在格式字符串中,可以包含各種格式字符選項,也可以包含通常作為輸出或輸入數(shù)據(jù)值之間提示符的一般普通字符。對于printf()函數(shù),提示符是原原本本地顯示到屏幕,對于scanf()函數(shù),提示符是需要用戶從鍵盤上輸入的。在scanf()函數(shù)調(diào)用的格式字符串中,各格式字符之間通常使用空格字符。從鍵盤上輸入的數(shù)據(jù)之間也要求輸入一個空格,最后按下回車鍵結(jié)束。3.scanf()函數(shù)調(diào)用舉例(1)scanf("%d%d",&x,&y);(2)scanf("%d%lf",&n1,&x1);(3)scanf(“%d%c%d",&a,&p,&b);scanf()和printf()函數(shù)調(diào)用舉例/*這個程序用c1_4.c作為文件名保存,只有主程序文件。*/
#include
voidmain()
{intx,y;
y=0;
while(1)
{
scanf("%d",&x);
//輸入一個整數(shù)到x
if(x<=0)break;
//若x小于或等于0則退出循環(huán)
y=y+x;
//把x的值累加到y(tǒng)上
}
printf("y=%d\n",y);
//輸出y的值
}
若從鍵盤輸入的一組整數(shù)為:
3581215-1
//鍵盤輸入
輸出的結(jié)果為:
y=43//3+5+8+12+15=43運行VC++6.0后,打開一個可視化的操作界面窗口。文字教材中第1章第18頁圖1-1給出了一個抓圖視屏,它是進入VC++6.0集成開發(fā)環(huán)境后的主操作界面窗口。此操作界面窗口同具有windows風(fēng)格的各種軟件開發(fā)界面窗口的結(jié)構(gòu)大致相同,從上到下包含有標(biāo)題欄、菜單欄、工具欄、程序文本編輯區(qū)域、顯示程序編譯和連接信息的狀態(tài)區(qū)域等。在菜單欄中,包含有文件、編輯、查看、插入、工程、編譯、工具、窗口、幫助等菜單項。文字教材中的第1章第1.8節(jié),介紹了輸入、編輯、編譯、連接和運行一個C語言程序的全部操作過程,同學(xué)們應(yīng)當(dāng)認(rèn)真閱讀和實踐。利用VC++6.0集成開發(fā)環(huán)境開發(fā)C語言程序大致經(jīng)過以下幾步。第1步:針對問題建立程序的層次結(jié)構(gòu)根據(jù)要解決的具體編程問題,分析整個程序應(yīng)該由哪幾個程序文件和頭文件所組成,每個程序文件又包含有哪幾個函數(shù)定義,函數(shù)之間應(yīng)用如何調(diào)用等。第2步:編寫出C語言程序中的每個程序文件和一些頭文件最簡單的情況是:只需要編寫出一個程序文件,它就是包含主函數(shù)定義的主程序文件。第3步:上機輸入和編輯每個程序文件和頭文件
上機輸入、編輯和保存每個程序文件,同時輸入、編輯和保存每個用戶頭文件。通常先進行主程序文件的操作,再進行其他一般程序文件和頭文件的操作。第4步:編譯每個程序文件生成相應(yīng)的目標(biāo)代碼文件通過選擇“編譯”菜單項下的“編譯”子菜單項,能夠?qū)崿F(xiàn)對程序編輯區(qū)域中的當(dāng)前程序文件進行編譯。通常是首先編譯主程序文件,然后再編譯其他每個程序文件,目標(biāo)代碼文件的擴展名為obj,目標(biāo)文件的文件名與源程序文件的文件名相同。當(dāng)編譯一個程序文件出現(xiàn)錯誤時,對程序文件或涉及到的頭文件需要進行修改。然后再重新進行編譯。注意:每個用戶頭文件不能被單獨編譯,只能被使用在#include命令中,同所在的程序文件一起被編譯。第5步:把所有目標(biāo)代碼文件連接起來生成可執(zhí)行文件選擇“編譯”菜單項下的“連接”(構(gòu)件)子菜單項,將自動把當(dāng)前程序中的所有目標(biāo)代碼文件連接起來,自動生成一個可執(zhí)行的文件,該文件的擴展名為exe,其文件名同樣與源程序文件名相同。第6步:運行程序通過選擇“編譯”菜單項下的“執(zhí)行”子菜單項,將自動執(zhí)行當(dāng)前C語言源程序所對應(yīng)的可執(zhí)行程序文件,調(diào)用執(zhí)行主程序文件中的主函數(shù),依次執(zhí)行主函數(shù)體中的每條語句。Pressanykeytocontinue//提示信息1.?dāng)?shù)據(jù)類型的概念整數(shù)類型的數(shù)據(jù):人的年齡和工齡、物品的個數(shù)、時間上的天數(shù)實數(shù)類型的數(shù)據(jù):商品單價和重量、天氣的溫度和濕度、車輛行駛距離和速度。組合類型的復(fù)雜數(shù)據(jù):日期、居民身份證、商品、單位2.C語言中的數(shù)據(jù)分類3.?dāng)?shù)據(jù)類型的表示例如用標(biāo)識符int表示標(biāo)準(zhǔn)整數(shù)類型,用標(biāo)識符char表示字符類型,用標(biāo)識符float表示單精度實數(shù)類型。字符類型char:類型長度為1,值域范圍是-128到+127之間的整數(shù)。常用的ASCII代碼表中包含有128個字符,對應(yīng)的字符編碼為0至127。每個ASCII碼字符都屬于C語言中字符類型char中的一個字符。短整數(shù)類型shortint:類型長度為2,能夠表示-32768到+32767。4.系統(tǒng)定義的數(shù)據(jù)類型(1)標(biāo)準(zhǔn)整數(shù)類型:又分為有符號和無符號兩種。有符號標(biāo)準(zhǔn)整數(shù)類型:int或signedint長度4-231~+231-1無符號標(biāo)準(zhǔn)整數(shù)類型:unsigned或unsignedint0~+232-1有符號短整型:short、shortint、signedshortint無符號短整型:unsignedshort、或者unsignedshortint有符號長整型:long、longint、signedlongint無符號長整型:unsignedlong、或者unsignedlongint(2)實數(shù)類型:又分為單精度、雙精度、長雙精度等3種。單精度實數(shù)類型:float,類型長度為4,對應(yīng)二進制的32位,能夠精確保存到7位有效數(shù)字。實數(shù)-3.18359。雙精度實數(shù)類型:double,類型長度為8,對應(yīng)二進制的64位,能夠精確保存到15位有效數(shù)字。實數(shù)3.18359*7.2345的結(jié)果有11位有效數(shù)字。長雙精度實數(shù)類型:longdouble,類型長度為8(3)字符類型:又分為有符號和無符號兩種。有符號字符類型:char或signedchar無符號字符類型:unsignedchar表示(4)空類型:即無值類型或者叫做空值類型,使用保留字void表示。通常用來定義函數(shù)的返回類型。在函數(shù)名后面的一對圓括號內(nèi)填寫保留字void,表示參數(shù)表為空。例如:voidmain(void){…}5.用戶定義的數(shù)據(jù)類型枚舉類型:是需要用戶自己定義的一種簡單的數(shù)據(jù)類型,它以保留字enum開始,后跟用戶定義的標(biāo)識符,作為枚舉類型的名稱,再后面是用一對花括號括起來的部分,作為該枚舉類型的定義體,最后用分號結(jié)束定義。定義體中包含用逗號分開的枚舉常量標(biāo)識符,每個枚舉常量的值為它的位置序號。enumcolor{red,yellow,blue};其中color為該枚舉類型的標(biāo)識符,red、yellow和blue為枚舉常量,位置序號依次為0、1和2。enumcolorx=blue;enumday{Sun=7,Mon=1,Tues,Wed,Thur,Fri,Sat};常量:字面常量和符號常量。字面常量的值就是字面本身。如整數(shù)25。符號(標(biāo)識符)常量:定義時為它賦值,以后不允許被改變。在定義枚舉類型時,定義體中的標(biāo)識符都是符號常量,在C語言系統(tǒng)內(nèi)部定義有符號常量NULL,它的值為整數(shù)值0。1.字面常量字面常量又分為整數(shù)常量、實數(shù)常量、字符常量、字符串常量等四種。(1)整數(shù)常量:十進制、八進制和十六進制三種。十進制:第一個數(shù)字非0的正整數(shù)或負(fù)整數(shù),如1、25、-100、3270等。八進制:第一個字符為0、第二個及以后為八進制數(shù)字0-7的正整數(shù)。如023、074等。八進制采用逢8進1,每一位的權(quán)值為8的若干次方。如八進制數(shù)023對應(yīng)的十進制整數(shù)為19,又如0345對應(yīng)的十進制整數(shù)為229。十六進制:前兩個字符為0x或0X,后面為十六進制數(shù)字的正整數(shù)。十六進制采用逢16進1,并且具有16個數(shù)字符號,前10個數(shù)字符號借用十進制的0-9,后6個數(shù)字符號借用英文字母a-f(A-F)。如十六進制數(shù)0x23的十進制值為35;0Xa5c的十進制值為為12+80+2560=2652。字面整數(shù)常量的數(shù)據(jù)類型:當(dāng)一個整數(shù)常量屬于int類型的表示范圍時,則是一個int類型的整數(shù),若超出int類型的表示范圍,則是一個double類型的雙精度數(shù)。小寫或大寫字母u,則為unsignedint的整數(shù)小寫或大寫字母l,則為longint類型的長整數(shù)。如2525u25L。(2)實數(shù)常量:只有十進制表示,又分為定點和浮點兩種表示方法。定點表示方法:帶小數(shù)點不帶指數(shù)的表示方法。如12.0、-3.56、0.06等。浮點表示方法:在定點表示的基礎(chǔ)上,再添加有指數(shù)部分的表示方法。指數(shù)部分用小寫或大寫字母e表示冪的底數(shù)10,冪的指數(shù)緊跟在字母e之后。如2.45e3,其表示值是2.45*103;-30E-4,表示值是30.0*10-4。規(guī)范化的浮點表示方法:若在浮點數(shù)的定點部分(尾數(shù)部分),其小數(shù)點前只有一位不為0的數(shù)字。如3.05E-8對應(yīng)的數(shù)值為3.05*10-8。如32.5e6改寫為3.25e7就為規(guī)范了,-0.024e5改寫為-2.4e3就規(guī)范了。字面實數(shù)常量的類型確定:對于任一個實數(shù)常量,認(rèn)為是雙精度double類型的。小寫或大寫字符f,是單精度float類型的常量。如2.542.54f。又如2.54e3為雙精度類型,則2.54e3F則為單精度類型。(3)字符常量:就是一個ASCII碼字符,為了區(qū)別于數(shù)值或變量表示,必須在字符兩邊用單引號括起來。字符常量分為一般字符和轉(zhuǎn)義字符兩種。當(dāng)單引號內(nèi)只有一個字符時,則為一般(普通、可打?。┳址硎?,如a、5、+、G等。當(dāng)單引號內(nèi)包含有兩個或兩個以上字符,并且第1個字符為反斜線時,則為轉(zhuǎn)義字符表示。如\n表示打印輸出時的換行控制;\0表示空字符,輸出它時不起任何作用;\\也是一個轉(zhuǎn)義字符。在轉(zhuǎn)義字符表示中,其反斜線后面還允許使用3為八進制整數(shù)或以小寫字母x開始的2位十六進制整數(shù)。如\075;又如\x75,表示字符u。(4)字符串常量:就是用雙引號括起來的一串字符,簡稱為字符串。如"%d\n";又如"長×寬=面積\n"。2.符號常量第1種是通過使用#define編譯預(yù)處理命令,第2種是通過使用const常量定義語句,第3種是通過使用enum枚舉類型定義語句。(1)使用#define預(yù)處理定義命令例如:#definePI3.14159又如:#defineEND-100表達式END+20的值80。(2)使用const常量定義語句例如:constintMM=10;又如:constdoublePI=3.14159;//r*r*PI的值就是圓的面積。(3)在枚舉類型中定義的每個枚舉值都是符號常量例如:enumplace{beg=-1,cur=0,end=1};使用符號常量的好處:能夠增強程序的可讀性、安全性和易修改性。1.變量的概念在程序設(shè)計中,允許其值被改變的量叫做變量。2.變量定義語句<類型標(biāo)識符><變量名>[=<初值表達式>],…;半徑和面積的英文單詞radius和area作為變量名,應(yīng)該定義為實數(shù)變量。doubleradius,area;doubleradius=1,area=0;若需要在程序中定義一個變量表示年齡,定義另一個變量表示體重,假定采用的變量標(biāo)識符分別為age和weight:shortintage;floatweight;下面在看一些變量定義和賦值的例子。intx=1,y=2;intz=x+y;x=5;y=8;z=z+x+y;y=x+10;使用變量和常量的程序舉例帶有井字符的預(yù)處理編譯命令,變量和常量定義語句,函數(shù)原型聲明語句,主函數(shù)以及其他用戶函數(shù)的定義。函數(shù)頭后面用花括號括起來的為函數(shù)定義體,它就是一條復(fù)合語句,或者說是一個程序模塊。在函數(shù)定義體內(nèi),可以定義變量和常量,必須在所有其他語句的前面。
#include
//包含的頭文件用來進行輸入和輸出
#defineM-1
constintN=10;
inta=5;
voidmain(void)
//主函數(shù)的頭部,無返回類型,無參數(shù)
{
//向下是函數(shù)體
intx,y;
printf("請輸入兩個整數(shù):");
scanf("%d%d",&x,&y);
if(x>y)a=a*M+y;
elsea=a*N+x;
printf("x=%d,y=%d,a=%d\n",x,y,a);
}
x=6,y=7,a=56
x=7,y=6,a=11.運算符和表達式的概念運算符就是對數(shù)據(jù)進行運算的符號。每個運算符都有它專門的符號表示,有它的含義、運算目數(shù)(運算對象個數(shù))、優(yōu)先級和結(jié)合性等特性。
表達式是由操作數(shù)和運算符進行有效連接而成的式子。單個操作數(shù)是最簡單的表達式。如16、x、f(5),x+y,x>5,(a>5)&&(b<=10)。2.運算對象運算對象:就是利用運算符進行運算的數(shù)據(jù)。3+5。
運算符:單目運算符、雙目運算符和三目運算符3種。-x;x+y。3.運算符的功能分類算術(shù)運算符:+、-、*、/、%
比較運算符:<、<=、==、>、>=、!=
邏輯運算符:&&、||、!
賦值運算符:=、+=、-=、*=、/=、%=
指針運算符:&、*
成員訪問運算符:[]、.、->
其他:()、sizeof、++、--、,4.運算符的優(yōu)先級運算符優(yōu)先級有高低之分,高的先被計算,低的后被計算。
15個優(yōu)先級,優(yōu)先級編號越小表示優(yōu)先級越高。如*、/為3,+、-為4。5.運算符的結(jié)合性運算符的結(jié)合性分為從左向右和從右向左兩種相反次序。計算8-3+2。
賦值運算符的結(jié)合性是從右向左。a、b、c的值為2、3和4,a=b=c。6.常用運算符使用介紹●雙目算術(shù)運算符
+、-、*、/、%(取余),如30/8,30%8,(double)30/8,-30/4,-30%4,3+4.5*2/10
●賦值運算符
能夠把一個值賦給一個變量或通過運算后賦給一個變量。
賦值運算符:一般賦值運算符和復(fù)合賦值運算符兩類。
一般賦值運算符為等號,復(fù)合賦值運算符有許多種,+=、-=、*=、/=
如a=4;b=5;a+=3相當(dāng)于a=a+3;a*=b-2相當(dāng)于a=a*(b-2)
●增1(++)和減1(--)運算符:單目運算符,2級,右左
前增1:++i,先增后求值,若i=5,計算結(jié)果和i值均為6。
前減1:--i,先減后求值,若i=5,計算結(jié)果和i值均為4。
后增1:i++,先求值后增,若i=5,計算結(jié)果為5,i值為6。
后減1:i--,先求值后減,若i=5,計算結(jié)果為5,i值為4。
如x=2;y=3;z=x++*--y;若z=++x*y--;
●求類型長度運算符sizeof
如sizeof(int),sizeof(char),sizeof(-30)4,sizeof(2.5),sizeof(2.5f),sizeof(char*)
●強制類型轉(zhuǎn)換運算符()
(<類型關(guān)鍵字>)<表達式>
如(float)3/2=1.5f,(int)34.8=34,(float)(3/2)=1.0f
●增1(++)和減1(--)運算符:單目運算符,2級,右左
前增1:++i,先增后求值,若i=5,計算結(jié)果和i值均為6。
前減1:--i,先減后求值,若i=5,計算結(jié)果和i值均為4。
后增1:i++,先求值后增,若i=5,計算結(jié)果為5,i值為6。
后減1:i--,先求值后減,若i=5,計算結(jié)果為5,i值為4。
●關(guān)系(比較)運算符
共6個:>,>=,<,<=,==,!=
如5>4為真,3<=2為假。若x=2,x>0,x<=5,x!=2,x-3>=4。
關(guān)系表達式:由關(guān)系運算符連接而成的式子。如x+5>=y。
優(yōu)先級:>、>=、<、<=優(yōu)先于==、!=。
x=5,x==5。if(x=5)…;if(x==5)…
關(guān)系式的相反式:如x==1,相反式x!=1;x>y,相反式x<=y。
●邏輯運算符
3個與(&&)、或(||)、非(!)。如x&&y>4、a<=""span="">
&&:兩個運算對象的值同時為真,其結(jié)果為真,否則為假。
||:兩個運算對象的值同時為假,其結(jié)果為假,否則為真。
!:對其后的運算對象的值取反,真變假,假變真。
運算對象:數(shù)值(非0為真)、關(guān)系式、邏輯表達式
優(yōu)先級:!高于&&,&&高于||。
邏輯運算的等價關(guān)系:!!a與a、!(a&&b)與!a||!b、!(a||b)與!a&&!b。
邏輯運算的相反關(guān)系:a與!a、(a&&b)與!a||!b、(a||b)與!a&&!b。
如!(x>3&&x<8)與(x<=3||x>=8)等價。
如(g==1||g==2)與(g!=1&&g!=2)相反。
●條件運算符(?:)
<表達式1>?<表達式2>:<表達式3>
如:(x>y)?(z=x):(z=y);z=(x>y?x:y);
●逗號運算符
<表達式1>,<表達式2>,…;
從左到右相繼計算每個表達式的值,最后一個表達式的值就是整個逗號表達式的值。如a++,b++,c--;若a=2,b=3,c=4,則運算結(jié)果為4。
●圓括號運算符()
括號內(nèi)運算優(yōu)先進行,即先算括號內(nèi),后算括號外。如x/(y+2)。
圓括號可以嵌套。如(x*(y+5)-3),最內(nèi)層的括號更優(yōu)先。
要盡量使用圓括號。如x>=y+z與x>=(y+z)相同。
圓括號其他用途:f(x)、(int)3.5、sizeof(int)。<=""span=""style="color:rgb(0,0,0);font-family:"MicrosoftYaHei";font-size:medium;font-style:normal;font-variant-ligatures:normal;font-variant-caps:normal;letter-spacing:normal;orphans:2;text-align:start;text-indent:0px;text-transform:none;white-space:normal;widows:2;word-spacing:0px;-webkit-text-stroke-width:0px;text-decoration-thickness:initial;text-decoration-style:initial;text-decoration-color:initial;">7.表達式●分類:數(shù)值表達式、關(guān)系表達式、邏輯表達式、指針(地址)表達式。
如x*y-1、a!=5、(x==3)||(x>=10)、&x+2
●表達式運算
按照每個運算符的優(yōu)先級和結(jié)合性進行。
函數(shù)調(diào)用最優(yōu)先,邏輯非、取負(fù)、增1、減1等運算優(yōu)先于各種算術(shù)運算,算術(shù)運算優(yōu)先于各種關(guān)系運算,而關(guān)系運算又優(yōu)先于邏輯與、或的運算,優(yōu)先級較低的是直接賦值和各種復(fù)合賦值運算,括號內(nèi)優(yōu)先于括號外。
4*a+2/x-5//*,/,+,-
x>0&&y==10||2*a<=100//>,==,&&,*,<=,||
2-f(8)*4+5//f(8)*-+
●表達式的值
數(shù)值(算術(shù))表達式的計算結(jié)果將是一個數(shù)值。關(guān)系表達式和邏輯表達式的計算結(jié)果將是一個邏輯值1或0,為int類型的一個整數(shù);例如5>3運算結(jié)果為整數(shù)1。每個地址表達式的計算結(jié)果是一個內(nèi)存地址值,&x是一個取x內(nèi)存地址的地址表達式。
●數(shù)值表達式值的類型
每個字符就是一個整數(shù),它的值就是該字符的ASCII碼,如'b'+3*4的值就是98+12=110,值的類型也為int整型。
從類型長度(數(shù)據(jù)表示范圍)由小到大的次序排列為shortint、int、longint、float、double、longdouble。而當(dāng)字符或枚舉常量參與數(shù)值運算時,認(rèn)為是int類型的整數(shù)。
不同數(shù)值類型的操作數(shù)進行運算時,運算結(jié)果的類型向表示范圍較大的那個操作數(shù)的類型看齊。如25*3.0的值75.0,而不是75;25/38,而25/3.0是一個double型的實數(shù)8.333333。1.函數(shù)的概念能夠?qū)崿F(xiàn)獨立功能的一個程序模塊,它帶有名稱和參數(shù),并能夠被調(diào)用執(zhí)行??梢园亚髇個整數(shù)的平均值編寫為一個函數(shù),函數(shù)名為average,n個整數(shù)保存在一維數(shù)組a中,執(zhí)行該函數(shù)后將返回a中n個整數(shù)的平均值。2.系統(tǒng)函數(shù)和用戶函數(shù)系統(tǒng)函數(shù)有幾百個函數(shù)之多,涉及到數(shù)據(jù)輸入輸出、字符處理、數(shù)學(xué)計算、日期和時間、動態(tài)存儲分配等。用戶可以編寫出求平均值的函數(shù),求最大值的函數(shù),按遞增次序排列輸出一批數(shù)據(jù)的函數(shù)等。3.常用的系統(tǒng)函數(shù)C語言的所有系統(tǒng)函數(shù),可以通過相關(guān)的資料查閱得到。4.?dāng)?shù)學(xué)函數(shù)(math.h)求整數(shù)絕對值abs(x)或?qū)崝?shù)絕對值fabs(x),abs(-12)、fabs(-3.26)正弦sin(x)、余弦con(x)、正切tan(x)平方根sqrt(x)、sqrt(36)=6.0、自然指數(shù)exp(x)exe=2.718282冪pow(x,y)xy、pow(2,5)=32.0、自然對數(shù)log(x)lnx向下取整floor(x)、向上取整ceil(x)floor(4.6)=4.0、ceil(4.6)=5.0、floor(-4.6)=-5.0、ceil(-4.6)=-4.0函數(shù)返回值類型:abs(x)為int,其余為double。使用的系統(tǒng)頭文件:math.h#include5.隨機函數(shù)(stdlib.h)rand()返回0-32767之間的一個整數(shù);srand(s)當(dāng)自變量s的值不同時,將使系統(tǒng)產(chǎn)生不同的隨機數(shù)序列。如rand()%100得到0-99之間一個隨機數(shù)a+rand()%(b-a+1)得到a~b之間的一個隨機整數(shù)for(i=1;i<10;i++)printf("%d",rand()%100);//0~99共10個使用的系統(tǒng)頭文件:stdlib.h6.終止運行函數(shù)(stdlib.h)exit(1)執(zhí)行時結(jié)束程序執(zhí)行,返回到C++開發(fā)界面窗口7.函數(shù)調(diào)用或稱函數(shù)調(diào)用表達式<函數(shù)名>(<實參表>)正弦sin(x)、余弦con(x)、正切tan(x)實參表應(yīng)與函數(shù)定義中的參數(shù)表中的參數(shù)一一對應(yīng)。例:求指數(shù)函數(shù)原型doublepow(doublex,doubley);調(diào)用格式:pow(實參1,實參2)pow(3,2),pow(3*2,3)//9.0,216.0doublea=3,b=4,c;c=pow(a,b)-15;//c的值為66.08.將數(shù)學(xué)算式轉(zhuǎn)換成C語言表達式:(a+b)/(a-b):3*exp(x)*cos(x+3.14159/3):sqrt(x*x+y*y)/(2*a*b):a*pow(x,i1)*(1-pow(x,i2))使用函數(shù)的程序舉例(點擊展開)#include
#include
#include
intmain(void)
{
intx,y,z;
srand(time(0));
x=rand()%100;
y=rand()%100;
printf("%d+%d=",x,y);
scanf("%d",&z);
if(x+y==z)printf("計算正確!\n");
elseprintf("計算錯誤!\n");
}1.條件處理的概念哪些學(xué)生能夠被哪個大學(xué)錄取,是由填報志愿和高考分?jǐn)?shù)決定的。在使用scanf()函數(shù)調(diào)用前,也要使用#include命令包含stdio.h。在C語言中就是用if條件語句和switch開關(guān)語句來實現(xiàn)。2.條件語句格式if(<表達式>)<語句1>[else<語句2>]3.條件語句執(zhí)行過程4.格式舉例:(1)if(x!=-1)c++;(2)if(x%2)s1+=x;elses2+=x;(3)if(grade>=60&&grade<=100)printf("Pass!\n");(4)if(x*x+y*y==z*z){c++;w=x+y+z;}(5)if(x>=0){y=3*x-1;z=sqrt(x)+2;}else{y=6;z=y*pow(y,4);}(6)if(x=3)printf("%d",x);elseprintf("%d",x*x);5.if語句的嵌套結(jié)構(gòu)if(表達式1)語句1elseif(表達式2)語句2else語句3intx,y;scanf("%d",&x);//-336if(x<0)y=2*x+1;elseif(x<5)y=x*x-2;elsey=4*(x+3);printf("y=%d",y);//y=-5y=7y=366.含有if語句的程序分析程序1:#includevoidmain(){intx,y;printf("從鍵盤輸入一個整數(shù):");scanf("%d",&x);if(x<0)y=2*x-1;elsey=7*x+4;printf("x=%d,y=%d\n",x,y);}輸入一個整數(shù)5,則輸出y的值為39,輸入一個整數(shù)-5,則輸出y的值為-11。程序2:#include<stdio.h&>voidmain(){inta,b,c,temp;printf("輸入三個整數(shù):");scanf("%d%d%d",&a,&b,&c);if(a<b){temp="a;"a="b;"b="temp;}if(a<b){temp="a;"a="b;"b="temp;}if(a<c){temp="a;"a="c;"c="temp;}if(b<c){temp="b;"b="c;"c="temp;}printf("%d%d%d\n",a,b,c);//a≥b≥c}使用if語句的編程舉例編寫一個程序,求出一元二次方程ax2+bx+c=0的實數(shù)根。<strong分析:一元二次方程的實數(shù)根為,其中a≠0,b2-4ac≥0。對a="=0和b2-4ac<0的情況做特殊處理,當(dāng)滿足a≠0,b2-4ac≥0要求時,再利用計算公式分別求出x1和x2兩個實根的值。#include#include#includevoidmain(){doublea,b,c,d,x1,x2;printf("輸入方程的二次項系數(shù)、一次項系數(shù)和常數(shù)項:");scanf("%Lf%Lf%Lf",&a,&b,&c);if(a==0.0){printf("此方程不是二次方程!\n");exit(1);//中止程序運行}d=b*b-4*a*c;if(d<0.0){printf("此方程沒有實數(shù)根!\n");exit(1);//中止程序運行}if(d==0.0)x1=x2=-b/(2*a);else{x1=(-b+sqrt(d))/(2*a);x2=(-b-sqrt(d))/(2*a);}printf("此方程的兩個根為:%Lf和%Lf\n",x1,x2);}1.switch語句的概念一個單位需要同時為不同級別的人增加各自不同的工資。一個班主任需要根據(jù)學(xué)生成績的不同分?jǐn)?shù)段進行不同的成績評定。在C語言中需要通過switch語句(開關(guān)、分情況)來處理的。2.switch語句格式3.語句執(zhí)行過程第1步:計算出語句關(guān)鍵字switch后面圓括號內(nèi)<表達式>的值,用M表示;第2步:讓M依次同每個case子句標(biāo)號常量1、常量2、...依次進行比較,執(zhí)行對應(yīng)標(biāo)號后面的語句序列;在碰不到相等的情況下,若存在default子句,則就執(zhí)行此子句冒號后面的語句序列,否則不執(zhí)行任何操作。語句格式舉例舉例1:intc0=0,c1=0,c2=0,n;scanf("%d",&n);switch(n%3){case0:c0++;break;case1:c1++;break;case2:c2++;break;}舉例2:switch(ch){//其值為Mcase'a':case'A':printf("優(yōu)秀\n");break;case'b':case'B':printf("良好\n");break;case'c':case'C':printf("一般\n");break;default:printf("較差\n");}使用switch語句的程序舉例#include#includevoidmain(){//把0~15之間的一個整數(shù),輸出對應(yīng)的十六進制的數(shù)字字符intx;printf("輸入0~15之間的一個整數(shù):");scanf("%d",&x);if(x<0||x>15){printf("輸入數(shù)據(jù)不正確!\n");exit(1);}switch(x){case10:printf("%c",'A');break;case11:printf("%c",'B');break;case12:printf("%c",'C');break;case13:printf("%c",'D');break;case14:printf("%c",'E');break;case15:printf("%c",'F');break;default:printf("%c",x+48);break;}printf("\n");}使用switch語句編程舉例要求:根據(jù)從鍵盤上輸入的兩個整數(shù)和一個二目算術(shù)運算符求出運算結(jié)果。分析在程序開始包含stdio.h頭文件;定義兩個整數(shù)變量為x和y,定義一個字符變量為op;定義一個整數(shù)變量為z,z=xopy,此計算需要使用switch語句;程序中只需一個主函數(shù),完成變量定義,數(shù)據(jù)輸入,計算和輸出。#include#includevoidmain(){intx,y,z;charop;printf("輸入兩個整數(shù)和一個運算符:");scanf("%d%d%c",&x,&y,&op);if((op=='/'||op=='%')&&y==0){printf("除數(shù)為0");exit(1);}switch(op){case'+':z=x+y;break;case'-':z=x-y;break;case'*':z=x*y;break;case'/':z=x/y;break;case'%':z=x%y;break;default:{printf("運算符錯!\n");exit(1);}}printf("%d%c%d=%d\n",x,op,y,z);}程序運行結(jié)果:輸入兩個整數(shù)和一個運算符:508/50/8=61.循環(huán)的概念如財務(wù)人員需要給每個人計算工資,一個班級需要計算學(xué)生一次考試的總成績和平均成績。在C語言程序設(shè)計中有for語句、while語句、do循環(huán)語句。2.for循環(huán)語句的格式:for(<表達式1>;<表達式2>;<表達式3>)<語句>3.for循環(huán)語句的執(zhí)行過程:(1)計算循環(huán)頭部中的表達式1的值;(2)計算循環(huán)頭部中的表達式2的值,假定其值為M,若缺省其值為1;(3)若M為邏輯真(非0)則執(zhí)行一遍循環(huán)體,否則結(jié)束for語句;(4)計算表達式3的值,緊接著自動轉(zhuǎn)向第2步繼續(xù)執(zhí)行循環(huán)循環(huán)。4.for語句格式舉例(1)for(i=0;i<5;i++)printf("%d",i*i);//014916(2)for(j=1,p=1;j<=M;j++,p*=j);//p=(M+1)!(3)for(k=1,s=0;;){s+=k*(k+1);k+=2;if(k>5)break;}//k=7,s=2+12+30=445.for語句嵌套在一個for循環(huán)語句的循環(huán)體內(nèi),還可以包含有for循環(huán)語句。(1)for(i=1;i<4;i++)for(j=1;j<=5;j++)s+=1;2)for(i=1;i<4;i++)for(j=1;j<=i;j++)p+=i*j;//p=25次數(shù)1+2+3=6(3)for(i=1;i<=5;i++){scanf("%d",&x);for(j=2;j<=3;j++)if(x%j==0)break;if(j>3)c++;}//38131525C=2使用for循環(huán)的程序舉例程序1:#include#includevoidmain(){intn,x,max,min;printf("輸入待處理數(shù)據(jù)的個數(shù)(n>0):");scanf("%d",&n);for(;n<=0;){printf("重輸(n>0):");scanf("%d",&n);}printf("需要從鍵盤上輸入%d個待處理的數(shù)據(jù)!\n",n);//輸入提示scanf("%d",&x);max=min=x;for(;--n;){scanf("%d",&x);if(x>max)max=x;if(x<min)min="x;}printf("max:%d,min:%d\n",max,min);}輸入待處理數(shù)據(jù)的個數(shù)(n>0):6需要從鍵盤上輸入6個待處理的數(shù)據(jù):486230245536max:62,min:24程序2:#includevoidmain(){inta,b;for(a=0,b=1;b<20;a=a+b,b=a+b)printf("%d%d",a,b);//011235813printf("%d%d\n",a,b);//2134}利用for循環(huán)編程舉例舉例1:編一程序計算出1+22+42+62++502的值。分析:設(shè)循環(huán)變量為i,它的初值、終值和步長應(yīng)分別為2、50和2,設(shè)用于累加的變量為s,它的初值應(yīng)為和式中的第一項1。在循環(huán)體中每次把i的平方值累加到s上。#includevoidmain(){inti,s=1;for(i=2;i<=50;i+=2)s+=i*i;printf("s=%d\n",s);}運行結(jié)果:s=22101舉例2:由勾股定理可知,在一個直角三角形中,兩條直角邊a和b與斜邊c的關(guān)系為a2+b2=c2,編一程序求出每條直角邊均不大于30的所有整數(shù)組解。如(3,4,5)、(5,12,13)就是該題的2組解。分析:根據(jù)題意,需要使用三重循環(huán)來解決,設(shè)外循環(huán)變量用a表示,初值、終值和步長取1、30和1。內(nèi)循環(huán)變量用b表示,初值、終值和步長取a+1,30和1。會出現(xiàn)象(3,4,5)和(4,3,5)這樣的重復(fù)組。最內(nèi)層循環(huán)的變量用c表示,它表示直角三角形的斜邊,c>b同時c1。#includeconstintN=30;voidmain(){inta,b,c;for(a=1;a<=N;a++)for(b=a+1;b<=N;b++){for(c=b+1;c<=b+a-1;c++){if(c*c==a*a+b*b)&nprintf("(%d,%d,%d)\n",a,b,c);p;}}}運行結(jié)果://共13組,前5組(3,4,5)(5,12,13)(6,8,10)(7,24,25)(8,15,17)
1.while語句格式和功能while(<表達式>)<語句>2.while循環(huán)語句的執(zhí)行過程(1)計算循環(huán)頭部中圓括號內(nèi)表達式的值,假定其值為M;(2)若M的值為非0,則執(zhí)行循環(huán)體,否則結(jié)束整個循環(huán)的執(zhí)行;(3)循環(huán)體執(zhí)行結(jié)束后轉(zhuǎn)向第1步,繼續(xù)執(zhí)行下一次循環(huán)。while循環(huán)語句的格式舉例(1)while(x<=0)scanf("%d",&x);(2)while(1){s+=i*i;i++;if(s>50)break;}//s=1,5,14,30,55(3)while(i++<n){<=""span="">x=rand()%99+1;if(x%2==0)c2++;if(x%3==0)c3++;if(x%5==0)c5++;}//對隨機產(chǎn)生的N個正整數(shù),統(tǒng)計被2、3、5整除的個數(shù)帶有while循環(huán)的程序舉例#include#includevoidmain(){inti=10;while(i>0){inta,k;a=rand()%189+11;for(k=2;k*k<=a;k++)if(a%k==0)break;if(k*k>a){printf("%d",a);i--;}}printf("\n");}程序功能:隨機產(chǎn)生出10個11~199之間的素數(shù)并顯示出來。14917113837361191179163197使用while循環(huán)編程舉例編程舉例1:編一程序求出滿足不等式的最小n值。分析:對于和式中的每個數(shù)據(jù)項,對應(yīng)的通式為1/i,i=1、2、...、n。設(shè)循環(huán)變量為i,它應(yīng)從1開始取值,每次增加1,直到和式的值不小于5為止,此時的i值就是所求的n值;設(shè)累加變量為s,初值為0,在循環(huán)體內(nèi)應(yīng)把1/i的值累加到s上。#includestdio.hvoidmain(){inti=1;doubles=0;while(s<5)s+=1.0/i++;printf("n=%ds=%Lf\n",i-1,s);}//n=83s=5.002068編程舉例2:編寫一個程序,采用輾轉(zhuǎn)相除法求出兩個正整數(shù)的最大公約數(shù)。分析:設(shè)兩個正整數(shù)分別為a和b,a除以b的整余數(shù)用r表示,若r==0,則表明b能被a整除,則b就是a和b的最大公約數(shù),否則,令b賦給a,r賦給b,再接著上述過程,直到整余數(shù)r為0時止,此時的b的值就是原有兩個正整數(shù)a和b的最大公約數(shù)。#includestdio.hvoidmain(){inta,b,r;printf("請輸入兩個正整數(shù):");scanf("%d%d",&a,&b);while(a<=0||b<=0){printf("重輸:");scanf("%d%d",&a,&b);}printf("正整數(shù)%d和%d的最大公約數(shù):",a,b);r=a%b;while(r){a=b;b=r;r=a%b;}printf("%d\n",b);}//請輸入兩個正整數(shù):4024//正整數(shù)40和24的最大公約數(shù):81.do循環(huán)語句格式do<語句>while(表達式);2.do循環(huán)語句的執(zhí)行過程(1)執(zhí)行一次循環(huán)體語句;(2)計算表達式的值,若為非0再繼續(xù)執(zhí)行循環(huán)體,否則結(jié)束循環(huán)。特點:是先執(zhí)行循環(huán)體后進行循環(huán)條件的判斷。與for和while循環(huán)相反。3.三種循環(huán)語句的比較for和while語句是先判斷循環(huán)條件再執(zhí)行循環(huán)體,而do循環(huán)是先執(zhí)行循環(huán)體而后判斷。當(dāng)循環(huán)次數(shù)固定時,通常采用for循環(huán)較方便。當(dāng)需要先執(zhí)行后判斷時選擇do循環(huán),否則選擇for或while循環(huán)。在任一種循環(huán)的循環(huán)體內(nèi)都可以使用break語句,break語句也能夠中止switch語句的執(zhí)行過程。do循環(huán)語句格式舉例(1)dos+=i++;while(s<10);(2)do{scanf("%d",&x);s*=x;}while(--n);程序舉例程序1:#include#defineNM10voidmain(){intx,n=1,c=0;do{scanf("%d",&x);if(x>=30&&x<=60)c++;}while(n++<nm);<span="">printf("c=%d\n",c);}根據(jù)從鍵盤上輸入的NM個整數(shù),統(tǒng)計出30至60內(nèi)的整數(shù)個數(shù)并輸出。程序2:#includevoidmain(){inti,x;printf("請輸入一個整數(shù),若小于3則重輸:");doscanf("%d",&x);while(x<=2);i=2;do{while(x%i==0){printf("%d",i);x/=i;}i++;}while(i<=x);printf("\n");}//x=24,2223;50,255;37,37程序功能:把一個大于等于3的整數(shù)分解為質(zhì)因數(shù)的乘積。跳轉(zhuǎn)類語句共有四條這種語句,goto、continue、break和return。1.goto語句goto<語句標(biāo)號>如:gotofinish;當(dāng)執(zhí)行到goto語句時,就轉(zhuǎn)移到語句標(biāo)號所標(biāo)識的位置執(zhí)行。goto語句中的<語句標(biāo)號>所標(biāo)識的位置必須與goto語句在同一函數(shù)體內(nèi)。voidfunc(doublex){doubley;if(x<0){y=3*x*x-1;gotofinish;}if(x>=0&&x<=10){y=exp(x)/3+2;gotofinish;}y=5*sqrt(x)-2*x+1;finish:printf("x=%Lf\n",x);printf("y=%Lf\n",y);}2.continue語句只能使用在任一種循環(huán)語句內(nèi),執(zhí)行時將結(jié)束循環(huán)體的一次執(zhí)行。while(1){scanf("%d",&x);if(x<=0)break;if(x<60)continue;c++;//2562783086-5c的值為3}3.break語句應(yīng)用范圍:使用在各種循環(huán)語句的循環(huán)體中和switch語句的語句體中。功能:結(jié)束整個循環(huán)語句或開關(guān)語句的執(zhí)行過程。例如:#includevoidmain(){inti,s=0;for(i=1;i<=10;i++){s+=i;//s=1,3,6,10,15,21if(s>15)break;}printf("%d%d\n",i,s);//621}又如:#includevoidmain(){inti=3,s=0;switch(i){case2:s+=i;case3:s+=i*i;case4:s+=i+5;break;default:s+=6;}printf("s=%d\n",s);//s=17若取消break則s=23}4.return語句語句格式:return[表達式];功能:結(jié)束整個函數(shù)的執(zhí)行過程,并計算出表達式的值,把這個值返回到調(diào)用該函數(shù)的位置。對于void函數(shù),使用return語句時,將省略其后的表達式,并且函數(shù)定義中可以不使用return語句,當(dāng)執(zhí)行到右花括號,將結(jié)束函數(shù)執(zhí)行。但對于不是void類型的函數(shù)定義,必須在函數(shù)體中至少使用一條return語句,用來返回一個值。#includeintTwoAdd(inta,intb){returna+b;}voidTwoMult(intx,inty){printf("%d*%d=%d\n",x,y,x*y);}voidmain(){intx=15,y=20;intz=TwoAdd(x,y);//z的值為35printf("%d+%d=%d\n",x,y,z);//輸出15+20=35TwoMult(x,y);//輸出15*20=300}1.?dāng)?shù)組的引入數(shù)組是一種組合數(shù)據(jù)類型,用一個數(shù)組能夠同時表示和保存一批數(shù)據(jù)。數(shù)組中包含有若干個相同類型的數(shù)據(jù),每個數(shù)據(jù)稱為該數(shù)組的一個元素,每個元素通過數(shù)組名、下標(biāo)及下標(biāo)運算符(一對中括號)來表示。具體格式是:<數(shù)組名>[<下標(biāo)>]例如:a[5]數(shù)組元素、下標(biāo)變量2.?dāng)?shù)組的分類:按照數(shù)組維數(shù):一維數(shù)組:元素帶有一個下標(biāo)a[5]二維數(shù)組:元素帶有兩個下標(biāo)b[3][4]三維數(shù)組:元素帶有三個下標(biāo)c[0][3][2]按照元素的數(shù)據(jù)類型:整型數(shù)組、實型數(shù)組、字符數(shù)組、字符串?dāng)?shù)組、指針數(shù)組、結(jié)構(gòu)數(shù)組3.一維數(shù)組表示一維數(shù)組能夠用來表示具有相同數(shù)據(jù)類型的一組成序列的數(shù)據(jù),每個一維元素對應(yīng)一個編號(下標(biāo))。數(shù)組a:{12,34,56,34,58,44,66}下標(biāo):0123456表示:a[0]a[1]a[2]a[3]a[4]a[5]a[6]一維數(shù)組長度:數(shù)組中所包含的數(shù)據(jù)元素的個數(shù)。4.二維數(shù)組表示二維數(shù)組能夠用來表示具有相同數(shù)據(jù)類型、一組按照行列表格結(jié)構(gòu)排列的數(shù)據(jù),每個數(shù)據(jù)既對應(yīng)有行號,又對應(yīng)有列號。二維數(shù)組c行下標(biāo)0、1、2列下標(biāo)0、1、2、3二維數(shù)組元素(雙下標(biāo)變量)c[1][0]=4,c[2][3]=10二維數(shù)組長度(元素總數(shù)):行數(shù)*列數(shù)二維數(shù)組c的長度(元素總數(shù)):3*4=121.一維數(shù)組定義語句格式<元素類型關(guān)鍵字><數(shù)組名>[<常量表達式>][={<元素初值表>}];如:intgrade[10];一維數(shù)組的存儲空間大小:等于元素類型長度乘以數(shù)組長度。如inta[10];占用40個字節(jié)2.一維數(shù)組定義語句舉例(1)inta[20];//a[0]a[1]…a[19]80(2)doubleb[MS];//b[0]b[1]…b[NS-1]8*MS(3)intc[5]={1,2,3,4,0};//數(shù)組長度5占用字節(jié)數(shù)20(4)chard[]={a,b,c,d};//d[0]=ad[1]=bd[2]=cd[3]=d(5)inte[8]={1,4,7};//e[0]=1e[1]=4e[2]=7e[3]-e[6]=0(6)charf[10]={B,A,S,I,C};//f[5]-f[9]=’\0’(7)floath1[5],h2[10];//一條語句中定義多個同類型數(shù)組(8)intx=1,y=2,w[4]={0};//同在一條語句中定義簡單變量和數(shù)組3.一維數(shù)組元素的使用inta[10];下標(biāo)變量表示:<數(shù)組名>[<下標(biāo)表達式>]下標(biāo)表達式:常量、變量、函數(shù)或一般表達式下標(biāo)變量例:a[5]、a[i]、a[j++]、a[2*x+1]數(shù)組與下標(biāo)變量具有相同的表示格式,但具有不同的出現(xiàn)場合。inta[6]={1,2,3,4,5,6};//a[6]為數(shù)組,數(shù)組長度為6表達式a[4]*3+2中的a[4]為下標(biāo)變量,表達式值為5*3+2=17。使用一維數(shù)組的程序舉例程序1:
#include
voidmain()
{
inti,a[6];
printf("輸入6個整數(shù):");
for(i=0;i<6;i++)scanf("%d",&a[i]);
for(i=5;i>=0;i--)printf("%d",a[i]);
printf("\n");
}
輸入:381262015
輸出:152061283
程序2:
#include
#defineM10
voidmain()
{
inti,a[M+1];
a[0]=1;a[1]=2;
for(i=2;i<=M;++i)a[i]=a[i-1]+a[i-2];
//a[2]=a[1]+a[0]=3,a[3]=a[2]+a[1]=5,a[4]=8,
for(i=0;i<m;++i)=""printf("%d,=""",a[i]);<=""span="">
printf("%d\n",a[M]);
}
輸出:1,2,3,5,8,13,21,34,55,891.二維數(shù)組定義語句格式<元素類型關(guān)鍵字><二維數(shù)組名>[<常量表達式1>][<常量表達式2>][={{<子列表1>},{子列表2},...}];例如:inta[2][4];a[0][0]a[0][1]a[0][2]a[0][3]a[1][0]a[1][1]a[1][2]a[1][3]二維數(shù)組a中的元素總數(shù):行數(shù)×列數(shù)=2*4=8。二維數(shù)組a的存儲空間大小:元素類型長度×行數(shù)×列數(shù)=4*2*4=322.二維數(shù)組存儲空間的分配進行二維數(shù)組存儲空間分配,是先按照行下標(biāo)從小到大次序,再按照列下標(biāo)從小到到次序。如doublec[3][4];元素數(shù):3*4=12,存儲字節(jié)數(shù):8*12=96,字節(jié)編號范圍:0-95。二維數(shù)組中任一元素的開始字節(jié)地址的計算公式:address(d[i][j])=sizeof(<元素類型>)*(i*<列總數(shù)>+j)//d是數(shù)組名如address(c[1][3])=sizeof(double)*(1*4+3)=8*7=563.二維數(shù)組定義語句舉例(1)inta[3][3];(2)doubleb[M][N];(3)intc[2][3]={{1,3,5},{2,4,6}};(4)intd[M-1][M+1]={{0}};(5)inte[4][5]={{0},{1,2}};(6)charg[10],h[10][5];4.二維數(shù)組元素的使用元素的表示:<數(shù)組名>[<行下標(biāo)表達式>][<列下標(biāo)表達式>]例如:inta[4][5];a[1][2]=6;a[2][2]=3*a[1][2]+1;//a[2][2]=19printf("%d\n",a[i][j]);printf("%d\n",a[i++][j++]);5.二維數(shù)組的遍歷二維數(shù)組的遍歷就是依次訪問數(shù)組中的每個元素。對二維數(shù)組的遍歷,需要采用雙重循環(huán),外循環(huán)按行下標(biāo)從小到大,內(nèi)循環(huán)按列下標(biāo)從小到大,在內(nèi)循環(huán)體中依次訪問每個元素。inti,j,s=0,a[M][N];for(i=0;i<m;i++)<=""span="">for(j=0;j<n;j++)=""s+="a[i][j];printf("s=%d\n",s);#defineM3#defineN3a[M][N]={{2,3,4,},{5,6,7},{4,6,8}};//s=2+3+4+5+6+7+4+6+8=45使用二維數(shù)組的程序舉例程序1:
#include
voidmain()
{intb[2][3]={{7,15,5},{4,6,8}};
inti,j,min=b[0][0];
for(i=0;i<2;i++)
for(j=0;j<3;j++)
if(b[i][j]<min)min="b[i][j];
printf("%d\n",min);
}
程序功能:從數(shù)組b[2][3]中求出所有元素的最小值并輸出。程序2:
#include
voidmain()
{intd[3][3]={{1,5},{3,2},{6,7}};
inti,j;
for(i=0;i<3;i++){
for(j=0;j<2;j++)d[i][2]+=d[i][j];
}
for(i=0;i<3;i++)printf("%d",d[i][2]);
}//6513
程序功能:利用d中每行最后一個元素累加前面同行所有元素值,并輸出。inta[10];intb[3][4];//a和b都屬于數(shù)組變量,不是數(shù)組類型。通過使用typedef語句來實現(xiàn)定義數(shù)組類型的功能。1.一維數(shù)組類型的定義語句格式typedef<元素類型關(guān)鍵字><數(shù)組類型名>[<常量表達式>];語句格式舉例:(1)typedefintVector[10];//int[10]Vectora;等價于inta[10];(2)typedefcharStrings[80];//char[80]Stringsns;等價charns[80];(3)typedefdoubleArray[N];//double[N]Arrayd={2,4};doubled[N]={2,4};2.二維數(shù)組類型的定義語句格式二維數(shù)組類型的定義語句的格式:typedef<元素類型><數(shù)組類型名>[<常量表達式1>][<常量表達式2>];
語句格式舉例:(1)typedefintMatrix[5][5];//int[5][
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版勞動者勞動社會保險合同(特殊工種)3篇
- 二零二五版水溝施工與承包勞務(wù)合同范本2篇
- 二零二五版家政服務(wù)公司家政服務(wù)與品牌建設(shè)合同3篇
- 二零二五版宅基地使用權(quán)轉(zhuǎn)讓與房屋租賃一攬子合同2篇
- 二零二五版遠(yuǎn)程辦公勞動合同簽訂與工作質(zhì)量監(jiān)控3篇
- 二零二五版辦公用品耗材行業(yè)聯(lián)盟采購合同2篇
- 二零二五版旅游租車服務(wù)合同范本2篇
- 2025年草原草原生態(tài)保護與資源合理利用合同3篇
- 二零二五版家具原料采購合同與供應(yīng)鏈管理協(xié)議3篇
- 展會市場調(diào)研服務(wù)合同(2篇)
- 非ST段抬高型急性冠脈綜合征診斷和治療指南(2024)解讀
- 產(chǎn)品共同研發(fā)合作協(xié)議范本5篇
- 風(fēng)水學(xué)的基礎(chǔ)知識培訓(xùn)
- 吸入療法在呼吸康復(fù)應(yīng)用中的中國專家共識2022版
- 1-35kV電纜技術(shù)參數(shù)表
- 信息科技課程標(biāo)準(zhǔn)測(2022版)考試題庫及答案
- 施工組織設(shè)計方案針對性、完整性
- 2002版干部履歷表(貴州省)
- DL∕T 1909-2018 -48V電力通信直流電源系統(tǒng)技術(shù)規(guī)范
- 2024年服裝制版師(高級)職業(yè)鑒定考試復(fù)習(xí)題庫(含答案)
評論
0/150
提交評論