北京交通大学海滨学院考试试题(B 卷)课程名称:C语言程序设计 2010-2011学年第二学期出题教师:计算机教学组专业:班级:姓名:学号:答题说明:本试卷共有六道大题,要求所有解答均写在答题卡上,否则无效。
上交试卷时按照发试卷时候的顺序整理试卷,平铺展开上交。
一、选择题(本题共30道题目,每题1分,共30分)1.以下叙述中正确的是()。
A)C语言比其他语言高级。
B)C语言可以不用编译就能被计算机识别执行。
C)C语言以接近英语国家的自然语言和数学语言作为语言的表达形式。
D)C语言出现的最晚,具有其他语言的一切优点。
2.算法是为解决某特定问题而采取的确定且有限的步骤,下面不属于算法的五个特性的是()。
A)有零个输入或多个输入 B)高效性C)有穷性 D)确定性3.表达式3.6-5/2+1.2+5%2的值是()。
A)4.3 B) 4.8 C) 3.3 D) 3.84.C语言中的标识符只能由字母,数字和下划线三种字符组成,且第一个字符()。
A)必须为字母 B)必须为下划线C)必须为字母或下划线 D)可以是字母,数字和下划线中任一字符5.下列数据中,不合法的C语言实型数据的是()。
A)0.123 B)123e3 C)2.1e3.5 D)789.06.若有说明语句:char c='\72';则变量c()。
A)包含1个字符 B)包含2个字符C)包含3个字符 D)说明不合法,c的值不确定7.若有定义:int a=7;float x=2.5,y=4.7; 则表达式x+a%3*(int)(x+y)%2/4的值是()。
A)2.500000 B)2.750000C)3.500000 D)0.0000008.下列可用于C语言用户标识符的一组是()。
A)void, define, WORD B)a3_b3, _123,CarC)For, -abc, IF Case D)2a, DO, sizeof9.以下不正确的叙述是()。
A)在C程序中,逗号运算符的优先级最低。
B)在C程序中,APH和aph是两个不同的变量。
C)若a和b类型相同,计算了赋值表达式a=b后b中的值将放入a中,而b中的值不变。
D)当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值。
10.设有int x=17;则表达式(x++*1/3)的值是()。
A)5 B)6 C)17 D)1811.以下变量x,y,z均为double类型且已正确赋值,不能正确表示数学式子x÷y÷z的C语言表达式是()。
A)x/y*z B)x*(1/(y*z))C)x/y*1/z D)x/y/z12.x,y,z被定义为int型变量,若从键盘给x,y,z输入数据,正确的输入语句是()。
A)INPUT x、y、z; B)scanf("%d%d%d",&x,&y,&z);C)scanf("%d%d%d",x,y,z); D)read("%d%d%d",&x,&y,&z);13.以下不合法的字符常量是()。
A)'\018' B '\”' C) '\\' D) ‘\xcc'14.以下叙述中错误的是()。
A)C语句必须以分号结束。
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;i>1;i++) D) f=1; for(i=n;i>=2;i--) f*=i;16.s1和s2已正确定义并分别指向两个字符串。
若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是()。
A)if(s1>s2)S; B)if(strcmp(s1,s2))S;C)if(strcmp(s2,s1)>0)S; D)if(strcmp(s1,s2)>0)S;17.若有如下语句,则输出结果()。
int x=3;do{printf("%d\n",x-=2);}while(!(--x));A)输出的是1 B)输出的是1和-2 C)输出的是3和0 D)是死循环18.以下程序段的输出结果是()。
int a=4,b=5,c=0,d; d=!a&&!b||!c; printf("%d",d);A)1 B)0 C)非0的数 D)-119.以下能正确定义二维数组的是()。
(A)int a[][3]; (B)int a[][3]=2{2*3};(C)int a[][3]={}; (D)int a[3][3]={{1},{2},{3,4}};20.下列数组定义方式不正确的语句是()。
(A)char x[5];(B)char y[]={‘h’,‘e’,‘l’ };(C)int y[];(D)int x[10]={12,13,14,15};21.若有以下定义和语句,输出结果是()。
char c1='b', c2='e';printf("%d,%c", c2-c1, c2-'a'+’A’);(A)3,M (B)2,E(C)3,E (D)输出项与对应的格式控制不一致,输出结果不确定22.有以下程序, 运行时输入:a<回车> 后,以下叙述正确的是()。
A)变量c1被赋予字符a,c2被赋予回车符。
B)程序将等待用户输入第2个字符。
C)变量c1被赋予字符a,c2中仍是原有字符2。
D)变量c1被赋予字符a,c2中将无确定值。
#include<stdio.h>main(){ char c1='1',c2='2';c1=getchar(); c2=getchar();putchar(c1); putchar(c2); }23.若有定义语句 char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'}; 则字符串p和字符串q的长度分别为()。
A) 3,不确定 B)3,3 C)不确定,3 D)不确定,不确定24.函数调用过程,如果函数funA调用了函数 funB,函数funB又调用了函数funB,则()。
A)称为函数的直接递归调用 B)称为函数的间接递归调用C)称为函数的循环调用 D)C语言中不允许这样的递归调用25.变量的指针,其含义是指该变量的()。
A) 名 B) 值 C)地址 D)一个标志26.若有语句:double *p,a;则能通过scanf语句正确给输入项读入数据的程序段是()。
A)*p=&a; scanf(“%lf”,p); B)*p=&a; scanf(“%f”,p);C) p=&a; scanf(“%lf”,*p); D)p=&a; scanf(“%lf”,p);27.设char *s="\ta\103bc";则指针变量s指向的字符串所占的字节数是()。
A)9 B)5 C)6 D)728.若有定义 int a[5], * p=a; 则对a数组元素的正确引用是()。
A)*&a[5] B)a+2 C)*(p+5) D)*(a+2)29.当说明一个结构体变量时系统分配给它的内存是()。
A)各成员所需内存量的总和 B)结构中第一个成员所需内存量C)成员中占内存量最大者所需内存 D)结构中最后一个成员所需内存量30.以下程序的结果是()。
#include<stdio.h>struct WWW { int X; int Y; };void main( ){ struct WWW A[3]={{7,8},{9,10},{12,13}};int a;a=A[1].X+A[2].Y;printf("%d",a); }A) 17 B) 22 C) 16 D) 21二、填空题(本题共10个空,每空1分,共10分)1.C语言程序的多行注释可以出现在程序中的任何地方,一个注释以作为开始和结束。
2.若有如下定义:int a=1,b=2,c=3; 执行语句 b=(a<4)&&(b<a)&&(c++); 之后,c的值是。
3.若有如下定义:int x=1; float y=7.5; 执行语句:x=3+y/2;之后,x的数据类型是。
4.若定义数组int a[10]={0,1,2,3,4,5,6};,则数组元素a[a[3]+1]的值为,数组元素a[8]的值为。
5.若有定义语句 int x[10] , *p=x ; 在程序中引用数据元素x[i]的四种形是:,,和x[i](假设i已正确说明并赋值)。
6.在C语言中,从作用域角度分,有和全局变量;从变量存在的时间(生存期)来区分,有动态存储和两种类型。
三、判断题(本题共13个题,每题1分,共13分。
对的画对号,错的画叉号)1.在C语言中,以0代表”真”,非0代表”假”。
()2.二维数组可以这样定义:int a[3,4]。
()3.表达式max=(a>b)?a:b的作用是将二者中的较大值赋值给max。
()4.任何函数都必须具有形参。
()5.在c语言中,if可以单独使用。
()6.有数组float a[10],引用数组第6个元素的方法为a[5]。
()7.运行语句int a=0; while(a++) printf(“%d”,a); 可以输出变量a的值。
()8.若有定义:int*p1,*p2;则当p1和p2指向同一变量时关系表达式p1==p2的值为真。
()9.continue语句则是结束整个循环过程,不再判断执行循环的条件是否成立。
()10.C语言中,y=*p;其含义是将p的值赋给y 。
()11.字符串“Cat”小于字符串“Cet”。
()12.数组名可以作函数的参数,传递的是数组的第一个元素的地址。
()13.任何存储类的变量在未赋初值时,其值都是不确定的。
()四、写出程序的运行结果(本题共3道题目,每题3分,共9分)1.有以下程序,运行时输入cadb<回车>,输出结果是。
#include<stdio.h>int main(){char ch; int s1=0,s2=0;while( (ch=getchar())!=’\n’){switch(ch){case ‘a’:s2+=1;case ‘b’:s1+=1;break;case ‘c’:case ‘d’:s1+=1;break;default:s1+=1;s2+=1;}}printf("%d,%d",s1,s2);return 0; }2.有以下程序,运行后的输出结果是。