2011-C语言期末考试试卷-A-new(ans)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京师范大学2010~2011学年第 2 学期期末考试试卷(A卷)
课程名称:程序设计语言(C语言)任课教师姓名:于福生刘玉铭卷面总分: 100 分考试时长: 100 分钟考试类别:闭卷
院(系):专业:年级:
姓名:学号:
阅卷教师(签字):
一, 单项选择题(20×2=40分)
(1)能够作为标识符的一组字符序列是【 B 】
A)int define WORD
B)a_b3 _123 IF C)For -abc Case
D)2a Do A&B
(2)能正确表示逻辑关系“a ≥ 10或a ≤ 0”的C语言表达式是【D 】
A) a >= 10 or a <= 0
B) a >= 10 | a <= 0 C) a >= 10 && a <= 0
D) a >= 10‖a <= 0
(3)已知int num=7, sum=7;则表达式sum=num++, sum++,++num;求值后变量sum的值是【 B 】
A)7
B)8 C)9
D)10
(4)对于程序段
int n=0, p;
do{
scanf("%d", &p);n++;
}while( p!=12345 && n<3);
其中 do-while 循环的结束条件是【 D 】
A)p的值不等于12345 并且n的值小于3
B)p的值等于12345 并且n的值大于等3 C)p的值不等于12345 或 n的值小于3
D)p的值等于12345或n的值大于等于3
(5)下面定义不正确的是【 A 】
A)char a[3]="yes";
B)char *a="yes"; C)char a[3]={ 'y', 'e', 's' };
D)char a[]=”yes”;
(6)如果有说明:int n=2, *p=&n, *q=p;则以下非法的赋值语句是【 D 】
A)p = q;
B)*p = *q; C)n = *q;
D)p = n;
(7)二维数组float s[3][4]中元素s[2][3]的正确表示是【 A 】
A)*(*(s+2) +3)
B)*(s+2) +3 C)s[2,3]
D)s[3][2]
(8)设有struct aa{int a; float x;}s[10],则不能将s写入二进制文件f的语句是【 A 】
A)fwrite(&s,10,6,f);
B)fwrite(s,60,1,f); C)fwrite(s,10,6,f);
D)fwrite(s,1,60,f);
(9)设FILE *f;且f指向一个新打开的文本文件,则执行语句fprintf(f,”%d”, 12345);
后f所指向的文件在大小上增加的字节数是【 C 】
A)2;
B)4; C)5;
D)10;
(10)函数 int fun(int *p) { return *p; } 的返回值是【 C 】
A)不确定的值
B)形参p中存放的值C)形参p所指向的存储单元中的值
D)形参p的地址值
(11)与语句 k = a > b ? (b > c ? 1 : 0 ) : 0; 功能等价的程序段是【 A 】
A)if(a>b&&b>c) k=1; else k=0;
B)if (a>b||b>c) k=1; C)if (a<=b) k=0;
else if(b<=c) k=1;else k=0;
D)if(a>b) k=1;
else if(b>c) k=1;
(12)设有说明:struct AA{ char a, *b, c[10] } s;调用函数scanf的正确的实在参数为【 C 】
A)( "%c%c%s", &s.a, &s.b, &s.c )
B)( "%c%c%s", s.a, s.b, s.c ) C)( "%c%c%s", &s.a, s.b, s.c )
D)( "%c%c%c", &s.a, s.b, s.c[1] )
(13)设有char c; 则以下声明不正确的是【 B 】
A)char *s=&c;
B)char *s=‟a‟;C)char *s=”abc”;
D)char *s=”A”;
(14)定义int *p[4]中p的含义是【 B 】
A)指向整型变量的指针
B)指针数组名C)指向含4个分量的数组的指针
D)定义不合法
(15)设有说明:char *lag[]={"Fortran","Basic","Pascal","Java","C"};则表达式: strcmp(++lag[1],++lag[3])比较的是【 A 】
A)字符串asic和字符串ava B)字符串Basic和字符串Java
C) 字符B 和字符J D) 字符串Fortran 和字符串Pascal
(16) 设有说明:int a=1,b=2,k; 对表达式k=a++==3/2||(b-=a--&&3%2)求值后变量
a,b 的值分别是【 C 】
A) 1,2 B) 1,1 C) 2,2 D) 2,1
(17) 设有说明:int a[3]={1,2}, 则sizeof(a)的值是【 D 】 A) 2 B) 3 C) 4 D) 6
(18) 设有函数:void sub(int k){if(k%10!=k*k%10) sub(k-1); printf(“%d,” k);} 则调用
sub(19)的执行结果为【A 】
A) 16,17,18,19, B) 16, C) 19,18,17,16, D) 18,17,16,
(19) 程序段:char c=‟a‟, s[10]=”a1b2c3d4”,*p=s; switch(c) {default: putchar(*p++); case …c‟:
putchar(*p++); case …d‟:putchar(*++p); };则执行结果为是【C 】
A) a B) 1 C) a12 D) a1b
(20) 以下叙述正确的是【 B 】
A) C 语言在对逻辑表达式求值时执行其中的每个运算; B) C 语言函数中的变量可以在诞生后一直存在; C) C 语言的函数可以相互调用;
D) C 语言中,else 总是与离它最近的if 进行配对;
三、 编程题(任选两题2×15=30分)
1. 编程计算:1
41241....71613121---++-+-=
n n s ,直到最后一项的绝对值小于某个给定的充分小的正数m 。
2.编程输出1~n (n 由用户输入)之间所有包含3的素数(比如3,13,31等)。
3.输入一行字符,分别统计并输出其中元音字母、非元音字母、数字,其它字符出现的次数。