2011
软件
学院
专业课
试题
语言
部分
精通教育集团-软件学院专业课集训营资料
2011年天津市大学软件学院高职升本专业课试题-C语言部分
考场号 考生号 姓名
第一部分 C语言部分 100分
一、单项选择题(共25小题,每题2分,共50分)
以下每小题列出的四个备选答案中只有一个符合题目要求,请将正确答案填入“单项选择题答题表”对应的格中,未填入答题表,错选或多选均不得分。
1. 设有类型说明 unsigned int a=65535;,按%d格式输出a的值,其结果是( )。
A. 65536 B. -1 C. 1 D. -32767
2. 以下程序输出的结果是( )。
#include <stdio.h>
main()
{ int a=-1,b=4,k;
k=!((++a<0)&&!(b--<0));
printf("%d%d%d\n",k,a,b);
}
A. 104 B. 103 C. 013 D. 004
3. 设有int i;则表达式i=1,++i,++i||++i,i的值为( )。
A. 1 B. 2 C. 3 D. 4
4. 设有int a[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是( )。
A. 10,11,12 B. 11,12,12 C. 10,12,12 D. 11,11,12
5. 设有说明int s[2]={0,1},*p=s; 则下列错误的C语句是( )。
A. s+=1; B. p+=1; C. *p++; D.(*p)++;
6. 以下程序的输出结果是( )。
#include <stdio.h>
`void prtv(int *x)
{ printf("%d\n",++*x);}
main()
{ int a=25;
prtv(&a);
}
A. 25 B. 26 C. 27 D. 以上均不对
7. 下列叙述中正确的是( )。
A. C语言的函数可以嵌套定义
B. C语言的子程序有过程和函数两种
C. C语言编译时不检查语法
D. C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数
8. 以下程序的输出结果是( )。
#include <stdio.h>
main()
{ char st[20]="hello\0\t\\";
printf("%d%d\n",strlen(st),sizeof(st));
}
A. 520 B. 99 C.1320 D. 2020
9. int a,b,c,*d=&c;则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是( )。
A. scanf("%d%d%d",a,b,d); B. scanf("%d%d%d",&a,&b,&d)
C. scanf("%d%d%d",&a,&b,d); D. scanf("%d%d%d",a,b,*d);
10. 以下程序的输出结果是( )。
#include <stdio.h>
main()
{ int x=10,y=10,i;
for(i=0;x>8;y=++i)
printf("%d %d ",x--,y);
}
A.10 1 9 2 B. 10 9 9 0 C. 9 8 7 6 D. 10 10 9 1
11. 以下定义语句中正确的是( )。
A. int a=10,*b=&a; B. float a=b=10.0;
C. char a='A'b='B'; D. float *a,b=&a;
12. 下列关于单目运算符++、--的叙述中正确的是( )。
A. 它们的运算对象可以是char型变量、int型变量和float型变量
B. 它们的运算对象可以是char型变量和int型变量,但不能是float型变量
C. 它们的运算对象可以是int型变量,但不能是double型变量和float型变量
D. 它们的运算对象可以是任何变量和常量
13. 设a=5、b=6、c=7、d=8、m=2、n=2,执行(m=a>b)&&(n=c>d)后n的值为( )。
A.4 B. 2 C. 3 D. 1
14. 以下程序段的输出结果是( )。
char s[]="\\141\141abc\t";
printf("%d\n",strlen(s));
A. 9 B. 10 C. 12 D. 14
15. 若有说明:int i,j=7,*p=&i;则与i=j;等价的语句是( )。
A. i=*p; B. i=**p; C. i=&j; D. *p=*&j;
16. 以下叙述正确的是( )。
A. 可以把define和if定义为用户标识符
B. 可以把if定义为用户标识符,但不能把define定义为用户标识符
C. define和if都不能定义为用户标识符
D. 可以把define定义为用户标识符,但不能把if定义为用户标识符
17. 设有int i,j,k; 则表达式i=1,j=2,k=3, i&&j&&k的值为 ( )。
A. 1 B. 2 C. 3 D. 0
18. 下面的程序执行后,变量a的值是( )。
#include <stdio.h>
#define SQR(x) x*x
main()
{ int a=10,k=2,m=1;
a/=SQR(k+m)/SQR(k+m);
printf("%d\n",a);
}
A. 10 B. 1 C. 9 D. 0
19. 为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中else总是与( )组成配对关系
A. 缩放位置相同的if B. 在其之前未配对的if
C. 在其之前未配对的最近的if D. 同一行上的if
20. 以下程序的输出结果是( )。
int x=10,y=10;
printf("%d %d\n",x--,--y);
A. 10 10 B. 9 9 C. 9 10 D. 10 9
21. 选出下列标识符中不是合法的标识符的是( )。
A. hot_do B. cat1 C. _pri D. 2ab
22. 设有说明double (*p1)[N];其中标识符是( )。
A. N个指向double型变量的指针
B. 指向N个double型变量的函数指针
C. 一个指向由N个double型元素组成的一位数组的指针
D. 具有N个指针元素的一维指针数组,每个元素都指向double变量
23. 在C程序中有如下语句:char *func(int x,int y);它是
A. 对函数func的定义 B. 对函数func的调用
C. 对函数func的原型说明 D. 不合法的
24. 下列叙述中不正确的是( )。
A. 可以对整型数组进行整体的输入、输出
B. 可以对字符数组进行整体的输入、输出
C. 字符数组中可以存放字符串
D. 不能在赋值语句中通过赋值运算符“=”对字符数组进行整体赋值
25. 以下对二维数组a进行正确初始化的是( )。
A. int a[2][3]={{1,2},{3,4},{5,6}}; B. int a[][3]={1,2,3,4,5,6};
C. int a[2][]={1,2,3,4,5,6}; D. int a[2][]={{1,2},{3,4}};
二、填空题(共10个空,每空1分,共10分)
请按照试题中对应的标号顺序填写到答题表中
1. 设a为整型变量,初值为12,执行赋值表达式a+=a-=a*a后,a的值是 。
2. 设整型变量a 的值为-1,在16位微机中用16进制打印a的值是 。
3. C语言提供的预处理功能主要有三种:宏定义,文件包含和条件编译。
条件编译命令有三种基本形式:
① #ifdef 标识符 ② # 标识符 ③ #if 表达式
程序段1 程序段1 程序段1
#else #else #else
程序段2 程序段2 程序段2
#endif #endif #endif
4. 类型定义:int a[10],*p;
执行赋值语句p=a;之后,那么p+5是 。
5. 在内存中供用户使用的存储空间可分为三个区:存储程序的程序区,存储数据的静态存储区和动态存储区。在静态存储区中存放的数据是 变量和局部静态变量。
6. C语言中静态变量和外部变量的初始化是在 阶段完成的。
7. 设a和x都为整型变量,执行赋值表达式x=(a=3,6*3)后,x值为 。
8. 执行下列语句int a=8;a+=a-=a*a;后,a的值是 。
9. 如有下列语句:char A[]={"I am a student"};该字符串的长度是 。
10. 如有下列输入语句:scanf("a=%d,b=%d,c=%d",&a,&b,&c);为使变量a的值为1,b的值为3,c的值为2,从键盘输入数据的正确形式应是 。
三、判断题
判断下题是否正确,正确的划√,错误的划×(每题1分,共15分)
( )1.if(a=0) i=1; 是合法的C语句。
( )2.for(;;)S中的语句S必执行无穷多次。
( )3.print可以作为变量名使用。
( )4.在C程序中,函数既可以嵌套定义,也可以嵌套调用。
( )5.int *p[3];定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针。
( )6.语句int *p;*p=0;存在着潜在的危险。
( )7.语句int *p;p=0;是错误的。
( )8.所有被调用的函数一定要在调用之前进行定义。
( )9.A-=7等价于a=a-7
( )10.构成C程序的基本单位是函数。
( )11.利用fcolse函数可以关闭已打开的文件。
( )12.char str[10][]; 是错误的说明语句。
( )13.unsigned 和void 在C中都是保留的。
( )14.数组名可以作为参数进行传递。
( )15.int If='\0';会出现编译错误。
四、阅读程序题
本题共5小题,每小题5分,共25分,请写出程序的运行结果
1. 【程序】
int a[][3]={1,2,3,4,5,6};
main()
{ int i,j,(*p)[3];
p=a;
printf("%d %d %d\n",p[0][0],*(p[0]+1),(*p)[2]);
printf("%d %d %d\n",p[1][0],*(p[1]+1),(*(p+1))[2]);
for(i=0;i<2;i++)
for(j=0;j<3;j++)
printf("%d ",*(*(p+i)+j));
printf("\n");
}
【运行结果】
2. 【程序】
#include <stdio.h>
main()
{ char a[]="Language",b[]="Programe";
char *p1,*p2; int k;
p1=a;p2=b;
for(k=0;k<=7;k++)
if(*(p1+k)==*(p2+k))
printf("%c",*(p1+k));
}
【运行结果】
3. 【程序】
#include <stdio.h>
main()
{ int i,n=0;
for(i=2;i<5;i++)
{ do
{ if(i%3) continue;
n++;
} while(!i);
n++;
}
printf("n=%d\n",n);
}
【运行结果】
4. 【程序】
#include <stdio.h>
main()
{ int i,j,k,a=5,m[6][6];
i=1;
k=(a+1)/2;
for(j=1;j<=a*a;j++)
{ m[i][k]=j;
if(j%a==0) { i=(i%a)+1;continue; }
k=(k%a)+1;
i--;
if(i==0) i=a;
}
for(i=1;i<=a;i++)
{ for(j=1;j<=a;j++)
printf("%4d",m[i][j]);
printf("\n");
}
}
【运行结果】
5. 【程序】
#include <stdio.h>
main()
{ int x,y,z;
x=y=z=-1;
printf("x=%d\ty=%d\tz=%d\n",x,y,z);
++y&&++x||++z;
printf("x=%d\ty=%d\tz=%d\n",x,y,z);
x=y=z=-1;
++x||y++&&z;
printf("x=%d\ty=%d\tz=%d\n",x,y,z);
}
【运行结果】
6