一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。
1.执行语句“for (k=4;k>0;k--) { break; --k;}”后,变量k的值是 ()
(1分)
A:1
B:2
C:3
D:4
2.能将x定义成指向文件的文件型指针的数据定义语句是()
(1分)
A:FILE x;
B:file *x;
C:file x;
D:FILE *x;
3.下列数据中,不是C语言常量的是()
(1分)
A:′\n′
B:″a″
C:e-2
D:012
4.设有定义“short x[5]={1,2,3};”,则数组x占用的内存字节数是()
(1分)
A:10
B:6
C:5
D:3
5.下列语句中,不能将fp指向的文件的内部指针指向文件头的是() (1分)
A:fseek(fp,0L,1);
B:fseek(fp,0L,SEEK_SET);
C:fp=fopen(″a.txt″,″w″);
D:rewind(fp);
6.字符串″\″1\43\n2\x11\″ ″的长度是()
(1分)
A:7
B:8
C:11
D:16
7.若有:char c[5]={′a′,′b′,′\0′,′c′,′\0′}; 则执行语句 printf(″%s″,c);的结果为() (1分)
A:′a′ ′b′
B:ab
C:ab c
D:ab\0c
8.结构型变量占用内存的字节数是() (1分)
A:各成员占用内存字节数之和
B:第一个成员占用的内存字节数
C:占用内存最大成员所需的字节数
D:最后一个成员占用的内存字节数
9.以下定义语句中,错误的是 ()
(1分)
A:int a[]={1};
B:char a[3];
C:char s[]=″t″;
D:int n=5,a[n];
10. 以下存储类型的变量,在每次调用它们所在的函数时都分配内存的是 () (1分)
A:auto和 static
B:auto和 register
C:register和 static
D:extern和 register
11.使用函数fseek()不能完成的操作是 () (1分)
A:定位到文件头
B:定位到文件尾
C:定位到文件尾的后10个字节
D:测试定位是否正确
12.以下不正确的C语言标识符是()
A.B.C.aD. (1分)
A:ABC
B:abc
C:ab_c
D:ab.c
13.设 ch 是 char 型变量,其值为′A′,则下面表达式的值是()
ch=(ch>=′A′&&ch<=′Z′)?(ch+32):ch
(1分)
A:A
B:a
C:Z
D:z
14.能正确表示 a 和 b 同时为正或同时为负的逻辑表达式是()
(1分)
A:(a>=0||b>=0)&&(a<0||b<0)
B:(a>=0&&b>=0)&&(a<0&&b<0)
C:(a+b>0)&&(a+b<=0)
D:a*b>0
15.设有下列定义语句,则下列表达式中能表示结构型 xx 的成员 x 的表达式是()
struct xx{int x;};
struct yy{struct xx xxx ;int yy;}xxyy; (1分)
A:xxyy.x
B:xxyy->x
C:(&xxyy)->xxx.x
D:xxx.x
16.设有定义″#define R 2+1″,则R*R的宏替换结果正确的是() (1分)
A:(2+1)*(2+1)
B:2+1*2+1
C:3*3
D:(2+1)*2+1
17.执行下面的程序段后,变量k中的值为 ()
int k=1,a[2]; a[0]=1; k=a[k]*a[0]; (1分)
A:0
B:1
C:2
D:不确定的值
18.若有定义“int w=1,x=2,y=3,z=4;”,则表达式w B:2 C:3 D:4 19.设char s[10], *p=s;, 下列语句中错误的是() (1分) A:p=s+5; B:s=p+s; C:s[2]=p[4]; D:*p=s[0]; 20.运行下列程序后,输出结果是() int b=1; int f(int *a) { b+=*a; return(b);} main() { int a=2,b=3; a+=f(&b); printf(″%d\n″,a); } (1分) A:4 B:5 C:6 D:7 二、填空题(本大题共10小题,每小题2分,共20分)请在每小题的空格中填上正确答案。错填,不填均无分。 1.表达式a=1,a+1,++a,a++的值是。 (2分) 2.设int a[10],*p=a;则对a[3]的引用可以是*(p)。 (2分) 3.若定义了int a=1;,则执行printf(″%d\n″,((a=a+4,a+5),a+6));语句的输出结果是。 (2分) 4.若fp已经指向一个打开的文件,则关闭该文件的语句是。 (2分) 5.格式字符串″%dx%10dx″中的非格式字符是。 (2分) 6.若 a=48,b=15,则 a|b 等于,a||b 等于。 (2分) 7.设 int i=5 ;则循环语句 while (i>=1)i--; 执行后,i 的值为。 (2分) 8.设有定义“int x=1;”,则表达式“x-=x*=x*x”的值是 (2分) 9.设有数据定义语句“int a=10,b=9,c=8;”,则计算表达式 “c=(a-=(b-5)), c=(a%11)+(b=3)”后,变量b中的值是 (2分) 10.设有宏定义# define X 3-1;则2*X的宏替换结果是 (2分) 三、程序分析题(本大题共5小题,每小题5分,共25分)阅读下列程序,将输出结果写到各题右侧的空白处。 1.main() { int sum=0,i; for(i=1;i<11;) {sum+=i; i++; } printf(″sum=%d\n″,sum); } 输出结果为? (5分) 2.main() { int a[3][4]={1,3,5,7,12,14,16,18,9,6,4,2},j,k,m,n,x; x=m=n=0; for (j=2;j>-1;j--) for (k=0;k<4;k++)