您好,欢迎访问三七文档
当前位置:首页 > 机械/制造/汽车 > 汽车理论 > 2009_C语言试题B卷及答案
1计算机技术基础试卷B评分标准及标准答案一、单项选择题(共20分,每小题1分)1.以下可用作C语言用户标识符的一组标识是C。A.voiddefineWORDB.a3-3_123ifC.For_abcCaseD.2aDOsizeof2.以下叙述错误的是D。A.一个C源程序可由一个或多个函数组成B.一个C源程序必须包含一个main函数C.C源程序的基本组成单位是函数D.在C源程序中,注释说明只能位于一条语句的后面3.错误的int类型的常量是A。A.32768B.0C.037D.0xAF4.下列变量名中合法的是C。A.B.C.TomB.3a6bC._6a7bD.$ABC5.字符串常量“BB\n\\\’\r”在内存中占的字节数是B。A.6B.7C.8D.96.下列运算符中,哪个运算符的优先级最高B。A.=B.+C.||D.=7.设intx=1,y=1;表达式(!x||y--)的值是BA.0B.1C.2D.-18.C语言中,关于自增和自减运算符使用正确的是C。A.10++B.(x+y)++C.d+++d+++d++D.++(a-b)9.已有定义:intx=3,y=5,z=5,则表达式!(x+y)+z-1&&y+z/2的值是D。A.6B.0C.2D.110.以下能正确表达x的取值范围在[15,80]或[-5,-1]内的表达式是B。A.(x=-5)||(x=-1)&&(x=15)||(x=80)B.(x=-5)&&(x=-1)||(x=15)&&(x=80)C.(x=-5)||(x=-1)&&(x=15)||(x=80)D.(x=-5)&&(x=-1)&&(x=15)&&(x=80)211.以下程序的输出结果是B。#includestdio.hvoidmain(){intx=2,y=-1,z=2;if(xy)if(y0)z=0;elsez+=1;printf(“%d\n”,z);}A.3B.2C.1D.012.有如下程序:#includestdio.hvoidmain(){intx=1,a=0,b=0;switch(x){case0:b++;case1:a++;case2:a++;b++;}printf(“a=%d,b=%d\n”,a,b);}该程序的输出结果是:A。A.a=2,b=1B.a=1,b=1C.A=1,b=0D.A=2,b=213.以下程序的执行结果是D。#includestdio.hvoidmain(){intk,j,s;for(k=2;k6;k++,k++){s=1;for(j=k;j6;j++)s+=j;}printf(“%d\n”,s);}A.9B.1C.11D.1014.以下能正确计算10!的程序段是C。3A.10);while(i};ii;*ss1;s1;i{doB.10);}while(i;ii;*ss0;s1;i{doC.10);}while(i;i;*{;1;1issdosiD.10);}while(i;i;*{;0;1issdosi15.以下程序的功能是:按顺序读入10名学生的4门课程成绩,计算出每位学生的平均分并输出,程序如下:#includestdio.hvoidmain(){intn,k;floatscore,sum,ave;sum=0.0;for(n=1;n=10;n++){for(k=1;k=4;k++){scanf(“%f”,&score);sum+=score;}ave=sum/4.0;printf(“No%d:%f\n”,n,ave);}}上述程序运行后结果错误,调试时发现有一条语句出现在程序中的位置错误,这条语句是:A。A.sum=0.0;B.sum+=score;C.ave=sum/4.0;D.printf(“No%d:%f\n”,n,ave;16.以下合法的数组定义是D。A.ints[]=”china”;B.ints[2]={0,2,4};C.chars=”china”;D.chars[]={“0,1,2,3,4,5”};17.设已有定义:char*st=”howareyou”;下列程序段错误的是:B。A.chara[11],*p;strcpy(p=a+1,&st[4]);B.chara[11];strcpy(++a,st);C.chara[11];strcpy(a,st);D.chara[11],*p;strcpy(p=&a[1],st+2);18.若有说明语句:intx[3][4];则以下关于x、*x、x[0]、&x[0][0]在正确描述是A。A.x、*x、x[0]、&x[0][0]均表示元素x[0][0]的地址B.只有x、x[0]、&x[0][0]表示的是元素x[0][0]的地址4C.只有x[0]、&x[0][0]表示的是元素x[0][0]的地址D.只有&x[0][0]表示的是元素x[0][0]的地址19.阅读以下函数:fun(char*s1,char*s2){inti=0;while(s1[i]!=’\0’&&s2[i]!=’\0’&&s1[i]==s2[i])i++;return(s1[i]==’\0’&&s2[i]==’\0’)}此函数的功能是C。A.将s2所指字符串赋给s1所指的字符串B.比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0C.比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0D.比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为020.若有说明语句:inti,x[3][4];则不能将x[1][1]的值赋给变量i的语句是:C。A.i=*(*(x+1)+1)B.i=x[1][1];C.i=*(*(x+1));D.i=*(x[1]+1);二、填空题(共15分,每空1分)1.程序的三种基本控制结构是顺序结构、选择结构和循环结构。2.C程序编译后生成目标程序。3..在C语言中,八进制整数常量以0开头,十六进制整数常量以0x开头。4.设y是int型变量,描述“y是奇数”的表达式是y%2==1或y%2!=0。5.设m是一个三位数,从左至右各位的数字是a,b,c,则a=m/100,b=(m/10)%10,c=m%10。6.若fp已正确定义为一个文件指针,data.dat为二进制文件,请填空,以便为“读”而打开此文件:fp=fopen(“data.dat”,“rb”);7.数据块输入函数fread的一般使用格式为:fread(buf,size,count,fp);其中,count用来指定读入size数据块的次数。8.若chart[30],f[30]=”MerryChristmas”;则strcpy(t,f,5);t[5]=’\0’;printf(“%s”,t);的结果是Merr。9.声明int*a,b[10];语句a=b;以a来表示b[5]的语句为*(a+5)或a[5]。10.声明float*p,a=10.2;如何让p指向a?p=&a。二、阅读题(共25分,每题5分)1.下列程序计算2-100的偶数的累加和,请填空。#includestdio.hvoidmain()5{inti,sum=0;for(i=2;i=100;i++)sum+=i;printf(“sum=%d\n”,sum);}2.有如下程序:#includestdio.hvoidmain(){charch[2][5]={“6937”,“8254”};*p[2];inti,j,s=0;for(i=0;i2;i++)p[i]=ch[i];for(i=0;i2;i++)for(j=0;p[i][j]!=’\0’;j+=2)s=10*s+p[i][j]-‘0’;printf(“%d\n”,s);}该程序的输出结果是63853.以下程序实现从10个数中找出最大值和最小值,请填空。#includestdio.hvoidmain(){inta[]={6,1,5,2,3,9,10,4,8,7},*p=a,*q;intn=10,max,min;max=min=*p;for(q=p;qp+n;q++)if(*qmax)max=*q;elseif(*qmin)min=*q;printf(“max=%d,min=%d\n”,max,min);}4.有如下程序#includestdio.hintfunc(inta,intb){return(a+b);}voidmain(){intx=2,y=5,z=8,r;r=func(func(x,y),z);printf(“%d\n»,r);}执行后输出结果是15。65.有以下程序:includestdio.hvoidmain(){FILE*fp;inti=20,j=30,k,n;fp=fopen(“d1.dat”,“w”);fprintf(fp,“%d\n”,i);fprintf(fp,“%d\n”,j);fclose(fp);fp=fopen(“d1.dat”,“r”);fscanf(fp,“%d%d”,&k,&n);printf(“%d%d\n”,k,n);fclose(fp);}程序运行后的输出结果是2030。五、编程题(共40分,每题10分)1.请设计一程序输入下列字符串A123B456C789D0X,将此字符串中的数字与非数字分离出来,得1234567890与ABCDX.程序示例:#includestdio.hvoidmain(){charstr[20],s1[10],s2[10];inti,j,k;scanf(“%s”,str);k=0;i=0;j=0;while(str[k]!=’\0’){if(str[k]=’A’&&str[k]=’Z’){s1[i]=str[k];i++;}elseif(str[k]=’0’&&str[k]=’9’){s2[j]=str[k];j++;}k++;}s1[i]=’\0’;s2[j]=’\0’;printf(“%s\n%s\n”,s1,s2);}2.设计一个完整程序,至少包含一个函数,打印下面图形:1121237123412345程序示例:#includestdio.hvoidmain(){inti,j;for(i=1;i5;i++){for(j=1;j=i;j++)printf(“%c”,j+’0’);//printf(“%d”,j);printf(“\n”);}}3.(与第4题任选一题)设计一程序求两矩阵相乘后将数据放入第三矩阵。设a矩阵为m行n列,b矩阵为n行p列,则相乘后c矩阵为m行p列,如图所示:C[0][0]=a[0][0]*b[0][0]+a[0][1]*b[1][0]+a[0][2]*b[2][0]=14C[0][1]=a[0][0]*b[1][0]+a[0][1]*b[1][1]+a[0][2]*b[2][1]=10其余类推。数学公式为:nkjkbkiajic0]][[*]][[]][[程序示例:#includestdio.hvoidmain(){inta[3][3]={{1,2,3},{2,1,4},{0,3,5}};intb[3][4]={{14,10,6,13},{16,8,6,12},{21,3,8,17}};intc[3][4];inti,j,k;for(i=0;i3;i++)for(j=0;j4;j++){c[i][j]=0;for(k=0;k3;k++)c[i][j]+=a[i][k]*b[k][j];}for(i=0;i3;i++)8{for(j=0;j4;j++)printf(“%4d“,c[i][j]);printf(“\n”);}}4.(与第3道编程题任选一题)请编写函数voidfun(int*a,int*n),它的功能是:求出1到1000之内能被7或11整除但不能同时被7和11整除的所有整数放在数组a中,通过n返回这些数的个数。并将结果存入
本文标题:2009_C语言试题B卷及答案
链接地址:https://www.777doc.com/doc-3087122 .html