一、选择题1.在每个C程序中都必须包含有这样一个函数,该函数的函数名为A。A.mainB.MAINC.nameD.function2.在以下关于C语言的注释的叙述中,不正确的是C。A.注释可用/*、*/形式表示,也可用//形式表示B.编译器在编译一个程序时,将跳过注释,不对其进行处理C.编译器在编译一个程序时,可发现注释中的单词拼写错误D.程序中注释的多少不会影响所生成的可执行文件的长度3.以下叙述不正确的是。A.在C程序中,严格区分大小写字母B.一个C源程序有且仅有一个main函数C.在C程序中,注释只能位于一条语句的后面D.一个C程序总是从main函数开始执行4.下列合法的标识符为A.abde+B.#KDJFC.67KDJD.DK3_5.关于字符串和字符的关系正确的是A.“A”与’A’是相同的B.字符串是常量,字符是变量C.“A”与’A’是不同的D.“A”与“A”是相同的6.下面关于语句的说法正确的是A.下面这两段程序的执行效果是一致的B.空语句是只有一个分号的语句,它其实什么也不干C.语句的构成不一定需要分号D.语句的书写对程序的运行不起作用,因此可以随便写都可以7.以下各标识符中,合法的用户标识符组为D。A.PAd,P#d,b-b,abc,_0123,ssipedB.cin,a10,CPP,float,del_word,signedC.void,max,hiy,fr,list,*jerif(xy){z=x;s=z*z;}else{z=y;s=1/(z*z);}if(xy)z=x;s=z*z;elsez=y;s=1/(z*z);D.a,temp,_isw,INT,keep,wind8.字符串“\”EOF=-\61\””的长度是。A.8B.9C.12D.非法字符串9.数学式xsin在C程序中对应的不正确的表达式为。A.sqrt(sin(x)0?sin(x):-sin(x))B.sqrt(fabs(sinx))C.sqrt(sqrt(sinx*sinx))D.fabs(sqrt(sin(x)))10.下列是C语言的有效标识符?A._No1B.No.1C.12345D.int11.C语言中,表示一条语句结束的标号是BA.#B.;C.//D.}12.每个C程序中都必须有且仅有一个CA.类B.预处理命令C.主函数D.语句13.下列数据类型不是C语言基本数据类型的是D。A.字符型B.整型C.实型D.数组14.下列字符列中,可作为C语言程序自定义标识符是。A.switchB.fileC.breakD.do15.运算符+、=、=、%中,优先级最低的运算符是。A.+B.=C.=D.%16.下列字符列中,可以作为“字符串常量”的是。A.ABCB.″xyz″C.′uvw′D.′a′17.字符串vm\x43\\\np\102q的长度是。A.8B.10C.17D.1618.在C语言中,自定义的标识符。A.能使用关键字并且不区分大小写B.不能使用关键字并且不区分大小写C.能使用关键字并且区分大小写D.不能使用关键字并且区分大小写19.设x和y均为逻辑型变量,则x&&y为真的条件是。A.它们均为真B.其中一个为真C.它们均为假D.其中一个为假20.若给定条件表达式(m)?(a++):(a--),则其中表达式m。A.和(m==0)等价B.和(m==1)等价C.和(m!=0)等价D.和(m!=1)等价21.在if语句中,用作判断的表达式为。A.关系表达式B.逻辑表达式C.算术表达式D.任意表达式22.设i和k都是int类型,则以下for循环语句。for(i=0,k=-1;k=1;i++,k++)printf(****\n);A.判断循环结束的条件不合法B.是无限循环C.循环体一次也不执行D.循环体只执行一次23.若有以下语句,则输出结果为。inta=2,b=1;strings1;s1=ab?a大于b:a小于b;printf(%s\n,s1);A.a大于bB.a小于bC.1D.输出语句有错24.intk=10;while(k=0)k=k-1;则下面描述正确的是。A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次25.inta=1,b=2,c=2,t;while(ab){t=a;a=b;b=t;c--;}printf(%d,%d,%d\n,a,b,c);运行结果为。A.1,2,0B.2,1,0C.1,2,1D.2,1,126.intx=-1;do{x=x*x;}while(!x);下列说法正确的是。A.是死循环B.循环执行两次C.循环执行一次D.有语法错误27.以下能正确计算1*2*3*…*10的程序段是。A.do{i=1;s=1;B.do{i=1;s=0;s=s*i;i++;}s=s*i;i++;}while(i=10);while(i=10);C.i=1;s=1;D.i=1;s=0;do{s=s*i;do{s=s*i;i++;}i++;}while(i=10);while(i=10);28.以下描述正确的是。A.由于do-while循环中循环体语句只是一条可执行语句,所以循环体内不能使用复合语句B.do-while循环由do开始,用while结束,在while(表达式)后面不能写分号C.在do-while循环体中,一定要有能使while后面表达式的值变为零(“假”)的操作D.do-while循环中,根据情况可以省略while29.while和do-while循环的主要区别是。A.do-while的循环体至少无条件执行一次B.while的循环控制条件比do-while的循环控制条件严格C.do-while允许从外部转到循环体内D.do-while的循环体不能是复合语句30.下面有关for循环的正确描述是。A.for循环只能用于循环次数已经确定的情况B.for循环是先执行循环体语句,后判断表达式C.for循环中,不能用break语句跳出循环体D.for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来31.对for(表达式1;;表达式3)可理解为。A.for(表达式1;0;表达式3)B.for(表达式1;1;表达式3)C.for(表达式1;表达式1;表达式3)D.or(表达式1;表达式3;表达式3)32.在C编程语言中,以下正确的描述是。A.continue语句的作用是结束整个循环的执行B.只能在循环体内和switch语句体内使用break语句C.在循坏体内使用break语句或continue语句的作用相同D.从多层循环嵌套中退出,只能使用goto语句33.下面程序段。for(t=1;t=100;t++){scanf(%d,&x);if(x0)continue;printf(%d\n,t);}A.当x0时整个循环结束B.x=0时什么也不输出C.cout永远也不执行D.最多允许输出100个非负整数34.定义一个函数实现交换x和y的值,并将结果正确返回。能够实现此功能的是。A.swap(intx,inty){intt;t=x;x=y;y=t;}B.swap(int*x,int*y){intt;t=x;x=y;y=t;}C.swap(int*x,int*y){intt;t=*x;*x=*y;*y=t;}D.swap(int*x,int*y){int*t;t=x;x=y;y=t;}35.若有代数式3ae/bc,则不正确的C语言表达式是。A.a/b/c*e*3B.3*a*e/b/cC.3*a*e/b*cD.a*e/c/b*336.以下表达式值为3的是。A.16-13%10B.2+3/2C.14/3-2D.(2+6)/(12-9)37.设有说明语句,intk=7,x=12;则以下能使值为3的表达式是。A.x%=(k%=5)B.x%=(k-k%5)C.x%=k-k%5D.(x%=k)-(k%=5)38.若有条件表达式(exp)?A++:b--,则以下表达式中能完全等价于表达式(exp)的是。A.(exp==0)B.(exp!=0)C.(exp==1)D.(exp!=1)39.设有以下语句:typedefstructREC{charc;inta[4];}REC1;则下面叙述中正确的是。A.可以用REC定义结构体变量B.REC1是structREC类型的变量C.REC是struct类型的变量D.可以用REC1定义结构体变量40.下列关于结构的语法错误的是A.结构是由用户自定义的一种数据类型B.结构中可设定若干个不同数据类型的成员C.结构中成员的数据类型可以是另一个已定义的结构D.在定义结构时,可以为成员设置默认值41.以下关于结构体的叙述中,错误的是。A.结构体是一种可由用户构造的数据类型B.结构体中的成员可以具有不同的数据类型C.结构体中的成员不可以与结构体变量同名D.结构体中的成员可以是指向自身结构的指针类型42.说明一个结构体变量时,系统分配给它的内存是。A.各成员所需内存量的总和B.结构中第一个成员所需内存量C.成员中占内存量最大者所需的容量D.结构中最后一个成员所需内存量43.设有以下说明语句:structstu{inta;floatb;}stutype;则下面的叙述不正确的是。A.struct是结构体类型的关键字B.structstu是用户定义的结构体类型名C.stutype是用户定义的结构体类型名D.a和b都是结构体成员名44.若有如下定义structdata{intx,y;}test1={10,20},test2;则以下赋值语句中错误的是。A.test2=test1;B.test2.x=test1.x;C.test2.x=test1.yD.test2={30,40};45.以下对结构体变量stu1中成员age的非法引用是。structstudent{intage;intnum;}stu1,*p;p=&stu1;A.stu1.ageB.student.ageC.p-ageD.(*p).age46.当说明一个共用体变量时,系统分配给它的内存是。A.各成员所需内存量的总合B.结构中第一个成员所需内存量C.成员中占内存量最大者所需的容量D.结构中最后一个成员所需内存量47.以下对C语言中共用体类型数据的叙述正确的是。A.可以对共用体变量名直接赋值B.一个共用体变量中可以同时存放其所有成员C.一个共用体变量中不能同时存放其所有成员D.共用体类型定义中不能出现结构体类型的成员48.若有以下定义和语句:uniondata{inti;charc;floatf;}a;intn;则以下语句正确的是。A.a=5;B.a={2,’a’,1.2}C.printf(“%d\n”,a);D.n=1;49.设有以下说明,则下面不正确的叙述是。union{inti;charc;floatf;}un;A.un所占的内存长度等于成员f的长度B.un的地址和它的成员地址都是同一地址C.un可以作为函数参数D.不能对un赋值,但可以在定义un时对它初始化50.C语言共用体类型变量在程序运行期间A.所有成员一直驻留在内存中B.只有一个成员驻留在内存中C.部分成员驻留在内存中D.没有成员驻留在内存中51.使用typedef定义一个新类型的正确步骤是。A.(2)、(4)、(1)、(3)B.(1)、(3)、(2)、(4)C.(2)、(1)、(4)、(3)D.(4)、(2)、(3)、(1)(1)把变量名换成新类型名(2)按定义变量的方法写出定义体(3)用新类型名定义变量(4)在最前面加上关键则typedef52.下面对typedef的叙述中不正确的是。A.用typedef可以定义各种类型名,但不能用来定义变量B.用typedef可以增加新类型C.用typedef只是将已存在的类型用一个新的标识符来代表D.使用typedef有利于程序的通用和移植53.下面试图为double说明一个新类型名real的语句中,正确定是。A.typedefrealdouble;B.typedefdoublereal;C.typed