程序設(shè)計(jì)基礎(chǔ)(C)作業(yè)答案(帶原題)_第1頁(yè)
程序設(shè)計(jì)基礎(chǔ)(C)作業(yè)答案(帶原題)_第2頁(yè)
程序設(shè)計(jì)基礎(chǔ)(C)作業(yè)答案(帶原題)_第3頁(yè)
程序設(shè)計(jì)基礎(chǔ)(C)作業(yè)答案(帶原題)_第4頁(yè)
程序設(shè)計(jì)基礎(chǔ)(C)作業(yè)答案(帶原題)_第5頁(yè)
已閱讀5頁(yè),還剩54頁(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、程序設(shè)計(jì)基礎(chǔ)(C)作業(yè) 第1章 C語(yǔ)言的基本構(gòu)成 一、選擇題 1.( A )是構(gòu)成C語(yǔ)言程序的基本單位。 (A)函數(shù) ( B) 過(guò)程 (C)子程序 ( D) 文件 2. ( B )是C語(yǔ)言提供的合法的數(shù)據(jù)類(lèi)型關(guān)鍵字。 ( A) Float ( B) signed ( C) integer ( D) Char 3.以下選項(xiàng)中不合法的用戶標(biāo)識(shí)符是(A )。 ( A) abc . c ( B) file ( C) Main ( D) PRINTF 4.以下選項(xiàng)中不合法的用戶標(biāo)識(shí)符是(AB )。 ( A) l23 ( B) printf ( C) A ( D) Dim 5.合法的C語(yǔ)言長(zhǎng)整型常數(shù)是(A

2、 )。 (A)0 L ( B) 5712700 ( C) ( D) 6. C語(yǔ)言中,要求運(yùn)算數(shù)必須是整型的運(yùn)算符是( A )。 ( A) % ( B) / ( C) ( D) ! 7 .以下選項(xiàng)中正確的整型常量是(B )。 ( A) 12. ( B) 20 ( C) l , 000 ( D) 0458 (A) 1( B). (C)( D) 456e 2 9. C語(yǔ)言中運(yùn)算對(duì)象必需是整型的運(yùn)算符是( D )。 (A) (B) + (C) *(D) % 二、程序調(diào)試題 1.編輯、調(diào)試以下程序 步驟1 :在Visual C+環(huán)境下新建文件可用 開(kāi)始t 程序t Microsoft Visual C+

3、宀 Microsoft Visual C+ t 文件t 新建t 文件t C+ Sourse File,輸入文件名, 程序代碼如下: # include /*文件預(yù)處理, 包含標(biāo)準(zhǔn)輸入輸出庫(kù),程序可調(diào)用輸入、輸出函數(shù) */ int add(i nt x,i nt y) int乙 z=x+y; return 乙 int main() intadd(i nt, in t); /* 函數(shù)的說(shuō)明,告訴系統(tǒng)在主函數(shù)中要調(diào)用add函數(shù)*/ int a,b,c; /* 變量的定義*/ scan f(%d %dn, c=add(a,b); /* 函數(shù)調(diào)用*/ prin tf(%d+%d=%dn,a,b,c);

4、/*調(diào)用系統(tǒng)輸出函數(shù) printf ,%d為格式控制符,依次用后面的變量值填充,以整數(shù)形 式輸出*/ 請(qǐng)思考文件由幾個(gè)函數(shù)構(gòu)成 由個(gè)函數(shù)構(gòu)成 調(diào)用了那幾個(gè)系統(tǒng)函數(shù) 調(diào)用2個(gè)系統(tǒng)函數(shù),分別是 scanf和printf 此程序中用到了哪幾個(gè)保留字哪幾個(gè)用戶自定義標(biāo)識(shí)符 保留字:int , return 自定義表示符: z, x,y,a, b,c 步驟3: 編譯并運(yùn)行程序,程序運(yùn)行時(shí)輸入兩個(gè)整數(shù),20 40,觀察程序運(yùn)行的結(jié)果。 20+40=60 2.編輯、調(diào)試以下程序 步驟1:在Visual C+環(huán)境下新建文件可用 開(kāi)始t 程序t Microsoft Visual C+ Microsoft Vis

5、ual C+ t文件t新建t文件t C+ Sourse File,輸入文件名 步驟2:在文本編輯器中輸入以下C程序 #in clude /* 文件預(yù)處理,包含標(biāo)準(zhǔn)輸入輸出庫(kù),程序可調(diào)用輸入、輸出函數(shù)*/ #i nclude int main() c=or(a,b); /* 函數(shù)調(diào)用*/ int an d(i nt,i nt);/* 函數(shù)的說(shuō)明,告訴系統(tǒng)在主函數(shù)中要調(diào)用and函數(shù)*/ int or(i nt,i nt);/* 函數(shù)的說(shuō)明,告訴系統(tǒng)在主函數(shù)中要調(diào)用and函數(shù)*/ int a,b,c;/* 變量的定義*/ scanf(%d %d, c=a nd(a,b);/* 函數(shù)調(diào)用*/ prin

6、tf(%d /*調(diào)用系統(tǒng)輸出函數(shù)printf,%d 為格式控制符,依次用后面的變量值填充,以整數(shù)形式 輸出*/ printf(%d | %d=%dn,a,b,c); 步驟3:文件t新建t文件C+ Sourse File,輸入文件名1-2-2,源程序代碼為: int and(int a,int b) int c; c=a return c; 步驟4:文件t新建t文件tC+ Sourse File,輸入文件名1-2-3,源程序代碼為: int or(int a,int b) int c; c=a|b; return c; 步驟5:點(diǎn)擊編譯圖標(biāo) ,編譯程序 步驟4:點(diǎn)擊執(zhí)行圖標(biāo)可,執(zhí)行程序,當(dāng)程序運(yùn)

7、行時(shí),鍵盤(pán)輸入 20 40,按回車(chē)。 20 40 20 printf(t* * n); printf(t * * n); printf(t* * * * * * * * n) printf(t * * n); printf(t * * n); printf(t * * n); printf(t * * * n); printf(t * * * * n); printf(t* *n); 2 仿照例子,定義一個(gè)字符數(shù)組,從鍵盤(pán)輸入一字符串,然后輸出的程序。 #include int main() char s255; printf( 請(qǐng)輸入 :); scanf(%s,s); printf( 你輸入

8、的是 :%sn,s); return 0; 3 從鍵盤(pán)輸入十六進(jìn)制整數(shù),轉(zhuǎn)化為八進(jìn)制數(shù)輸出。 #include int main() int a; printf( 請(qǐng)輸入一個(gè)十六進(jìn)制數(shù) :); scanf(%x, printf( 這個(gè)數(shù)轉(zhuǎn)化為八進(jìn)制數(shù)為 %on,a); return 0; 4 只定義兩個(gè)整型數(shù)據(jù)并賦值,實(shí)現(xiàn)兩個(gè)整型數(shù)的互換。 #include int main() int a = 10; int b = 20; a = aAb; b = bAa; a = aAb; printf(a = %d , b = %dn,a,b); return 0; 5 從鍵盤(pán)上輸入一個(gè)整數(shù),分別輸出

9、8、16 進(jìn)制數(shù)的程序。 #include int main() int a; printf( 請(qǐng)輸入一個(gè)十進(jìn)制數(shù) :); scanf(%d, printf( 這個(gè)數(shù)轉(zhuǎn)化為八進(jìn)制數(shù)為 %on,a); printf( 這個(gè)數(shù)轉(zhuǎn)化為八進(jìn)制數(shù)為 %xn,a); return 0; 6 從鍵盤(pán)上輸入一個(gè)整數(shù),分別輸出它的個(gè)位數(shù),十位數(shù),百位數(shù)。 #include int main() int a; scanf(%d, printf(百位數(shù)為%dn,a/100); printf(十位數(shù)為%dn,a%100/10); printf(個(gè)位數(shù)為%dn,a%10); return 0; 7 以下程序輸出結(jié)果是(

10、9,10 )。 #include void main() int i=010,j=10; printf(%d,%dn,+i,j- ); printf( 你是學(xué)生嗎 (Y/N):); scanf(%s, if(s = Y | s = y) printf( 你是學(xué)生 n); else printf( 你不是學(xué)生 n); return 0; 9. 從鍵盤(pán)輸入一個(gè)角度x,求10*s in(x)的值。 #include #include int main() int a; scanf(%d, double r = 10 * sin(a); printf(%fn,r); return 0; 第3章循環(huán)程序

11、設(shè)計(jì) 1 .執(zhí)行語(yǔ)句 for(i=0;i+5;); (A)6 (C)4 2. 若 int i=0 ;下列語(yǔ)句計(jì)算 (A) while (s+=i ) ; (C) for ( ;i=10;s+=i,i+ 3. 若 int i,x; 10.以下不是死循環(huán)的語(yǔ)句是 (A) for(;x+); ) 則語(yǔ)句 for(i=x=0;i9;i+=+x); D )。 后,變量 i 的值是( A )。 (B)5 (D)0 1+2+ 10 的是(C )。 B)for ( ;i=10;i+,s+=i D) for ( ;i9;i+,s+=i ) 的循環(huán)體要執(zhí)行( 4 B) while(1)x+; )次。 D) for

12、(x=-10;x+;) C) doi+;while(1) 4. 以下for語(yǔ)句的循環(huán)次數(shù)是多少 int i,j=3; for(;i=j;i-,j-) printf(%d,i); 執(zhí)行了 3次 5. 下面的語(yǔ)句顯示輸出6行6列的整數(shù)數(shù)組h的主對(duì)角線上的所有元素,請(qǐng)補(bǔ)充完整: for(int i=0;i6 ;i+) printf(%d,hii) 6. 寫(xiě)出以下程序運(yùn)行的結(jié)果,此程序?qū)崿F(xiàn)了什么功能 #include void main() int a10=2,4,0,-5,10,6,-8,9,6,7; int i, count=0; for(i=0;i10;i+) if(ai=0) count+;

13、else continue; printf(%dn , count); 該程序?qū)崿F(xiàn)的功能為:計(jì)算數(shù)組a中包含幾個(gè)0 7. 寫(xiě)出以下程序的功能。 #include void main() int a10=2,4,0,-5,10,6,-8,9,6,7,tmp,k; for (k=0;k10/2;k+) tmp=ak; ak=a10-k-1; a10-k-1=tmp; 此程序?qū)崿F(xiàn)功能:將數(shù)組顛倒 for(i=0;i6;i+) for(j=0;ji;j+) printf(); for(j=0;j2*(5-i)-1;j+) printf(*); printf(n); 輸岀倒三角形 * kkkkkkk 9

14、.請(qǐng)改正下列程序的錯(cuò)誤,改正后的程序?qū)懺谟疫叺目瞻滋?,并上機(jī)調(diào)試檢驗(yàn)。 (1) #in clude void mai n() #in clude int i,s; i=1; s=0; while(i=100); s=s+i; i+; printf(“ 1+2+3+ .+99+100=%dn ” ,s); void mai n() int i,s; i=1; s=0; while(i=100) #in clude void mai n() printf(“ 1+2+3+ .+99+100=%dn ” ,s); int s = 0; s=s+i; i+; printf( “ 1+2+3+ .+99

15、+100=%dn ”,s); 1*3*5*7*9=945 10. 輸入一個(gè)基數(shù),例如輸入9,輸出為:求1*3*9的值。輸出為: #in clude int mai n() int a,b; b = 1; scan f(%d, for(i nt i = 1;i = a; i+=2) b = b * i; prin tf(%dn,b); return 0; 1!+2!+3!+ +5! 11. 輸入一個(gè)510之間的整數(shù)n,求1!+2!+3!+n!。例如輸入5,輸出為: =153 #in clude int mai n() int a,b,c; b = 1; c = 0; scanf(%d, for(

16、int i = 1; i = a; i+) for(int j = 1; j = i; j+) b = b * j; c = c + b; b = 1; printf(%dn,c); return 0; 12在屏幕上輸出以下內(nèi)容 1 12 123 1234 12345 123456 1234567 #include int main() for(int a = 1; a = 9; a+) for(int b = 1; b = a; b+) printf(%d,b); printf(n); return 0; 13.求2+4+6+98+100的和,用多種 for表達(dá)式來(lái)完成。 #include

17、int main() int sum = 0; for(int a = 2; a = 100; a+=2) sum += a; printf(%d,sum); return 0; 14 輸入一行字符,統(tǒng)計(jì)它有多少個(gè)字母 #include int main() int count = 0; char s255; scanf(%s,s); for(int i = 0; i = a printf(%d,count); return 0; 第4章分支程序設(shè)計(jì) 0 時(shí)結(jié)束。 1輸入若干整數(shù)給 x ,使用 if 語(yǔ)句輸出 x 的絕對(duì)值,當(dāng)輸入 #include int main() int x; scan

18、f(%d, for (;x;scanf(%d, else printf(%dn,-x); return 0; 0 時(shí)結(jié)束。 2輸入一批數(shù),輸出比相鄰數(shù)大的數(shù),當(dāng)輸入 #include int main() int a; int b = 0; scanf(%d, b = a; for (;a;scanf(%d, b = a; return 0; 3將輸入字符的大寫(xiě)字符轉(zhuǎn)換成小寫(xiě)字符輸出,小寫(xiě)字符原樣輸出。 #include int main() char c; while (c = getchar() != n) if (c = A putchar(c); return 0; 4輸入一批字符,按

19、回車(chē)時(shí)結(jié)束,統(tǒng)計(jì)小寫(xiě)字符、大寫(xiě)字符、數(shù)字字符、或其它字符的個(gè) 數(shù)。 #include int main() char c; int dx = 0,xx = 0,sz = 0,qt = 0; while (c = getchar() != n) if (c = A else qt+; printf( 包 含 大 寫(xiě) 字 母 %d 個(gè) , 小 寫(xiě) 字 母 %d 個(gè) , 數(shù) 字 %d 個(gè) , 其 他 字 符 %d 個(gè).n,dx,xx,sz,qt); return 0; 5編寫(xiě)程序,計(jì)算分段函數(shù): x 5 x 1 y 2x 1 x 10 3 x 10 x 10 #in clude int mai n(

20、) double x,y; scan f(%f, if (x = 1) y = x + 5; else if (x 10) y = 2 * x; else y = 3/(x-10); prin tf(%f,y); return 0; 6 根據(jù)輸入的百分制按五分制的成績(jī)輸出。百分制與五分制之間的關(guān)系見(jiàn)下表。 百分制 五分制 90 100 5 80 89 4 70 79 3 60 69 2 60 1 #in clude int mai n() int a; scan f(%d, if (a 90) prin tf(5n); else if (a 80) prin tf(4n); else if (

21、a 70) prin tf(3n); else if (a 60) prin tf(2n); else printf(1n); return 0; 7、 用switch完成:讀入一個(gè)實(shí)數(shù)x,再輸入一整數(shù),若輸入是1,則計(jì)算sin(x),若輸入 2,則計(jì)算 cos(x) ,若輸入 3,則計(jì)算 tan(x) ,若輸入其他值,則顯示錯(cuò)誤信息。 #include #include int main() int a,b; scanf(%d,%d, switch(a) case 1:printf(y=sin(x)=%f,sin(b);break; case 2:printf(y=cos(x)=%f,cos

22、(b);break; case 3 :printf(y=tan(x)=%f,tan(b);break; default:printf(error);break; return 0; 8、用 switch 完成:輸入星期 1 到星期 5,輸出它們對(duì)應(yīng)的顏色 星期 1 : blue 星期 2: red 星期 3: white 星期 4: yellow 星期 5: green #in clude int mai n() int a; scan f(%d, switch(a) case 1:printf(星期一:bluen);break; case 2:printf(星期二:redn);break;

23、case 3:printf(星期三:whiten);break; case 4:printf(星期四:yellown);break; case 5:printf(”星期五:greenn);break; default:pri ntf(err orn );break; return 0; 9、用switch完成:從鍵盤(pán)輸入A B、C D四個(gè)等級(jí)中的一個(gè),轉(zhuǎn)化輸出 等級(jí) 輸出 A 優(yōu)秀 B 良好 C 中等 D 及格 E 不及格 #in clude int mai n() char a; scan f(%s, switch(a) 優(yōu)秀 n”);break; 良好 n”);break; 中等 n”);

24、break; 及格 n”);break; 不及格 n);break; case A:pri ntf( case B:pri ntf( case C:pri ntf( case D:pri ntf( case E:pri ntf( default:pri ntf(errorn);break; return 0; 第5章數(shù)組及其應(yīng)用 ,找出最大和最小 1.從鍵盤(pán)輸入 12 個(gè)數(shù),分別為:900,2,3,58,34,76,87,72,90,20,78,30 數(shù)。 #in clude int mai n() int a12; for (int i = 0; i 12; i+) scanf(%d, in

25、t max=a0,min=a0; for (int j = 1; j max) max = aj; if (aj min) min = aj; printf(最大值為 d,最小值為 dn,max,min); return 0; 中,找出偶數(shù)。 2 .采用遍歷查找,在數(shù)組aSIZE=2, 3,20,58, 72, 76,78,87,90,900 #include #define SIZE 100 int main() int aSIZE = 2,3,20,58,72,76,78,87,90,900; for (int i = 0; i 10; i+) if (ai % 2 = 0) printf

26、(%dt,ai); return 0; 3 .采用折半查找,在數(shù)組aSIZE=2, 3,20,58, 72, 76,78,87,90,900中,找到 87,然 后進(jìn)行刪除。 #include #define SIZE 11 #define FOUND 87 int main() int aSIZE = 2, 3,20,58, 72, 76,78,87,90,900; int low = 0,high = SIZE-1,mid; mid = (low + high) / 2; while (low high) if (amid FOUND) high = mid; mid = (high + l

27、ow) / 2; else break; for (int j = mid; j 9; j+) aj=aj+1; return 0; 第6章函數(shù)及其應(yīng)用 練習(xí)與實(shí)踐 一、閱讀程序,寫(xiě)出程序運(yùn)行的結(jié)果。 1寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include float aver(int a) int k,sum=0; float ave; for(k=0;k10;k+) sum+=*(a+k); ave=(float)sum/10; return (ave); int main( ) float ave; static b=78,89,98,76,78,45,88,81,92,85; ave=aver(

28、b); printf(ave=%fn,ave); 提示:數(shù)組b的首地址傳遞給形參a, *(a+k)就是數(shù)組元素bk. 2閱讀程序,寫(xiě)出程序的執(zhí)行結(jié)果。 #include void abc( char str ) int a, b ; for(a = b = 0 ; stra!=0; a+ ) if(st ra!= c ) strb+ = stra; strb=0; int main( ) char str =abcdef ; abc(str); printf(str =%s , str ); return 0; 提示: 數(shù)組 str 的首地址傳遞給形參 str ,stra 就是實(shí)參中的數(shù)組元素

29、 stra ,當(dāng)數(shù)組 元素不為 c 時(shí)進(jìn)行復(fù)制。 str =abdef 3寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include int sort(int b,int n,int x) int k; for(k=n-1;k=0;k-) if(bkx) bk+1=bk; else break; bk+1=x; return 0; int main( ) int i,j; static int a5=8,5,4,1,6; int b8; b0=a0; for(i=1;i5;i+) sort(b,i,ai); for(j=0;j=i;j+) printf(%d ,bi); printf(n); return 0

30、; 提示:循環(huán)體中 if(bkx) bk+1=bk; else break; 如果bkx成立,執(zhí)行語(yǔ)句bk+1=bk;表示數(shù)組元素b向后移,不滿足時(shí)插入 x,即 從大到小排序。 5 5 4 4 4 1 1 1 1 1 1 1 1 1 4寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include int fun(int x) int p; if(x=0|x=1) return 3; else p=x-fun(x-2); return p; int main( ) printf(n%d,fun(9); return 0; 提示: fun(9)=9-fun(7),.,fun(1)=3 7 5寫(xiě)出以下程序的執(zhí)行結(jié)果,

31、并說(shuō)明其作用是什么 #include int f(int n) if(n=10) f(n/10); printf(%d,n%8); return 0; int main( ) f(1234); printf(n); return 0; 提示:在函數(shù)f中,程序運(yùn)行借助了堆棧,依次入棧的數(shù)據(jù)分別為1234、123、12,最后n=1, n對(duì)8取余輸出,然后數(shù)據(jù)依次出棧對(duì) 8取余輸出。 1432 二、程序設(shè)計(jì) 1編寫(xiě)一個(gè)函數(shù),計(jì)算 x 的 n 次的平方。 提示: for(y=1,i=0;in;i+) y=y*x; #include int main( ) int x,n,y,i; scan f(%dA

32、%d, for(y=1,i=0;in;i+) y = y * x; printf(%d的次方是:dn,x,n,y); return 0; 2編寫(xiě)一個(gè)函數(shù),計(jì)算對(duì)角線上元素之和。 提示: for(s=0,i=0;in;i+) for(j=0;jn;j+) if(i=j) s=s+aij; #include int main( ) int a1010; int i = 0,j=0; int sum = 0; for (i = 0; i 10; i+) for(j = 0;j 10; j+) aij = (i+1)*(j+1); printf(%dt,aij); printf(n); for (i=

33、0;i10;i+) for (j=0;j10;j+) if (i = j) sum += aij; printf( 對(duì)角線和為 %dn,sum); return 0; 3編寫(xiě)一個(gè)函數(shù) int invert( char str ),將一個(gè)字符串的內(nèi)容顛倒過(guò)來(lái)。 提示:先求字符串 str 的長(zhǎng)度 n, for(i=0;in/2;i+)ai與 an-1-i 交換 #include int i; int invert(char str) char ch; for (i = 0;(ch=stri) != 0;i+); for (int j = 0; j i/2; j+) ch = strj; strj

34、= stri-1-j; stri-j-1 = ch; puts(str); return 0; int main( ) char str255; gets(str); invert(str); return 0; 4編寫(xiě)函數(shù),刪除字符串中,從指定位置m開(kāi)始的n個(gè)字符。刪除成功,函數(shù)返回被刪除 字符串;否則返回空的值。 提示: for(k=m , i=0 ; stri ; i+) strm+i=strm+n+i; strm+i= 0 ; #include int index,num; gets(str); scanf(%d,%d, int i=0,j = 0; char ch; for (;(c

35、h=stri)!=0;i+); for (j = 0;j i) str0 = 0; puts(str); return 0; 5編寫(xiě)一個(gè)程序,從鍵盤(pán)輸入的字符串,刪去非數(shù)字字符,轉(zhuǎn)換成整型數(shù)輸出。 提示: for(s=0 , i=0 , j=0 ; stri;i+) if(stri=0 #include int main( ) char str255; gets(str); int i=0,j = 0; int s = 0; char ch; for (;(ch=stri)!=0;i+) if (ch = 0 printf(%dn,s); return 0; 6用遞歸的方法編寫(xiě)一個(gè)函數(shù) sum

36、( int n ),求 1 至 n 的累加和。 提示: f(n)=n+f(n-1) #include int sum(int n) int a = 0; if (n = 1) a = 1; else a = n + sum(n - 1); return a; int main( ) int n; scanf(%d, int s = sum(n); printf(%dn,s); return 0; 第7章變量存儲(chǔ)類(lèi)型與多文件系統(tǒng) 1寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include int x; void fun( ) printf(%d ,x+); void main( ) int x=1; exte

37、rn int x; printf(%d,+x); fun( ); 提示:在函數(shù) fun 中及語(yǔ)句塊 extern int x; printf(%d,+x); 中使用的X是外部變量,在語(yǔ)句塊: if(x=1) int X=2; printf(%d,X+); 中使用的是剛剛定義x=2的變量。 1,1 2寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include int kk( ) int x = 4 ; static int y ; y = 5 ; x*= 2 ; y*= 2; return(x+y); void main() int j , s = 0 ; for ( j = 0 ; j 2 ; j+ ) s

38、= kk ( ); printf( s = % d n ,s ); 提示:雖然兩次調(diào)用函數(shù) kk() ,但變量定義語(yǔ)句 static int y ; 只執(zhí)行一次,而變量賦值語(yǔ)句每次 都要執(zhí)行。 S = 18 3寫(xiě)出以下程序的執(zhí)行結(jié)果。 #include int t() int x = 0 ; static int y = 4 ; y += +x ; return x+y; void main() printf(”d n,( t( ), t(); 提示:語(yǔ)句printf(%d n,(t(), t();中(t( ),t()屬于“,”號(hào)表達(dá)式,即兩次調(diào)用函數(shù) t(), 在函數(shù)t()中,y為靜態(tài)內(nèi)部變

39、量,因而語(yǔ)句static int y = 4 ;只執(zhí)行一次。 7 第8章文件 1下述程序從終端讀入文本(用$作為文本結(jié)束標(biāo)志)復(fù)制到一個(gè)名為的新文件中,請(qǐng)補(bǔ)全 程序。 #include int main() FILE *fp; char cx; if(fp=fopen( ,a+)=NULL) return 0; while(cx=getchar( )!=$) fputc(cx,fp); fclose(fp) ; return 1; 提示:第1個(gè)空格是打開(kāi)文件讀,第2個(gè)空格是關(guān)閉文件 2下面的程序用來(lái)統(tǒng)計(jì)文件中字符的個(gè)數(shù),請(qǐng)補(bǔ)全程序。 #include int main() FILE *fp;

40、long num=0; if(fp=fope n(,r)=NULL) printf(Cant open file!n); exit(O); while(!feof(fp) ) fgetc(fp); num+; printf(num=%dn,num); fclose(fp); return 1; 提示:第1個(gè)空格表示文件沒(méi)有結(jié)束,循環(huán)將持續(xù)。 3 .以下程序由終端鍵盤(pán)輸入一個(gè)文件名,然后把從終端鍵盤(pán)輸入的字符,依次存放到該文 件中,用#作為結(jié)束輸入的標(biāo)志,請(qǐng)補(bǔ)全程序。 #include void main() FILE *fp; char ch,fname10; printf(Input the

41、 name of filen); gets(fname); if(fp= fopen( ,a+ )=NULL) printf(Cannot openn); exit(O); printf(Enter datan); while(ch=getchar( )!=#) fputc( ch ,fp); fclose(fp); 提示:文件名是從鍵盤(pán)讀入的,因而文件名是用變量表示的,文件是打開(kāi)寫(xiě)。 4 下述程序從一個(gè)二進(jìn)制文件中讀入結(jié)構(gòu)體數(shù)據(jù),并把讀出的數(shù)據(jù)顯示在屏幕上。請(qǐng)補(bǔ)全 程序。 #include struct rec int a; float b; void recout(FILE *fp) st

42、ruct rec r; do fread( if( feof(fp) ) break ; printf(%d,%f,; while(1); void main() FILE *fp; fp=fopen(,rb); recout(fp); fclose(fp); 提示:在fread語(yǔ)句中, 中為存放所讀岀結(jié)構(gòu)數(shù)據(jù)的內(nèi)存地址,當(dāng)然此數(shù)據(jù)是賦給變量r, (2)中是 讀出結(jié)構(gòu)體變量數(shù)據(jù)的個(gè)數(shù),(3)是與循環(huán)中止有關(guān)的判斷,(4)為中止循環(huán)。 中,字符串的結(jié) 5 .從鍵盤(pán)輸入一個(gè)字符串,并逐個(gè)將字符串的每個(gè)字符傳送到磁盤(pán)文件 束標(biāo)記為 # 。 #include #include void main()

43、FILE *fp; char ch; fp=fopen(,ab+); if (fp = NULL) printf(Open file failed!); exit(0); while (ch = getchar() != #) fputc(ch,fp); fclose(fp); 6 有一文本文件,請(qǐng)編寫(xiě)一個(gè)程序?qū)⑽募械挠⑽淖帜讣皵?shù)字字符顯示在屏幕上。 提示: #include #include void main() FILE *fp; char ch; fp=fopen(,rb); if (fp = NULL) printf(Open file failed!); exit(0); whi

44、le (!feof(fp) ch = fgetc(fp); if (ch = A fclose(fp); 7把文本文件中的數(shù)字字符復(fù)制到文本文件中。 #include #include void main() FILE *fin,*fout; char ch; fin=fopen(,rb); fout = fopen(,ab+); if (fin = NULL | fout = NULL) printf(Open file failed!); exit(0); while (!feof(fin) ch = fgetc(fin); if (ch = 0 fclose(fin); fclose(f

45、out); 0 的值顯示在屏幕上。 8. x從0到360度的sin(x)值寫(xiě)入到文件中,并將大于 #include #include #include #define PI void main() FILE *fp; double y; fp=fopen(,ab+); if (fp = NULL) printf(Open file failed!); exit(0); for (int i = 0; i 0) fprintf(stdout,%lfn,y); fclose(fp); 第9章指針與數(shù)組 1下列程序輸出的結(jié)果是(D )。 #include void f(int * x ) *x =

46、10 ; void main() int a,*p= f(p); printf(%d,+(*p); (A)輸出的值是隨機(jī)值(B)因輸出語(yǔ)句錯(cuò)誤而不能執(zhí)行者 (C)輸出值為10( D)輸出值為11 提示:指針x指與指針p指向同一個(gè)變量,10賦給指針x所指的地址上的內(nèi)容,+(*p) 是指指針 p 所指地址上內(nèi)容 +。 2下列程序片段中不正確的字符串賦值或初始化方式是(C )。 ( A) char *str; str=string; ( B) char str7=s,t,r,i,n,g,0; ( C) char str10; str=string; ( D) char str =string; 提示

47、:字符串賦值只能在初始化時(shí)進(jìn)行。 3. 如有定義:int x=2 , *p=以下哪些表達(dá)式的含義是不正確的。D ( A) *(其中:0v= i5 ),不能表示數(shù)組元素的是(B )。 ( A) * ( a+i )( B) a5( C) a0( D) ai 提示:數(shù)組元素的下標(biāo)從 0開(kāi)始。 5. 若有以下定義和語(yǔ)句,int a10 ,i ;且0=i10 ,則對(duì)數(shù)組元素地址的正確表示是(D )。 (A) a+(B)(a+1)(C) *(a+1)(D) *p2,j; for (j = 0 ; j 4 ; j+) pj=aj; ( A) p00 ( C) *(p1+2) 提示:p為指針數(shù)組,此題中 ai

48、j、pij 元素, float *p2,y=; p1= p2= printf(%d, %fn,+(*p1), (*p2)+ ); 提示: +都作用在內(nèi)容上,前一項(xiàng)是先 +再輸出,后一項(xiàng)是先輸出再 + 11, 2.下列程序輸出結(jié)果是()。 #include void main() int a =1 ,2,3,4,5,6 ,*p=a; printf(%d,%dn,*p,*(p+3); 提示:語(yǔ)句*(p+3)+=2;指p+3的地址上的內(nèi)容加2,然后輸出p及p+3的地址上內(nèi)容。 1,4 3下列程序輸出結(jié)果是()。 #include void main() int a =1,2,3,4,5,6; int

49、 x,y,*p; p= x=*(p+2); y=*(p+4); printf(*p=%d,x=%d,y= %dn,*p,x,y); 提示:p+2是指 int *p; p=a; printf(*%d,n,*p); printf(*%d,n,*(+p); printf(*%d,n,*+p); printf(*%d,n,*(p-); p+=3; printf(*%d,%d n,*p,*(a+3); 提示:*(+p)、*+p都表示指針p向大地址方向移動(dòng),然后再取內(nèi)容,要注意的是后一語(yǔ)句的輸出受 前一語(yǔ)句的影響。 *10 *20 *30 *30; *50,40 5下列程序輸出的結(jié)果是()。 #inclu

50、de void del( char *str ) int a, b ; for(a = b = 0 ; stra!=0; a+ ) if(*(str+a) !=c ) *(str+b+)=*(str+a); strb=0; void main( ) char str =abcdef ; del(str); printf(str =%s , str ); 提示:在函數(shù)del中str+a地址上的內(nèi)容不為字符c時(shí)不復(fù)制,實(shí)際上是指刪除指針 str所指的字符 串中的字符 c。 str=abdef 6以下程序輸出的結(jié)果是()。 #include #include void fun( char *w ,i

51、nt m) char s, *p1 , *p2; p1 = w; p2= w+m-1; while(p1p2) s = *p1+; *p1= *p2- ; *p2 = s ; void main( ) char a = ABCDEFG; fun(a ,strlen(a); puts(a); 提示:當(dāng)執(zhí)行s=*p1+;語(yǔ)句時(shí),指針pl所指的地址上內(nèi)容賦給s時(shí),指針pl后移,語(yǔ)句*卩仁*p2-;指 針p2所指的內(nèi)容賦給pl所指的地址上后,p2前移后再執(zhí)行*p2 = s語(yǔ)句。 AGAAGAG 7以下程序輸出的結(jié)果是 ()。 #include void main( ) int a33 = 2,0,8,

52、4,6; int i,*p = for(i = 0;i3;i+) if (i = 0) aii+1=*p+1; else +p; printf(%d,*p); printf(n); for(j=i;j n ;j+) 當(dāng)i=2時(shí),+p,指針p指向a02 238 low=0; high=n-1; while low high mid=(low+high)/2; if(keyamid) low = mid ; else return mid ; return(-1); 提示:用low、high、mid分別表示數(shù)組a低地址端、高地址端、中間元素的下標(biāo),只要低地址端下標(biāo) 小于高地址端下標(biāo)循環(huán)一直持續(xù),如果中間元素大于所查找的數(shù),表示所查找的數(shù)在以low、high為邊界的 左側(cè),如果中間元素小于所查找的數(shù),表示所查找的數(shù)在以low、high為邊界的右側(cè),如都不是表示已找到。 9下述函數(shù)從一個(gè)數(shù)組v中刪除值為key的元素。數(shù)組的元素個(gè)數(shù)由指針 n指明,請(qǐng)?zhí)羁铡?void delnode(double v,int *n) int i,j,k=-1; for(i= *n

溫馨提示

  • 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)論