1C语言一选择题(50个)1.在程序中可以用来作为变量名的合法的标识符是:_____AstaticB23_b1Cstu_1tD#332.下列运算符运算级别最高的是:_________A&&B+=C=D!3已知:charstr1,str2[10];选择正确的输入语句:________Ascanf(%s%c,&str1,str2);Bscanf(%s%s,&str1,str2);Cscanf(%c%c,&str1,str2);Dscanf(%c%s,&str1,str2);4选择正确的运行结果:_________#includestdio.hmain(){inta=1,b=10;do{a++;b-=a;b--;}while(b0);printf(a=%d,b=%d,a,b);}Aa=2,b=-1Ba=2,b=-2Ca=4,b=-1Da=4,b=-25.有一个二维数组s[3][4],其第2行第3列元素的正确表示是:________A*(*(s+2)+3)B*(s+2)+3Cs[2,3]Ds[3][2]6.以下正确的描述是:_________Acontinue语句的作用是终止整个循环的执行。Bcontinue语句的作用是结束本次循环的执行。Ccontinue语句和break语句都可以在switch语句中使用。Dbreak语句的作用是结束本次循环的执行。7.假定x和y为double型,则表达式x=2,y=x+3/2的值是DA)3.500000B)3C)2.000000D)3.0000008.C语言规定,数组名做实参时,它和对应形参之间的数据传递方式是:______A用户指定传递方式B无传递C单向值传递D地址传递9若有以下说明语句:structSTUDENT{intnum;charname[10];2floatcj;}a1={1001,”liming”,97.5},*p=&a1;不正确的输出语句是:_________Aprintf(“%f”,a1.cj);Bprintf(“%f”,p-cj);Cprintf(“%f”,(*p).cj);Dprintf(“%f”,*p.cj);10已知inta;则对指针变量正确的说明和初始化是:________Aint*p=a;Bintp=a;Cintp=&a;Dint*p=&a;11若有定义:intaa[8];则以下表达式中不能代表数组元aa[1]的地址的是A)&aa[0]+1B)&aa[1]C)&aa[0]++D)aa+112若有下面的说明和定义,则sizeof(structaa)的值是structaa{intr1;doubler2;floatr3;unionuu{charu1[5];longu2[2];}ua;}mya;A)30B)29C)24D)2213若有以下定义和语句:ints[4][5],(*ps)[5];ps=s;则对s数组元素的正确引用形式是A)ps+1B)*(ps+3)C)ps[0][2]D)*(ps+1)+314以下程序的输出结果是main(){intb[3][3]={0,1,2,0,1,2,0,1,2},i,j,t=1;for(i=0;i3;i++)for(j=i;j=i;j++)t=t+b[i][b[j][j]];printf(%d\n,t);}A)3B)4C)1D)915假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为A)log2nB)n2C)O(n1.5)D)n(n-1)/2316在说明语句:int*f();中,标识符f代表的是A)一个用于指向整型数据的指针变量B)一个用于指向一维数组的行指针C)一个用于指向函数的指针变量D)一个返回值为指针型的函数名17线性表L=(a1,a2,a3,…ai,…an),下列说法正确的是A)每个元素都有一个直接前件和直接后件B)线性表中至少要有一个元素C)表中诸元素的排列顺序必须是由小到大或由大到小D)除第一个元素和最后一个元素外,其余每个元素都有一个且只有一个直接前件和直接后件18以下程序的输出的结果是intx=3;main(){inti;for(i=1;i}ncre(){staicintx=1;x*=x+1;printf(%d,x);}A)33B)22C)26D)2519若以下定义:structlink{intdata;strucklink*next;}a,b,c,*p,*q;且变量a和b之间已有如下图所示的链表结构:abdatanextdatanext┌──┬──┐┌──┬──┐│5│┼──→│9│\0│└──┴──┘└──┴──┘↑pcdatanext┌──┬──┐│7││└──┴──┘↑q指针p指向变量a,q指向变量c。则能够把c插入到a和b之间并形成新的链表的语句组是:4A)a.next=c;c.next=b;B)p.next=q;q.next=p.next;C)q-next=p-next;p-next=&c;D)(*p).next=q;(*q).next=&b;20设有以下说明语句typedefstruct{intn;charch[8];}PER;则下面叙述中正确的是A)PER是结构体变量名B)PER是结构体类型名C)typedefstruct是结构体类型D)struct是结构体类型名21若有说明:inta[][4]={0,0};则下面不正确的叙述是A)数组a的每个元素都可得到初值0B)二维数组a的第一维大小为1C)当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小D)只有元素a[0][0]和a[0][1]可得到初值,其余元素均得不到确定的初值22以下叙述正确的是A)可以把define和if定义为用户标识符B)可以把define定义为用户标识符,但不能把if定义为用户标识符C)可以把if定义为用户标识符,但不能把define定义为用户标识符D)define和if都不能定义为用户标识符23若定义:inta=511,*b=&a;,则printf(%d\n,*b);的输出结果为A)无确定值B)a的地址C)512D)51124以下程序的输出结果是main(){inta=5,b=4,c=6,d;printf(%d\n,d=ab?(ac?a:c)b));}A)5B)4C)6D)不确定25以下程序中,while循环的循环次数是Dmain(){inti=0;while(i10){if(i1)continue;if(I==5)break;i++;}......}5A)1B)10C)6D)死循环,不能确定次数26以下程序的输出结果是main(){inta=0,i;for(i=;i5;i++){switch(i){case0:case3:a+=2;case1:case2:a+=3;default:a+=5;}}printf(%d\n,a);}A)31B)13C)10D)2027以下程序的输出结果是main(){inta=4,b=5,c=0,d;d=!a&&!b||!c;printf(%d\n,d);}A)1B)0C)非0的数D)-128有以下程序main(){chara[]={′a′,′b′,′c′,′d′,′e′,′f′,′g′,′h′,′\0′};inti,j;i=sizeof(a);j=strlen(a);printf(%d,%d\b,i,j);}程序运行后的输出结果是A)9,9B)8,9C)1,8D)9,829以下程序的运行结果是#defineMIN(x,y)(x)(y)?(x):(y)main(){inti=10,j=15,k;k=10*MIN(i,j);6printf(%d\n,k);}A)10B)15C)100D)15030以下程序的输出结果是intf(){staticinti=0;ints=1;s+=i;i++;returns;}main(){inti,a=0;for(i=0;i5;i++)a+=f();printf(%d\n,a);}A)20B)24C)5D)1531有如下程序intfunc(inta,intb){return(a+b);}main(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(%d\n,r);}该程序的输出的结果是A)12B)13C)14D)1532若有以下程序#includevoidf(intn);main(){voidf(intn);f(5);}voidf(intn){printf(%d\n,n);}7则以下叙述中不正确的是A)若只在主函数中对函数f进行说明,则只能在主函数中正确调用函数fB)若在主函数前对函数f进行说明,则在主函数和其后的其它函数中都可以正确调用函数fC)对于以上程序,编译时系统会提示出错信息:提示对对f函数重复说明D)函数f无返回值,所以可用void将其类型定义为无值型33有如下定义structperson{charname[9];intage;};structpersonclass[10]={John,17,paul,19,Mary,18,Adam,16,};根据上述定义,能输出字母M的语句是A)printf(%c\n,class[3].name);B)printf(%c\n,class[3].name[1]);C)printf(%c\n,class[2].name[1]);D)printf(%c\n,class[2].name[0]);34以下程序的输出结果是main(){charch[3][5]={AAAA,BBB,CC};printf(\%s\\n,ch[1]);}A)AAAAB)BBBC)BBBCCD)CC35在C语言中,形参的缺省存储类是A)autoB)registerC)staticD)extern36以下程序执行后a的值是main(){intx,y=252,i=386,*m=&y,*z=&i;x=(z==y);printf(%d,x);}A)252B)1C)0D)运行时出错,x无定值37下列程序的输出结果是structabc{inta,b,c,s;};main(){structabcs[2]={{1,2,3},{4,5,6}};intt;t=s[0].a+s[1].b;printf(%d\n,t);}8A)5B)6C)7D)838若要打开A盘上user子目录下名为abc.txt的文本文件进行读、写操作,下面符合此要求的函数调用是A)fopen(A:\user\abc.txt,r)B)fopen(A:\\user\\abc.txt,r+)C)fopen(A:\user\abc.txt,rb)C)fopen(A:\\user\\abc.txt,w)39若有定义:char*st=howareyou;下列程序段中正确的是A)chara[11],*p;strcpy(p=a+1,&st[4]);B)chara[11];strcpy(++a,st);C)chara[11];strcpy(a,st);D)chara[],*p;strcpy(p=&a[1],st+2);40下列程序的运行结果是voidfun(int*a,int*b){int*k;k=a;a=b;b=k;}main(){inta=3,b=6,*x=&a,*y=&b;fun(x,y);printf(%d%d,a,b);}A)63B)36C)编译出错D)0041.下列用于printf函数的控制字符常量中,代表竖向跳格的转义字符常量是A)\bB)\tC)\vD)\f42.设变量n为float类型,m为int类型,则以下能实现将n中的数值保留小数点后两位,第三位进行四舍五入运算的表达式是A)n=(n*100+0.5)/100.0B)m=n*100+0.5,n=m/100.0C)n=n*100+0.5/100.0D)n=(n/100+0.5)*100.0943设x,y和z都是int型变量,且x=3,y=4,z=5,则下面表达式中,值为0的表达式是A)x&&yB)x=yC)x||++y&&y-zD)!(x)44设有程