计算机科学与技术专业《基础知识》模拟试卷(考试时间150分钟,满
分300分,共三部分)
第一部分 C语言程序设计(共100分)
一、 单项选择题(本大题共30小题,每小题2分,共60分) 1. 下列各选项中,均是合法有效的标识符的是【 】 A.
3day B.lower C.day_3 D.ab
Sum _days abcde student_name _of lotus_1_2_3 default M.D.john
2. 若希望当A的值为奇数时,表达式的值为“真”,A的值为偶数时,表达式的值为“假”。则以下不能满足要求的表达式是
A.A%2==1 B.!(A%2==0) C.!(A%2) D.A%2 3. 下列程序的输出结果是【 】 #include
int x=1,y=0,a=0,b=0; switch(x) { } A.1,1
B.2,1 C.1,0 D.2,2
4. 以下关于switch语句和break语句的描述中,只有正确的是【 】
A.在switch语句中必须使用break语句
B.在switch语句中,可以根据需要使用或不使用break语句 C.break语句只能用于switch语句中 case 1: switch(y)
{
case 0: a++; break; case 1: b++; break; }
case 2: a++;b++; break; case 3: a++;b++; break; }
printf(“%d,%d\\n”,a,b);
D.break语句是switch语句的一部分 5. 下面程序的输出是【 】。 main()
{
int x=0x23;
printf(“%d\\n”,- -x); }
A.18
B.19
C.34
D.35
6. 下列函数的输出结果是【 】 #include
int f1(int xb) {
extern int xa; return (xa * xb); }
void main(void) {
extern int xb; int xa=5;
printf(“xa=%d,xb=%d,result=%d”,xa,xb,f1(xa)); return 0; }
int xa=3,xb=4; A. 3,4,12 B. 5,4,20
C. 5,4,15
D. 3,4,15
7. c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式是
A. 地址传递
B. 由实参传给形参,再由形参传回给实参 C. 单向值传递 D. 由用户指定传递方式
8. 以下程序中调用scanf函数给变量a输入数值的方法是错误的,其原因是【 void main() {
int *p,a; p=&a;
scanf(“%d”,*p); ??
】
}
A.*p表示的是指针变量p的地址
B.*p表示的是变量a的值,而不是变量a的地址 C.*p表示的是指针变量p的值 D.*p只能用来说明p是一个指针变量 9. 下列程序段的输出结果是【 】。 int x=3; do {
printf(“-\\n”,x-=2); }while (!(――x)) A. 1 B. 1 -2 C. 3 0 D. 是死循环
10. 若有语句:int a=4, *p=&a;下面均代表地址的一组选项是【 】。 A. a,p,&*a B. *&a,&a,*p C. &a,p,&*p D. *&p,*p,&a
11. 下面程序输出的结果是 main() { int i;
int a[3][3]={1,2,3,4,5,6,7,8,9}; for(i=0;i<3;i++)
printf(\[2-i][i]); } A)1 5 9 B)7 5 3 C)3 5 7 D)5 9 1 12. 下面函数的功能是
char *fun(char *str1,char*str2) {while((*str1)&&(*str2++=*str1++)); return str2; }
A)求字符串的长度 B)比较两个字符串的大小
C)将字符串str1复制到字符串str2中 D)将字符串str1接续到字符串str2中 13. 下面函数调用语句含有实参的个数为 func((exp1,exp2),(exp3,exp4,exp5)); A)1 B)2 C)4 D)5 13. 下面程序段的运行结果是 char *s=\ s+=2;printf(\); A)cde B)字符′c′ C)字符′c′的地址 D)无确定的输出结果
14. 已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是
void print_value(int *x) {printf(\\n\);} A)23 B)24 C)25 D)26
15. 当顺利执行了文件关闭操作时,fclose函数的返回值是 A)-1 B)TRUE C)0 D)1 16. 设有如下定义
char *s[2]={ \ 则下列说法错误的是
A)s数组元素的值分别是\和\两个字符串的首地址 B)s是指针数组名,它含有两个元素分别指向字符型一维数组
C)s数组的两个元素分别存放的是含有4个字符的一维字符数组中的元素 D)s数组的两个元素中分别存放了字符′a′和′A′的地址 17. 以下不能对二维数组a进行正确初始化的语句是 A)int a[2][3]={0};
B)int a[][3]={{1,2},{0}};
C)int a[2][3]={{1,2},{3,4},{5,6}}; D)int a[][3]={1,2,3,4,5,6}; 18. 有以下程序 struct STU
{ char num[10]; float score[3]; }; main()
{struct STU s[3]={{\ {\ { \ },*p=s;
int i; float sum=0; for(i=0;i<3;i++) sum=sum+p->score[i]; printf(\\n\); }
程序运行后的输出结果是 A)260.00 B)270.00 C)280.00 D)285.00
19. 若有说明:int a[10];则对a数组元素的正确引用是 A)a[10] B)a[3,5] C)a(5) D)a[10-10]
20. 下面程序段中,输出*的个数是 char *s=\\ta\018bc\
for(;*s!=′\0′;s++)printf(\); A)9 B)5 C)6 D)7
21.设有如下函数 fun (float x) {