C程序設(shè)計(jì)基礎(chǔ)第三版周靄如習(xí)題及其解答第3版_第1頁(yè)
C程序設(shè)計(jì)基礎(chǔ)第三版周靄如習(xí)題及其解答第3版_第2頁(yè)
C程序設(shè)計(jì)基礎(chǔ)第三版周靄如習(xí)題及其解答第3版_第3頁(yè)
C程序設(shè)計(jì)基礎(chǔ)第三版周靄如習(xí)題及其解答第3版_第4頁(yè)
C程序設(shè)計(jì)基礎(chǔ)第三版周靄如習(xí)題及其解答第3版_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、選擇題1.一個(gè)最簡(jiǎn)單的C+程序,可以只有一個(gè)( c )。(a) 庫(kù)函數(shù)(b) 自定義函數(shù)(c)main函數(shù)(d) 空函數(shù)2.用C+語(yǔ)言編制的源程序要變?yōu)槟繕?biāo)程序必須要經(jīng)過(guò)(d)。(a) 解釋(b) 匯編(c) 編輯(d) 編譯3. C+程序中的簡(jiǎn)單語(yǔ)句必須以(b)結(jié)束。(a) 冒號(hào)(b) 分號(hào)(c) 空格(d)花括號(hào)4.有說(shuō)明 int a=0; double x=5.16; 以下語(yǔ)句中,( c )屬于編譯錯(cuò)誤。(a) x=a/x;(b) x=x/a;(c) a=a%x;(d) x=x*a;5. 執(zhí)行C+程序時(shí)出現(xiàn)的“溢出”錯(cuò)誤屬于(c)錯(cuò)誤。(a) 編譯 (b) 連接 (c) 運(yùn)行 (d) 邏

2、輯6.下列選項(xiàng)中,全部都是C+關(guān)鍵字的選項(xiàng)為(c)。(a) whileIFStatic(b) break chargo(c) sizeof case extern(d) switch float integer7. 按C+標(biāo)識(shí)符的語(yǔ)法規(guī)定,合法的標(biāo)識(shí)符是(a)。(a) _abc(b) new(c) (d)“age“8C+語(yǔ)句中,兩個(gè)標(biāo)識(shí)符之間(a)不能作為C+的分隔符。(a) 數(shù)字(b) ;(c) :(d) +9下列正確的八進(jìn)制整型常量表示是(b)。(a) 0a0(b) 015(c) 080(d) 0x1010下列錯(cuò)誤的十六進(jìn)制整型常量表示是(c)。(a) 0x11(b) 0xaf(c)0xg

3、(d) 0x1f11在下列選項(xiàng)中,全部都合法的浮點(diǎn)型數(shù)據(jù)的選項(xiàng)為(b)。(a) -1 15. 2e-4-1e+5-12345. e-5(d) 5.0e(1+4)8e+212下列正確的字符常量為( d )。(a) “a”(b) name(c) a(d) 10113下列選項(xiàng)中,(d )不能交換變量a和b的值。(a) t=b;b=a; a=t;(b) a=a+b;b=a-b; a=ab;(c) t=a; a=b; b=t;(d) a=b;b=a; 14關(guān)于下列語(yǔ)句敘述錯(cuò)誤的是(a)。int i=10,*p=&i;(a) p的值為10(b) p指向整型變量i(c) *p表示變量i的值(d) p

4、的值是變量i的地址15有以下變量說(shuō)明,下面不正確的賦值語(yǔ)句是(b)。int a=5, b=10, c; int *p1=&a, *p2 = &b; (a) *p2=b ;(b) p1=a ;(c) p2=p1 ;(d) c=*p1*(*p2) ;16有以下變量說(shuō)明,下面正確的語(yǔ)句是(b)。int a=10, b; int &pa=a, &pb=b; (a) &pb=a;(b) pb=pa;(c) pb = &pa;(d) *pb = *pa;17執(zhí)行下面語(yǔ)句序列后,a和b的值分別為(b)。int a=5 , b=3 , t ;int &r

5、a = a ;int &rb = b ;t = ra ; ra = rb ; rb = t ;(a) 3和3(b) 3和5(c) 5和3(d) 5和518. 在下列運(yùn)算符中,(d)優(yōu)先級(jí)最高。(a) <=(b)*=(c)+(d)*19.在下列運(yùn)算符中,(d)優(yōu)先級(jí)最低。(a) ! (b)&&(c) !=(d) ? :20設(shè) int i=1, j=2; 則表達(dá)式 i+j 的值為(c )。(a) 1(b)2(c)3(d)421設(shè) int i=1, j=2; 則表達(dá)式 +i+j 的值為(d)。(a) 1(b)2(c)3(d)422在下列表達(dá)式選項(xiàng)中,(c)是正確。(a)

6、+(a+)(b)a+b(c)a+b(d)a+b23已知 int i=0, j=1, k=2; 則邏輯表達(dá)式+i|-j&&+k 的值為(b)。(a) 0(b)1(c)2(d)324. 執(zhí)行下列語(yǔ)句后,x的值是( d ),y的值是( c )。 int x, y ; x = y = 1;+x | + y;(a) 不確定(b) 0(c) 1(d) 2x為整型變量,不能正確表達(dá)數(shù)學(xué)關(guān)系 1x5 的C+邏輯表達(dá)式是( a )。(a) 1< x <5(b) x=2|x=3|x=4(c) 1<x && x<5(d) !(x<=1)&&

7、;!(x>=5)26. 已知 int x=5; 執(zhí)行下列語(yǔ)句后,x的值為(c)。x+= x -= x * x;(a) 25(b)40(c) 40(d)2027. 設(shè) int a=1, b=2, c=3, d=4; 則以下條件表達(dá)式的值為( a )。a < b ? a : c<d ? c : d(a) 1(b)2(c)3(d)428. 以下逗號(hào)表達(dá)式的值為(d)。( x =4*5, x *5), x +25(a) 25(b)20(c)100(d)45把下列數(shù)學(xué)表達(dá)式寫成c+算術(shù)表達(dá)式1 2. xxx(ax+b)+c+d+e3. ln(1+|10) 4.5. cot6. lg(a

8、2+ab+b2) 【解答】1. 1/(1 + 1/(1 + 1/(x + y)2. x * ( x * ( x * ( a * x + b ) + c ) + d ) + e3. log( 1 + pow( fabs( ( a + b )/( a b ) ),10)4. sqrt( 1 + 3.14159/2 * cos( 48 * 3.14159/180 ) )5. 1/tan( ( 1 - x*x )/( 1 + x*x)或者 cos( ( 1 - x*x )/( 1 + x*x ) )/sin( ( 1 - x*x )/( 1 + x*x ) )6. log10( a * a + a *

9、 b + b * b ) 用邏輯表達(dá)式表示下列條件1. i 被j整除2. n是小于正整數(shù)k的偶數(shù)3.1x<104. x,y其中有一個(gè)小于z5. y 100,10,并且 y 10,1006. 坐標(biāo)點(diǎn)(x,y)落在以(10,20)為圓心,以35為半徑的圓內(nèi)7. 三條邊a,b和c構(gòu)成三角形8. 年份Year能被4整除,但不能被100整除或者能被400整除【解答】1. i%j = 02.(n<k)&&(n%2 = 0)3.1<=x && x<10 4. x<z|y<z5. !( y>=-100 && y<=

10、-10 ) && !( y>=10 && y<=100 )6. sqrt(pow(x-10),2) + pow(y-20),2)< 357. a+b>c && b+c>a && c+a>b8. (year%4 = 0) && (year%100!=0)|(year%400=0)1.4 閱讀下列程序,寫出執(zhí)行結(jié)果1#include <iostream>using namespace std;int main() int a = 1, b = 2; bool x, y;

11、cout << (a+)+(+b) << endl; cout << a % b << endl; x = !a>b; y = a- && b; cout << x << endl; cout << y << endl;【解答】42012#include <iostream>using namespace std;int main() int x,y,z,f; x = y = z = 1; f = -x | y- && z+; cout <&l

12、t; "x = " << x << endl; cout << "y = " << y << endl; cout << "z = " << z << endl; cout << "f = " << f << endl;【解答】 x=0 y=0 z=2 f=13#include <iostream>#include<iomanip>using namespace

13、 std;int main() int a=123; int &ra=a; int *pa=&a; cout<<setw(5)<<dec<<a<<setw(5)<<oct<<ra<<setw(5)<<hex<<*pa<<endl;【解答】 123 173 7b1.5思考題1什么叫數(shù)據(jù)類型?變量的類型定義有什么作用?【解答】數(shù)據(jù)“類型”是對(duì)數(shù)據(jù)的抽象。類型相同的數(shù)據(jù)有相同的表示形式、存儲(chǔ)格式以及相關(guān)的操作。定義一個(gè)變量時(shí),計(jì)算機(jī)根據(jù)變量的類型分配存儲(chǔ)空間,并以該

14、類型解釋存放的數(shù)據(jù)。2普通數(shù)據(jù)類型變量和指針類型變量的定義、存儲(chǔ)、使用方式上有何區(qū)別?請(qǐng)編寫一個(gè)程序驗(yàn)證之?!窘獯稹孔兞款愋投x存儲(chǔ)使用方式數(shù)據(jù)類型 標(biāo)識(shí)符數(shù)據(jù)值通過(guò)名訪問(wèn)即直接訪問(wèn)對(duì)變量?jī)?nèi)容操作指針類型 * 標(biāo)識(shí)符地址值通過(guò)指針變量的地址值間址訪問(wèn)對(duì)象驗(yàn)證程序:#include<iostream>using namespace std;int main() int a,b,c; cout<<"a,b,c= " cin>>a>>b>>c;/對(duì)普通數(shù)據(jù)類型變量賦值 int *pa=&a,*pb=&b,

15、*pc=&c;/用變量地址值初始化指針變量 cout<<"a,b,c= "<<a<<", "<<b<<", "<<c<<endl;/名訪問(wèn),輸出a,b,c的值 cout<<"pa,pb,pc= "<<pa<<", "<<pb<<", "<<pc<<endl; /輸出指針變量的地址值 /間址訪問(wèn),輸出pa

16、,pb,pc指向的變量的賦值 cout<<"*pa,*pb,*pc= "<<*pa<<", "<<*pb<<", "<<*pc<<endl; 3什么叫數(shù)據(jù)對(duì)象的引用?對(duì)象的引用和對(duì)象的指針有什么區(qū)別?請(qǐng)用一個(gè)驗(yàn)證程序說(shuō)明之?!窘獯稹恳檬菫閿?shù)據(jù)對(duì)象定義別名。引用與指針有以下幾點(diǎn)區(qū)別:(1)引用名不是內(nèi)存變量,而指針變量要開(kāi)辟內(nèi)存空間。(2)引用名需要在變量定義與變量名綁定,并且不能重定義;指針變量可以在程序中賦給不同的地址值,改變指向。(3)程序中用變

17、量名和引用名訪問(wèn)對(duì)象的形式和效果一樣;指針變量通過(guò)間址訪問(wèn)對(duì)象。驗(yàn)證程序:#include<iostream>using namespace std;int main () int a;cout<<"a="cin>>a;int ra=a;int *pa=&a; cout<<"a的值:"<<a<<endl; cout<<"a的地址:"<<&a<<endl; cout<<"ra的值:"

18、<<ra<<endl; cout<<"ra的地址:"<<&ra<<endl; cout<<"pa所指向的變量的值:"<<*pa<<endl; cout<<"pa的地址:"<<pa<<endl;4數(shù)據(jù)對(duì)象在C+中有什么不同的訪問(wèn)方式?請(qǐng)編寫一個(gè)程序驗(yàn)證之?!窘獯稹繑?shù)據(jù)對(duì)象在C+中的訪問(wèn)方式有:名訪問(wèn),引用(別名)訪問(wèn),間址訪問(wèn)。驗(yàn)證程序:#include<iostream>using n

19、amespace std;int main() int a;cout<<"a="cin>>a; a=a+5; /名訪問(wèn) cout<<&a<<endl;/輸出變量地址 cout<<*(&a)<<endl;/地址訪問(wèn),輸出變量值int *pa=&a;/說(shuō)明指針變量,指向變量a cout<<*pa<<endl;/間址訪問(wèn),輸出變量值int &ra=a;/ra是a的引用 cout<<ra<<endl;/引用訪問(wèn),輸出變量a的值5為了

20、約束對(duì)數(shù)據(jù)對(duì)象的值做只讀操作,C+采用什么方式?請(qǐng)做出簡(jiǎn)要?dú)w納?!窘獯稹考s束數(shù)據(jù)對(duì)象只讀形式如下:約束對(duì)象說(shuō)明形式標(biāo)識(shí)常量const 類型 常量標(biāo)識(shí)符=常量表達(dá)式;指針常量類型 * const 指針;指向常量的指針const 類型 * 指針; 或者 類型 const * 指針;指向常量的指針常量const 類型 * const 指針; 或者 類型 const * const 指針;常引用const 類型 & 引用名 = 對(duì)象名;6什么叫表達(dá)式?表達(dá)式值的類型由什么因素決定?使用不同運(yùn)算符連接以下3個(gè)變量,請(qǐng)寫出5個(gè)以上獲得值等于true的表達(dá)式。int a=1, b=2; double

21、 x=0.5;【解答】表達(dá)式是由數(shù)據(jù)和運(yùn)算符,按求值規(guī)則,表達(dá)一個(gè)值的式子。表達(dá)式值的類型的決定因素為操作數(shù)的類型。(1)如果運(yùn)算符左右操作數(shù)類型相同,運(yùn)算結(jié)果也是相同類型。(2)如果運(yùn)算符左右操作數(shù)類型不同,首先把類型較低(存儲(chǔ)要求,示數(shù)能力較低)的數(shù)據(jù)轉(zhuǎn)換成類型較高的數(shù)據(jù),然后運(yùn)算。(3)賦值表達(dá)式的類型由被賦值變量的類型決定。當(dāng)把一個(gè)表達(dá)式的值賦給一個(gè)變量時(shí),系統(tǒng)首先強(qiáng)制把運(yùn)算值轉(zhuǎn)換成變量的類型,然后執(zhí)行寫操作。6個(gè)值等于true的表達(dá)式:(1)b>a && a>x(2)(a+b)!=x(3)a|(b+x)(4)a=(b*x)(5)a-b<x(6)(a/

22、x=b)7閱讀以下程序,分析下面語(yǔ)句序列中每一個(gè)字符“*”和“&”的意義,寫出輸出結(jié)果。#include <iostream>using namespace std;int main() int a=10, b=20; int *p = &a, *q = &b; *p = *p * *q; int & ra = a; ra=a; int * & rt = q; *rt = 30;cout<<"a="<<a<<"nb="<<b<<"n*

23、p="<<*p<<"n*q="<<*q<<"nra="<<ra<<"n*rt="<<*rt<<endl;【解答】字符“*”和“&”的意義見(jiàn)程序中添加的注釋。#include <iostream>using namespace std;int main() int a=10, b=20; int *p = &a, *q = &b;/“*”是指針類型說(shuō)明符,“&”是取址運(yùn)算符 *p = *p

24、 * *q;/第1、2、4個(gè)“*”是間址訪問(wèn)符,第3個(gè)“*”算術(shù)乘運(yùn)算符 int & ra = a;/“&”是引用說(shuō)明符 ra=a; int * & rt = q;/“*”是指針類型說(shuō)明符,“&”是引用說(shuō)明符 *rt = 30;/“*”是間址訪問(wèn)符/輸出語(yǔ)句中的“*”是間址訪問(wèn)符cout<<"a="<<a<<"nb="<<b<<"n*p="<<*p<<"n*q="<<*q<<&

25、quot;nra="<<ra<<"n*rt="<<*rt<<endl;程序輸出結(jié)果為:a=200b=30*p=200*q=30ra=200*rt=301.6 編程題1.輸入一個(gè)三位整數(shù),將它反向輸出。【解答】#include <iostream>using namespace std;int main()int x,i,j,k;cout<<"please input x:"cin>>x; i =x/100; j =x/10 %10; k = x%10;cout&

26、lt;<k<<j<< i <<endl;2.輸入平面上某點(diǎn)橫坐標(biāo)x和縱坐標(biāo)y,若該點(diǎn)在由圖表示的方塊區(qū)域內(nèi),則輸出1;否則,輸出0。圖1.11 正方形【解答】#include <iostream>using namespace std;int main()double x,y,b;cout<<"please input x,y:"cin>>x>>y;b=(-2<=x)&&(x<=2)&&(-2<=y)&&(y<=2

27、);cout<<b<<endl;3.輸入三個(gè)整數(shù),求出其中最小數(shù)(要求使用條件表達(dá)式)?!窘獯稹?include <iostream>using namespace std;int main() int a,b,c,temp,min;cout<<"please input a,b,c:"cin>>a>>b>>c;temp=(a<b)?a:b;min=(temp<c)?temp:c;cout<<"min="<<min<<end

28、l;習(xí)題 2及其解答2.1選擇題1已知int i=0, x=1,y=0 ;在下列選項(xiàng)使i的值變成1的語(yǔ)句是(c)。(a) if( x&&y ) i+ ;(b) if(x=y) i+ ;(c) if(x|y) i+ ;(d) if( !x)i+;2設(shè)有函數(shù)關(guān)系為y= ,下面選項(xiàng)中能正確表示上述關(guān)系為(c)。(a) y=1; (b)y= -1;if(x>=0) if(x!=0)if(x=0)y=0; if(x>0)y=1;else y= -1; else y=0;(c)if(x <=0) (d) y= -1; if(x<0)y= -1; if(x<=0

29、 )else y=0; if(x<0)y= -1; else y=1; else y=1;3假設(shè)i=2,執(zhí)行下列語(yǔ)句后i的值為(b)。switch(i)case 1 : i+;case 2:i - ;case 3:+i;break;case4: - i;default:i+;(a)1(b)2(c)3(d)44已知int i=0,x=0; 下面while語(yǔ)句執(zhí)行時(shí)循環(huán)次數(shù)為( d)。while(!x&&i<3 ) x+;i+;(a) 4(b) 3(c) 2(d) 15已知int i=3;下面do_while 語(yǔ)句執(zhí)行時(shí)循環(huán)次數(shù)為(b)。doi-;cout<<

30、;i<<endl;while(i!=1);(a) 1(b) 2(c) 3(d) 無(wú)限6下面for語(yǔ)句執(zhí)行時(shí)循環(huán)次數(shù)為(b)。 int i;for ( i=0,j=5;i=j; ) cout << i << j << endl;i+;j-;(a) 0(b) 5(c) 10(d) 無(wú)限7以下死循環(huán)的程序段是(b)。(a) int x; for(int x=0;x<3 ; ) x+;(b) int k=0; do+k; while(k>=0 ) ;(c) int a=5;while(a)a- ;(d) int i=3;for(;i;i -

31、);閱讀下列程序,寫出執(zhí)行結(jié)果1#include<iostream>using namespace std;int main() int a,b,c,d,x; a = c = 0; b = 1; d = 20; if( a ) d = d-10; else if( !b ) if( !c ) x = 15; else x = 25; cout << d << endl;【解答】 202#include<iostream>using namespace std;int main() int a = 0, b = 1; switch( a ) cas

32、e 0: switch( b ) case 0 : cout<<"a="<<a<<" b="<<b<<endl; break; case 1 : cout<<"a="<<a<<" b="<<b<<endl; break; case 1: a+; b+; cout<<"a="<<a<<" b="<<b<&l

33、t;endl; 【解答】a= 0 b= 1a= 1 b= 23#include<iostream>using namespace std;int main() int i = 1; while( i<=10 ) if( +i % 3 != 1 ) continue; else cout << i << endl;【解答】 4 7 104#include <iostream>using namespace std;int main() int i = 0 , j = 5; do i+; j-; if ( i>3 ) break; whi

34、le ( j>0 ); cout << "i=" << i << 't'<< "j=" << j << endl;【解答】 i= 4 j= 15#include<iostream>using namespace std;int main() int i,j; for( i=1, j=5; i<j; i+ ) j-; cout<<i<<'t'<<j<<endl;【解答】 3 36#i

35、nclude<iostream>using namespace std;int main() int i, s = 0; for( i=0; i<5; i+ ) switch( i ) case 0: s += i; break; case 1: s += i; break; case 2: s += i; break; default: s += 2; cout<<"s="<<s<<endl;【解答】 s= 77#include<iostream>using namespace std;int main()

36、 int i, j, x = 0; for( i=0; i<=3; i+ ) x+; for( j=0; j<=3; j+ ) if( j % 2 ) continue; x+; x+; cout << "x=" << x << endl;【解答】 x= 162.3 思考題1. C+中有什么形式的選擇控制語(yǔ)句?歸納它們語(yǔ)法形式、應(yīng)用場(chǎng)合。根據(jù)一個(gè)實(shí)際問(wèn)題使用不同的條件語(yǔ)句編程?!窘獯稹空Z(yǔ)句使用方式使用場(chǎng)合if語(yǔ)句if(表達(dá)式)語(yǔ)句1;else 語(yǔ)句2;需要對(duì)給定的條件進(jìn)行判斷,并根據(jù)判斷的結(jié)果選擇不同的操作。適用于復(fù)雜的條件表

37、達(dá)式判斷。switch 語(yǔ)句switch(表達(dá)式) case 常量表達(dá)式1: 語(yǔ)句1;case 常量表達(dá)式2: 語(yǔ)句2;case 常量表達(dá)式n; 語(yǔ)句n;default : 語(yǔ)句n+1;根據(jù)整型表達(dá)式的不同值決定程序分支的情況。適用于判斷表達(dá)式簡(jiǎn)單,需要多個(gè)分支處理的情況。演示程序:程序(1)/此程序用if輸出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段/A->=90,B-(90,80,C-(80,70 ,D-(70,60,E-<60#include<iostream>using namespace std;int main()char gd;cout<<"Enter the

38、 grade:"cin>>gd;/直到輸入有效等級(jí),否則程序不繼續(xù)運(yùn)行while(!(gd>='A' && gd<='E')|(gd>='a' && gd<='e')cout<<"Invalid grade! Please retry:"cin>>gd;if(gd='A'|gd='a') cout<<"nScored 90-100!n"else i

39、f(gd='B'|gd='b') cout<<"nScored 80-89!n"else if(gd='C'|gd='c') cout<<"nScored 70-79!n"else if(gd='D'|gd='d') cout<<"nScored 60-69!n"else if(gd='E'|gd='e') cout<<"nScore under 60!n"else cout<<"Unexpect error!n"/防止意外錯(cuò)誤程序(2)/此程序用switch輸出等級(jí)對(duì)應(yīng)的分?jǐn)?shù)段/A->=90,B-(90,80,C-(80,70 ,D-(70,60,E-<60#in

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論