1福建省C语言二级考试模拟试卷之三一、选择题。(本大题共40个选项,【1】~【40】每个选择项1.5分,共60分)1.属于实型常量的是【1】。【C】A)'A'B)120C)120D)1E-12.已知字符“A”的ASCII代码值是65,字符变量c1的值是'A'、c2的值是'D'。执行语句“printf(%d,%d,c1,c2-2);后,输出结果是【2】。【D】A)A,BB)A,68C)65,68D)65,663.设单精度型变量f、g均为5.0,使f为10.0的表达式是【3】。【A】A)f+=gB)f-=g+5C)f*=g-15D)f/=g*104.表达式“1?(0?3:2):(10?1:0)”的值为【4】。【B】A)3B)2C)1D)05.设实型变量f1、f2、f3、f4的值均为2,整型变量m1、m2的值均为1。表达式“(m1=f1=f2)&&(m2=f3f4);”的值是【5】。【A】A)0B)1C)2D)出错6.设有单精度变量f,其值为13.8。执行语句“n=((int)f)%3;”后,整型变量n的值是【6】。【A】A)1B)4C)4.333333D)4.67.整型变量a、b、c分别为2、3、4,运算表达式“a*=16+(b++)-(++c)”后,a的值是【7】,b的值是【8】,c的值是【9】。【D】A)31B)30C)29D)28【C】A)2B)3C)4D)5【C】A)-5B)-4C)5D)48.若w=1,x=2,y=3,z=4,则条件表达式wx?w:(yz?y:z)的结果为【10】。【D】A)4B)3C)2D)19.执行下列语句后,a的值是【11】。inta=8;a+=a-=a*a;【D】A)-240B)64C)112D)-11210.执行下列语句后,m的值是【12】,n1的值是【13】,n2的值是【14】。intm,n1,n2;m=(n1=n2=10,n1*10,n1++,n2+=n1);【D】A)10B)100C)110D)21【C】A)10B)100C)11D)101【D】A)10B)20C)110D)2111.为了避免嵌套的条件分支语句if~else的二义性,C语言规定,C程序中的else总是与【15】组成配对关系。【C】A)缩排位置相同的ifB)在其之前未配对的ifC)在其之前未配对的最近的ifD)同一行上的if12.下列程序的执行结果是输出【16】。2x=3;do{printf(%d,x--);(先输出再自减)}while(!x);【B】A)321B)3C)21D)21013.以下程序输出的结果为【17】。#includestdio.hmain(){chars1[6],s2[6],s3[6],s4[6];scanf(%s%s,s1,s2);gets(s3);gets(s4);puts(s1);puts(s2);puts(s3);puts(s4);}上面的程序运行时输入数据如下:aaabbbCRcccdddCR【A】A)aaaB)aaabbbbbbccccccddddddC)aaaD)aaabbbbbbccccccdddddd14.若有以下定义和语句,且0=i5,则【18】是对数组元素地址的正确表示。inta[]={1,2,3,4,5},*p,i;p=a;【D】A)&(a+i)B)a++C)&pD)&p[i]15.设有以下程序:#includestdio.hmain(){int**p,*p1,i=10;p1=&i;p=&p1;printf(%d\n,**p);}上面的程序的输出结果是【19】。【A】A)10B)I的地址C)p1的地址D)运行错误16.在以下定义中,标识符p【20】。int(*p)[3];【20】A)定义不合法3B)是一个指针数组名,每个元素是一个指向整数变量的指针C)是一个指针,它指向一个具有三个元素的一维数组D)是一个指向整型变量的指针17.以下程序的输出结果是【21】。#includestdio.hmain(){inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;for(i=0;i4;i++)p[i]=&a[i*3];printf(%d\n,p[3][2]);}【21】A)输出项不合法,输出结果不定B)6C)8D)1218.程序中若有以下定义和语句,则【22】中表示的都是a数组元素的地址,程序中的0=i4,0=j3。main(){inta[4][3]=0,*p[4],**pa,i,j;for(i=0;i4;i++)p[i]=a[i];pa=p;···}【22】A)&a[i][j],p[i]+j,pa[i][j]B)*(pa+i)+j,p[i],*(p+i)+jC)&a[i],&p[i],*(*(pa+i)+j)D)**pa,a,p19.sizeof(int)是【23】。【C】A)一个整型表达式B)一个不合法的表达式C)一种函数调用D)一条语句20.#includestdio.hstaticinta=5;main(){printf(a=%d\n,a);p1();p2();}p1(){printf(a*a=%d\n,a*a);a=8;return;4}p2(){printf(a*a*a=%d\n,a*a*a);return;}程序运行结果题:【24】。【24】A)a=5B)a=5a*a=25a*a=25a*a*a=125a*a*a=512C)a=5D)a=8a*a=64a*a=64a*a*a=512a*a*a=51221.执行以下程序段后,s的值为:【25】。staticinta[]={1,3,5,7,9};inty,x,*ptr;y=1;ptr=&a[1];for(x=0;x3;x++)y*=*(ptr+x);【25】A)105B)15C)945D)无定值22.有宏定义:#defineMULT1(a,b)a*b#defineMULT2(a,b)(a)*(b)在后面的程序中有宏引用:y=MULT1(3+2,5+8);z=MULT2(3+2,5+8);则y和z的值是【26】。【26】A)y=65,z=65B)y=21,z=65C)y=65,z=21D)y=21,z=2123.若x是int型变量,则执行以下语句后的结果是:【27】。for(x=1;x=100;x++)if(++x%2==0)if(++x%3==0)if(++x%5==0)printf(%d,x);【27】A)306090B)295989C)不打印任何内容D)31619124.以下不正确的描述为【28】。【28】A)调用函数时,实参可以是表达式。B)调用函数时,实参与形参可以共用内存单元。-C)调用函数时,将为形参分配内存单元。D)调用函数时,实参与形参的类型必须一致。25—A.C语言中函数返回值的类型是由【29】决定的。【29】-A)return语句中的表达式类型5B)调用该函数的主调函数类型C)调用函数时临时D)定义函数时所指定的函数类型26.函数calloc(64,16)的功能是:【30】。【30】A)开辟16个长度为64字节的连续存储空间,共占1K字节。B)开辟64个长度为16字节的连续存储空间,共占1K字节。C)释放64个长度为16字节的连续存储空间,共1K字节。D)释放16个长度为16字节的连续存储空间,共1K字节。27.设定义星期的枚举类型变量如下:enumworkday{mon,tue,wed,thu,fri}enumworkdaydate1,date2;则下面错误的赋值语句是:【31】。【31】A)date1=sunB)date2=monC)date1=date2D)date1=fri28.完成将文件指针fp重新指向文件的开头位置的函数是:【32】。【32】A)fseek(fp)B)ftell(fp)C)rewind(fp)D)feof(fp)29.下列程序正确的运行结果为【33】。#includestdio.hmain(){staticinta[]={2,6,10,14,18};static*ptr[]={&a[0],&a[1],&a[2],&a[3],&a[4]};int**p,i;for(i=0;i5;i++)a[i]=a[i]/2+a[i];p=ptr;printf(%d\n,*(*(p+2)));printf(%d\n,*(*(++p)));}【33】A)15B)3C)21D)9927152130.下列程序正确的运行结果为【34】。#includestdio.hmain(){intj=4;m=1,k;k=fun(j,m);printf(%d,k);k=fun(j,m);printf(%d\n,k);}fun(x,y)intx,y;{staticintm=0,i=2;6i+=m+1;m=i+x+y;return(m);}【34】A)8,20B)8,8C)8,17D)8,1631.若运行下列程序时,输入以下指定数据,则正确的运行结果为【35】。#includestdio.hmain(){ints;while((s=getchar())!='\n'){switch(s-'2'){case0:case1:putchar(s+4);case2:putchar(s+4);break;case3:putchar(s+3);case4:putchar(s+2);break;default:putchar(s+2);}}printf(\n);}输入数据(第1列):2473回车【35】A)446955B)448966C)668966D)66897732.若有定义:enumweekday{mon,tue,wed,thu,fri}workday;则【36】是不正确的语句。【36】A)workday=(enumweekday)3;B)workday=(enumweekday)(4-2);C)workday=3;D)workday=thu;33.设有以下语句:structs{inti1;structs*i2;};staticstructsa[3]={5,&a[1],7,&a[2],9,'\0'},*ptr;ptr=&a[0];则以下表达式【37】的结果是6。【37】A)ptr-i1++B)ptr++-i1C)*ptr-i1D)++ptr-i134.以下函数ABC的功能是【38】。ABC(ps)char*ps;{char*p;7p=ps;while(*p++);return(p-ps);}【38】A)比较两个字符串的大小B)求字符串的长度C)将串ps复制到串p中D)以上三种说法都不对35.以下程序段的输出为【39】。staticchara[]=Basic;char*ptr;for(ptr=a;ptra+5;ptr++)printf(%s\n,ptr);【39】A)BasicB)BasicasicsiciccC)cD)BasicicsicasicBasic36.以下程序段的输出为【40】。staticchara[]=language,b[]=programe;char*ptr1,*ptr2;intk;ptr1=a;ptr2=b;for(k=0;k7;k++)if(*(ptr1+k)==*(ptr2+k)))printf(%c,*(ptr1+k));【A】A)gaeB)gaC)languageD)有语法错误二、请正确填充下面的过程或程序的划线部分,使其完成所要求的功能:(本大题共20个空,每个空2分,共40分。请将答案写在答题卡对应栏中,答在试卷上不得分)一、用递归函数计算n!的程序。f(n)intn;{if(n==1)return(【1】);elsereturn(【2】);8}#includestdio.hmain(){intnn;nn=f(4);printf(4!=%d\n,nn);}二、填上正确的内容,使程序运行结果为:4321。#includestdio.hmain(){inta[]={1