程序设计基础
一、单选题(每题2分,共60分)
1. 以下对C语言函数的描述中,正确的是()。
A. C程序必须由一个或一个以上的函数组成
B. C函数既可以嵌套定义又可以递归调用
C. 函数必须有返回值,否则不能使用函数
D. C程序中有调用关系的所有函数必须放在同一个程序文件中
2. 在C语言中,char型数据在内存中的存储形式是()。
A. 补码
B. 反码
C. 原码
D. ASCII码
3. 以下叙述中不正确的是()。
A. 一个好的程序应该有详尽的注释
B. 在C程序中,赋值运算符的优先级最低
C. 在C程序中,j++;是一条赋值语句
D. C程序中的#include和#define均不是C语句
4. 应用缓冲文件系统对文件进行读写操作,关闭文件的函数名为()。
A. fclose()
B. close()
C. fread()
D. fwrite
5. 设C语言中,int类型数据占2个字节,则short类型数据占()。
A. 1个字节
B. 2个字节
C. 4个字节
D. 8个字节
6. 已知函数的调用形式fread(buffer,size,count,fp);其中buffer代表的是()。
A. 一个整数,代表要读入的数据项总数
B. 一个文件指针,指向要读的文件
C. 一个指针,指向要读入数据的存放地址
D. 一个存储区,存放要读的数据项
关于printf函数正确的是
7. 在C语言中,形参的缺省存储类是()。
A. auto
B. register
C. static
D. extern
8. 以下标识符中,不能作为合法的C用户定义标识符的是()。
A. putchar
B. _double
C. _123
D. INT
9. 在C语言中,能代表逻辑值“真”的是()。
A. True
B. 大于0的数
C. 非0整
D. 非0的数
10. 已知x=43,ch='A',y=0;则表达式(x>=y&&ch<'B'&&!y)的值是()。
A. 0
B. 语法错
C. 1
D. "假"
11. 函数rewind的作用是()。
A. 使位置指针重新返回文件的开头
B. 将位置指针指向文件中所要求的特定位置
C. 使位置指针指向文件的末尾
D. 使位置指针自动移至下一个字符位置
12. 以下正确的说法是:在C语言中()。
A. 实参和与其对应的形参各占用独立的存储单元
B. 实参和与其对应的形参共占用一个存储单元
C. 只有当实参和与其对应的形参同名时才共占用存储单元
D. 形参是虚拟的,不占用存储单元
13. 对以下说明语句int a[10]={6,7,8,9,10};的正确理解是()。
A. 将5个初值依次赋给a[1]至a[5]
B. 将5个初值依次赋给a[0]至a[4]
C. 将5个初值依次赋给a[6]至a[10]
D. 因为数组长度与初值的个数不相同,所以此语句不正确
14. C语言中要求对变量作强制定义的主要理由是()。
A. 便于移植
B. 便于写文件
C. 便于编辑预处理程序的处理
D. 便于确定类型和分配空间
15. 若有说明int a[3][4];则a数组元素的非法引用是()。
A. a[0][2*1]
B. a[1][3]
C. a[4-2][0]
D. a[0][4]
16. 以下只有在使用时才为该类型变量分配内存的存储类说明是()。
A. auto和static
B. auto和register
C. register和static
D. extern和register
17. int a=1,b=2,c=3;if(a>b)a=b;if(a>c)a=c;则a的值为()。
A. 1
B. 2
C. 3
D. 不一定
18. 下列程序的输出结果是()。main(){char c1=97,c2=98;printf("%d%c",c1,c2);}
A. 9798
B. 97b
C. a98
D. ab
19. char a[]="Thisisaprogram.";输出前5个字符的语句是()。
A. printf("%.5s",a);
B. puts(a);
C. printf("%s",a);
D. a[5*2]=0;puts(a);
20. 以下运算符中,优先级最高的运算符是()。
A. ||
B. %
C. !
D. ==
21. 以下的选择中,正确的赋值语句是()。
A. a=1,b=2
B. j++
C. a=b=5;
D. y=int(x)
22. 若有inta[10]={0,1,2,3,4,5,6,7,8,9},*p=a;则输出结果不为5的语句为()。
A. printf("%d",*(a+5));
B. printf("%d",p[5]);
C. printf("%d",*(p+5));
D. printf("%d",*p[5]);
23. 以下叙述中正确的是()。
A. 在程序的一行上可以出现多个有效的预处理命令行
B. 使用带参的宏时,参数的类型应与宏定义时的一致
C. 宏替换不占用运行时间,只占编译时间
D. 在以下定义中CR是称为"宏名"的标识符#defineCR045
24. C语言中,要求运算数必须是整型的运算符是()。
A. ^
B. %
C. !
D. >
25. 若有int *p=(int *)malloc (sizeof(int));则向内存申请到内存空间存入整数123的语句为()。
A. scanf("%d",p);
B. scanf("%d",&p);
C. scanf("%d",*p);
D. scanf("%d",**p);
26. 结构体类型的定义允许嵌套是指()。
A. 成员是已经或正在定义的结构体型
B. 成员可以重名
C. 结构体型可以派生
D. 定义多个结构体型
27. 逻辑运算符两侧运算对象的数据类型()。
A. 只能是0或1
B. 只能是0或非0正数
C. 只能是整型或字符型数据
D. 可以是任何类型的数据
28. 以下运算符中,优先级最高的运算符是()。
A. =
B. !=
C. *(乘号)
D. ()
29. 关于建立函数的目的,以下正确的说法是()。
A. 提高程序的执行效率
B. 提高程序的可读性
C. 减少程序的篇幅
D. 减少程序文件所占内存
30.下列程序的输出结果是()。main(){int x=1,y=0,a=0,b=0;switch(x){case1.switch(y){case0.a++;break;case1.b++;break;}case2.a++;b++;brea k;case3.a++;b++;break;}printf("a=%d,b=%d\n",a,b) ;}
A.a=1,b=2
B. a=2,b=1
C. a=1,b=1
D. a=2,b=2
二、多选题(每题2分,共20分)
1. 设有以下定义int a=0;double b=1.25;cha rc='A';#defined2则下面语句中正确的是()。
A. a++;
B. b++;
C. c++;
D. d++;
2. 若a,b,c,d都是int型变量且初值为0,以下选项中正确的赋值语句是()。
A. a=b=c=d=100;
B. d++;
C. c+b;
D. d=(c=22)-(b++);
3. C语言中三种基本的类型为()。
A. int
B. char
C. float
D. struct
4. 关于while语句与do-while语句,以下正确的是()。
A. while是当型结构
B. do-while是直到型结构
C. 两者有区别
D. 两者无区别
5. 以下选项中不合法的字符常量是()。
A. "B"
B. '\010'
C. 68
D. D
6. t为int类型,进入下面的循环之前,t的值为0do{………}while(t==1);则以下叙述中正确的是()
A. 循环控制表达式的值为0
B. 循环控制表达式的值为1
C. 循环控制表达式合法
D. 以上说法都不对
7. 关于for(表达式1,表达式2,表达式3)循环,以下正确的是()。
A. 三个表达式都不可省略
B. 表达式1可以省略
C. 表达式2可以省略
D. 表达式3可以省略
8. 下面那些为合法整型常量()
A. 190
B. 0xf
C. 0765
D. 0xk
9. 下列为c语言的关键字是()
A. if
B. struct
C. union
D. Int
10. 以下不正确的叙述是( )
A. 在C程序中,每行只能写一条语句
B. 若a是实型变量,C程序中允许赋值A=10,因此实型变量中允许存放整型
C. 在C程序中,无论是整数还是实数,都能被准确无误地表示
D. 在C程序中,%是只能用于整数运算的运算符
三、判断题(每题2分,共10分)
1. 若a=2,b=-4;则执行a||b++后,b为-4。( )
A. 错误
B. 正确
2. 格式字符%md中的m只能为正,不能为负。( )
A. 错误
B. 正确
3. 有unsigned int a=16;a=a<<2;则a的值是64。( )
A. 错误
B. 正确
4. 自增自减运算符++,--可以用于int型、float型和double型资料。( )
A. 错误
B. 正确
5. continue语句可用于switch语句,也可用于for、while和do循环语句中。( )
A. 错误
B. 正确
6. 在某种意义上,char和int通用。( )
A. 错误
B. 正确
7. C语言可以直接访问物理位元元址。()
A. 错误
B. 正确
8. 一个C源程序可以由一个main()函数和若干个其它函数组成。( )
A. 错误
B. 正确
9. 若定义char str[];则str="yellow";是正确的。( )
A. 错误
B. 正确
10. 若有int x,y,z; x=y=z=1;则执行++x&&++y&&++z后,x,y,z的值分别为2,1,1。( )
A. 错误
B. 正确
程序设计基础参考答案
一、答案选题
1-5ADBAB 6-10CAADC 11-15AABDD 16-20BABAC 21-25CDCBA 26-30ADDBB
二、多选题
1.ABC
2.ABD
3.ABC
4.ABC
5.ACD
6.AC
7.BCD
8.ABC
9.ABC 10.ABC
三、判断题
1.B
2.B
3.B
4.B
5.A
6.B
7.B
8.B
9.A 10.A