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.【程序】scanf输入整型数组
#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);
}
【运行结果】
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论