C语言考试题基础_第1页
C语言考试题基础_第2页
C语言考试题基础_第3页
C语言考试题基础_第4页
C语言考试题基础_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

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

文档简介

一、选择题1.在每个C程序中都必定包含有这样一个函数,该函数的函数名为。A.mainB.MAINC.nameD.function2.在以下关于C语言的说明的表达中,不正确的选项是。A.说明可用"/*"、"*/"形式表示,也可用"//"形式表示B.编译器在编译一个程序时,将跳过说明,不对其进行办理C.编译器在编译一个程序时,可发现说明中的单词拼写错误D.程序中说明的多少不会影响所生成的可执行文件的长度3.以下表达不正确的选项是。A.在C程序中,严格区分大小写字母B.一个C源程序有且仅有一个main函数C.在C程序中,说明只能位于一条语句的后边D.一个C程序总是从main函数开始执行以下合法的表记符为A.abde+

B.#KDJF

C.67KDJ

D.DK3_5.关于字符串和字符的关系正确的选项是A.“A”与’A’是相同的B.字符串是常量,字符是变量C.“A”与’A’是不相同的D.“A”与“A”是相同的6.下面关于语句的说法正确的选项是A.下面这两段程序的执行收效是一致的if(x>y)

if(x>y){z=x;s=z*z;}

z=x;s=z*z;else

else{z=y;s=1/(z*z);}

z=y;s=1/(z*z);空语句是只有一个分号的语句,它其实什么也不干语句的组成不用然需要分号语句的书写对程序的运行不起作用,因此能够任意写都能够7.以下各表记符中,合法的用户表记符组为。PAd,P#d,b-b,abc,_0123,ssipedcin,a10,CPP,float,del_word,signedvoid,max,hiy,<fr>,list,*jera,temp,_isw,INT,keep,wind8.字符串“”E””的长度是。A.8B.9C.12D.非法字符串9.数学式sinx在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.以下A._No1

是C语言的有效表记符?B.C.12345

D.intC语言中,表示一条语句结束的标号是A.#B.;C.//D.}每个C程序中都必定有且仅有一个A.类B.预办理命令C.主函数D.语句13.以下数据种类不是C语言基本数据种类的是。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语言中,自定义的表记符。.能使用要点字并且不区分大小写B.不能够使用要点字并且不区分大小写C.能使用要点字并且区分大小写D.不能够使用要点字并且区分大小写19.设x和y均为逻辑型变量,则x&&y

为真的条件是

。A.它们均为真C.它们均为假20.若给定条件表达式A.和(m==0)等价C.和(m!=0)等价

B.其中一个为真D.其中一个为假(m)?(a++):(a--),则其中表达式B.和(m==1)等价D.和(m!=1)等价

m

。21.在

if

语句中,用作判断的表达式为

。A.关系表达式

B.逻辑表达式C.算术表达式22.设i和k都是

D.int种类,则以下

任意表达式for循环语句

。for(i=0,k=-1;k=1;i++,k++)

printf("\n");A.判断循环结束的条件不合法

B.是无量循环C.循环体一次也不执行

D.循环体只执行一次23.若有以下语句,则输出结果为

。inta=2,b=1;strings1;s1=a>b?"a大于b":"a

小于

b";printf("%s\n",s1);A.a大于b

B.a小于

b

C.1

D.输出语句有错24.intk=10;while(k=0)k=k-1;则下面描述正确的选项是

。A.while循环执行10次C.循环体语句一次也不执行

B.循环是无量循环D.循环体语句执行一次inta=1,b=2,c=2,t;while(a<b){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,1intx=-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编程语言中,以下正确的描述是。continue语句的作用是结束整个循环的执行只幸亏循环体内和switch语句体内使用break语句在循坏体内使用break语句或continue语句的作用相同从多层循环嵌套中退出,只能使用goto语句下面程序段。for(t=1;t<=100;t++){scanf("%d",&x);if(x<0)continue;printf("%d\n",t);}A.当x<0时整个循环结束C.cout永远也不执行

B.x>=0时什么也不输出D.最多赞同输出100个非负整数定义一个函数实现交换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)若有条件表达式(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.构造中最后一个成员所需内存量设有以下说明语句:structstu{inta;floatb;}stutype;则下面的表达不正确的选项是。A.struct是构造体种类的要点字B.structstu是用户定义的构造体种类名C.stutype是用户定义的构造体种类名D.a和b都是构造体成员名若有以下定义structdata{intx,y;}

test1={10,20},test2;则以下赋值语句中错误的选项是

。A.test2=test1;B.test2.x=test1.x;D.test2={30,40};45.以下对构造体变量stu1中成员age的非法引用是structstudent{intage;intnum;}stu1,*p;p=&stu1;C.p->ageD.(*p).age46.当说明一个共用体变量时,系统分配给它的内存是

。各成员所需内存量的总合B.构造中第一个成员所需内存量C.成员中占内存量最大者所需的容量D.构造中最后一个成员所需内存量47.以下对C语言中共用体种类数据的表达正确的选项是。A.能够对共用体变量名直接赋值B.一个共用体变量中能够同时存放其所有成员C.一个共用体变量中不能够同时存放其所有成员D.共用体种类定义中不能够出现构造体种类的成员若有以下定义和语句: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时对它初始化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.typedefreal=double;D.typedefdouble=real;54.下面能正确进行字符串赋值操作的是。A.chars[5]={“ABCDE”};B.chars[5]={‘A’,‘B’,‘C’,‘D’,‘E’};C.char*s;s=“ABCDE”;D.char*s;scanf(“%s”,s);55.下面程序段的运行结果是。char*s=”abcde”;s+=2;printf(“%d”,s);A.cdeB.字符cC.字符c的地址D.无确定的输出结果56.下面程序段的运行结果是。charstr[]=”ABC”,*p=str;printf(“%d\n”,*(p+3));A.67B.0C.字符C的地址D.字符57.下面程序段的运行结果是。chara[]=”language”,*p;p=a;while(*p!=’u’){printf(“%c”,*p-32);p++;}A.LANGUAGEB.languageC.LANG58.有以下说明语句,则以下不正确的表达是chara[]=”Itismine”;char*p=”Itismine”;A.a+1表示的是字符t所在储藏单元的地址

C

D.langUAGE。B.p指向别的的字符串时,字符串的长度不受限制C.p变量中存放的地址值能够改变D.a中只能存放10个字符答案:1.A2.C3.C4.D5.C6.B7.D8.A9.B10.A11.B12.C13.D14.B15.C16.B17.A18.D19.A20.C21.D22.B23.A24.C25.D26.C27.C28.C29.A30.D31.B32.B33.D34.C35.C36.B37.D38.B39.D40.D41.C42.A43.C52.B53.B56.B57.C58.D二、填空题1.程序的三种基本的控制构造是:、、。2.C语言中的每条基本语句以作为结束符,每条复合语句以作为结束符。3.关系表达式x+y>5的相反表达式为。4.下面的程序段中循环体的执行次数是。a=10;b=0;do{b+=2;a-=2+b;}while(a>=0);5.下面程序段的运行结果为。x=2;do{printf("*");x--;}while(!x==0);6.已知inta[3][2]={3,2,1};则表达式“a[0][0]/a[0][1]”的值是。7.若用数组名作为函数调用时的实参,则实质上传达给形参的是。8.若是一个函数无返回值,定义它时函数种类应是。9.预办理命令以开头。10.指针种类变量用于储藏,在内存中它占有一个储藏空间。11.赋值语句在执行时先计算,再将该值变换成与一致的值,并将值赋给左部变量。12.在程序中else总是与的if配对,而无论程序的书写格式如何。13.在函数中使用语句返回值。14.函数的形参在未被调用前分配空间,函数形参的要和实参相同。15.函数调用一般分、,前者的特点是形参和实参各有独立的储藏空间,形参的储藏空间在函数被调用时才分配,形参内容的变化不影响实参,后者的特点是形参实参共用一个储藏空间,形参内容的改变能够改变实参值。16.在传值调用中,实质是把实参的传给形参。17.inta[3]=3;则a[2]=。18.inta[3]={1,3,5,7};则。19.数组由和组成,其数组元素的数据种类是。20.声明长度为10的float型数组a,且初始化为0的语句是:。21.指针是存放一个变量的的变量。22.当数组名作形参时,相当于。23.要接见数组元素能够采用、、。定义一个指针p,它指向一个有6个整型元素的一维数组,定义语句为。定义一个指针数组p,它有4个元素,每个指针指向一个整型数据,定义语句为。指针能够指向字符串,在定义一个字符型指针时,能够给它初始化,目的是把字符串的放入指针变量。27.指针能够指向函数,这时它所指的是函数的。28.C语言的源程序必定经过和后,才能被计算机执行。29.C语言源程前言件的后缀是;经过编译后,生成文件的后缀是;经过连接后,生成文件的后缀是。30.在C语言中,表示逻辑“真”值用。31.设y为int型变量,请写出描述“y是奇数”的表达式。32.C语言供应的3种逻辑运算符是、和。若x、y、z均为int型变量,则描述“x或y中有一个小于z”的表达式是。34.设a、b、c均为int型变量且,则表达式a>b&&c>a||a<b&&!c>b的值是。35.设a、b、c均为int型变量且a=6,b=4,c=2,则表达式!(a-b)+c-1&&b+c/2的值是。36.设a、b均为int型变量且a=2,b=4,则表达式!(x=a)||(y=b)&&0的值是。37.设a、b、c均为int型变量且a=1,b=4,c=3,则表达式!(a<b)||!c&&1的值是。38.若有条件“2<x<3或x<-10”,其对应的C语言表达式是。答案:1.序次构造选择构造循环构造2.;}x+y<=531数组首地址内置函数#所指变量的地址表达式的值左部变量种类它前面近来且未配对return不种类及数量传值调用传址调用值0会出错数组名下标相同的floata[10]={0};地址指针下标法地址法指针法int(*p)[6]int*p[4]首地址入口地址编译连接cobjexe非0数字(y%2)==132.&&||!x<z||y<z010038.x<3&&x>2||x<-10三、填空完成下面的程序以下程序的功能是:输出x,y,z三个数中的最大者。请填空。#include<stdio.h>intmain( ){intx=4,y=6,z=7;intu,v;if(x>y)u=x;elseu=y;if(u>z)v=u;elsev=z;printf(“v=%d”,v);return0;}以下程序的功能是:输入3个整数,按从大到小的序次进行输出。请填空。#include<stdio.h>intmain( ){intx,y,z,c;scanf(“%d%d%d”,&x,&y,&z);if(y<z){c=y;y=z;z=c;}if(x<z){c=x;x=z;z=c;}if(x<y){c=x;x=y;y=c;}printf(“%d,%d,%d”,x,y,z);return0;}以下程序的功能是:输入一个字符,若是它是一个大写字母,则把它变成小写字母;若是它是一个小写字母,则把它变成大写字母;其他字符不变。请填空。#include<stdio.h>intmain( ){charch;scanf(“%c”,&ch);if(ch>=’A’&&ch<=’Z’)ch=ch+32;elseif(ch>=’a’&&ch<=’z’)ch=ch-32;printf(“%c”,ch);return0;}以下程序的功能是:依照输入的三角形的三条边,判断可否能组成三角形,若能够则输出它的面积和三角形的种类。请填空。#include<stdio.h>#include<math.h>intmain( ){floata,b,c;floats,area;scanf(“%f%f%f”,&a,&b,&c);if(

a+b>c

&&

b+c>a

&&

a+c>b

){s=(a+b+c)/2;area=sqrt(s*(s-a)*(s-b)*(s-c));printf(“%f”,area);if(

a==b&&

b==c

)printf(“等边三角形”);elseif(

(a==b&&

b!=c)

||(a==c&&

c!=b)

||(c==b&&

a!=c))printf(“等腰三角形”);elseif((a*a+b*b=c*c)||(a*a+c*c=b*b)||(b*b+c*c=a*a))printf(“直角三角形”);elseprintf(“一般三角形”);}elseprintf(“不能够组成三角形”);return0;}5.将以下含有switch语句的程序段改写成对应的含有非嵌套if语句的程序段。请填空。含有switch语句的程序段:intx,y,m;y=(int)(x/10);switch(y){case10:m=5;break;case9:m=4;break;case8:m=3;break;case7:m=2;break;case6:m=1;break;default:m=0;}含有非嵌套if语句的程序段:intx,m;if(x<110&&x>=100)m=5;if(x<100&&x>=90)m=4;if(x<90&&x>=80)m=3;if(x<80&&x>=70)m=2;if(x<70&&x>=60)m=1;if(x<60||x>=110)m=0;依照以下给出的嵌套if语句,填写对应的switch语句,使它完成相同的功能。(假设mark的取值在1—100之间。)if语句:if(mar<60)k=1;elseif(mark<70)k=2;elseif(mark<80)k=3;elseif(mark<90)k=4;elseif(mark<=100)k=5;switch语句:switch((int)(mark/10)){case0:case1:case2:case3:case4:case5:k=1;break;case6:k=2;break;case7:k=3;break;case8:k=4;break;case9:case10:k=5;}7.下面程序的功能是从键盘输入若干学号,尔后输出学号中百位数字是3的学号(输入0时结束循环),请填空。#include<stdio.h>intmain( ){longintnum;scanf(“%ld”,&num);do{if

(num/100%/10==3)

pringf(“%ld”,num);scanf(“%ld”,&num);}while(num!=0);return0;}下面程序的功能是计算正整数2345的各位数字的平方和,请填空。#include<stdio.h>intmain( ){intn=2345,sum=0;do{sum=sum+(n%10)*(n%10);n=n/10;}while(n);printf(“sum=%d”,sum);return0;}下面程序的功能是求算式xyz+yzz=532中的x,y,z的值(其中xyz和yzz分别表示一个三位数),请填空。#include<stdio.h>intmain( ){intx,y,z,I,result=532;for(x=1;x<10;x++)for(y=1;y<10;y++)for(z=0;z<10;z++){i=100*x+10*y+z+100*y+10*z+z;if(i==result)printf(“x=%d,y=%d,z=%d\n”,x,y,z);}return0;}有1020个西瓜,第一天卖一半多两个,今后每天卖剩下的一半多两个,下面的程序统计买完所需的天数,请填空。#include<stdio.h>intmain( ){intday=0,x1=1020,x2;while(x1){x2=x1/2-2;x1=x2;day++;}printf(“day=%d\n”,day);return0;}11.下面的程序的功能是用do-while语句求1—1000之间满足“用3除余2,用5除余3,用7除余2”的数,且一行只打印5个数,请填空。#include<stdio.h>intmain( ){inti=1,j=0;do{if(i%3==2&&i%5==3&&I%7==2){printf(“%4d”,i);j++;if(j%5==0)printf(“\n”);}i=i+1;}while(i<1000);return0;}12.下面程序的功能是求1000以内的所有完好数。请填空。(说明:一个数若是恰好等于它的因子之和(除自己外),则称该数为完好数。比方:6=1+2+3,6为完好数)#include<stdio.h>intmain( ){inta,k,m;for(a=1;a<=1000;++){for(m=0,k=1;k<=a/2;k++)if(!(a%k))if(m==a)printf(“%4d”,a);

m=m+k;}return0;}下面的程序是从键盘输入的10个整数中,找出一个能被7正处的数,若找到,打印次数;若未找到,打印notexist。请填空。#include<stdio.h>intmain( ){intk,a;for(k=1;k<=10;k++){scanf(“%d”,&a);if(a%7==0)break;}if(k<=10)printf(“%d\n”,a);elseprintf(“notexist\n”);return0;}四、给出以下程序运行后的输出结果1.当a=1,b=3,c=5,d=4时,执行以下程序段后x的值是2。if(a<b)if(c<d)x=1;elseif(a<c)if(b<d)x=2;elsex=3;elsex=6;elsex=7;2.以下程序的输出是-1。#include<stdio.h>intmain( ){inta=100,x=10,y=20,ok1=5,ok2=0;if(x<y)if(y!=10)if(!ok1)a=1;elseif(ok2)a=10;a=-1;printf(“%d\n”,a);return0;}3.以下程序的输出是2。#include<stdio.h>intmain( ){intx=2,y=-1,z=2;if(x<y)if(y<0)z=0;elsez+=1;printf(“%d\n”,z);return0;}4.以下程序的输出是OK#include<stdio.h>intmain( )

。{intx=1;if(x=2)printf(“OK”);elseif(x<2)pirntf(“%d\n”,x);elseprintf(“Quit”);return0;}5.若运行时为变量x输入12,则以下程序的运行结果是0。#include<stdio.h>intmain( ){intx,y;scanf(“%d”,&x);y=x>12?X+10:x-12;printf(“%d\n”,y);return0;}6.若运行时输入:

2<回车>,则以下程序的运行结果是

2ndclasspostageis14p。#include<stdio.h>intmain( ){charclass;printf(“Enter1for1stclasspostor2for2ndpost”);scanf(“%c”,&class);if(calss==’1’)printf(“1stclasspostageis19p”);elseprintf(“2ndclasspostageis14p”);return0;}7.若运行时输入

4.4<回车

>,则以下程序的运行结果是

SellingPrice(0.3)$

。#include<stdio.h>intmain( ){floatcostPr

温馨提示

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

评论

0/150

提交评论