版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第2章C語言的語法基礎(chǔ)2.1要點導(dǎo)讀●C語言中標(biāo)識符是一個名字,標(biāo)識符可以是常量、變量、類型、語句、標(biāo)號及函數(shù)的名稱。C語言中標(biāo)識符有三類:關(guān)鍵字、預(yù)定義標(biāo)識符和用戶定義標(biāo)識符。關(guān)鍵字:已被C系統(tǒng)所使用的標(biāo)識符稱為關(guān)鍵字。TurboC2.0的關(guān)鍵字共43個。預(yù)定義標(biāo)識符:C語言系統(tǒng)提供的庫函數(shù)名和編譯預(yù)處理命令等構(gòu)成了預(yù)定義標(biāo)識符。應(yīng)盡量避免使用預(yù)定義標(biāo)識符作為用戶標(biāo)識符。用戶標(biāo)識符:用戶對程序中用到的變量、符號常量、用戶函數(shù)、標(biāo)號等進行命名,構(gòu)成用戶標(biāo)識符。標(biāo)識符必須由英文字母、下劃線、數(shù)字組成,不能包含其他字符,且還必須由英文字母或下劃線開頭。●C語言的變量在使用之前必須先定義其數(shù)據(jù)類型,數(shù)據(jù)類型確定了變量的性質(zhì)、取值范圍、占內(nèi)存空間大小以及該變量所能參加的運算方式。C語言中常見的基本數(shù)據(jù)類型有:整型(int)、長整型(longint)、無符號整型(unsignedint)、字符型(char)、無符號字符型(unsignedchar)、單精度實型(float)及雙精度實型(double)等?!裨诔绦驁?zhí)行過程中,值不能被改變的量稱為常量。C語言中有整型常量、實型常量、字符型常量、字符串常量和符號常量五種類型。整型常量:整型常量就是整數(shù)。C語言的整型常量有三種表示形式:十進制整數(shù)、八進制整數(shù)(數(shù)字0打頭整數(shù))和十六進制整數(shù)(0x打頭的整數(shù))。一個整型常量的尾部加上小寫字母l或大寫字母L,則為長整型(long或longint)常量。實型常量:實型常量就是實數(shù)。C語言中實型常量用兩種形式表示:小數(shù)形式,用一個實數(shù)表示,包括數(shù)字和小數(shù)點;指數(shù)形式,這時實數(shù)包括整數(shù)部分、小數(shù)點、小數(shù)部分和指數(shù)部分,指數(shù)部分前加字母e或E。字符型常量:C語言的字符常量是ASCII碼字符集里的一個字符。字符常量有三種表示方法:把單個字符用一對單引號括起來表示字符常量;用該字符的ASCII碼值表示字符常量;用反斜杠“\”開頭,后跟規(guī)定的單個字符或數(shù)字,并用一對單引號括起來表示字符常量。字符串常量:若干個字符用雙引號括起來就構(gòu)成字符串常量。C語言中在存儲字符串常量時,除了存儲雙引號中的所有字符之外,在字符串的最后還要存放一個字符'\0',表示該字符串常量到此結(jié)束。字符'\0'稱為字符串結(jié)束標(biāo)志。符號常量:C語言中可以用一個標(biāo)識符來代表一個常量,這個標(biāo)識符就稱為符號常量。有兩種方式定義C語言中的符號常量:利用宏定義#define來定義符號常量,以及利用“const”來定義符號常量?!裨诔绦驁?zhí)行過程中,值可以改變的量稱為變量。C語言中變量必須先定義數(shù)據(jù)類型及變量名,才能在程序中使用該變量。變量定義格式是:數(shù)據(jù)類型關(guān)鍵字<變量名表>;。定義變量時,在變量之后加“=常量”,可以對該變量初始化。一個動態(tài)變量未經(jīng)初始化,也未對其賦值,其初值是不確定的。●printf函數(shù)是格式化輸出函數(shù),用于向標(biāo)準(zhǔn)輸出設(shè)備(通常指定為屏幕)按規(guī)定格式輸出數(shù)據(jù)。printf函數(shù)的調(diào)用格式為:printf(格式化字符串,輸出表列);。格式化字符串中,格式說明與運行項從左到右數(shù)據(jù)類型必須一一匹配。格式化字符串包括兩部分內(nèi)容:普通字符與轉(zhuǎn)義字符將按原樣運行到屏幕;另一部分是“輸出格式說明”,以"%"開始,后跟一個或幾個格式字符,用來指定輸出數(shù)據(jù)的格式。在"%"與字符之間根據(jù)需要可以插入“寬度說明”、左對齊符號“-”、長度修飾符“l(fā)”或“L”等?!駍canf是格式化輸入函數(shù),可以從標(biāo)準(zhǔn)輸入設(shè)備(通常指定為鍵盤)上以各種不同的格式讀入數(shù)據(jù)到變量。scanf函數(shù)的格式為:scanf(格式化字符串,地址表列);。格式化字符串包括三類不同的字符:“輸入格式說明”、“空白字符”、“非空白字符”。格式化字符串中,格式說明的類型及項數(shù)必須與地址表列中輸入項的類型及項數(shù)由左至右一一匹配。輸入的各數(shù)據(jù)之間用空白字符(空格鍵、回車鍵Enter或制表鍵Tab)隔開。如果在格式化字符串中插入某個非空白字符,輸入數(shù)據(jù)時應(yīng)輸入一個與該非空白字符相同的字符,形成一一對應(yīng)。輸入格式說明都必須用"%"開頭,以一個格式字符作為結(jié)束,在此之間根據(jù)需要可以插入“寬度說明”、長度修飾符“l(fā)”或“L”等?!馛語言中的非格式化輸入、輸出函數(shù)主要用于字符和字符串的輸入和輸出。常見的非格式化輸入、輸出函數(shù)有putchar、getchar、getch、getche、puts、gets等函數(shù)?!裼嬎銠C語言中的運算符與數(shù)學(xué)中的運算符類似,都有優(yōu)先級和結(jié)合方向。C語言有很豐富的運算符。算術(shù)運算符:“+”兩數(shù)相加、“-”兩數(shù)相減、“*”兩數(shù)相乘、“/”兩數(shù)相除、“%”取模或求余數(shù)。取模運算要求參加運算的兩個數(shù)必須都是整數(shù)。要特別注意C語言的算術(shù)表達式中整數(shù)除與實數(shù)除的區(qū)別:整數(shù)除,兩個整數(shù)相除后值等于商的整數(shù)部分;實數(shù)除,兩個相除的數(shù)中至少要有一個是實數(shù),相除后的值等于實數(shù)(商本身)?!馛語言中允許整型、實型、字符型數(shù)據(jù)進行混合運算。不同類型的數(shù)值型數(shù)據(jù)進行混合運算時,先要把低數(shù)據(jù)類型向高數(shù)據(jù)類型轉(zhuǎn)換,成為同一類型后才進行運算。●增1運算符“++”使運算對象的值增1,而減1運算符“--”則使運算對象的值減1。它們都是單目運算符,其運算對象必須是變量,不能是常量和表達式。增1與減1運算符可以作前綴運算符,先使運算對象值增1或減1之后,再使用運算對象。增1與減1運算符也可以作后綴運算符,先使用運算對象,再使運算對象值增1或減1?!耜P(guān)系運算符用于比較兩個運算對象的大小。C語言提供六種關(guān)系運算符:<(小于),>(大于),<=(小于或等于),>=(大于或等于),==(等于),!=(不等于)通常關(guān)系表達式的值為一個邏輯值:“真”或“假”。C語言中沒有專門用來表示“真”、“假”的常量,在C語言中的非零值認為是“真”,零則認為是“假”。若關(guān)系表達式得到非零值,則關(guān)系表達式為“真”,用1表示;若關(guān)系表達式得到零值,則關(guān)系表達式為“假”,用0表示?!馛語言提供三種邏輯運算符:&&(邏輯與),||(邏輯或),!(邏輯非)。C語言的邏輯表達式的值也只能是1或0。若邏輯表達式值為1,則稱該邏輯表達式為“真”;若邏輯表達式值為0,則稱該邏輯表達式為“假”?!馛語言中,在求解邏輯表達式、關(guān)系表達式的值時,數(shù)字1代表“真”,數(shù)字0代表假。但在判定一個表達式是否為“真”時,以零代表“假”,以非零代表“真”?!馛語言中把“?:”稱為條件運算符,條件運算符要求有三個運算對象,一般形式為:判定式?表達式1:表達式2?!馛語言提供了六種位運算符,位運算的運算對象只適用于字符型和整數(shù)型數(shù)據(jù)?!皛”按位取反,其運算功能是把運算對象的內(nèi)容按位取反?!?lt;<”左移運算符,左移運算符的左邊是運算對象,右邊是整型表達式,表示左移的位數(shù)。左移時,低位(右端)補0,高位(左端)移出部分舍棄?!?gt;>”右移運算符,右移運算符的左邊是運算對象,右邊是整型表達式,表示右移的位數(shù)。右移時,低位(右端)移出的二進制位數(shù)舍棄,高位(左端)補0(正數(shù))或補1(負數(shù))?!?”按位與運算符,先把兩個運算對象按位對齊,再進行按位與運算,如果兩個對應(yīng)位上的數(shù)都為1,則該位的運算結(jié)果為1,否則為0?!啊摹卑次划惢蜻\算符,先把兩個運算對象按位對齊,如果對應(yīng)位上的數(shù)相同,則該位的運算結(jié)果為0;如果對應(yīng)位上的數(shù)不相同,運算結(jié)果為1?!皘”按位或運算符,先把兩個運算對象按位對齊,再進行按位或運算,如果兩個對應(yīng)位上的數(shù)都為0,則該位的運算結(jié)果為0,否則為1。如果參加位運算的兩個運算對象類型不同,此時先將兩個運算對象右端對齊,若為正數(shù)或無符號數(shù)高位補0,負數(shù)高位補1?!褓x值運算符“=”,賦值表達式的一般形式為:變量名=表達式。賦值運算的功能是先計算“=”號右邊表達式的值,然后把這個值賦值給“=”左邊的變量,也就是把“右邊表達式的值”存入“左邊變量”的地址所指的存儲單元中。在賦值運算符“=”的左邊加上算術(shù)運算符或位運算符就構(gòu)成了復(fù)合賦值運算符。它們有十種:*=,/=,%=,+=,-=,>>=,<<=,&=,∧=,|=。在賦值運算中,當(dāng)賦值號右邊表達式值的“數(shù)據(jù)類型”與左邊“變量的類型”不一致但都是數(shù)值型時,系統(tǒng)將自動地把右邊的數(shù)值類型轉(zhuǎn)換成左邊變量的類型后再進行賦值?!駨娭祁愋娃D(zhuǎn)換運算符將一個表達式的值轉(zhuǎn)換成所需的數(shù)據(jù)類型,其使用格式為:(類型名)(表達式)?!馛語言中,可以用逗號運算符“,”把兩個或多個C的合法表達式連接起來構(gòu)成逗號表達式。逗號表達式的形式為:表達式1,表達式2,…,表達式n。逗號表達式的計算順序是從左至右,先計算表達式1,然后計算表達式2,依次計算,最后計算表達式n。逗號表達式的值為最右邊表達式(即表達式n)的值?!耖L度運算符“sizeof()”用于計算變量或類型所占內(nèi)存字節(jié)數(shù)的大小。sizeof()運算符的有兩種用法:sizeof(數(shù)據(jù)類型)計算該數(shù)據(jù)類型在內(nèi)存中所占的字節(jié)數(shù);sizeof(變量名)計算該變量在內(nèi)存中所占的字節(jié)數(shù)。2.2選擇題(每題只有一個正確答案)2.1C語言的簡單數(shù)據(jù)類型包括【1】。【1】A)整型、實型、邏輯型B)整型、實型、字符型、邏輯型C)整型、字符型、邏輯型D)整型、實型、字符型2.2以下不屬于C語言關(guān)鍵字的是【2】?!?】A)default B)unsignedC)real D)typedef2.3在C語言中,合法的字符常量是【3】?!?】A)'\\'B)"Hello!"C)'Hello'D)a2.4下列四組中都能正確作為C語言程序標(biāo)識符的是【4】組?!?】A)printB)sort_3_float C)powD)book->nameifPI5_abcA#B2.5下列C語言合法的數(shù)據(jù)類型關(guān)鍵字是【5】?!?】A)DoubleB)unsigned C)integerD)Char2.6以在C語言中,變量所分配的內(nèi)存空間大小【6】。【6】A)均為一個字節(jié)B)由用戶自己定義C)由變量的類型決定D)是任意的2.7C語言的字符型數(shù)據(jù)在內(nèi)存中的存儲形式是【7】?!?】A)原碼B)補碼C)反碼 D)ASCII碼2.8C語言的整型數(shù)據(jù)在內(nèi)存中的存儲形式是【8】?!?】A)原碼B)補碼C)反碼 D)ASCII碼2.9C語言中關(guān)于用戶變量定義與使用不正確的描述是【9】?!?】A)變量按所定義的類型存放數(shù)據(jù) B)系統(tǒng)在編譯或在運行程序時為變量分配相應(yīng)的存儲單元C)變量應(yīng)先定義后使用D)通過類型轉(zhuǎn)換可更改變量存儲單元的大小2.10設(shè)int類型的數(shù)據(jù)長度為2個字節(jié),則unsignedint類型數(shù)據(jù)的取值范圍是【10】?!?0】A)0至255B)0至65535C)-32768至32767D)-128至1272.11C語言中整數(shù)-8在內(nèi)存中存儲的二進制形式是【11】?!?1】A)1111111111111000B)1000000000001000C)0000000000001000D)11111111111101112.12以下關(guān)于C語言變量的敘述,錯誤的是【12】?!?2】A)變量名必須由字母或下劃線開頭B)程序中的變量必須在使用之前定義C)不同基本類型的變量之間可以混合運算D)在定義變量的同時不能對變量賦初值2.13在C語言中,合法的整型常數(shù)是【13】?!?3】A)-0x123B)3.14159C)01001101bD)6.7e102.14下列整數(shù)值中,不正確的八進制或十六進制數(shù)是【14】?!?4】A)0x16B)-016C)081 D)0x3A2.15下列各變量均為整型,其不正確的C語言賦值語句是【15】。【15】 A)i+=++i;B)i=j==k;C)i=j+=i;D)i=j+1=k;2.16設(shè)有語句intx=2,y=3;,則表達式x=(y==3)的值為【16】?!?6】A)0 B)1C)2D)32.17設(shè)有定義:charc;floatf;inti;unsignedu;doubled;,下列各表達式的類型分別為【17】。①u+1②d!=f&&(i+1)③4.0*i+c【17】A)double,double,doubleB)int,double,charC)unsigned,int,doubleD)unsigned,unsigned,int2.18數(shù)學(xué)關(guān)系式x≤y≤z可用C語言的表達式表示為【18】?!?8】A)(x<=y)&&(y<=z) B)(x<=y)and(y<=z) C)(x<=y<=z) D)(x<=y)&(y<z)2.19下列c為字符型變量,當(dāng)且僅當(dāng)c的值為小寫字母時,表達式【19】為真?!?9】A)'a'<=c<='z'B)(c>=a)&&(c<=z)C)('a'<=c)&&('z'>=c) D)(c>='a')||(c<='z')2.20若表達式!x的值為1,則表達式【20】的值為1?!?0】A)x==0B)x==1C)x=!1D)x!=02.21以下程序段的運行結(jié)果為【21】。intk=11,k1=-11;printf("k=%d,k=%o,k=%x\n",k,k,k);printf("k1=%d,k1=%o,k1=%x\n",k1,k1,k1);【21】 A) k=11,k=13,k=bB) k=11,k=11,k=b k1=-11,k1=177765,k1=fff5 k1=-11,k1=-13,k1=-b C) k=11,k=11,k=11D) k=11,k=13,k=bk1=-11,k1=fff5,k1=b k1=-11,k1=-13,k1=b2.22若w、x、y、z均為int型變量,要使下列語句的運行結(jié)果為1234+123+12+1,正確輸入形式應(yīng)當(dāng)是【22】。scanf("%4d+%3d+%2d+%1d",&x,&y,&z,&w);printf("%4d+%3d+%2d+%1d\n",x,y,z,w);【22】A)123412312<回車> B)1234123412341234<回車>C)1234+1234+1234+1234<回車> D)1234+123+12+1<回車>2.23以下程序段的運行結(jié)果為【23】。inti=-0123;printf("i=%05d,i=%-5d,i=%u,i=%#X\n",i,i,i,i);【23】 A)i=-0083,i=-83,i=83,i=0XFFADB)i=-0083,i=-83,i=65453,i=0Xffad C)i=-0083,i=-83,i=65453,i=0XFFAD D)i=-0083,i=-83,i=-83,i=ffad2.24C語言的運算符按運算對象的個數(shù)可以分為【24】?!?4】A)單目運算符一種B)單目和雙目運算符C)單目、雙目和三目運算符D)單目、雙目、三目和四目運算符2.25以下程序運行結(jié)果是【25】。main(){intx=1,y=2,z;z=x>y?++x:++y;printf("%d,%d,%d\n",x,y,z);}【25】A)1,2,3B)1,3,3C)2,3,3D)2,2,32.26運行以下程序段時編譯出錯,其原因是【26】。charc1='a',c2='123';printf("%c,%d\n",c1,c2);【26】A)字符串要用"123"表示 B)'123'只能賦值給字符數(shù)組 C)c2是字符變量,不能用%d格式輸出D)c2是字符變量,只能賦以字符常量,不能賦以字符串常量2.27若定義floata;,現(xiàn)要從鍵盤輸入a數(shù)據(jù),其整數(shù)位為3位,小數(shù)位為2位,則選用【27】?!?7】A)scanf("%6f",&a); B)scanf("%5.2f",a);C)scanf("%6.2f",&a);D)scanf("%f",a);2.28若定義doublet;,則表達式t=1,t+5,++t的值為【28】?!?8】 A)1.0 B)2.0C)6.0D)7.02.29已知各變量的類型說明如下,則C語言中錯誤的表達式是【29】。intk,a,b;unsignedlongw=5;doublex=1.42;【29】A)x%(-3)B)w+=2C)k=(a=2,b=3,a+b)D)a+=a-=(b=4*(a=3))2.30以下程序段的運行結(jié)果是【30】。unsigneda=0356,b;b=~a|a<<2+1;printf("%x\n",b);【30】A)ffba B)ff71C)fff8 D)fc022.31以下程序段的運行結(jié)果是【31】。inta=0,b=0,c=0;if(a&&++b)c++;printf("%d,%d\n",b,c);【31】A)1,1 B)1,0C)0,0D)0,12.32在下列運算符中,優(yōu)先級最高的運算符是【32】?!?2】A)<= B)+C)!=D)||2.33已知各變量的類型如下,則下列符合C語言語法的表達式是【33】。inti=8,a,b;doublex=1.42,y=5.2;【33】A)a+=a-=(b=4)*(a=3) B)a=a*3=2C)x%(-3) D)y=float(i)2.34若有以下程序段,則z的二進制值是【34】。intx=3,y=6,z;z=x^y<<2;【34】A)0000000000011011B)0000000000010100C)0000000000011000D)00000000000001102.35在C語言中,判定邏輯值為“真”的最正確的敘述是【35】?!?5】A)1B)大于0的數(shù) C)非0整數(shù)D)非0的數(shù)2.3填空題2.36以下程序的功能是將a數(shù)據(jù)的低4位取反。#include<stdio.h>main(){unsignedchara=0x39,b=【1】;a=a^b;printf("%d\n",a);}2.37以下程序段運行結(jié)果是【2】。intz,i=0,j=2;z=i++&&j++;printf("%d,%d,%d\n",i,j,z);2.38運行以下程序段時,由鍵盤輸入:12345#6.789123回車,則運行結(jié)果是【3】。floatf1,f2;inti,j;charch;scanf("%3d%d%c%5f%f",&i,&j,&ch,&f1,&f2);printf("%d,%d,%c,%f,%f\n",i,j,ch,f1,f2);2.39運行以下程序段,其結(jié)果是【4】。doublex=4.56789;printf("x=%f,x=%8.3f,x=%3.8f,x=%+8.0f,x=%g,x=%e\n",x,x,x,x,x,x);2.40C語言中,標(biāo)識符可分為三類,它們是【5】。2.41C語言中,整數(shù)可用三種進制數(shù)表示,它們是【6】。2.42C語言中,char與unsignedchar類型(占1個字節(jié))的變量取值范圍分別是【7】。2.43C語言中,int與unsignedint類型(占2個字節(jié))的變量取值范圍分別是【8】。2.44C語言中,long與unsignedlong類型(占4個字節(jié))的變量取值范圍分別是【9】。2.45C語言中,float類型(占4個字節(jié))的變量取值范圍是【10】,其有效位是【11】位。2.46C語言中,double類型(占8個字節(jié))的變量取值范圍是【12】,其有效位是【13】位。2.47printf函數(shù)的格式化字符串中,格式說明與輸出項從左到右的數(shù)據(jù)類型必須一一匹配,否則將【14】。2.48printf函數(shù)的格式化字串中,格式說明與輸出項的個數(shù)必須相同。如果格式說明的個數(shù)少于輸出項的個數(shù),則多余的輸出項【15】。如果格式說明的個數(shù)多于輸出項的個數(shù),則對于多余的格式將輸出【16】。2.49scanf函數(shù)的格式化字符串中,格式說明的類型必須與地址表列中輸入項的類型由左至右一一對應(yīng)匹配。如果類型不匹配,則讀入的數(shù)據(jù)是【17】。2.50使用scanf函數(shù)從鍵盤輸入數(shù)據(jù)時,輸入的各數(shù)據(jù)之間默認用空白字符隔開。C語言中的空白字符是【18】。如果在scanf函數(shù)格式化字符串中插入有某個非空白字符,輸入數(shù)據(jù)時應(yīng)輸入一個【19】,形成一一對應(yīng)關(guān)系。2.51scanf函數(shù)的地址表列中的輸入項是地址,不是變量名,因此普通變量前應(yīng)加【20】。2.52設(shè)有定義語句:inti=3;floatf=456.789;,則表達式1.2+i+'A'+f值的數(shù)據(jù)類型是【21】。2.53以下程序的運行結(jié)果是【22】。#include<stdio.h>main(){inti=5,j=9;floatx=2.3,y=4.5;printf("%8.2f\n",i%(int)(x+y)*j/2/3+y);}2.54若有代數(shù)式|yx+lg(x2+1)+3ex+ln(y)|+sin(25°),則正確的C語言表達式是【23】。2.55以下程序的運行結(jié)果是【24】。main(){inti=12345;longj=1234567;floatf=12345.67;doubled=12345.678956789;chars[]="Howareyou!";printf("%10d***%-10ld***\n",i,j);printf("%10d***%3ld***\n",-i,j);printf("%-10u***%10x***%10X***%10o***%x***\n",999,999,999,999,-999);printf("%f***,%10.2f***%-10.2f***\n",d,d,d);printf("%10.0f***%8.5f***\n",f,d);printf("%s*%15s*%-15s*%8.3s*%-8.3s*\n",s,s,s,s,s);printf("%8c***%-8c***\n",'A','B');}2.56有如下定義和語句,若要使變量a1、a2、c1、c2的值分別為10、20、'A'、'B',則由鍵盤正確輸入數(shù)據(jù)的格式是【25】。inta1,a2;charc1,c2;scanf("%d%c",&a1,&c1);scanf("%c%d",&c2,&a2);2.57以下程序輸入1.2345.6789<CR>,則程序運行結(jié)果為x=1.230000,y=45.678900,請?zhí)羁胀瓿沙绦颉Wⅲ?lt;CR>表示回車。#include<stdio.h>main(){doublex,y;scanf(【26】);printf("x=%f,y=%f\n",x,y);}2.58若有charch;,要判斷ch是否是英文字母的表達式是【27】。2.59若有charch;,要判斷ch是否是數(shù)字字符的表達式是【28】。2.60運算符“<<”、“sizeof”、“&&”、“||”、“^”、“|”按優(yōu)先級由高到低的排列次序是【29】。2.61在C語言中,運算符“&”作為單目運算符時,表示的是【30】運算;作為雙目運算符時,表示的是【31】運算。2.62在C語言中,運算符“*”作為單目運算符時,表示的是【32】運算;作為雙目運算符時,表示的是【33】運算。2.63在C語言中,若字符變量ch為大寫字母,欲將其轉(zhuǎn)換成小寫字母的表達式是【34】。若ch為小寫字母,欲將其轉(zhuǎn)換成大寫字母的表達式是【35】。2.64若ch為數(shù)字字符,欲將其轉(zhuǎn)換成相對應(yīng)數(shù)字的表達式是【36】。2.4編程題2.65編寫程序,從鍵盤輸入三個雙精度數(shù)a、b、c,計算總和、平均值、x=a2+b2+c2的值,并計算x平方根的值。所有運行數(shù)據(jù)保留三位小數(shù),第四位四舍五入。2.66輸入三角形的三個邊長,計算并輸出三角形的面積。2.67輸入兩個長整型數(shù),輸出它們(整數(shù)除的)商和余數(shù)。2.68輸入兩個整數(shù),輸出它們(實數(shù)除)的商,并輸出商的第二位小數(shù)位(例如:15/8.0=1.875,1.875的第二位小數(shù)位是7)。2.69輸入一個(unsigned類型)無符號整數(shù),分別輸出它的低四位和高四位。2.70輸入兩個小寫字母分別賦值給字符變量ch1與ch2,將它們轉(zhuǎn)換成大寫字母,并交換ch1與ch2的值,最后輸出ch1與ch2的值。2.71輸入秒數(shù),將它轉(zhuǎn)換,用小時、分鐘、秒來表示。例如輸入7278秒,則輸出:2小時1分18秒。2.72輸入兩個復(fù)數(shù)的實部和虛部,輸出這兩個復(fù)數(shù)積的實部和虛部。兩復(fù)數(shù)的積按下面的公式計算:(a+bi)·(c+di)=(ac-bd)+(ad+bc)i。2.5實驗題2.5.1目的要求1.掌握C語言各類基本數(shù)據(jù)類型的應(yīng)用范圍及方法。2.熟練掌握printf函數(shù)與scanf函數(shù)格式說明字符串的使用。3.掌握C語言運算符及表達式的運算機制。2.5.2實驗內(nèi)容1.編寫程序,運行C語言中各種基本數(shù)據(jù)類型占內(nèi)存的字節(jié)數(shù)。2.編寫程序,完成教材《C語言程序設(shè)計與應(yīng)用教程》表2.8、2.9、2.10、2.11中printf語句的運行功能。3.編寫程序,完成教材《C語言程序設(shè)計與應(yīng)用教程》表2.14中scanf語句的輸入功能。4.編寫程序,例舉C語言算術(shù)運算符、關(guān)系運算符、邏輯運算符、位運算符、條件運算符,增1、減1運算符,類型轉(zhuǎn)換運算符、賦值運算符、逗號運算符及長度運算符的應(yīng)用,并對運行結(jié)果進行分析,從而掌握各類運算符的運算規(guī)則、運算優(yōu)先級和結(jié)合方向。2.6參考答案與分析2.6.1選擇題2.1答案:D 分析:C語言的簡單數(shù)據(jù)類型(即基本數(shù)據(jù)類型)包括整型(int、long、unsigned、unsignedlong)、字符型(char、unsignedchar)和實型(float、double、longdouble)。2.2答案:C 分析:C語言中單精度實型數(shù)據(jù)要用float表示,而不是real。2.3答案:A 分析:用反斜杠“\”開頭,后跟規(guī)定的單個字符或數(shù)字,并用一對單引號括起來是C語言的字符常量表示方法之一。'\\'是反斜杠字符,表示字符“\”。"Hello!"是字符串常量,a是一個標(biāo)識符,不是常量。2.4答案:B分析:答案A中包含了C語言的關(guān)鍵字if,是錯誤的。答案C中5_abc以數(shù)字打頭,是錯誤的。答案DA#B中包含了“#”非法字符,也是錯誤的。2.5答案:B分析:C語言中的關(guān)鍵字均由小寫字母和下劃線組成,大小寫字母是有區(qū)別的,Double、Char均含有大寫字母,是錯誤的。integer是Pascal語言中的整型數(shù)據(jù)類型。只有unsigned才是C語言的無符號整型數(shù)據(jù)類型,是C語言的關(guān)鍵字。2.6答案:C分析:在C語言中變量必須先定義才能使用。變量一經(jīng)定義數(shù)據(jù)類型,計算機系統(tǒng)就會給該變量分配相應(yīng)的存儲空間,以便存放變量的值。因此C語言中,變量所分配的內(nèi)存空間大小是由變量的類型決定的。2.7答案:D分析:C語言中,字符型數(shù)據(jù)在內(nèi)存中的存儲形式是以ASCII碼值表示的。2.8答案:B分析:C語言中,整型數(shù)據(jù)在內(nèi)存中的存儲形式是以補碼表示的。2.9答案:D 分析:類型轉(zhuǎn)換只能改變表達式值的類型,不能改變變量存儲單元的大小。2.10答案:B分析:int類型的數(shù)據(jù)長度為2個字節(jié),則數(shù)據(jù)的取值范圍是-32768至32767;unsignedint類型數(shù)據(jù)長度也為2個字節(jié),由于是無符號數(shù),數(shù)據(jù)的最高位不用于表示符號位,而是數(shù)值位。因此,unsignedint類型數(shù)據(jù)的取值范圍是0至65535。2.11答案:A分析:-8是int類型,int類型的數(shù)據(jù)長度為2個字節(jié)。-8的原碼為1000000000001000,反碼為1111111111110111,加1后的補碼表示成1111111111111000。2.12答案:D分析:定義變量時,在變量之后加“=常量”,可以對該變量初始化。2.13答案:A分析:答案B和D是實型常數(shù),答案C是非法常數(shù),只有答案A是整型常數(shù)。2.14答案:C分析:八進制整數(shù)中不能包含8、9這兩個數(shù)字。2.15答案:D分析:j+1是表達式,不能被賦值。2.16答案:B分析:y==3是一個關(guān)系表達式,當(dāng)y的值為3時,其表達式為真,值為1,該值賦給x。2.17答案:C分析:同類型的數(shù)值型數(shù)據(jù)進行混合運算時,先要把低數(shù)據(jù)類型向高數(shù)據(jù)類型轉(zhuǎn)換,成為同一類型后才進行運算。其中=2\*GB3②是關(guān)系、邏輯表達式,得1或0均為int型。2.18答案:A分析:數(shù)學(xué)上的關(guān)系式x≤y≤z,在C語言中不能用關(guān)系表達式x<=y<=z來表示,只能用C語言的邏輯表達式x<=y&&y<=z來表示。2.19答案:C分析:當(dāng)表達式('a'<=c)&&('z'>=c)值為真時,變量c的值一定是小寫字母。2.20答案:A分析:若表達式!x的值為1,變量x的值一定為0,因此A為正確答案。2.21答案:A分析:十進制數(shù)11,分別用十進制、八進制、十六進制表示為:11、13、b。十進制數(shù)-11,分別用十進制、無符號十進制數(shù)、無符號十六進制表示為:-11、177767、fff5。2.22答案:D分析:scanf函數(shù)格式化字符串中,輸入的各數(shù)據(jù)之間默認用空白字符(空格鍵、回車鍵Enter或制表鍵Tab)隔開。如果在格式化字符串中插入某個非空白字符如“+”,輸入數(shù)據(jù)時應(yīng)輸入一個該非空白字符“+”,形成一一對應(yīng)關(guān)系。2.23答案:C分析:使用printf函數(shù)輸出時,在格式化字符串的“%”號和格式字符之間插入一個“0”,若指定了輸出寬度,則數(shù)據(jù)前面的多余空格處填以數(shù)字0。若要在輸出的八進制數(shù)加前導(dǎo)0,在輸出的十六進制數(shù)加前導(dǎo)0x,可在“%”號和格式字符o和x之間插入一個“#”號。格式輸出字符%x與%X用于無符號整數(shù)以十六進制整數(shù)輸出,x用于輸出十六進制中的abcdef,X用于輸出十六進制中的ABCDEF。2.24答案:C分析:C語言有單目運算符、雙目運算符、三目運算符三種運算符。2.25答案:B 分析:執(zhí)行語句組intx=1,y=2,z;z=x>y?++x:++y;時,關(guān)系表達式x>y的值為0,則執(zhí)行表達式++y,表達式++x不被執(zhí)行,因此,x、y、z的值分別為1、3、3。2.26答案:D 分析:字符變量只能賦以字符常量值,而'123'是非法的字符常量。2.27答案:A 分析:在scanf函數(shù)中,不能指定實型數(shù)據(jù)小數(shù)位的寬度。這一點與printf函數(shù)不同,應(yīng)特別注意不要混淆。2.28答案:B 分析:表達式t=1,t+5,++t是一個逗號表達式,其結(jié)合方向是從左到右,先求解表達式t=1使變量t的值為1,再求解表達式t+5,最后求解表達式++t,因此t的值為2.0。2.29答案:A分析:實型變量x不能用于取模運算。2.30答案:B分析:語句b=~a|a<<2+1;相當(dāng)于語句b=(~a)|(a<<(2+1));。按位取反運算符“~”優(yōu)先級最高,先計算(~a);其次是雙目算術(shù)運算符“+”,計算2+1;接著是左移位運算符“<<”,計算a<<3;然后位運算符“|”;最后是賦值運算符“=”。2.31答案:C分析:求解表達式(a&&++b)時,由于變量a的值為0,這時系統(tǒng)可以確定邏輯表達式0&&++b的值必定是0,因此,不再對表達式++b、c++求值,變量b、c的值不變,仍為0。2.32答案:B分析:按運算符優(yōu)先級由高到低的次序是“+”、“<=”、“!=”、“||”。2.33答案:A分析:答案Ba*3=2對表達式賦值,是非法的。答案C實型變量x不能用于取模運算,也是非法的。強制類型轉(zhuǎn)換正確的用法是y=(float)(i),答案D數(shù)據(jù)類型float沒加括號,是非法的。2.34答案:A分析:先進行位移運算,再按位異或運算。2.35答案:D分析:C語言在求解邏輯表達式、關(guān)系表達式的值時,數(shù)字1代表“真”,數(shù)字0代表“假”。但在判定一個表達式是否為“真”時,以0代表“假”,以非0代表“真”。2.6.2填空題2.36答案:【1】15或0xf或017(其中x、f大小寫均正確)分析:若要將數(shù)x的某些位n1、n2…取反,只要取一數(shù)y,置y的相應(yīng)位n1、n2…為1,其余位置0,并讓數(shù)x與數(shù)y進行位異或運算,所得結(jié)果即是將數(shù)x的位n1、n2…取反。2.37答案:【2】1,2,0分析:本題是邏輯表達式的“不完全計算問題”,見2.32題。2.38答案:【3】123,45,#,6.789000,123.000000分析:scanf函數(shù)輸入數(shù)據(jù)的實際寬度是由輸入數(shù)據(jù)的結(jié)束標(biāo)志決定的,在讀入某數(shù)據(jù)項時,遇到結(jié)束標(biāo)志就完成該數(shù)據(jù)項讀入。結(jié)束標(biāo)志有三種:①空白字符,空格鍵、回車鍵或制表鍵(Tab)。②寬度m,格式字符前可用一個整數(shù)m指定輸入數(shù)據(jù)所占寬度,此時輸入數(shù)據(jù)的寬度不能大于m。③非法字符,由于非法字符的存在,構(gòu)成了不正確的C常量。2.39答案:【4】x=4.567890,x=4.568,x=4.56789000,x=+5,x=4.56789,x=4.56789e+002.40答案:【5】關(guān)鍵字、預(yù)定義標(biāo)識符、用戶定義標(biāo)識符2.41答案:【6】十進制、八進制、十六進制分析:十進制整數(shù)由不是以數(shù)字0開頭的整數(shù)組成,可以由數(shù)字0至數(shù)字9組成;八進制整數(shù)由數(shù)字0開頭的整數(shù)組成,只能由數(shù)字0至數(shù)字7組成;十六進制整數(shù)由數(shù)字0和字母x(或X)開頭的數(shù)組成,可以由數(shù)字0至數(shù)字9、字母a至字母f或字母A至字母F組成。三種表示方式的均前面可加正號“+”或負號“-”。2.42答案:【7】-128~127與0~255分析:因為char是有符號位的,8位中最高位表示符號位,其最小值為10000000,取反(11111111)加1得,最高位處有兩個1,一個表示符號“-”,另一個是數(shù)值1即27,得-128。2.43答案:【8】-32768~32767與0~65536分析:同上類推。2.44答案:【9】-2147483648~2147483647與0~4294967295分析:同上類推。2.45答案:【10】3.4×10-38~3.4×1038【11】7~8 分析:C語言規(guī)定。2.46答案:【12】1.7×10-308~1.7×10308【13】15~16分析:C語言規(guī)定。2.47答案:【14】輸出錯誤結(jié)果 分析:略。2.48答案:【15】不予輸出 【16】不確定值分析:略。2.49答案:【17】不正確的數(shù)據(jù) 分析:略。2.50答案:【18】空格鍵、回車鍵(Enter鍵)和制表鍵(Tab鍵)【19】與該非空白字符相同的字符 分析:C語言規(guī)定。2.51答案:【20】&分析:scanf函數(shù)的地址表列中的輸入項是地址,不是變量名,因此普通變量前應(yīng)加地址操作符“&”。但是對于字符串?dāng)?shù)組或字符串指針變量,其變量名本身就是地址,不需要在它們前面加“&”地址操作符。2.52答案:【21】double分析:C語言中,不同類型的數(shù)值型數(shù)據(jù)進行混合運算時,先要把低數(shù)據(jù)類型向高數(shù)據(jù)類型轉(zhuǎn)換,成為同一類型后才進行運算。在計算表達式1.2+i+'A'+f時,先把整型變量i的值3轉(zhuǎn)換成double型數(shù)據(jù)后,與1.2相加,值為double類型的數(shù)據(jù);然后把字符'A'轉(zhuǎn)換成65.0(double型數(shù)據(jù)),再進行相加運算;最后把單精度實型變量f的值也轉(zhuǎn)換成double類型,與前面的結(jié)果相加,結(jié)果為double類型的數(shù)據(jù)。2.53答案:【22】11.50 分析:%、*、/的優(yōu)先級相同,從左到右進行計算。2.54答案:【23】fabs(pow(y,x)+lg10(x*x+1)+3*exp(x)+lg(y))+sin(25*3.14159/180)分析:C語言中數(shù)學(xué)函數(shù)的寫法。2.55答案:【24】12345***1234567***-12345***1234567***999***3e7***3E7***1747***fc19***12345.678957***,12345.68***12345.68***
12346***12345.67896***Howareyou!*Howareyou!*Howareyou!*How*How*A***B***分析:輸出格式規(guī)定。2.56答案:【25】10AB20回車分析:輸入格式規(guī)定。2.57答案:【26】"%4lf%lf",&x,&y分析:在scanf函數(shù)中,可以指定輸入的實型數(shù)據(jù)總寬度,但不能指定實型數(shù)據(jù)小數(shù)位的寬度。應(yīng)特別注意,對于double類型的變量,scanf函數(shù)輸入格式說明中的長度修飾符“l(fā)”不能省略,否則將接收到錯誤的數(shù)據(jù)。但使用printf函數(shù)輸出double類型的數(shù)據(jù)時,輸出格式說明中的長度修飾符“l(fā)”可以省略。2.58答案:【27】('A'<=ch)&&(ch<='Z')||('a'<=ch)&&(ch<='z')分析:考慮字母的大小寫。2.59答案:【28】('0'<=ch)&&(ch<='9')或(48<=ch)&&(ch<=57)分析:'0'~'9'的ASCII值為48~57。2.60答案:【29】“sizeof”、“<<”、“^”、“|”、“&&”、“||”分析:見《C語言程序設(shè)計與應(yīng)用教程》附錄E。2.61答案:【30】取地址【31】按位與 分析:C語言語法規(guī)定。2.62答案:【32】指針(或間接取值)【33】乘法 分析:C語言語法規(guī)定。2.63答案:【34】ch+'a'-'A'(或ch+32)【35】ch-('a'-'A')(或ch-32)分析:大小寫字母之間ASCII值相差32。2.64答案:【36】ch-'0'或ch-48 分析:略。2.6.3編程題2.65參考答案:#include<stdio.h>#include<math.h>main(){doublea,b,c,total,average,square,squareroot;printf("請輸入三個雙精度實數(shù):");scanf("%lf%lf%lf",&a,&b,&c);total=a+b+c;average=total/3.0;square=a*a+b*b+c*c;squareroot=sqrt(square);printf("三個數(shù)的和=%-15.3f,三個數(shù)的平均值=%-15.3f\n",total,average);printf("三個數(shù)的平方和x=%.3f,x的平方根=%.3f\n",square,squareroot);}運行結(jié)果:請輸入三個雙精度實數(shù):1.234.567.89三個數(shù)的和=13.680,三個數(shù)的平均值=4.560三個數(shù)的平方和x=84.559,x的平方根=9.1962.66參考答案:#include<stdio.h>#include<math.h>main(){floata,b,c,k,area;printf("請輸入三角形三條邊的邊長:");scanf("%f%f%f",&a,&b,&c);/*由鍵盤輸入三角形三邊邊長*/if((a+b<=c)||(a+c<=b)||(b+c<=a)){printf("您輸入的三條邊無法構(gòu)成三角形。\n");exit(1);/*結(jié)束程序*/}k=(a+b+c)/2;area=sqrt(k*(k-a)*(k-b)*(k-c));/*函數(shù)sqrt(x)是求x的平方根*/printf("該三角形的面積是%6.2f\n",area);}運行結(jié)果:請輸入三角形三條邊的邊長:3.45.67.4該三角形的面積是9.052.67參考答案:main(){longa1,a2,a3,a4;printf("請輸入兩個整數(shù):");scanf("%ld%ld",&a1,&a2);a3=
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 克孜勒蘇職業(yè)技術(shù)學(xué)院《移動應(yīng)用開發(fā)A》2023-2024學(xué)年第一學(xué)期期末試卷
- 江蘇聯(lián)合職業(yè)技術(shù)學(xué)院《全球衛(wèi)生》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖南農(nóng)業(yè)大學(xué)《數(shù)字視頻處理》2023-2024學(xué)年第一學(xué)期期末試卷
- 湖北孝感美珈職業(yè)學(xué)院《公共部門人力資源管理實驗》2023-2024學(xué)年第一學(xué)期期末試卷
- 【物理】《功率》(教學(xué)設(shè)計)-2024-2025學(xué)年人教版(2024)初中物理八年級下冊
- 高考物理總復(fù)習(xí)《電場》專項測試卷含答案
- 重慶文理學(xué)院《建筑設(shè)計二》2023-2024學(xué)年第一學(xué)期期末試卷
- 重慶工程職業(yè)技術(shù)學(xué)院《數(shù)字化設(shè)計與制造雙語》2023-2024學(xué)年第一學(xué)期期末試卷
- 浙江經(jīng)濟職業(yè)技術(shù)學(xué)院《太極拳》2023-2024學(xué)年第一學(xué)期期末試卷
- 中國美術(shù)學(xué)院《電工與電子技術(shù)(B)》2023-2024學(xué)年第一學(xué)期期末試卷
- 飛行原理(第二版) 課件 第10章 高速空氣動力學(xué)基礎(chǔ)
- 廣西《乳腺X射線數(shù)字化體層攝影診療技術(shù)操作規(guī)范》
- 山西省2024年中考道德與法治真題試卷(含答案)
- 五年(2020-2024)高考地理真題分類匯編(全國版)專題12區(qū)域發(fā)展解析版
- 酒店會議室設(shè)備安裝及調(diào)試方案
- 2024年新疆(兵團)公務(wù)員考試《行測》真題及答案解析
- JGJ120-2012建筑基坑支護技術(shù)規(guī)程-20220807013156
- 英語代詞專項訓(xùn)練100(附答案)含解析
- GB/T 4732.1-2024壓力容器分析設(shè)計第1部分:通用要求
- 《采礦工程英語》課件
- NB-T31045-2013風(fēng)電場運行指標(biāo)與評價導(dǎo)則
評論
0/150
提交評論