C語言程序設(shè)計(jì)試題(卷)集與答案解析_第1頁
C語言程序設(shè)計(jì)試題(卷)集與答案解析_第2頁
C語言程序設(shè)計(jì)試題(卷)集與答案解析_第3頁
C語言程序設(shè)計(jì)試題(卷)集與答案解析_第4頁
C語言程序設(shè)計(jì)試題(卷)集與答案解析_第5頁
已閱讀5頁,還剩172頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第一章 基礎(chǔ)知識一.填空1. 每個(gè)C程序都必須有且僅有一個(gè)_ 函數(shù)。 2. C語言程序開發(fā)到執(zhí)行通常要經(jīng)過6個(gè)階段即編輯、預(yù)處理、_、 鏈接 、加載和執(zhí)行。3. 軟件是程序,以及_、使用和維護(hù)所需要的所有文檔。4. 國標(biāo)中規(guī)定:“計(jì)算機(jī)程序是按照具體要求產(chǎn)生的適合于計(jì)算機(jī)處理的_”。5. 程序設(shè)計(jì)語言按照書寫形式,以及思維方式的不同一般分為低級語言和_兩大類。6. C語言是由_組成的。7. C語言的函數(shù)可分為主函數(shù)main、標(biāo)準(zhǔn)庫函數(shù)和_。8. 一個(gè)函數(shù)是由兩部分組成的,即:_和 函數(shù)體。9. 編譯是將C語言所編寫的源程序_成機(jī)器代碼,也稱為建立目標(biāo)代碼程序的過程。10. 程序是由某種程序設(shè)計(jì)語言編制出來,體現(xiàn)了編程者的控制思想和對計(jì)算機(jī)執(zhí)行操作的要求。不同的任務(wù)功能,就會(huì)需求不同的軟件程序,如:控制計(jì)算機(jī)本身軟硬件協(xié)調(diào)工作,并使其設(shè)備充分發(fā)揮效力,方便用戶使用的系統(tǒng)軟件程序,稱為操作系統(tǒng);而為辦公自動(dòng)化(OA)、管理信息系統(tǒng)(MIS)、人工智能、電子商務(wù)、網(wǎng)絡(luò)互聯(lián)等等應(yīng)用而開發(fā)的軟件程序,統(tǒng)稱為_。 11. 機(jī)器語言是以_形式表示的機(jī)器基本指令的集合,是計(jì)算機(jī)系統(tǒng)唯一不需要翻譯可以直接識別和執(zhí)行的程序設(shè)計(jì)語言。12. 與機(jī)器語言相比,使用匯編語言來編寫程序可以用_來表示指令的操作碼和操作對象,也可以用標(biāo)號和符號來代替地址、常量和變量。13. 在編譯程序之前,凡以_開頭的代碼行都先由預(yù)處理程序預(yù)處理。 14. C程序的執(zhí)行均是由執(zhí)行_開始。15. 函數(shù)體即為包含在 內(nèi)的部分。它分為_和為完成功能任務(wù)由若干個(gè)C語句組成的執(zhí)行部分。 16. C語言程序中一條簡單語句是以_字符作為結(jié)束符的。 17. C語言是結(jié)構(gòu)化、_的程序設(shè)計(jì)語言。 18. 由于計(jì)算機(jī)硬件不能直接識別高級語言中的語句,因此,必須經(jīng)過“_程序”,將用高級語言編寫的程序翻譯成計(jì)算機(jī)硬件所能識別的機(jī)器語言程序方可執(zhí)行。 19. 用高級語言編寫的程序需翻譯成計(jì)算機(jī)硬件所能識別的機(jī)器語言程序方可執(zhí)行。所以說,用高級語言進(jìn)行程序設(shè)計(jì),其編程效率高,方便易用,但_沒有低級語言高。 20. 第一個(gè)系統(tǒng)體現(xiàn)結(jié)構(gòu)化程序設(shè)計(jì)思想的教學(xué)工具語言是_語言。 解答:1. main()2. 編譯3. 開發(fā)4. 指令序列5. 高級語言6. 函數(shù)7. 自定義函數(shù)8. 函數(shù)首部9. 翻譯10. 應(yīng)用軟件11. 二進(jìn)制代碼12. 助記符13. #14. main函數(shù)15. 聲明部分16. ;(或分號)17. 模塊化18. 翻譯19. 執(zhí)行速度20. PASCAL二.閱讀程序?qū)懡Y(jié)果解答:三.補(bǔ)充程序解答:四.改錯(cuò)題解答:五.編程一解答:六.編程二解答:第二章 常量、變量和表達(dá)式一.填空1. 以16位計(jì)算機(jī)為例,若定義long int a; 則變量a占_個(gè)字節(jié)的內(nèi)存空間。2. 以16位計(jì)算機(jī)為例,若定義double a; 則變量a占_ 個(gè)字節(jié)的內(nèi)存空間。3. 以16位計(jì)算機(jī)為例,若定義long double; 則變量a占 _ 個(gè)字節(jié)的內(nèi)存空間。4. 在_ 位機(jī),int型占4個(gè)字節(jié)。5. C語言的數(shù)據(jù)類型有:基本數(shù)據(jù)類型、構(gòu)造數(shù)據(jù)類型、枚舉類型、_ 、空類型。 6. 在C語言中,基本數(shù)據(jù)類型有:_ 。 7. 整型常量046轉(zhuǎn)換為十進(jìn)制數(shù)等于_ 。 8. 整型常量054轉(zhuǎn)換為十進(jìn)制數(shù)等于_ 。9. 整型常量0x125轉(zhuǎn)換為十進(jìn)制數(shù)等于 _。 10. 整型常量0x7C轉(zhuǎn)換為十進(jìn)制數(shù)等于 _。 11. 整型常量39轉(zhuǎn)換為八進(jìn)制等于 _。12. 實(shí)數(shù)473.468寫成規(guī)范化指數(shù)形式,則應(yīng)為 _。 13. 實(shí)數(shù)0.0453寫成規(guī)范化指數(shù)形式,則應(yīng)為 _。 14. 將0x123轉(zhuǎn)換為二進(jìn)制等于 _。 15. 字符A表示成十六進(jìn)制等于 _。 16. 在C語言中,稱代表常量的標(biāo)識符為 _。 17. 語言中是用編譯預(yù)處理命令_ 來定義符號常量18. 在C語言中,以反斜杠符()開頭,后跟字符的字符序列,稱之為 _ ,主要用來表示控制及不可見的字符或者一些圖形符號19. 語句printf(106)執(zhí)行的結(jié)果輸出是 _。 20. 語句printf(“b”)執(zhí)行的結(jié)果輸出是_。 21. 語句printf(“b”)執(zhí)行的結(jié)果輸出是 _。 22. 語句printf(102)執(zhí)行的結(jié)果輸出是 _。 23. 若有char ch1; ch1=a+4; 則語句printf(%c,x)的輸出結(jié)果為 _。 24. 字符串常量“Hello, everyone!”占據(jù)的內(nèi)存空間為_ 個(gè)字節(jié)25. 字符串常量“Hello,Bob!”占據(jù)的內(nèi)存空間為 _ 個(gè)字節(jié)26. 十進(jìn)制整型常量由09個(gè)數(shù)據(jù)組成,但不能以_ 開始,沒有小數(shù)部分27. 十六進(jìn)制常量由09和_ 組成28. unsigned long類型常量通常以_ 為后綴29. 實(shí)型常量通常有小數(shù)形式和_ 兩種表達(dá)方式30. 語言中是用編譯預(yù)處理命令_ 來包含其他源文件31. 為了表示字符串的結(jié)束,系統(tǒng)自動(dòng)在字符串的最后加一個(gè)_ ,但不被輸出32. C語言中,其值可被改變的量稱為變量,它具有三個(gè)基本要素:變量名、_ 和變量值33. C語言規(guī)定,變量的標(biāo)識符只能由字母、數(shù)字和下劃線組成,且不能以_ 開頭。34. 在16位機(jī)中,sizeof(“hellon”)等于 _。 35. 在16位機(jī)中,printf(“hello”)等于 _。 36. 字符變量在內(nèi)存中占用_ 個(gè)字節(jié)的存儲空間。37. 若有定義int x=27, y=6; 則表達(dá)式 x/y的值為 _。38. 若有定義int x=47, y=8; 則表達(dá)式 x%y的值為 _。39. 若有定義char ch1=A,ch2,ch3; 執(zhí)行ch2=ch1+; ch3=+ch1; printf(ch1=%c, ch2=%c,ch1,ch2); 則輸出為 _。 40. 若有定義char ch1=A,ch2,ch3; 執(zhí)行ch2=ch1+; ch3=+ch1; printf(ch2=%c, ch3=%c,ch2,ch3); 則輸出為 _。 41. 若有定義int i=5, j, k; 執(zhí)行j=i-; k=-i; printf(i=%d, j=%dn, i, j); 則輸出為 _。 42. 表達(dá)式 (int)(13.7+25.6)/4%5 的值是 _。 43. 表達(dá)式 3.6-5/2+1.2+5%3 的值是_。 44. 表達(dá)式54%10/2+4.0*(8/5) 的值是 _。 45. 若定義int x; double b=5.45; 執(zhí)行x=b后,則x的值為_。 46. 若定義int y; char c=A; 執(zhí)行y=c后,則y的值為 _。 47. 若定義 int a=8; float b=2.5; 則a/(int)(b)的值為 _。 48. 若a=5,則執(zhí)行a*=7-3語句后,a的值是 _。 49. 若int a=1,b=0,c=4,d=2; 則表達(dá)式(ab ? a:b)&(c-d)的值為_。 50. 已知a = 0 ,表達(dá)式 a = 1?b = 1:b = 0; 執(zhí)行后,b的值是 _。 51. 若定義int m=7,n=12; 則表達(dá)式n%=m-m%5的值是 _。 52. 若定義int a=8; float b=4.5;執(zhí)行a*=a/=a-b后,a的值為 _。 53. int a=2; !a+的值為 _。 54. int a=0; !a+&+a的值為 _。 55. int a=7;float b=4.5;則printf(“%d”,a*=a/=a-b)的值為 _。 56. int k=7;float a=2.5,b=4.7;則表達(dá)式a+k%3*(int)(a+b)%2/4的值為 _。 57. #define Max(a,b) (a)-(b)&0x80000000)?(a):(b),int a=2,b=6;printf(“%dn”,Max(a,b)的值為_。 58. 在32位機(jī)中,int a=4,b=7; printf(“%0x”,a-b)的值為:_。 59. int x,y,z; x=y=2;z=3;y=x+-1;printf(“%d,%d”,x,y)的值為: _。 60. int i=2,j; printf(“%d”,j=i1)的值為:_ 解答:1. 02. 43. 104. 325. 指針類型6. int、float、double、char7. 388. 449. 29310. 12411. 04712. 4.734680e+00213. 4.530000e-00214. 10010001115. x41/41H16. 符號常量17. define18. 轉(zhuǎn)義字符常量19. F20. b21. b22. B23. e24. 1625. 1126. 027. AF28. U29. 指數(shù)形式30. #include31. “0”32. 變量類型33. 數(shù)字34. 735. “hello”36. 137. 438. 739. ch1=C, ch2=A40. ch2=A, ch3=C41. i=3, j=542. 443. 4.80000044. 7.00000045. 546. 6547. 448. 2049. 150. 151. 252. 453. 054. 055. 456. 2.50000057. 258. fffffffd59. 3,160. 0二.閱讀程序?qū)懡Y(jié)果解答:三.補(bǔ)充程序解答:四.改錯(cuò)題解答:五.編程一解答:六.編程二解答:第三章 順序結(jié)構(gòu)一.填空1. C語言的語句可分為5類,它們是:控制語句、_、函數(shù)語句、符合語句和空語句。2. 常用于字符輸入的函數(shù)為:_ 。3. 常用于字符輸出的函數(shù)為:_。4. 常用于字符串輸入的函數(shù)為:_。5. 常用于字符串輸出的函數(shù)為:_。6. 格式輸入函數(shù)的一般形式為:_ 。7. 格式輸出函數(shù)的一般形式為:_ 。8. printf和scanf是標(biāo)準(zhǔn)的庫函數(shù),它們的函數(shù)原型在頭文件_中。9. 有char ch,則從鍵盤給ch賦值的格式輸入語句為:_。10. 如果要輸出字符串常量“HelloWord!”,則格式輸出語句為:_。11. 設(shè)有定義:long x=-123456L;,請寫出能夠正確輸出變量x值的語句_ 。12. 若有int a,b; ,想通過scanf(%d%d,&a,&b);輸入語句給a賦于1,給b賦于2,則從鍵盤輸入數(shù)據(jù)的形式是_。13. 若有int i,j; scanf(i=%d,j=%d;&i,&j); ,要求給i賦10,給j賦20,則應(yīng)該從鍵盤輸入_。14. 已知i、j、k為int型變量,若從鍵盤輸入:1,2,3,使i的值為1、j的值為2、k的值為3,請寫出正確的輸入語句_ 。15. 有int m,n,p; scanf(m=%dn=%dp=%d,&m,&n,&p); printf(%d%d%dn,m,n,p); 若想從鍵盤上輸入數(shù)據(jù),使變量m中的值為123,n中的值為456,p中的值為789,則正確的輸入是_。16. 有 int a; float b, c; scanf(%2d%3f%4f,&a,&b,&c); printf(na=%d, b=%f, c=%fn, a, b, c);,若運(yùn)行時(shí)從鍵盤上輸入9876543210,則程序的輸出結(jié)果是_。17. 有 int m=0256,n=256; 則 printf(%o %on,m,n); 的輸出結(jié)果是_ 。18. 有int x=102,y=012; , 則printf(“%2d,%2dn”,x,y); 的輸出結(jié)果是_ 。19. 有定義和語句:int a; char c=10; float f=100.0; double x; a=f/=c*=(x=6.5); , 則printf(%d %d %3.1f %3.1fn,a,c,f,x); 的輸出結(jié)果是_ 。20. 若有定義和語句:int m=0xabc,n=0xabc; m-=n; 則printf(%on,m);的輸出結(jié)果是_。21. 若有int m=32,n=032; ,則printf(%d,%xn,m,n); 執(zhí)行后輸出結(jié)果是_ 。22. 若有 int a=1234; ,則 printf(%2dn,a); 的輸出結(jié)果是_ 。23. 若變量已正確說明為float類型,要通過語句scanf(“%f %f %f ”,&a,&b,&c);給a賦于10.0,b賦予22.0,c賦予33.0,不正確的輸入形式是_ 。A) 10 2233 B) 10.0,22.0,33.0C) 10.0 22.0 33.0 D) 10 22 3324. 若有 int x=3,y=1; 則printf(%d %dn,x+,y+2); 的輸出結(jié)果是_ 。25. 若有定義和語句:double d; float f; long l; int i; i=f=l=d=20/3; 則 printf(%d %ld %f %f n, i,l,f,d);的輸出結(jié)果是(小數(shù)點(diǎn)后只寫一位) _。26. 以下說法中正確的是 _。A) #define和printf都是C語句B) #define是C語句,而printf不是C) printf是C語句,但#define不是D) #define和printf都不是C語句27. 若有 int k=17; ,則 printf(%d,%o,%x n,k,k,k);的輸出結(jié)果是_ 。28. 以下敘述中正確的是_ 。A) 輸入項(xiàng)可以是一個(gè)實(shí)型常量,如:scanf(%f,3.5);B) 只有格式控制,沒有輸入項(xiàng),也能正確輸入數(shù)據(jù)到內(nèi)存,例如:scakf(a=%d,b=%d);C) 當(dāng)輸入數(shù)據(jù)時(shí),必須指明變量地址,例如:scanf(%f,&f);29. 若有定義和語句:int u=010,v=0x10,w=10;則printf(%d,%d,%dn,u,v,w); 輸出結(jié)果是_。30. 若有int a=1,b=4,c=2; float x=10.5, y=4.0, z; z=(a+b)/c+sqrt(double)y)*1.2/c+x; ,則printf(%fn,z); 的輸出結(jié)果是_ 。31. 若有int a=2,c=5; ,則printf(a=%d,b=%dn,a,c);的輸出結(jié)果是_ 。32. 有char c; int n=100; float f=10; double x; x=f*=n/=(c=50); 則printf(%d %fn,n,x); 的輸出結(jié)果是_。33. 有int i=0,j=0,k=0; scanf(%d%*d%d,&i,&j,&k); printf(%d%d%dn,i,j,k); 若從鍵盤輸入:10 20 30。輸出結(jié)果是_。34. 若有int a,b,c; a=25; b=025; c=0x25;,則printf(%d %d %dn,a,b,c); 的輸出結(jié)果是_。35. 有以下語句段int n1=10,n2=20; printf(“_”,n1,n2); 要求按以下格式輸出n1和n2的值,每個(gè)輸出行從第一列開始,請?zhí)羁?。n1=10 n2=2036. 若有語句int i=-19,j=i%4; 則printf(%dn,j);的輸出結(jié)果是_。37. 有int a=0; a+=(a=8); 則printf(%dn,a);的輸出結(jié)果是_。38. 有int a=1, b=2; a=a+b; b=a-b; a=a-b;則printf(“%d,%dn”, a, b );的輸出結(jié)果是_。39. 有unsigned short a=65536; int b;,則printf(“%dn”,b=a);的輸出結(jié)果是_。40. 語句printf(10289n);的數(shù)據(jù)結(jié)果為:_ 。解答:1. 表達(dá)式語句2. getchar( )3. putchar( )4. gets( )5. puts( )6. scanf(“格式控制字符串”,地址表列);7. printf(“格式控制字符串”,輸出表列);8. stdio.h9. scanf (“%c”,&ch);10. printf (“%s”,HelloWord!);或者:printf (“HelloWord!”);11. printf(“x=%1dn”,x);12. 1 2 或者 1 213. i=10,j=2014. scanf(“%d,%d,%d”,&i,&j,&k);15. m=123n=456p=78916. a=98, b=765.000000, c=4321.00000017. 256 40018. 102,1019. 1 65 1.5 6.520. 021. 32,1a22. 123423. B24. 3 325. 6 6 6.0 6.026. D27. 17,21,1128. C29. 8,16,1030. 13.70000031. a=%d,b=%d32. 2 20.00000033. 1030034. 25 21 3735. n1=%dnn2=%d36. -337. 1638. 2,139. 040. B89二.閱讀程序?qū)懡Y(jié)果解答:三.補(bǔ)充程序解答:四.改錯(cuò)題解答:五.編程一解答:六.編程二解答:第四章 選擇結(jié)構(gòu)一.填空1. 在if, while, case, do, else 等關(guān)鍵字中,用于選擇結(jié)構(gòu)的有( ).2. 已知 a = 1; 那么 if ( a = 2) printf(%d, 2); else printf(%d, 1); 的輸出結(jié)果是( ).3. 已知 char a = A; 那么 if ( a 65) printf(%s, bigger); else printf(%s, smaller); 的輸出結(jié)果是( ).4. 表示“x y z”的C語言表達(dá)式是 ( )。5. 在C語言中,用于實(shí)現(xiàn)選擇結(jié)構(gòu)的語句有( )語句和( ) 語句。6. 判斷兩個(gè)浮點(diǎn)型變量x和y是否相等一般用:if( b?a:cd?a:d的結(jié)果為( ) 。9. 表達(dá)式98 & 8 & 31 & (98 - a)的值為( )。10. 若int a = 3; 則表達(dá)式 (a 2)& ! (D 69) 的值為( )。解答:1.2.3.4.5.6.7.8.9.10.二.閱讀程序?qū)懡Y(jié)果1. #include void main( ) int x,y,t; x=7;y=9; if(xy) t=x;x=y;y=t; printf(%d,%dn , x,y ); 2. #include void main( ) int x=1,a=2,b=3; switch(x) case 1: a-; break; case 2: b+; break; case 3: a+;b+; printf(na=%d,b=%dn,a,b); 3. #include void main( ) char ch1 = E; if(ch1 = A) ch1+; else ch1+=32; printf(ch1 = %cn, ch1); 4. #include void main( ) int x,y,t; x=5;y=3; if(xy) t=x;x=y;y=t; printf(%d,%dn , x,y ); 5. #include int main() int a,b,c,m; printf(Enter three integers:); scanf(%d%d%d,&a,&b,&c); if(a=b) m=a; else m=b; if(cm) m=c; printf(m=%dn,m); return 0; 輸入:21 22 23 6. #include int main() char ch1=a,ch2=B,ch3=E; if(ch1ch2) if(ch2ch3) ch3+; else -ch3; printf(ch3=%cn,ch3); return 0; 7. #include int main() float x,y; scanf(%f,&x); switch(int)x/10) case 0: y=1.0; printf(y=%fn,y);break; case 1: y=2*x+1; printf(y=%fn,y);break; case 2: y=3*x*x+2; printf(y=%fn,y);break; default: printf(No definition.n); return 0; 輸入:15.38. #include int main() char ch1=A,ch2=B; switch(ch1) case A: switch(ch2) case B: printf(Good!n);break; case A: printf(Better!n);break; case B: printf(Best!n); break; return 0; 9. #include void main() float score; score = 100; if (score60) printf(En); else switch( ( int ) score / 10 ) case 10: case 9: printf(An); case 8: printf(Bn); case 7: printf(Cn); break; case 6: printf(Dn); break; default: printf(Errorn); 10. #include void main() int i=0,a=2; if(i=0) printf(“*”); else printf(“$”); printf(“*”); 11. #includevoid main() int m=10,n=0,p=4,q=20; if (m) if (n) q=15-m; else q=25+m; else if (p) q=q+p; printf(“q=%dn”,q); 12. #includevoid main() int a=1,b=0; switch(a) case 1: switch (b) case 0: printf(*0*); break; case 1:printf(*1*);break; case 2: printf(*2*);break; 13. #includeint main( ) int a=2,b=7,c=5; switch (a0) case 1: switch (b0) case 1: printf(); break ; case 2: printf(!); break ; case 0: switch (c=5) case 1: printf(*) ; break ; default : printf(#) ; break ; default : printf(&); printf(n); return 0; 14. #includeint main() int a=0,b=1,c=0,d=20; if(a) d=d-10; else if (!b) if(!c) d=15; else d=25; printf(d=%dn,d); return 0; 15. #includeint main() int a=1; switch(a) case 0: printf(*0*);break; case 1:printf(*1*);break; case 2:printf(*2*);break; return 0; 16. #include int main() int x, y; scanf(%d,&x); y = x12 ? x + 10 : x - 12; printf(%dn, y); return 0; 輸入:1217. #include int main() float x, y; char op; double r; scanf(%c%f%f,&op,&x,&y); switch(op) case +: r = x + y; break; case -: r = x - y; break; case *: r = x * y; break; case /: r = x / y; break; printf(%.1f, r); return 0; 輸入:3.518. #include stdio.hvoid main( ) int a=7; if(a9 | a10) a=a/3; else a=a%3; printf(a=%d, a);19. #includevoid main() int a=20; switch(a%3) case 0: printf(0); case 1: printf(1); case 2: printf(2); default: printf(3); printf(4);20. #include void main() int a=2,b=5,c=8,t; if ( a b ) t = a; a = b; b = t;

溫馨提示

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

評論

0/150

提交評論