天津市大学软件学院与“三校”2011年高职升本科专业考试试卷(理科生A 卷)专业:软件工程时间为120分钟(共200 分)第一部分、C 语言基础一、 单项选择题:在每小题列出的四个备选答案中只有一个答案符合题目要求。
请将正确答案填入“单项选择题答题表”对应的格中。
未填入答题表、错选或多选均不得分。
(本题共25小题,每小题2分,共50分)1. 设有类型说明unsigned int a=65535; ,按%d格式输出a的值,其结果是()。
A. 65536B. -1C. 1D. -327672. 以下程序输出的结果是()。
main( ){ int a= -1,b=4,k;k=! ((++a<0)&&! (b--<0));printf("%d%d%d\n",k,a,b);}A. 104B. 103C. 013D. 0043. 设有int i;则表达式i=1,++i,++i||++i,i的值为()。
A. 1B. 2C. 3D. 44. 设有int a[ ]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是()。
A. 10,11,12B. 11,12,12C. 10,12,12D. 11,11,125. 设有说明int s[2]={0,1},*p=s; 则下列错误的C语句是( )。
A. s+=1;B. p+=1;C. *p++;D. (*p)++;6. 以下程序的输出结果是()。
void prtv(int *x){ printf("%d\n",++*x);}main()prtv(&a);}A. 25B. 26C. 27D. 以上均不对7. 下列叙述中正确的是()。
A. C语言的函数可以嵌套定义B. C语言的子程序有过程和函数两种C. C语言编译时不检查语法D. C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数8. 以下程序的输出结果是()。
main(){ char st[20]="hello\0\t\\";printf("%d%d\n",strlen(st),sizeof(st));}A. 520B. 99C. 1320D. 20209. 若有说明语句: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. 以下程序的输出结果是()。
main(){ int x=10,y=10,i;for(i=0;x>8 ;y=++i)printf("%d %d ",x--,y);}A. 10 1 9 2B. 10 9 9 0C. 9 8 7 6D. 10 10 9 111. 以下定义语句中正确的是()。
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. 4B. 2C. 3D. 114. 以下程序段的输出结果是( )。
char s[]="\\141\141abc\t";printf("%d\n",strlen(s));A.9B.10C.12D.1415. 若有说明: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.1B.2C.3D.018. 下面的程序执行后,变量a的值是()。
#define SQR(x) x*xmain(){ int a=10,k=2,m=1;a/=SQR(k+m)/SQR(k+m);printf("%d\n",a);}A.10B.1C.9D.019. 为了避免嵌套的条件分支语句if-else的二义性,C语言规定:C程序中的else总是与()组成配对关系。
A. 缩排位置相同的ifB. 在其之前未配对的ifC. 在其之前未配对的最近的ifD. 同一行上的if20. 以下程序的输出结果是( )。
int x=10,y=10;printf("%d %d\n",x--,--y);A. 10 10B. 9 9C. 9 10D. 10 921. 选出下列标识符中不是合法的标识符的是()。
A. hot_doB. cat1C. _priD. 2ab22. 设有说明double(*p1)[N]; 其中标识符p1是()。
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}};小题,每小题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 #endif4. 类型定义: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,从键盘输入数据的正确形式应是。
三、判断题:判断下列各题是否正确,正确的划√,错误的划×。
(本题共15小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. 利用fclose函数关闭已打开的文件。
()12. char str[10][ ]; 是错误的说明语句。
()13. unsigned 和void 在C中都是保留的。
()14. 数组名可以作为参数进行传递。
()15. int If='\0'; 会出现编译错误。
四阅读程序题(写出程序的运行结果)(本题共5小题,每小题5分,共251. 【程序】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");}【运行结果】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));}【运行结果】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 >void 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++){ f or (j=1;j<=a;j++)printf("%4d",m[i][j]);printf("\n");}}【运行结果】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);}【运行结果】第二部分、软件工程概论一、单项选择题:在每小题列出的四个备选答案中只有一个答案符合题目要求。