10. 若已定义:int a,b=5,*p=&a;与语句a=b;等价的是()。
A) *p=*&b; C) a=*p; B) a=**p; D) a=&b; 11. 下列程序的运行结果是()。 void main()
{int a[5]={2,3,5,11,4},b[5]={12,1,6,9,8}; int *pa=a,*pb=b; int i;
for (i=0;i<5;i++)
if(*(pa+i)<*(pb+i))
printf(“%d”,*(pa+i)); }
A) 2 5 4 B) 3 11
C) 2 D) 5
12. 若已定义:int b=12,*p=&b;下列叙述错误的是( )。
A) *(&p)等价于b B) &(*p)等价于p C) *p等价于b
D) b等价于*(&b) 13. 以下程序的运行结果是( )。 #include
str=\ is a Book\ str=str+8; while(*str) { putchar(*str); str++; } }
A) This is B) Book 14. 以下程序的运行结果是( )。 void main() { int a=5,b=6,c; int *p1,*p2; p1=&a; p2=&b; p1=p2;
c=*p2+2*(*p1); printf(\
26
C) a Book
D) is a Book
}
A) 17
B) 18
C) 16
D) 15
15. 以下程序段的运行结果是( )。 char str[]=\printf(\
A) retupmoC B) Computer
C) C D) r
16. 若已定义:int a=5;*p1=&a; float x=11.6,*p2=&x;下列能实现正确赋值的语句是( )。
A) x=*p1+*p2; C) p1=x; B) p2=a+x; D) x=p1+p2;
8. 第九章 第十章(结构体、共用体、文件及其他)
1. 若已定义: struct teacher { int num;
char name[20]; }t1,*p=&t1;
下列对结构变量t1成员num合法的引用是() A. teacher.num B. p->num C. *p.num D. t1->num 2. 若已定义: struct student { int num; float score;
}stu[2]={{101,85.5},{102,90.0}},*p=stu; 下列对结构体数组引用错误的是()
A. p->num B. stu[0].num C. (*p).num D. p[1]->num 3. 下列枚举类型的定义正确的是()
A. enum a{x=-2,y=1,z=3} B. enum a{?A?,?B?,?C?} C. enum a={A,B,C} D. enum a={?A?,?B?,?C?} 4. 以下程序运行后,文件file1.txt的内容是(): ??????? #include
fp=fopen(“file1.txt”,”w”); if(fp==NULL) return 0; else {
fputs(“one”,fp);
27
rewind(fp); return 1; } }
A. one B. two
C. twoone D. onetwo 5. 若已定义: struct student { int num; float score; }stu[4];
以下错误的语句是()
A. *(stu)=*(stu+1) B. stu[0]=stu[1]
C. printf(“%d”,(*stu).num) D. stu[0]->num=101 6. 以下程序段输出结果是() int a[5]={1,3,5,7,9},*p; p=&a[2];
printf(“%d”,*(++p)); printf(“%d”,p-a);
A. 7 3 B. 9 4 C. 5 3 D. 7 4
7. 若已定义FILE *fp,则能向fp所指向文件写入hello这5个字符的语句是() A. fputc(“hello”,fp) B. fwrite(“hello”,5,fp) C. fwrite(“hello”,fp) D. fputs(“hello”,fp) 8. 若已定义: struct student { int num;
char name[20]; }stu1,stu2;
则下列语句不正确的是()
A. stu1.name=”Li Min” B. stu1=stu2
C. strcpy(stu1.name,stu2.name) D. stu1.num=stu2.num 9. 若已定义()
int a[5]={1,2,3,4,5}int *p=&a[3];则下列值为3的是( ) A. p-a[0] B. *p C. a+2 D. p-a
10. 以下程序段运行后,c的二进制值是() int a=2,b=3,c=10; c>>=a|b;
A. 01010000 B. 00000001 C. 00000010 D. 00101000
11. 用fseek函数可以实现以下哪个功能()
A. 移动文件的读写位置指针 B. 在制定的文件夹中查找文件 C. 得到文件位置指针的当前位置 D. 改变文件的读取顺序
28
12. 以下程序段的运行结果是() union data {
int a; char b; }data1;
data1.b=?A?; data1.a++;
printf(“%c\\n”,data1.b);
A. 65 B. A C. 66 D. B
13. 以下语句正确的是()
A. typedef INTEGER: int; B. typedef INTEGER int; C. typedef INTEGER= int; D. typedef int INTEGER; 14. 下列对结构类型变量stu1的定义和初始化正确的是()
A. struct student
{ int num; float score; };
struct student stu1={1001,85.0}
B. struct student
{ int num; float score; }stu1;
stu1={1001,85.0}
C. struct student
{ int num; float score;
}stu1={1001,85.0};
D. struct student
{ int num; float score; };
struct student stu1 stu1->num=1001; stu1->score=85.0;
15. 若已定义:int a[5],*p=a;则不能正确表示a[1]地址的是() A. ++a B. ++p C. p+1 D. a+1
16. 文件类型FILE是()
A. 一种函数类型 B. 一种指针类型 C. 一种数组类型 D. 一种结构类型
17. 若已定义:int a[3]={3,6,9};则对数组元素a[1]错误引用的是()
29
A. p[1] B. *p+1 C. *(&a[1]) D. *(a+1)
9. 宏、预处理命令、位运算及其他
1. 下列程序的运行结果是( )。 #define K 5 void main()
{ int a=3,b=4; printf(“%d\\n”,K*(a+b)); }
A. 5 B. 15
A. 0
B. 1
C. 20
C. 20
D. 35 D. 8
2. 若已定义:int x=7,y=5;则表达式(x^y)<<2的值为()
3. 下列叙述错误的是()。
A. C语言源程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 B. 宏定义可出现在源程序中任意合适的位置,且必须在行末加分号 C. #define PER 1.5的作用是用标识符PER代表1.5 D. 预处理命令行都必须以#号开始 4. 下列错误的是()。
A. 预处理命令行都必须以#号开始。
B. C语言程序中加入一些预处理命令是为了改进程序设计环境,提高编程效率 C. 宏定义可出现在源程序中任意合适的位置,且必须在行末加分号 D. #define PER 1.5的作用是用标识符PER代表1.5。 5. 下列叙述正确的是()。
A. 宏定义中的宏名必须用大写字母表示
B. 为提高程序运行速度可在源程序中加入一些宏定义
C. 宏定义不占用程序运行时间,但与程序中的语句一样需要编译 D. 一个C语言源程序只能有一条预处理命令 6. 下列程序的运行结果是( )。 #define M 5 #define N M+1 #define NN N*N-M void main()
{ printf(“%d\\n”,3*NN); }
A. 16 B. 103
C. 21 D. 108
7. 叙述正确的是( )。
A) 宏定义命令可根据需要以\开头或省略\
B) 宏定义:#define CR 15的作用是定义一个与15等价的符号常量CR C) C源程序中加入一些宏定义是为了提高程序运行速度
30