




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
全國計算機等級考試
(NCRE)教師簡介姓名:范老師性別:男座右銘:好人一生平安,我是好人。對國家貢獻:獲得國家認可教師資格認證。對社會貢獻:培養了一大批有為青年。對家庭貢獻:有一個妻子。對妻子貢獻:一個孩子。對孩子貢獻:沒有家聯系方式群:195985189學習C語言加群195985189
全國計算機等級考試
(NCRE)教師簡介C語言最早的計算機語言。
最接近人類思維的語言。
最基礎的軟件設計語言。
最經典的數據結構語言。學習C語言加群195985189怎么學好C語言???1.了解C語言的運行環境。2.熟悉關鍵字的使用語法。3.掌握各種解決問題的手段或方法。4.反復練習例題,從中反饋。5.學會做夢學習C語言加群195985189目錄第1章程序設計基本概念第2章C程序設計的初步知識第3章順序結構第4章選擇結構第5章循環結構第6章字符型數據第7章函數第8章地址和指針第9章數組第10章字符串第11章對函數的進一步討論第12章C語言中用戶標識符的作用域和存儲類第13章編譯預處理和動態存儲分配第14章結構體、共用體和用戶定義類型第15章位運算第16章文件第17章上機指導學習C語言加群195985189C語言的特點C語言是一種結構化語言。它層次清晰,便于按模塊化方式組織程序,易于調試和維護。C語言的表現能力和處理能力極強。它不僅具有豐富的運算符和數據類型,便于實現各類復雜的數據結構。它還可以直接訪問內存的物理地址,進行位(bit)一級的操作。由于C語言實現了對硬件的編程操作,因此C語言集高級語言和低級語言的功能于一體。既可用于系統軟件的開發,也適合于應用軟件的開發。此外,C語言還具有效率高,可移植性強等特點。因此廣泛地移植到了各類各型計算機上,從而形成了多種版本的C語言。學習C語言加群195985189Visualc++6.0簡介VisualC++6.0,簡稱VC或者VC6.0,是微軟推出的一款C++編譯器,將“高級語言”翻譯為“機器語言(低級語言)”的程序。VisualC++是一個功能強大的可視化軟件開發工具。自1993年Microsoft公司推出VisualC++1.0后,隨著其新版本的不斷問世,VisualC++已成為專業程序員進行軟件開發的首選工具。雖然微軟公司推出了VisualC++.NET(VisualC++7.0),但它的應用的很大的局限性,只適用于Windows2000、WindowsXP和WindowsNT4.0。所以實際中,更多的是以VisualC++6.0為平臺。
VisualC++6.0不僅是一個C++編譯器,而且是一個基于Windows操作系統的可視化集成開發環境(integrateddevelopmentenvironment,IDE)。VisualC++6.0由許多組件組成,包括編輯器、調試器以及程序向導AppWizard、類向導ClassWizard等開發工具。這些組件通過一個名為DeveloperStudio的組件集成為和諧的開發環境。編輯本段缺點由于C++是由C語言發展起來的,也支持C語言的編譯。6.0版本是使用最多的版本,很經典。最大的缺點是對于模版的支持比較差。現在最新補丁為SP6,推薦安裝,否則易出現編譯時假死狀態。學習C語言加群1959851891.1程序和程序設計C語言源程序C語言編譯程序二進制機器指令(目標程序).C.OBJ高級語言機器語言C語言連接程序可執行文件.EXE考點算法的基本特征①有窮性、②確定性、③可行性④有零個或多個輸入⑤有一個或多個輸出結構化程序設計的三種基本結構順序結構選擇結構循環結構考點總結:由以上3種基本結構組成的算法可以完成任何復雜的問題.考點總結:用C程序實現的算法可以沒有輸入,但必須要有輸出.學習C語言加群195985189N-S圖由一些特定意義的圖形、流程線及簡要的文字說明構成,它能清晰明確地表示程序的運行過程。在使用過程中,人們發現流程線不一定是必需的,為此,人們設計了一種新的流程圖,它把整個程序寫在一個大框圖內,這個大框圖由若干個小的基本框圖構成,這種流程圖簡稱N-S圖學習C語言加群195985189程序的結構化結構是指系統內各個組成要素之間的相互聯系、相互作用的框架。結構化開發方法提出了一組提高軟件結構合理性的準則,如分解與抽象、模塊獨立性、信息隱蔽等。針對軟件生存周期各個不同的階段,它有結構化分析(SA)、結構化設計(SD)和結構化程序設計(SP)等方法學習C語言加群195985189程序的模塊化一個模塊就是一個獨立的功能通常考試二級的時候總是考試一個模塊的編寫學習C語言加群195985189習題1.1在VC6.0環境中用RUN命令運行一個C程序時,這時所運行的程序的后綴是_________。1.2C語言源程序文件名的后綴是_________;經過編譯后,生成文件的后綴是_________;經過連接后,生成文件的后綴是_________。1.3結構化程序由_________、_________、_________三種基本結構組成。.exe.c.obj.exe順序結構選擇結構循環結構學習C語言加群195985189第2章C程序設計的初步知識2.1簡單C語言程序的構成和格式2.2標識符、常量和變量2.3整型數據2.4實型數據2.5算術表達式2.6賦值表達式2.7自加、自減運算符和逗號運算符學習C語言加群1959851892.1簡單C語言程序的構成和格式本節將通過一個簡單的程序例子,介紹C程序的一些基本構成和格式,使大家對C語言程序有一個初步的了解。例2.1
已知矩形的兩條邊長(用a表示寬,b表示長),求矩形的面積(area)。#include<stdio.h>main(){doublea,b,area;a=1.2;b=3.6;area=a*b;printf(“a=%f,b=%f,area=%f\n”,a,b,area);}a=1.200000,b=3.600000,area=4.320000注意:1.C程序由函數組成,一個程序必須有一個且只能有一個主函數(main),C程序總是從主函數開始執行,并且也是從它結束的。2.函數體必須放在一對花括號“{}”內,在函數體中,通常有定義(說明)語句和執行語句,定義語句應出現在執行語句之前,每條語句后面的分號不可少。多條語句可以寫在同一行上,并且一條語句也可以寫在多行上。3.C程序中的注釋必須放在"/*"和"*/"之間,"/"和"*"之間不允許有空格。"/*"和"*/"之間不允許再插入"/*"或"*/"。注釋可以出現在程序中任意位置。/*包含頭文件*//*主函數,程序的入口*//*聲明部分,定義了3實型個變量*//*給變量a賦值*//*給變量b賦值*//*將a*b的結果賦值給變量area*//*分別輸出矩形的兩條邊長和面積*/abarea2函數體學習C語言加群1959851892.2標識符、常量和變量2.2.1標識符在C語言中,有許多東西都需要命名,如變量名、函數名、數組名等,在命名的時候都必須遵守一定的規則,按此規則命名的符號稱為標識符。在C語言中,合法的標識符由字母、數字和下劃線組成。遵守以下規則命名:必須以字母(大小寫皆可)或下劃線開頭。隨后可跟若干個(包括0個)字母、數字、下劃線。標識符的長度各個系統不同,最好不要超過8個字符。如:areaPI_inia_arrays1234P101p(合法)456Pcade-yw.wa&b(不合法)注意C語言區分大小寫,如page、Page是兩個不同的標識符。學習C語言加群1959851892.2標識符、常量和變量2.2.1標識符C語言的標識符可以分為以下三類:a)關鍵字b)預定義標識符c)用戶標識符關鍵字:
C語言規定了一批標識符,它們在程序中都代表著固定的含義,不能另作它用。例如,用來說明變量類型的標識符int、float、double以及if語句中的if、else等都已有專門的用途,它們不能再用作變量名或函數名。注意,所有的關鍵字都必須小寫。C語言中的關鍵字請參考附錄4。預定義標識符:這些標識符在C語言中也都有特定的含義,如C語言提供的庫函數的名字(如include)和預編譯處理命令(如define)等。
用戶標識符:由用戶根據需要定義的標識符稱為用戶標識符。一般用來給變量、函數、數組或文件等命名。如例2.1中的a,b,area三個變量學習C語言加群1959851892.2標識符、常量和變量2.2.2常量在程序運行過程中,其值不能被改變的量,稱為常量。
常量整型常量:實型常量(符點型)字符常量:字符串常量:單精度型:雙精度型:由上述可見,常量的類型從字面形式上就可以區分開來,我們稱此常量為字面常量。12、-1、0‘A’、‘d’”NCRE”、“Beijing”3.14159、-2.71828、0.012.5678、-12.5678學習C語言加群1959851892.2標識符、常量和變量2.2.3符號常量在C語言中,可以用一個符號名來代表一個常量,稱為符號常量。但是這個符號名必須在程序中用(#define)進行特別的“指定"。例2.2
計算圓面積和周長,此程序中將如何教大家使用符號常量。#include“stdio.h”#definePI3.14159main(){doubler,s,l;r=5.0;s=PI*r*r;l=2*PI*r;printf(“s=%f,l=%f\n”,s,l);}S=78.539750,l=31.415900/*包含頭文件*//*定義符號常量,符號常量名為PI,用PI來代表3.14159*//*主函數,程序的入口*//*聲明部分,定義了3實型個變量*//*給變量r賦值*//*計算圓的面積*//*計算圓的周長*//*分別圓的面積和周長*/注意習慣上,符號常量名用大寫,變量名用小寫,以示區別函數體rsl5.078.5397531.4159學習C語言加群1959851892.2標識符、常量和變量2.2.4變量1.所謂變量是指在程序運行過程中可以改變的量。如下程序:#include<stdio.h>main(){doublea,b;a=1.5;b=2.5;printf(“%f%f\n”,a,b);a=a+1;b=b+1;printf(“%f%f\n”,a,b);}ab1.5000002.5000002.在程序中,聲明變量就是在計算機內存中申請了某個內存單元。對變量進行賦值,實質上就是把數據存入該變量所代表的存儲單元中。3.C語言規定,程序中所有變量都必須先定義后使用。如程序例2.1、例2.2。內存空間ab2.5000003.5000002.53.5學習C語言加群1959851892.3整型數據2.3.1整型常量在C語言中,按整型常量的表示形式可以有三種形式。整型常量由0~9十個數字組成,如32767、-32768、0等。由0~7八個數字組成,如010、011、016等。注意,最高位必須用0作引導符,與十進制和十六進制區分。如:018,為不合法的八進制常量。由0~9十個數字和a~f(A~F)六個字母組成,如0x10、0Xde、0xf注意,最高位必須用0x(0X)作引導符,與十進制和八進制區分。如:oxff、0X12H,都為不合法的十六進制常量。在C語言中,按整型常量的表示范圍可以分為四種。在C語言中,八進制數和十六進制數只能是正整數。注意如:-077、-0X11、01.0等,(不合法)短整型基本整型長整型無符號整型三種進制之間的轉換十六進制常量:八進制常量:十進制常量:學習C語言加群1959851892.3整型數據2.3.2整型變量整型變量是用來存放整型常量的工具。可以把整型變量抽象為一個盒子。由于整型常量有短整型、基本整型、長整型和無符號整型四種類型,既然整型變量是用來存放整型數據的,那整型變量也要分為四種對應類型的整型變量,以方便存放不同類型的整型常量。在此我們只介紹基本整型變量。也叫整型變量。在C語言中,整型變量我們需要用一個符號來表示它,即整型變量名。例如:intk;
/*定義k為整型變量,k為變量名*/關鍵字int是用來說明變量k的類型為整型。又如:inti,j,k;
/*定義i、j、k為整型變量*/inti;intj;intk;相同注意在同一行上使用關鍵字定義多個變量時,變量之間用逗號隔開。所有定義語句后必須以一個“;”號結束,表示它是一條語句。學習C語言加群1959851892.3整型數據2.3.2整型變量在前面已經講過,聲明變量就是在計算機內存中申請某個內存單元。在VC6.0環境中,用關鍵字int聲明變量時,計算機將會為每個變量開辟4字節(32個二進制位)的內存單元。例如,當前的某段內存空間如右圖所示。有如下程序段。內存空間地址2000200120022003200420052006200720112010200920082012inti;intj;i=100;j=200;C語言規定,可以在定義變量的同時給變量賦初值,該過程稱為變量的初始化。例如:#include<stdio.h>main(){inti=1,j=0,k=2;::}ij100200/*在聲明變量的同時,為三個變量賦值*/學習C語言加群1959851892.3整型數據2.3.3整型數據的分類不同的計算機系統對整型數所占用的字節數和數值范圍有不同規定,下表列出了在VC6.0中定義的整型數所占用的字節數和數值范圍。
由于整型數據在C語言中分為上述幾類,比如123。它是屬于哪一類型的?int123L、345l、0L、123456L123U、345u、0U、123456U123LU、345lu、0LU、123456LUlongunsignedunsignedlong學習C語言加群1959851892.3整型數據2.3.4整數在內存中的存儲形式計算機中,內存儲器的最小的存儲單位稱為“位(bit)”,每一位中只能存放0或1,因此稱為二進制位。8個二進制位組成一個“字節”,并給每一個字節分配一個地址。數據在內存中是以二進制形式進行存放的。一、正整數正整數在內存中是以“原碼”形式存放的。如果定義了一個short類型變量i:shorti;i=5;/*聲明i為短整型變量*//*給i賦以整數5*/十進制數5的二進制形式為101,在VC6.0中,由于短整型變量在內存中占2個字節,ii符號位:0代表正整數,1代表負整數二、負整數負整數在內存中是以“補碼”形式存放的。5學習C語言加群1959851892.4實型數據2.4.1實型常量在C語言中,實型常量的表示形式有兩種。實型常量由數字和小數點組成,如0.123、.123、123.、0.0指數形式:如:0.23026x101
2.3026x10023.026x10-10.23026E12.3026e023.026e-1注意E(e)前后必須有數字,并且后面的必須為整型數。.3e33.0e33.e3(合法)3ee355e0.3(不合法)小數形式:學習C語言加群1959851892.4實型數據2.4.2實型變量單精度型變量定義的形式如下:floata,b,c;雙精度型變量定義的形式如下:doublex,y,z;實數在內存中是以“指數”形式存放的。也可以在定義實型變量的同時,對變量進行初始化。例如:#include<stdio.h>main(){floata=1.5,b=.5,c=0.0;
doublex=1.5,y=.5,z=0.0;:}/*在聲明變量的同時,為三個變量賦值*//*在聲明變量的同時,為三個變量賦值*/學習C語言加群1959851892.5算術表達式2.5.1基本的算術運算符+(加法運算符,或正值運算符)如:1+2、+3.9-(減法運算符,或負值運算符)如:3-4、-54*(乘法運算符)如:1.2*3.2、3*4、2*x/(除法運算符)如:5/3、(a+b)/(x+y)單目運算符雙目運算符兩個整數相除,其值仍然為整數。如:5/3值為1、1/2值為0。兩個實數相除,其值仍然為實數。如:1.0/2.0值為0.5。除數、被除數只要有一個為實數時,系統將自動進行類型轉換,轉換為double型。如:1/2.0=0.5、
1.0/2.0=0.5最后結果的類型為double型。%(求余運算符)注意:%運算符的兩側必須為整型數據。如:7%4的結果為3。-7%4、7%-4、-7%-4的結果為多少?-33-3結果的符號和被除數相同學習C語言加群1959851892.5算術表達式2.5.2運算符的優先級、結合性和算術表達式一、優先級()+-*/%+-單目雙目同級同級同級高低二、結合性單目運算符的結合性是從右往左的,即表達式從右往左進行計算,稱為右結合。其余運算符的結合性是從左往右的。即表達式從左往右進行計算,稱為左結合。例如:(5+1)/25+1/25*-25*(-2)三、算術表達式用算術運算符和一對圓括號將運算量(或稱操作數)連接起來的、符合C語法的表達式稱為算術表達式。算術表達式中,運算對象可以是常量、變量和函數等。例如:2+sqrt(c)*b。5-103學習C語言加群1959851892.5算術表達式2.5.3強制類型轉換表達式表達式的形式如下:(類型名)(表達式)強制類型轉換運算符作用:可以利用強制類型轉換運算符將一個表達式轉換成想要的類型。例如:(int)3.234(double)(10%3)3注意int3.234(錯誤)(double)10%3(錯誤)例:閱讀如下程序,關于強制類型轉換。#include<stdio.h>main(){doublea;intb;a=3.6;b=(int)a;printf(“a=%f,b=%d\n”,a,b);}a=3.600000,b=31.0ab3.63學習C語言加群1959851892.6賦值表達式2.6.1賦值運算符和賦值表達式賦值運算符:=賦值表達式:由賦值運算符組成的表達式稱為賦值表達式,它的形式如下:
變量名=表達式
賦值號的左邊必須是一個代表某一存儲單元的變量名。賦值運算的功能是先求出右邊表達式的值,然后把此值賦給左邊的變量。例如,若a和b都被定義成int類型變量
a=10;
/*把常量10賦給變量a*/
b=a;
/*把a中的值賦給變量b,a中的值不變*/注意1.賦值運算符的優先級別只高于逗號運算符,比其它任何運算符的優先級都低,且具有自右向左的結合性。例如:a=2+7/32.賦值運算符的左側只能是變量不能是常量或表達式。如a+b=c是不合法的賦值表達式。3.賦值號右邊的表達式也可以是一個賦值表達式,如a=b=7+1。4.作為一個表達式,它自己也應該有一個值,C語言規定最左邊變量中所得到的新值就是賦值表達式的值。學習C語言加群1959851892.6賦值表達式2.6.2復合賦值表達式在賦值運算符”=”之前加上其它運算符可以構成復合賦值運算符。+=-=*=/=%=<<=>>=&=^=|=
等價于
n=n+1
等價于
a=a+3
等價于
n=n*(m+3)注意:有括號例2.3已有變量a,初始值為9,計算表達式a+=a-=a+a的值。a表達式如:n+=1a+=3n*=m+3a+=a-=a+a918a+=a-=18a=a-18-9-9a+=-9a=a+-9a=a+(-9)-18-18a+=a-=a+a的值是:-18學習C語言加群1959851892.6賦值表達式2.6.3賦值運算中的類型轉換在賦值運算中,只有在賦值號右側表達式的類型與左側變量類型完全一致時,賦值操作才能進行。
如:inta;doubleb;a=10;b=3.5;如果賦值運算符兩側的數據類型不一致,在賦值前,系統將自動先把右側表達式求得的數值,按賦值號左邊變量的類型進行轉換,也可以用強制類型轉換的方式,人為地進行轉換后賦給賦值號左邊的變量。a10b3.5如:inta;doubleb;a=20.5;b=15;a20b15.03.在C語言的表達式中(不包括賦值表達式),如果運算符兩邊的數據類型不相同,將進行類型之間的轉換。轉換規則如下:doublelongunsignedintfloatchar,short低高如:10+97+1.5-8765.1234*988765.1234*98.0double學習C語言加群1959851892.7自加、自減運算符和逗號運算符2.7.1自加運算符“++”和自減運算符“--”++(自加運算符)--(自減運算符)1.++、--運算符是單目運算符,運算對象只能變量,不能是常量和表達式。2.++和--運算符的結合方向是"自右至左"。i++、++ii--、--ii=i+1i=i-1例如:inti=5;i++;inti=5;++i;inti=5;i--;inti=5;--i;i:表達式:運算規則運算符在前,先計算,后賦值運算符在后,先賦值,后計算例如:inti=3;
-i++;
inti=3;-(i++);i:表達式:思考:程序示例,自增自減運算#include<stdio.h>main(){inti=0,j;j=i++;printf(“%d,%d\n”,i,j);i=0;
j=++i;printf(“%d,%d\n”,i,j);}上機練習656645444-3學習C語言加群1959851892.7自加、自減運算符和逗號運算符2.7.2逗號運算符和逗號表達式,(逗號運算符)用逗號將表達式連接起來的式子稱為逗號表達式。逗號表達式的一般形式為:表達式1,表達式2,…,表達式n表達式之間用逗號進行連接1.逗號運算符的結合性為從左到右,因此逗號表達式將從左到右進行運算。如:i=3,i++,++i,i+5
i表達式33i表達式43i表達式55i表達式510逗號表達式的值為2.在所有運算符中,逗號運算符的優先級別最低。學習C語言加群195985189習題一、選擇題2.1以下選項中正確的整型常量是A12.B-20C1,000D4562.2以下選項中正確的實型常量是A0B3.1415C0.329X102D.8712.3以下選項中不正確的實型常量是A2.607E-1B0.8103e2C-77.77D456e-22.4以下選項中不合法的用戶標識符是Aabc.cBfileCMainDPRINTF2.5以下選項中不合法的用戶標識符是
A_123BprintfCA$DDim2.6C語言中運算對象必須是整型的運算符是A%B/C!D**2.7可在C程序中用作用戶標識符的一組標識符是AvoidBas_b3CForD2cdefine_123-abcDOWORDIfcaseSIGBDBABCAB學習C語言加群1959851892.8若變量已正確定義并賦值,符合C語言語法的表達式是Aa=a+7;Ba=7+b+c,a++Cint(12.3%4)Da=a+7=c+b2.9以下中敘述中正確的是Aa是實型變量,C允許進行賦值a=10,但不可以這樣說:實型變量中允許存放整型值B在賦值表達式中,賦值號左邊既可以是變量也可以是任意表達式C執行表達式a=b后,在內存中a和b存儲單元中的原有值都將被改變,a的值已由原值改變為b的值,b的值由原值變為0D已有a=3,b=5,當執行了表達式a=b,b=a之后,使a中的值為5,b中的值為32.10以下中敘述中正確的是A在C程序中無論是整數還是實數,只要在允許的范圍內都能準確無誤的表示BC程序由主函數組成CC程序由若干個函數組成DC程序中只允許包含一個函數2.11VC6.0中int類型變量所占字節數是A1B2C3D4習題BACD學習C語言加群195985189習題2.12合法的八進制數是A0B028C-077D01.02.13不合法的十六進制數是AoxffB0XabcC0x11D0x19二、填空題2.14若k為int型變量且賦值11.請寫出運算k++后表達式的值____和變量k的值_____.2.15若x為double型變量,請寫出運算x=3.2,++x后表達式的值_____和變量x的值______.2.16函數體由符號___開始,到符號___結束.函數體內的前面是_____________部分,后面是___________部分.2.17C語言中的標識符可分為________.___________和預定義標識符三類.2.18在C語言程序中,用關鍵字____定義基本整型變量,用關鍵字_____定義單精度實型變量,用關鍵字_____定義雙精度實型變量.2.19把a1,a2定義成雙精度實型變量,并賦初值1的定義語句是________________.2.20C程序中定義的變量,代表內存中的一個_________.11124.24.2{}定義和說明語句關鍵字用戶標識符intfloatdoubledoublea1=1,a2=1;存儲單元AA學習C語言加群195985189習題2.21表達式3.5+1/2的計算結果是______.2.22對數學式axb,寫出三個等價的C語言表達式_______._______.________.c2.23表達式s=10應當讀做___________________________.三.改錯題2.24#includestdio.h;main();/*mainfunction*/floatr,s;/*/*risradius*/,/*sisareaofcircular*/*/r=5.0;s=3.14159*r*r;printf("%f\n",s)2.25main/*mainfunction*/{floata,b,c,v;/*a,b,caresides,visvolumeofcube*/a=2.0;b=3.0;c=4.0v=a*b*c;printf("%f\n",v)}3.5(a*b)/ca*b/ca*(b/c)將10賦給變量s學習C語言加群195985189第3章順序結構3.1賦值語句3.2數據輸出3.3數據輸入3.4復合語句和空語句3.5程序舉例學習C語言加群1959851893.1賦值語句在賦值表達式的尾部加上一個“;”號,就構成了賦值語句,也稱表達式語句。例如:a=a+b(賦值表達式)a=a+b;(賦值語句)
學習C語言加群1959851893.2數據輸出3.2.1printf函數的一般調用形式首先,我們先來了解一些其它知識。一個程序,一般情況下都包含數據輸入、數據處理、數據輸出三個部分。輸出:把數據從計算機內部送到計算機的外部設備上的操作稱為“輸出”。輸入:從計算機外部設備將數據送入計算機內部的操作稱為“輸入”。顯示器鍵盤在C語言中,數據的輸入和輸出是通過調用輸入和輸出函數來實現的。在VC6.0環境下,在調用輸入和輸出的庫函數之前要求在源程序中出現包含頭文件命令行:
#include<stdio.h>
或#include“stdio.h”1.printf函數的調用形式如下:printf(格式控制,輸出項表)作用:按照指定的格式將輸出項中的值輸出到終端。要輸出的內容(常量、變量、表達式等)雙引號括起來的字符串,按照該指定的格式進行輸出學習C語言加群195985189學習C語言加群1959851893.2數據輸出3.2.1printf函數的一般調用形式printf也可以沒有輸出項,函數的調用形式將為:
printf(格式控制)比如:printf(“OK!”);OK!學習C語言加群1959851893.2數據輸出3.2.2printf函數中常用的格式說明格式字符:
d
以十進制整數進行輸出
o
以八進制數進行輸出
x
以十六進制數進行輸出
f
以小數形式進行輸出::使用時,以%作為引導符格式字符必須使用小寫如:%d%o%x%f簡單的格式字符形式完整的格式字符形式%
+
-
0
n
n1.n2
l/h
格式字符n
指定輸出的寬度printf(“%6d\n”,k);n1.n2n1指定輸出的寬度,n2指定輸出的小數位數printf(“%12.2f\n”,f);0
輸出的數據右對齊,前面補0printf(“%06d\n”,k);-
輸出的數據左對齊printf(“%-6d\n”,k);+
輸出的數據為正數時,使前面帶有“+”符號printf(“%+-6d\n”,k);l
輸出整數時,為長整型;輸出實數時,為雙精度型printf(“%ld\n”,k);h
輸出整數時,為短整型printf(“%hd\n”,k);有如下程序段intk;floatf;k=1234;f=123.456jj1234jjjjjj123.460012341234jj+1234j12341234學習C語言加群1959851893.2數據輸出3.2.2printf函數中常用的格式說明下面,將簡單的介紹一些輸出格式形式和輸出結果:printf(“%f\n”,f);printf(“%12f\n”,f);printf(“%.6f\n”,f);printf(“%12.0f\n”,f);printf(“%e\n”,f);printf(“%13e\n”,f);printf(“%13.8e\n”,f);printf(“%3.8e\n”,f);printf(“%.8e\n”,f);printf(“%13.9e\n”,f);printf(“%13.2e\n”,f);printf(“%g\n”,f);printf(“%10g\n”,f);printf(“%f%%\n”,12.5);123.456000jj123.456000123.456000jjjjjjjjj1231.234560e+0021.234560e+0021.23456000e+0021.23456000e+0021.23456000e+0021.234560000e+002jjjj1.23e+002123.456jjj123.45612.500000%以指數形式輸出,輸出時,先以小數位數為基準,再考慮輸出的寬度.以原數的最小寬度進行輸出,指定寬度時,按指定寬度進行輸出學習C語言加群1959851893.2數據輸出3.2.3使用printf函數時的注意事項1.在使用輸出函數時,輸出的數據要清晰,視覺感要好。例如:k=1234,f=123.456printf(“%d%d%f\n”,k,k,f);printf(“%d,%d,%f\n”,k,k,f);printf(“k=%d,k=%d,f=%f\n”,k,k,f);12341234123.4560002.在格式控制串中,格式說明與輸出項從左到右在類型上要一一對應匹配。如不匹配,將導致數據不能正確輸出,這時,系統并不報錯。最好例如:inta=10;floatb=12.5;printf(“a=%f,b=%d\n”,a,b);a=0.000000,b=1076428800inta=10;floatb=12.5;printf(“a=%d,b=%f\n”,a,b);a=10,b=12.500000編譯時能通過,則輸出時為不正確的數據輸出時類型一定要一一對應1234,1234,123.456000k=1234,k=1234,f=123.456000學習C語言加群1959851893.2數據輸出3.2.3使用printf函數時的注意事項若格式說明中的個數少于輸出項的個數時,則多余的輸出項不予輸出;若格式說明中的個數多于輸出項的個數時,則將輸出一些毫無意義的數字。例如:inta=10,b=20,c=30;printf(“%d,%d\n”,a,b,c);10,20inta=10,b=20,c=30;printf(“%d%d%d%d\n”,a,b,c);10,20,30,23674604.在格式控制串中,除了合法的格式說明外,可以包含任意的合法字符,還可以包括轉義字符,這些字符在輸出時將"原樣照印"。例如:printf(“my\tname\tis\tchenhao\n”);mynameischenhao\t為轉義字符(制表符)代表八個空格字符5.如果需要輸出百分號%,則應該在格式控制串中用兩個連續的百分號%%來表示。例如:printf(“%d%%”,100);100%6.printf函數的返回值通常是本次調用中輸出字符的個數。思考:printf(“my\tname\tis\tchenhao\n”);函數的返回值是多少?學習C語言加群1959851893.2數據輸出3.2.3使用printf函數時的注意事項7.思考:如:intk=8;
printf(“%d,%d\n”,k,++k);9,98.輸出時,也可以用參數作為域寬。如:intm=8,i=10;
jjjjjj10123.4560000000intm=8,n=10;floatf=123.456;首先先對應匹配,然后再輸出,輸出的過程,是按輸入項從右往左printf(“%8d”,i);printf(“%8.10f”,f);學習C語言加群1959851893.3數據輸入3.3.1scanf函數的一般調用形式scanf(格式控制,輸入項表)1.scanf函數的調用形式如下:作用:把從終端設備(如,鍵盤)上輸入的數據傳送給對應的輸入項(如變量地址)。雙引號括起來的字符串,按照該指定的格式進行輸入把從鍵盤上輸入的數據送到該指定的輸入項中,輸入項中必須為變量的地址例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);函數名輸入格式控制變量地址(實參)在scanf函數調用的后面加一個分號就構成輸入語句。★變量地址形式:&變量名
學習C語言加群1959851893.3數據輸入3.3.1scanf函數的一般調用形式例:對于scanf函數的調用形式,請見下面的程序示例。#include<stdio.h>main(){inta;floatb;scanf(“%d%f”,&a,&b);printf(“%d,%f\n",a,b);}scanf(“%d%f”,&a,&b);比如,想把23賦值給a,12.345賦值給b,輸入形式為:程序執行到此,停止執行,等待用戶從鍵盤輸入數據,等輸入數據后,待用戶安回車鍵<CR>后,繼續向后執行。2312.345<CR>ab輸出結果為:23,12.3450002312.345學習C語言加群1959851893.3數據輸入3.3.2scanf函數中常用的格式說明scanf函數中的格式說明字符與輸出函數中的格式說明字符相同。在使用scanf函數進行輸入時,應該注意以下幾點:
1.在格式控制中,格式說明的類型與輸入項的類型,應該一一對應匹配。如果類型不匹配,系統并不給出出錯信息,但不可能得到正確的數據。2.在輸入項表中,輸入項的個數要與格式符的個數相同,且排列順序要一一對應。若格式符個數少于輸入項,scanf函數按格式符的數目結束輸入,多余的輸入項沒有得到新的數據;若格式符個數多于輸入項,scanf函數則按輸入項的數目結束輸入,多余的格式符不起作用(作廢)。例如:inta,b,c;scanf(“%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,-858993460比如說,我們從鍵盤讀入:102030<CR>inta,b,c;scanf(“%d%d%d%d”,&a,&b,&c);printf(“%d%d%d\n”,a,b,c);10,20,30比如說,我們從鍵盤讀入:10203040<CR>學習C語言加群1959851893.3數據輸入3.3.2scanf函數中常用的格式說明在scanf函數中的格式字符前可以用一個整數指定輸入數據所占寬度。當輸入函數的格式說明的類型與輸入項的類型一一對應匹配時。程序在運行的過程中,當我們輸入的數據個數少于輸入項時,運行的程序將一直等待輸入,直到滿足要求時才繼續向下執行;當我們輸入的數據個數多于輸入項時,多于的數據沒有作廢,依然在緩沖區中等待等待下一個輸入操作語句。5.scanf函數在調用結束后將返回一個函數值,其值等于得到輸入值的輸入項的個數。例如:inta;scanf(“%5d”,&a);該輸入函數正確的輸入形式為:88輸入寬度為5學習C語言加群1959851893.3數據輸入3.3.3通過scanf函數從鍵盤輸入數據1.輸入數值數據例如:intk;floata;doubley;scanf(“%d%f%lf”,&k,&a,&y);若要給k賦值10,a賦值12.3,y賦值1234567.89,正確的輸入格式如下:1012.31234567.89<CR>1012.31234567.89<CR>10<CR>12.3<CR>1234567.89<CR>輸入的數據之間必須用間隔符隔開可以使用的間隔符有:空格、回車符、制表符錯誤的輸入格式:1012.31234567.89<CR>學習C語言加群1959851893.3數據輸入3.3.3通過scanf函數從鍵盤輸入數據2.指定輸入數據所占的寬度例如:intk;floata;doubley;scanf(“%3d%5f%5lf”,&k,&a,&y);若從鍵盤上從第1列開始輸入:123456.789.123<CR>用printf(“k=%da=%fy=%f\n”,k,a,y);輸出的結果是:k=123a=456.700000y=89.120000kya123456.789.12學習C語言加群1959851893.3數據輸入3.3.3通過scanf函數從鍵盤輸入數據3.跳過某個輸入數據例如:intx,y,z;scanf(“%d%*d%d%d”,&x,&y,&z);printf(“%d%d%d\n”,x,y,z);若從鍵盤上輸入:12345678<CR>則輸出的結果是:125678學習C語言加群1959851893.3數據輸入3.3.3通過scanf函數從鍵盤輸入數據4.在格式控制字符串中插入其他字符又如:intx,y,z;scanf(“%d,%d,%d”,&x,&y,&z);這時從鍵盤上輸入時,一定要向下形式進行輸入:Pleaseinputx,y,z:123456<CR>在格式控制字符中出現了其他字符的語句如下:intx,y,z;scanf(“Pleaseinputx,y,z:%d%d%d”,&x,&y,&z);則正確的輸入形式:12,34,56<CR>12,34,56<CR>12,34,56<CR>錯誤的輸入形式:123456<CR>12,34,56<CR>學習C語言加群1959851893.4復合語句和空語句3.4.1復合語句復合語句是用符號"{"和"}"括起來的語句組,也可稱為"語句塊",在語法上被視為一條語句。復合語句的語句形式如下:{語句1;語句2;…;語句n;}例如:{a++;b*=a;printf("b=%d\",b);}學習C語言加群1959851893.4復合語句和空語句3.4.2空語句空語句由一個分號構成,但它是一個C語句,程序執行空語句時不產生任何操作。如:main(){;}學習C語言加群1959851893.5程序舉例例3.1
以下程序由終端輸入兩個整數給變量x和y;然后輸出x和y;在交換x和y中的值后,再輸出x和y。驗證兩個變量中的數是否正確地進行了交換。程序分析:輸入兩個整數分別給變量x和y。輸出兩個變量。交換兩個變量中的值。再輸出兩個變量。自然語言描述開始輸入x、y輸出x、y交換x和y中的值輸出x、y結束一般流程圖描述#include<stdio.h>main(){intx,y;printf(“Enterx&y:\n");scanf(“%d%d”,&x,&y);printf(“x=%dy=%d\n",x,y);
printf(“x=%dy=%d\n",x,y);}通過流程圖,編寫出程序xy123456zz=x;x=y;y=z;交換x和y中的值;z=x;x=y;y=z;intz;Enterx&y:123456<CR>x=123y=456x=456y=1233.5程序舉例例3.2
輸入一個double類型的數,使該數保留小數點后兩位,對第三位小數進行四舍五入處理,然后輸出此數,以便驗證處理是否正確。程序分析:輸入一個double類型的數給變量x。使該數保留兩位小數,要進行四舍五入。輸出四舍五入后的值。開始輸入x對x進行四舍五入輸出x結束123.4567123.4567x10012345.6712345.67+0.512346.1712346123.46#include<stdio.h>main(){doublex;
printf(“Enterx:\n”);/*輸出的時候進行提示*/scanf("%lf",&x);
printf(“(1)x=%f\n”,x);/*輸出我們剛剛輸入的原始數據*/x=x*100;x=x+0.5;x=(int)x;x=x/100;printf("(2)x=%f\n",x);}Enterx:123.4567<CR>(1)x=123.456700(2)x=123.460000習題一.選擇題3.1若a,b,c,d都是int型變量且初值為0,以下選項中不正確的賦值語句是Aa=b=c=100;Bd++;Cc+b;Dd=(c=22)-(b++);3.2下列選項中不是C語句的是A{inti;i++;printf(“%d\n”i);}B;Ca=5,c=10D{;}3.3合法的C語言賦值語句是Aa=b=58Bk=int(a+b);Ca=58,b=58D--i;3.4有以下程序#include<stdio.h>main(){intx=10,y=3;printf("%d\n",y=x/y);}執行后的輸出結果是A0B1C3D不確定的值3.5若變量已正確定義為int型,要給a,b,c輸入數據,正確的輸入語句是Aread(a,b,c);Bscanf(“%d%d%d”,a,b,c);Cscanf(“%D%D%D”,&a,%b,%c);Dscanf(“%d%d%d”,&a,&b,&c);CCDCD習題3.6若變量已正確定義為float類型,要通過輸入語句:scanf(“%f%f%f”,&a,&b,&c);給a賦值11.0,b賦值22.0,c賦值33.0,不正確的輸入形式是A11B11.0,22.0,33.0C11.0D11222222.033.033333.7若變量a,b,t已正確定義,要將a和b中的數進行交換,以下選項中不正確的語句組是Aa=a+b,b=a-b,a=a-b;Bt=a,a=b,b=t;Ca=t;t=b;b=aDt=b;b=a;a=t;3.8若有正確定義語句
doublex=5.16894;語句printf(“%f\n”,(int)(x*1000+0.5)/(double)1000);的輸出結果是A輸出格式說明與輸出項不匹配,輸出無定值B5.170000B5.168000D5.1690003.9若有以下程序段:intc1=1,c2=2,c3;c3=c1/c2;printf(“%d\n”,c3);執行后的輸出結果是A0B1/2C0.5D1BCDA習題3.10若有以下程序段inta=0,b=0,c=0;c=(a-=-5),(a=b,b+3);printf(“%d,%d,%d\n”,a,b,c);執行后的輸出結果是A3,0,-10B0,0,5C-10,3,-10D3,0,3二.填空題3.11若有以下定義,請寫出以下程序段中輸出語句執行后的輸出結果________.inti=-200,j=2500;printf("(1)%d,%d",i,j);printf("(2)i=%d,j=%d\n",i,j);printf("(3)i=%d\nj=%d\n",i,j);3.12變量i,j,k已定義為int類型并均有初值0,用以下語句進行輸入時:scanf("%d",&i);scanf("%d",&j);scanf("%d",&k);從鍵盤輸入:12.3<CR>則變量i,j,k的值分別是______._______._______.3.13復合語句在語法上被認為是_________.空語句的形式是_________.B(1)-200,2500(2)i=-200,j=2500(3)i=-200j=25001200一條語句;習題3.14C語句的最后用________結束.3.15以下程序段要求通過scanf語句給變量賦值,然后輸出變量的值.寫出運行時給k輸入100,給a輸入15.81,給x輸入1.89234時的三種可能的輸入形式________.___________.___________.intk;floata;doublex;scanf("%d%f%lf",&k,&a,&x);printf("k=%d,a=%f,x=%f\n",k,a,x);;10015.811.89234<CR>100<CR>15.811.89234<CR>100<CR>15.81<CR>1.89234<CR>習題3.16以下程序多處有錯誤.若指定必須按下面的形式輸入數據,并且必須按下面指定的形式輸出數據,請對該程序做相應的修改.main{doublea,b,c,s,v;printf(inputa,b,c:\n);scanf("%d%d%d",a,b,c);s=a*b;v=a*b*c;printf("%d%d%d",a,b,c);printf("s=%f\n",s,"v=%d\n",v);}當程序執行時,屏幕的顯示和要求輸入形式如下:inputa,b,c:2.02.03.0a=2.000000,b=2.000000,c=3.000000s=4.000000,v=12.000000第4章選擇結構4.1關系運算和邏輯運算4.2if語句和用if語句構成的選擇結構4.3條件表達式構成的選擇結構4.4switch語句以及用switch和break語句構成的選擇結構4.5語句標號和goto語句4.1關系運算和邏輯運算4.1.1C語言的邏輯值關系表達式和邏輯表達式的運算結果是一個邏輯值。邏輯值真假非004.1關系運算和邏輯運算4.1.2關系運算符和關系表達式1.關系運算:是對兩個量進行“比較運算”。2.關系運算符:<<=>>===!=高低3.結合性:自左向右(左結合)4.和其他運算符進行混合運算時,其運算符之間的優先級為:算術運算符、關系運算符、賦值運算符、逗號運算符低高關系表達式:由關系運算符組成的表達式,稱為關系表達式。關系運算符兩邊的運算對象可以是C語言中任意合法的表達式。例如:a>=b(a=3)>(b=4)a>c==c例如:a=10;b=6;c=15;c>a>b真假假關系運算的值為“邏輯值”真假101004.1關系運算和邏輯運算4.1.3邏輯運算符和邏輯表達式1.邏輯運算符:&&(邏輯與)||(邏輯或)!(邏輯非)雙目單目(在運算對象的左邊)3.結合性:自左向右(左結合)4.它們的優先級由高到低為:!(邏輯非)、&&(邏輯與)、||(邏輯或)。5.和其他運算符進行混合運算時,其運算符之間的優先級為:!(邏輯非)、算術運算符、關系運算符、&&(邏輯與)、||(邏輯或)、賦值運算符、逗號運算符高低邏輯表達式:由邏輯運算符組成的表達式,稱為邏輯表達式。邏輯運算的運算對象可以是C語言中任意合法的表達式。例如:(a>b)&&(x>y)a!=b||b!=0!a!=b例如:a=10;b=16;x=5;y=8;011其邏輯運算規則見書中表4.1所示。思考:5>3&&2||!8<4-2的結果為?4.1關系運算和邏輯運算4.1.3邏輯運算符和邏輯表達式注意在C語言中,x的值必須要在0和10之間,應如何表示?0<=x<=10錯誤的表示方式比如:x=20;上面的表達式也滿足條件。正確的表示方式為:x>=0&&x<=10或0<=x&&x<=106.C語言中,由&&或||構成的邏輯表達式,在特定的情況下會產生“短路”現象。例如:a++&&b++若:a=0;b=0;若:a=1;b=1;例如:a++||b++若:a=1;b=1;若:a=0;b=0;0110ab10a2b2ab21a1b14.2if語句和用if語句構成的選擇結構4.2.1if語句C語言的if語言有兩種形式:if(表達式)語句if(表達式)語句1else
語句2單分支if語句不含else子句雙分支if語句含else子句關鍵字關鍵字(b)圖表達式語句1語句2滿足不滿足(a)圖表達式語句滿足不滿足例如:if(a<b){t=a;a=b;b=t;}例如:if(a!=0)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 護理信息安全
- 2025年鏟運機項目提案報告模范
- 梁鋼筋工程量課件
- 專題03信息類文本閱讀考點解析專訓(01)(學生版)2024年新高考語文一輪復習各考點解析
- 四川省內江市高中高三第三次模擬考試題數學(文科)試題
- 橋梁隧道工程課件
- 2025年SDH數字微波接力通信系統項目申請報告模板
- 巴州焉耆紅莊葡萄酒有限公司300噸年葡萄酒酒莊建設項目環評報告
- 2025年戶外功能性照明項目提案報告模范
- 吸氧護理禮儀規范
- 農場轉讓合同協議書模板
- 2025-2030中國共享單車服務行業市場現狀供需分析及投資評估規劃分析研究報告
- 安徽省合肥一中2025屆高三最后一卷英語試題及答案
- 2025年法律職業資格(客觀題)重點考點大全
- 2025年組織行為學專業考試試題及答案
- 2024年直播電商高質量發展報告
- 客訴處理培訓課件
- 浙江專升本免試題目及答案
- 吉林省長春市2025屆高三質量監測(四)英語試卷+答案
- 中等職業學校英語課程標準
- 北京市海淀區2023-2024學年五年級下學期語文期末考試試卷(含答案)
評論
0/150
提交評論