您好,欢迎访问三七文档
当前位置:首页 > 高等教育 > 习题/试题 > C语言程序设计-海滨学院期末考试试卷(2010-2011-第二学期)(A)
共9页-第1页北京交通大学海滨学院考试试题(A卷)课程名称:C语言程序设计2010-2011学年第二学期出题教师:计算机教学组专业:班级:姓名:学号:答题说明:本试卷共有六道大题,要求所有解答均写在答题卡上,否则无效。上交试卷时按照发试卷时候的顺序整理试卷,平铺展开上交。一、选择题(本题共30道题目,每题1分,共30分)1.以下叙述正确的是()。A)在C程序中,每行中只能写一条语句。B)若a是实型变量,C程序中允许赋值a=10,因此实型变量中允许存放整型数。C)在C程序中,无论是整数还是实数,都能被准确无误地表示。D)在C程序中,%作为运算符时只能用于整数运算。2.以下说法错误的是()。A)高级语言都是用接近人们习惯的自然语言和数学语言作为语言的表达形式。B)计算机只能处理由0和1的代码构成的二进制指令或数据。C)C语言源程序经过C语言编译程序编译之后生成一个后缀为.EXE的二进制文件。D)每一种高级语言都有它对应的编译程序。3.以下不是构成合法标识符的成分是()。A)字母B)数字C)标点符号D)下划线4.C语言中运算对象必须是整型的运算符是()。A)%=B)/C)=D)=5.若变量已正确定义并赋值,以下符合C语言语法的表达式是()。A)a:=b+1B)a=b=c+2C)int18.5%3D)a=a+7=c+b6.设变量a是int型,f是float型,i是double型,则执行表达式10+′a′+i*f/a之后,变量a的数据类型为()。A)intB)floatC)doubleD)不确定7.不能进行++和--运算的数据类型为()。A)指针B)整型C)长整型D)常量8.已知inta=4;则执行a+=a-=a*a;语句后,a的值为()。共9页-第2页A)36B)0C)-24D)-609.若变量已正确说明为float型,要通过语句scanf("%f%f%f",&a,&b,&c);如果使变量a的值为10.0,变量b的值为22.0,变量c的值为33.0,则下列不正确的输入形式是()。A)10回车22回车33回车B)10.0,22.0,33.0回车C)10.0回车22.033.0回车D)1022回车33回车10.设有intx=14;则表达式(x++*1/3)的值是()。A)4B)5C)14D)1511.设a为整型变量,不能确定表达数学关系10a15的为C语言表达式是()。A)10a15B)a==11||a==12||a==13||a==14C)a10&&a15D)!(a=10)&&!(a=15)12.为了避免嵌套的条件分支语句if--else中的else总是与()组成成对关系。A)缩排位置相同的B)在其之前未配对的ifC)在其之前未配对的最近的ifD)在同一行上的if13.有以下程序段,执行后输出结果是()。inti=1,j=1,k=2;if((j++||k++)&&i++)printf(%d,%d,%d,i,j,k);A)1,1,2B)2,2,1C)2,2,2D)2,2,314.请阅读以下程序段,则()。inta=0,b=0,c=0;if(a=b+c)printf(***\n);elseprintf($$$\n);A)有语法错不能通过编译B)可以通过编译但不能通过连接C)输出***换行D)输出$$$换行15.设变量已正确定义,则以下能正确计算f=n!的程序段是()。A)f=0;for(i=1;i=n;i++)B)f=1;for(i=1;i=2;i--)f*=i;C)f=1;for(i=n;i1;i++)D)f=1;for(i=n;i=2;i--)f*=i;16.下面有关for循环的正确描述是()。A)for循环只能用于循环次数已经确定的情况B)for循环是先执行循环体语句,后判断表达式C)在for循环中,不能用break语句跳出循环体共9页-第3页D)for循环的循环体语句中,可以包含多条语句,但必须用花括号括起来17.以下能正确定义且赋初值的语句是()。)intn1=n2=10;B)charc=32;)floatf=f+1.1;D)doublex=12.3E2.5;18.下列字符数组长度为5的是()。(A)chara[]={‘h’,‘a’,‘b’,‘c’,‘d’};(B)charb[]={‘h’,‘a’,‘b’,‘c’,‘d’,‘\0’};(C)charc[10]={‘h’,‘a’,‘b’,‘c’,‘d’};(D)chard[6]={‘h’,‘a’,‘b’,‘c’,‘\0’}19.有以下程序段,程序运行后的输出结果是()。)44B)33C)34D)43charp[]={'a','b','c'},q[]=abc;20.有以下程序段,执行后的输出结果是()。A)753B)357C)369D)751inti,t[][3]={9,8,7,6,5,4,3,2,1};for(i=0;i3;i++)printf(“%d”,t[2-i][i]);21.已有定义intk=2;int*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值语句是()。A)k=*ptr1+*ptr2;B)ptr2=k;C)ptr1=ptr2;D)k=*ptr1*(*ptr2);22.下面程序段的运行结果是()。char*s=abcde;s+=2;printf(%s,s);A)cdeB)字符'c'C)字符'c'的地址D)无确定的输出结果23.函数调用过程,如果函数funA调用了函数funB,函数funB又调用了函数funB,则()。A)称为函数的直接递归调用B)称为函数的间接递归调用C)称为函数的循环调用D)C语言中不允许这样的递归调用24.若有inta[10],*p=a;则p+5表示()。A)元素a[5]的地址B)元素a[5]的值C)元素a[6]的地址D)元素a[6]的值25.以下叙述中正确的是()。A)全局变量说明为static存储类,其作用域将被扩大共9页-第4页B)局部变量说明为static存储类,其生存期将得到延长C)任何存储类的变量在未赋初值时,其值都是不确定的D)形参可以使用的存储类说明符与局部变量完全相同26.以下能正确定义二维数组的是()。(A)inta[][4];(B)inta[][4]=2{2*3};(C)inta[][4]={};(D)inta[4][4]={{1},{2},{3,4}};27.在调用函数时,如果实参是简单变量,它与对应形参之间的数据传递方式是()。地址传递B)单向值传递由实参传给形参,再由形参传回实参D)传递方式由用户指定28.以下程序的输出结果是()。#includestdio.h#includestring.hmain(){charst[20]=“hello\0\t\\”;printf(%d%d,strlen(st),sizeof(st));}A)99B)520C)1320D)202029.C语言结构体类型变量在程序执行期间()。A)所有成员一直驻留在内存中B)只有一个成员驻留在内存中C)部分成员驻留在内存中D)没有成员驻留在内存中30.以下程序的输出结果是()。strucSTU{charname[10];intnum;};voidf1(structSTUc){structSTUb={“LiSiGuo”,2043};c=b;}main(){structSTUa={“YangSan”,2041};f1(a);printf(“%s,%d”,a.name,a.num);}执行后的输出结果是A)YangSan,2041B)YangSan,2043C)LiSiGuo,2041D)LiSiGuo,2043二、填空题(本题共10个空,每空1分,共10分)共9页-第5页1.在内存中,存储字符’x’要占用1个字节,存储字符串″X″要占用个字节。2.C语言中,语句的作用是继续程序中的下一个循环。3.字符串存储时,末尾被系统自动加上字符。4.若有定义inta[3][3]={1,2,3,4,5};则a[2][1]的值为。5.在C语言中,形参的缺省存储类是。6.C语言中,数组在内存中占一片的区域,由代表它的首地址。7.若有定义语句intb[10],*p=b;在程序中引用数据元素b[i]的四种形是:,,和x[i](假设i已正确说明并赋值)。三、判断题(本题共13个题,每题1分,共13分。对的画对号,错的画叉号)1.在C程序中,else的个数不能多于if的个数。()2.变量的指针就是变量的地址。()3.假设intx=10/3,则x的取值为3.333333333333。()4.一个C程序可以有很多个函数。()5.定义数组时,数组长度可以是变量。()6.运行语句inta=0;while(++a)printf(“%d”,a);可以输出变量a的值。()7.指针变量不可以作为函数的参数。()8.语句charch=’\n’;是正确的定义初始化语句。()9.运行语句staticinta;printf(”%d”,a);无法输出结果,因为a没有赋值。()10.break语句则是结束整个循环过程,不再判断执行循环的条件是否成立。()11.数据类型的转换分为两种:一种属自动转换,另一种是强制转换。()12.数组名可以作函数的参数,传递的是数组的第一个元素的内存地址。()13.任何算法都必须有至少一个输入数据。()四、写出程序的运行结果(本题共3道题目,每题3分,共9分)1.有以下程序段,运行后的输出结果是。intk=5,n=0;while(k0){switch(k){default:break;case1:n+=k;case2:共9页-第6页case3:n+=k;}k--;}printf(%d,n);2.有以下程序,运行后的输出结果是。#includestdio.hintfun(intn){if(n==1)return1;elsereturn(n*fun(n-1));}intmain(){intx=6;x=fun(x);printf(%d,x);return0;}3.有以下程序,运行后的输出结果是。#includestdio.hintmain(){intx[]={0,1,2,3,4,5,6,7,8,9};ints=0,i,*p=&x[2];for(i=1;i6;i+=2)s+=*(p+i);printf(%d,s);return0;}五、程序填空。(本题共3道题目,每题4分,共12分)1.根据注释的内容,把代码补充完整。#includestdio.hintmain(){intf1,f2;;//输入数据,运行时输入10,3回车,变量f1得到10,f2得到3。f1*=f2;共9页-第7页;//输出变量f1的值,要求数据宽度为6位,左对齐。return0;}2.以下程序用以删除字符串里所有的空格,请填空。#includestdio.hintmain(){chars[100]=OurteacherteachClanguage!;inti,j;for(i=j=0;s[i]!='\0';i++)if(){s[j]=s[i];j++;}s[j]=;printf(%s,s);return0;}3.下面程序的功能是对一个数组进行从小到大的排序,请填空。#includestdio.h#defineN10intmain(){intnum[N],i=0;voidsort(inta[],intn);for(i=0;iN;i++)scanf(%d,&num[i]);sort(num,N);printf(\n排序之后:);for(i=0;iN;i++)printf(%5d,num[i]);return0;}//以下函数实现对数组进行从小到大排序。voidsort(inta[],intn){inti,j,t;for(i=1;in;i++){共9页-第8页for(j=0;;j++)if(){t=a[j];a[j]=a[j+1];a[j+1]=t;}}}六、编程题。(
本文标题:C语言程序设计-海滨学院期末考试试卷(2010-2011-第二学期)(A)
链接地址:https://www.777doc.com/doc-5176135 .html