1高级语言程序设计(C)模拟试题二一、单项选择题(每题3分,合计60分)1.自定义标识符中,符合C语言规定的是。A.forB.3aC.*aD._1232.为表示关系100≥x≥10,应使用C语言表达式。A.(100=x)&&(x=10)B.(100=x)AND(x=10)C.(100=x=10)D.(100=x)&(x=10);3.定义inta;floatf;doublei;表达式15+i*f+ˊAˊ的值是。A.floatB.intC.charD.double4.下面程序要求从键盘上输入值并打印,请选择正确的输入方法。main(){inta,b;scanf(x=%d,y=%d,&x,&y);printf(x=%d,y=%d\n,x,y);}A.5,6B.x=5,y=6C.5↙6D.565.定义如下变量和数组:inti;intx[3][3]={1,2,3,4,5,6,7,8,9};则下面语句的输出结果是。for(i=0;i3;i++)printf(%d,x[i][2-i]);A.159B.147C.357D.3696.在定义了inta[3][2];之后,对a的引用正确的是。A.a[3][2]B.a[3][0]C.a[0][0]D.a[0,0]7.执行以下程序段后,m的值为。inta[2][3]={{1,2,3},{4,5,6}};intm,*p;p=&a[0][0];m=(*p)+(*(p+2))+(*(p+4));A.9B.8C.7D.628.若有以下定义和语句,则输出结果是。chars1=12345,s2=1234printf(%d\n,strlen(strcpy(s1,s2)));A.4B.5C.9D.109.有一函数关系见下表:xy=x0x-1x=0xx0x+1下面程序中能正确表示上面关系的是。A.y=x+1;B.y=x-1;if(x=0)if(x!=0)if(x==0)y=x;if(x0)y=x+1;elsey=x-1;elsey=x;C.if(x=0)D.y=x;if(x0)y=x-1;if(x=0)elsey=x;if(x0)y=x-1;elsey=x+1;elsey=x+1;10.以下正确的程序段是。A.charstr[2];B.char*p;scanf(%s,&str);scanf(%s,p);C.charstr[20];D.charstr[20],*p=str;scnaf(%s,&str[2]);scanf(%s,p[2]);11.以下正确的函数定义形式是。A.doublefun(intx,inty)B.doublefun(intx;inty)C.doublefun(intx,inty);D.doublefun(intx,y);12.以下有关宏替换不正确的是。A.宏替换不占用运行时间B.宏名无类型C.宏替换只是字符替换D.宏名必须用大写字母表示313.有如下语句inta=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示。若要实现图2所示的存储结构,可选用的赋值语句是。A.*p1=*p2;B.p1=p2;C.p1=*p2;D.*p1=p2;14.设char*s=\ta\018bc;则指针变量s指向的字符串所占的字节数是。A.9B.5C.6D.715.以下程序的输出结果是。#includestdio.h#includestring.hmain(){char*s1=AbCbEf,*s2=AB;s1++;s2++;printf(%d\n,strcmp(s1,s2));}A.正数B.负数C.零D.不确定的值16.以下一维数组a的正确定义是。A.inta(10);B.intn=10,a[n];C.intn;D.#defineSIZE10scanf(%d,&n);inta[SIZE];inta[n];17.若有定义:inta[2][3];则对a数组中第i行第j列元素地址的正确引用为。A.*(a[i]+j)B.(a+i)C.*(a+j)D.a[i]+j18.以下程序段的输出结果是。p1p2p1p2a1020ba1020b图1图24main(){intn[3],i,j,k;for(i=0;i3;i++)n[i]=0;k=2;for(i=0;ik;i++)for(j=0;jk;j++)n[j]=n[i]+1;printf(%d\n,n[1]);}A.2B.1C.0D.319.以下程序输出的结果是。intd=1;fun(intp){intd=5;d+=p++;printf(%d,d);}main(){inta=3;fun(a);d+=a++;printf(%d\n,d);}A.84B.96C.94D.8520.若有以下说明和语句:structstudent{intnumber;char*name;}stu1,*p=&stu1;则以下引用方式不正确的是和。A.stu1-numberB.(*p).numberC.p-numberD.stu1.numberE.*p.number5二、填空题(每题2分,合计20分)1.C程序是由构成的,其编译是以为单位进行的。2.设a为int型变量,请写出描述a是奇数的表达式3.若数组a有m列,则a[i][j]之前的数组元素个数为。4.请读程序片段:charstr[]=english,*p=str;printf(%s\n,*(p+3));上面程序片段的输出结果是。5.执行下面的程序段后,k值为。k=1;n=263;do{k*=n%10;n/=10;}while(n);6.变量的作用域是指变量的有效范围。按作用域变量可分为变量和变量两大类。。7.设有程序片段:switch(ch){caseˊAˊ:printf(85-100\n);caseˊBˊ:printf(70-84\n);caseˊCˊ:printf(60-69\n);caseˊDˊ:printf(60\n);default:printf(error!\n);}若ch的值为ˊDˊ,则输出结果是。8.下面程序的功能是在三个字符串中找出最小的,请填空:#includestdio.h#includestring.hmain(){chars[20],str[3][20];inti;for(i=0;i3;i++)gets(str[i]);6strcpy(s,);if(strcmp(str[2],s)0)strcpy(s,str[2]);printf(%s\n,);}9.写出下列两种指针的定义:指针p1为指向整型数据的指针;p2为指向字符串Iamastudent的指针。10.在一个源文件中定义的局部变量的作用域为。三、阅读程序,按要求完成各题。(20分)1.以下程序的功能是:利用函数求出用户输入的5个float型数据的平均值,请填空。(4分)floatfunc(floata[],intn){inti;floatsum=0.0,ave;for(i=0;;i++)sum=;ave=;return();}main(){inti;floata[5],average;for(i=0;i5;i++)scanf(%f,&a[i]);average=func(a,5);printf(Theaverageoffivefloatis:%f\n,average);}2.下面程序是将数组a的内容逆置重放。请填空:(6分)7main(){inta[8],i,j,t;printf(Input8numbertothearray:\n);for(i=0;i8;i++)scanf(%d,);for(i=0;i=3;i++){j=;t=a[i];a[i]=a[j];;}printf(\nThearrayhasbeeninvered:);for(i=0;i8;i++)printf(%d,a[i]);}3.以下程序的功能是:从键盘输入两个字符串,利用函数比较其是否相等,若相等返回1,否则返回0。(6分)f(chars[],chart[]){inti=0;while(s[i]==t[i]&&s[i]!=ˊ\0ˊ);if(s[i]==ˊ\0ˊ&&)return(1);else;}main(){chara[6],b[7];inti;scanf(%s%s,a,b);i=f(a,b);printf(%d\n,i);}4.输入一整数x,在数组a中查找x第一次出现的位置。请填空。(4分)#includestdio.hmain()8{inta[10]={10,24,34,55,9,17,87,22,9,19},x,i;printf(“Inputaninteger:”);scanf(,&x);for(i=0;;i++)if()break;if()printf(Notfound.\n);elseprintf(Positionis:%d\n,i);}参考答案一.选择题1.D2.A3.D4.B5.C6.C7.A8.A9.C10.B11.A12.D13.B14.D15.A16.D17.D18.D19.A20.A、E二.填空题1.函数,文件2.a%2!=0(或a%2==1)3.i*m+j4.lish5.366.全局局部7.60error!8.(strcmp(str[0],str[1])0?str[0]:str[1])s9.int*p1;char*p2=Iamastudent;10.该变量所在的函数9三.阅读程序1.insum+a[i]sum/nave2.&a[i]8-i-1a[j]=t3.i++t[i]==ˊ\0ˊreturn(0)4.%di10a[i]==xi=10