C语言第三四章作业题复习资料_第1页
C语言第三四章作业题复习资料_第2页
C语言第三四章作业题复习资料_第3页
C语言第三四章作业题复习资料_第4页
C语言第三四章作业题复习资料_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C程序设计第三章闭/开卷课程类别:考试/考查题号一二三四五六七八九总分分数评卷人第三章顺序结构程序设计一、选择题语言中调用printf进行输出时需要注意,在格式控制串中,格式说明及输出项的个数必须相同。如果格式说明的个数小于输出项的个数,多余的输出项将A;如果格式说明的个数多于输出项的个数,则对于多余的格式将输出不定值(或0)。A)不予输出B)输出空格C)照样输出D)输出不定值或02.在scanf函数的格式控制中,格式说明的类型及输入的类型应该一一对应匹配。如果类型不匹配,系统B。A)不予接收B)并不给出出错信息,但不可能得出正确信息数据C)能接受正确输入D)给出出错信息,不予接收输入3.下列说法正确的是D。A)输入项可以是一个实型常量,如scanf("%f",4.8);B)只有格式控制,没有输入项也能进行正确输入,如scanf("a=%d,b=%d");C)当输入一个实型数据时,格式控制部分应规定小数点后的位数,如scanf("%5.3f",&f);D)当输入数据时,必须指明变量的地址,如scanf("%f",&f);4.根据题目中已给出的数据的输入与输出形式,程序中输入/输出语句的正确是B。main(){inta;floatx;printf("inputa,x:");输入语句输出语句}输入形式输出形式A)scanf("%d,%f",&a,&x);printf("\na+x=%4.2f",a+x);B)scanf("%d%f",&a.&x);printf("\na+x=%4.2f",a+x);C)scanf("%d%f",&a,&x);printf("\na+x=%6.1f",a+x);D)scanf("%d%3.1f",&a,&x);printf("\na+x=%4.2f",a+x);5.以下程序的输出结果是A。main(){inti=010,j=10,k=0x10;printf("%d,%d,%d\n",i,j,k);A)8,10,16B)8,10,10C)10,10,10D)10,10,166.以下程序的输出结果是A。main(){inti=011,j=11,k=0x11;printf("%d,%d,%d\n",i,j,k);}A)9,11,17B)9,11,11C)11,11,11D)11,11,167.以下程序的输出结果是B。#include<stdio.h>main(){printf("%d\n",NULL);}A)不确定的值(因变量无定义)B)0C)-1D)18.以下程序的输出结果是B。main(){charc1='6',c2='0';printf("%c,%c,%d,%d\n",c1,c2,c1-c2,c1+c2);}A)因输出格式不合法,输出出错信息B)6,0,6,102C)6,0,7,6D)6,0,5,79.设有如下定义intx=10,y=3,z;则语句printf("%d\n",z=(x%y,x/y));的输出结果是A。A)3B)0C)4D)110.设有如下定义intx=10,y=5,z;则语句printf("%d\n",z=(x+=y,x/y));的输出结果是D。A)1B)0C)4D)311.以下程序的输出结果是D。main(){intx=10,y=10;printf("%d%d\n",x--,--y);}A)1010B)99C)910D)10912.写出下面程序的输出结果A。main(){intx;x=-3+4*5-6;printf("%d",x);x=3+4%5-6;printf("%d",x);x=-3*4%6/5;printf("%d",x);x=(7+6)%5/2;printf("%d",x);}A)11101B)11-321C)12-321D)1112113.写出下面程序的输出结果A。main(){intx,y,z;x=y=1;z=x++-1;printf("%d,%d\t",x,z);z+=-x+++(++y);printf("%d,%d",x,z);}A)2,03,0B)2,13,0C)2,02,1D)2,10,114.写出下面程序的输出结果C。main(){inti,j;i=20;j=(++i)+i;printf("%d",j);i=13;printf("%d%d),i++,i);}A)4214,13B)4114,14C)421313D)42131415.若有定义:intx,y;chara,b,c;并有以下输入数据(此处,<cr>代表换行符)12<cr>ABC<cr>则能给x赋整数1,给y赋整数2,给a赋字符A,给b赋字符B,给c赋字符C的正确程序段是C。A)scanf("x=%dy=%d",&x,&y);a=getchar();b=getchar();c=getchar();B)scanf("%dy%d",&x,&y);a=getchar();b=getchar();c=getchar();C)scanf("%d%d%c%c%c%c%c%c",&x,&y,&a,&a,&b,&b,&c,&c);D)scanf("%d%d%c%c%c",&x,&y,&a,&b,&c);16.若已知a=10,b=20,则表达式!a<b的值为C。A)10B)20C)1D)0函数中用到格式符"%4s",其中数字4表示输出的字符串站用4列。如果字符串长度大于4,则按原字符长从左向右全部输出;如果字符串长度小于4,则输出方式为C。A)从左起输出该字符串,右补空格B)按原字符长从左向右全部输出C)右对齐输出该字符,左补空格D)输出错误信息18.以下C程序,正确的运行结果是C。main(){longy=-34567;printf("y=%-8ld\n",y);printf("y=%-08ld\n",y);printf("y=%08ld\n",y);printf("y=%+8ld\n",y);}A)y=-34567B)y=-34567y=-34567y=-34567y=-0034567y=-0034567y=-34567y=+-34567C)y=-34567D)y=-34567y=-34567y=-0034567y=-0034567y=00034567y=-34567y=+3456719.C程序的基本编译单位是B。(01~02第二学期试题)A)函数B)文件C)源文件D)子程序20.设有如下定义与执行语句,其输出结果为:A。(03试题)inta=3,b=3;a=--b+1;printf(“%d%d”,a,b);A)32B)42C)22D)2321.根据定义与数据的输入方式,输入语句的正确形式为:A。(往届试题)已有定义:floata1,a2;数据的输入方式:A)scanf(“%f%f”,&a1,&a2);B)scanf(“%f,%f”,a1,a2);C)scanf(“%4.3f,%3.2f”,&a1,&a2);D)scanf(“%4.3f%3.2f”,a1,a2);22.以下程序的输出结果是:A。(往届试题)main(){intI=012,j=12,k=0x12;printf(“%d,%d,%d\n”,I,j,k);A)10,12,18B)12,12,12C)10,12,12D)12,12,1823.以下程序的输出结果是:(注:▂表示空格)D。(往届试题)main(){printf(“\n*s1=%8s*”,“china”);printf(“\n*s2=%-5s*”,“chi”);}A)*s1=china▂▂▂*B)*s1=china▂▂▂**s2=chi**s2=chi▂▂*C)*s1=▂▂▂china*D)*s1=▂▂▂china**s2=▂▂chi**s2=chi▂▂*二.填空题语言中的语句可分为5类,即控制语句空语句复合语句函数调用语句表达式语句。2.由一次函数调用加一个分号构成一个函数调用语句语句。函数的作用是向终端输出一个字符。是C语言提供的标准输出函数,它的作用是在终端设备上(或系统隐含的输出设备上)按照指定的格式进行输出。函数的“格式控制”包括两部分,他们是格式说明与普通字符。6.对不同类型的语句有不同的格式字符。例如:d格式字符是用来输出十进制整数,c格式字符是用来输出一个字符,s格式字符是用来输出一个字符串。7.%-ms表示如果串长小于m,则在m列范围内,字符串向左靠,右补空格。8.如果要输出字符“&”,则应该在“格式控制”字符串中用%c表示。函数的作用是从终端输入一个字符。10.符号“&”是地址运算符,&a是指a内存中的地址。函数中的“格式控制”后面应当是变量地址,而不是变量名。语言中的空语句就是一个分号空操作。13.复合语句是由一对大括号括起来的若干语句组成。14.分析下面程序:#include<stdio.h>main(){intx=2,y,z;1040104044x*=y=z=4;printf("%d\n",x);x=y=z;printf("%d\n",x);x=(y=z);printf("%d\n",x);}程序的输出结果为。15.编制程序对实数a及b进行加,减,乘,除计算,要求显示如下结果。程序:#include<stdio.h>voidmain(void){floata=50.0;b=20.0;printf("jia=%f\n",a+b);printf("jian=%f\n"a-b);printf("cheng=%f\n",a*b);printf("chu=%f\n",a/b);}将缺少的部分填在空白处。16.下列程序的输出结果是65A。#include<stdio.h>main(){chara;a='A';printf("%d%c",a,a);}17.分析下面程序main{intx=2,y,z;104010402,03,0x*=y=z=4;printf("%d\n",x);x=y=1;z=x++-1;printf("%d,%d\n",x,z);z+=-x+++(++y);printf("%d,%d",x,z);}程序的输出结果是。18.分析下面程序main(){3216,153216,154013,13x=16,y=(x++)+x;printf("%d\n",y);x=15;printf("%d,%d\n",++x,x);x=20,y=x--+x;printf("%d\n",y);x=13;printf("%d,%d",x++,x);}程序的输出结果是。19.以下程序的输出结果为:。(03试题)main(){floata=3.14,b=3.14159;printf(“%f,%5.3f\n”,a,b);}20.以下程序的输出结果为:___a回车_________。(04~05第二学期试题)#include<stdio.h>main(){charc1,c2;c1=‘a’;c2=‘\n’;printf(“%c%c”,c1,c2);}

C程序设计第四章闭/开卷课程类别:考试/考查题号一二三四五六七八九总分分数评卷人第四章选择结构程序设计一、选择题1.下列运算符中优先级最高的是B。()A)>B)+C)&&D)!=2.以下关于运算符优先级的描述中,正确的是A。()A)!(逻辑非)>算术运算>关系运算>&&(逻辑及)>||(逻辑或)>赋值运算B)&&(逻辑及)>算术运算>关系运算>赋值运算C)关系运算>算术运算>&&(逻辑及)>||(逻辑或)>赋值运算D)赋值运算>算术运算>关系运算>&&(逻辑及)>||(逻辑或)3.逻辑运算符的运算对象的数据类型D。()A)只能是0或1B)只能是.T.或.F.C)只能是整型或字符型D)任何类型的数据4.能正确表示x的取值范围在[0,100]与[-10,-5]内的表达式是B。()A)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)B)(x>=-10)&&(x<=-5)||(x>=0)&&(x<=100)C)(x>=-10)&&(x<=-5)&&(x>=0)&&(x<=100)D)(x<=-10)||(x>=-5)&&(x<=0)||(x>=100)5.以下程序的运行结果是B。()main(){intc,x,y;x=1;y=1;c=0;c=x++||y++;printf(“\n%d%d%d\n”,x,y,c);}A)110B)211C)011D)0016.以下程序的运行结果是A。()main(){intc,x,y;x=0;y=0;c=0;c=x++&&y++;printf(“\n%d%d%d\n”,x,y,c);}A)100B)211C)011D)0017.判断字符型变量ch为大写字母的表达式是C。()A)’A’<=ch<=’Z’B)(ch>=’A’)&(ch<=’Z’)C)(ch>=’A’)&&(ch<=’Z’)D)(ch>=’A’)AND(ch<=’Z’)8.判断字符型变量ch为小写字母的表达式是D。()A)’a’<=ch<=’z’B)(ch>=a)&&(ch<=z)C)(ch>=’a’)||(ch<=’z’)D)(ch>=’a’)&&(ch<=’z’)9.以下if语句书写正确的是B。()A)if(x=0;)B)if(x>0)printf(”%f”,x);{x=x+1;printf(”%f”,x);}elseprintf(”%f”,-x);elseprintf(”%f”,-x);C)if(x>0);D)if(x>0){x=x+1;printf(”%f”,x);}{x=x+1;printf(”%f”,x)}elseprintf(”%f”,-x);elseprintf(”%f”,-x);10.分析以下程序:main(){intx=5,a=0,b=0;if(x=a+b)printf(“****\n”);elseprintf(“####\n”);以上程序D。()A)有语法错,不能通过编译B)通过编译,但不能连接C)输出****D)输出####11.两次运行下面的程序,如果从键盘上分别输入6与4,则输出结果是A。()main(){intx;scanf(“%d”,&x);if(x++>5)printf(“%d”,x);elseprintf(“%d\n”,x--);}A)7与5B)6与3C)7与4D)6与412.写出下面程序的执行结果D。()main(){intx,y=1;if(y!=0)x=5;printf(“%d\t”,x);if(y==0)x=3;elsex=5;printf(“%d\t\n”,x);}A)13B)15C)53D)5513.写出下面程序的执行结果A。()main(){intx=1,y=1,z=0;if(z<0)if(y>0)x=3;elsex=5;printf("%d\t",x);if(z=y<0)x=3;elseif(y==0)x=5;elsex=7;printf("%d\t",x);printf("%d\t",z);}A)170B)370C)550D)15114.假定所有变量均已正确说明,下列程序段运行后x的值是B。()a=b=c=0;x=35;if(!a)x=-1;elseif(b);if(c)x=3;elsex=4;A)34B)4C)35D)315.写出下面程序的运行结果是。()main(){intx,y=1,z;if(y!=0)x=5;printf("x=%d\t",x);if(y==0)x=3;elsex=5;printf("x=%d\t\n",x);x=1;if(z<0)if(y>0)x=3;elsex=5;printf("x=%d\t\n",x);if(z=y<0)x=5;elsex=7;printf("x=%d\t",x);printf("%d\t\n",z);if(x=y=z)x=3;printf("x=%d\t",x);printf("z=%d\t\n",z);}A)x=5x=5B)x=5x=5x=1x=1x=7z=0x=5z=0x=3z=1x=3z=0C)x=5x=5D)x=5x=5x=5x=1x=7z=0x=7z=0x=3z=1x=3z=016.若有以下函数关系x<0→y=2xx>0→y=xx=0→y=x+1下面程序段能正确表示以上关系的是改正后C。()A)y=2*x;B)y=2*x;if(x!=0)if(x<=0)if(x>0)y=x;if(x==0)y=x+1;elsey=x+1;elsey=x;C)if(x>=0)(D)y=x+1;if(x>0)y=x;if(x<=0)elsey=x+1;if(x<0)y=2*x;elsey=2*x;elsey=x;17.若有以下变量定义:floatx;inta,b;则正确的switch语句是D。()A)switch(x){case1.0:printf("*\n");case2.0:printf("**\n");}B)switch(x){case1,2:printf("*\n");case3:printf("**\n");}C)switch(a+b){case1:printf("*\n");case2*a:printf("**\n");}D)switch(a+b){case1:printf("*\n");case1+2:printf("**\n");}18.以下关于运算符优先顺序的描述正确的是C。(02~03第一学期试题)A)关系运算符<算术运算符<赋值运算符<逻辑运算符B)逻辑运算符<关系运算符<算术运算符<赋值运算符C)赋值运算符<逻辑运算符<关系运算符<算术运算符D)算术运算符<关系运算符<赋值运算符<逻辑运算符19.能正确表示a>=10或a<=0的关系表达式是D。(02~03第一学期试题)A)a>=10ora<=0B)a>=10|a<=0C)a>=10&&a<=0D)a>=10||a<=020.以下不正确的if语句形式是C。(02~03第一学期试题)A)if(x>y&&x!=y);B)if(x==y)x+=y;C)if(x!=y)scanf(“%d”,&x)elsescanf(“%d”,&y);D)if(x<y){x++;y++;}21.当a=1,b=3,c=5,d=4时,执行完下面程序段后x的值为B。(02~03第一学期试题)if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;A)1B)2C)3D)622.以下if语句中语法错误的是C。(01~02第二学期试题)A)if(a>b)printf(“%f”,a);B)if(a>b)printf(“%f”,a);elseprintf(“%f”,b);C)if(a>b)printf(“%f”,a)D)if(a>b)printf(“%f”,b);elseprintf(“%f”,b);elseprintf(“%f”,a);23.能表示整数x符合下面两个条件的语句是A。(01~02第二学期试题)(1)“能被4整除,但不能被100整除”.(2)能被4整除,又能被400整除.A)(x%4==0&&x%100!=0)||x%400==0B)(x%4==0||x%100!=0)&&x%400==0C)(x%4==0&&x%400!=0)||x%100==0D)(x%100==0||x%4!=0)&&x%400==024.设有如下定义:charch=’z’,则执行下面语句后变量ch是值为:D。(03试题)ch=(‘A’<=ch&&ch<=‘Z’)?(ch+32):chA)AB)aC)ZD)z25.若I为整型变量,则下列程序段的运行结果为D。(03试题)I=322;if(I%2==0)printf(“#####”)elseprintf(“*****”);A)#####B)#####*****C)*****D)有语法错误,无法输出结果26.已知intx=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:A。(03试题)if(x>y||x<z&&y>z)z=x;x=y;y=z;A)x=50,y=80,z=80B)x=50,y=30,z=30C)x=30,y=50,z=80D)x=80,y=30,z=5027.C语言中,要求运算对象必须是整型的运算符是:C。(往届试题)A)>B)++C)%D)!=28.已知intx=30,y=50,z=80;以下语句执行后变量x、y、z的值分别为:C。(往届试题)if(x>y||x<z&&y>z){z=x;x=y;y=z;}A)x=50,y=80,z=80B)x=50,y=30,z=30C)x=30,y=50,z=80D)x=80,y=30,z=5029.以下程序的输出结果是A。(04~05第二学期试题)main(){intx=2,y=-1,z=2;if(x<y)if(y<0)z=0;elsez+=1;printf(“%d\n”,z);}A)3B)2C)1D)030.设a、b与c是int型变量,且a=2,b=4,c=6,则下面表达式中值为0的是:D。(往届试题)A)‘a’+‘b’B)a<=bC)a||b+c&&b-cD)!((a<b)&&!c||1)31.在C的if语句中,可用作判断的表达式是:D。(往届试题)A)关系表达式B)逻辑表达式C)算术表达式D)任意表达式32.下面能正确表示变量a在区间[0,5]或(6,10)内的表达式为:B。(往届试题)A)0<=a||a<=5||6<a||a<10B)0<=a&&a<=5||6<a&&a<10C)(0<=a||a<=5)&&(6<a||a<10)D)0<=a&&a<=5&&6<a&&a<1033.在C语言中,多分支选择结构语句为:switch(c){case常量表达式1:语句1;……case常量表达式n-1:语句n-1;default语句n;}其中括号内表达式c的类型:C。(往届试题)A)可以是任意类型B)只能为整型C)可以是整型或字符型D)可以为整型或实型34.以下if语句语法正确的是:B。(往届试题)A)if(x>0)printf(“%f”,x)elseprintf(“%f”,-x);B)if(x>0){x=x+y;printf(“%f”,x);}elseprintf(“%f”,-x);C)if(x>0){x=x+y;printf(“%f”,x);};elseprintf(“%f”,-x);D)if(x>0){x=x+y;printf(“%f”,x)}elseprintf(“%f”,-x);35.为了表示关系x>=y>=z,应使用C语言表达式A。 A)(x>=y)&&(y>=z) B)(x>=y)AND(y>=z) C)(x>=y>=z) D)(x>=y)&(y>=z)36.若欲表示在if后a不等于0的关系,则能够正确表示这一关系的表达式为D。 A)a<>0 B)!a C)a=0 D)a37.下面程序的输出结果是B。 main() {intx,y,z; x=y=1; z=x++-1; printf(“%d,%d\t”,x,z); z+=-x+++(++y||++z); printf(%d,%d”,x,z); } A)2,03,-1 B)2,13,0 C)2,02,1 D)2,10,138.下面程序的输出结果是D。 main() {intx=40,y=4,z=4; x=y==z; printf(“%d”,x); x=x==(y-z); printf(%d”,x); } A)40 B)41 C)11 D)1039.若x=3,y=z=4,则下列表达式的值分别为A。(1)(z>=y>=x)?1:0(2)z>=y&&y>=xA)01B)11C)00D)1040.若x=3,y=z=4,则下列表达式的值分别为A。(1)(z>=y>=x)?1:0(2)y+=z,x*=yA)024B)18C)08D)11241.在以下一组运算符中,优先级最高的运算符是C。A)<= B)= C)% D)&&42.以下程序的输出结果是C。main(){inta=-1,b=4,k;k=(++a<=0)&&!(b--<=0);printf("%d%d%d",k,a,b);}A)104B)004C)103D)00343.若已定义inta=25,b=14,c=19;以下三项运算符(?:)所构成的语句的执行结果是D。a++<=25&&b--<=2&&c++?printf("***a=%d,b=%d,c=%d\n",a,b,c):printf("###a=%d,b=%d,c=%d\n",a,b,c)A)(***a=25,b=14,c=19)B)(***a=26,b=13,c=19)C)(###a=25,b=14,c=19)D)(###a=26,b=13,c=19)二、填空题1.在C语言中,对于if语句,else子句及if子句的配对约定是。(0级).else及它前面最近的一个if配对2.阅读下面程序,写出它的功能。(1级)#include<stdio.h>main(){intlabel;charc;printf("\nPleaseenter1number:");c=getchar();while(c!='\n'){if(c=='.')label=1;c=getchar();}if(label==1)printf("\nfloat");elseprintf("\nint");}由键盘输入一个数,打印出它的类型标识符3.以下两条if语句可合并成一条if语句为。(1级)if(a<=b)x=1;elsey=2;if(a>b)printf("****y=%d\n",y);elseprintf("####x=%d\n",x);答案:if(a<=b){x=1;printf(“****y=%d\n”,y);}else{y=2;printf(“####x=%d\n”,x);}4.以下程序的功能是计算一元二次方程ax2+bx+c=0的根,补足程序中空缺的语句。(2级)#include<math.h>main(){floata,b,c,_abs,_derta,_doublea,part1,part2;printf("entera,b,c:");scanf("%f%f%f",&a,&b,&c);if((1)) a==0if((2))printf("noanswerduetoinputerror\n"); b==0elseprintf("thesinglerootis%f\n",-c/b);else{_derta=b*b-4*a*c;_doublea=2*a;part1=-b/(2*a);_abs=abs(_derta);part2=sqrt(_abs)/_doublea;if((3)) _derta<0printf("complexroot\nrealpart=%fimagepart=%f\n",part1,part2);elseprintf("realroots\nroot1=%froot2=%f\n",part1+part2,part1-part2);}}5.设有程序片段如下:switch(class){case'A':printf("GREAT!\n");case'B':printf("GOOD!\n");case'C':printf("OK!\n");case'D':printf("NO!\n");default:printf("ERROR!\n");}若class的值为'C',则输出结果是。(1级)OK!NO!ERROR!6.以下程序段的运行结果是。(1级)intx=1,y=0;switch(x){case1:switch(y){case0:printf("x=1y=0\n");break;case1:printf("y=1\n");break;}case2:printf("x=2\n");}x=1y=0x=27.根据以下if语句写出及其功能相同的switch语句(x的值在0~100之间)。(1级)if语句:if(x<60)m=1;elseif(x<70)m=2;elseif(x<80)m=3;elseif(x<90)m=4;elseif(x<100)m=5;switch语句:switch((1))x/10{(2)m=1;break;case0:case1:case2:case3:case4:case5:case6:m=2;break;case7:m=3;break;case8:m=4;break;(3)m=5;case9:}8.输入3个实数a,b,c要求按从大到小的顺序输出三数。(01~02第二学期试题)main(){floata,b,c,t;scanf(“%f,%f,%f”,&a,&b,&c);if(a<b){t=a;__(1)__b=t;} a=bif(__(2)__) a<c{t=a;a=c;c=t;}if(b<c){__(3)__b=c;c=t;} t=bpri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论