北京联合大学C语言程序设计专升本模拟

本试卷为北京联合大学C语言程序设计专升本模拟,题目包括:单项选择题。

覆盖的内容包括:理论题,基础知识,控制结构,循环结构,指针,数组/指针数组,字符串/字符串指针,函数/函数指针,程序题,结构体,文件。

本卷包括如下题型:

一、单项选择题

C语言程序设计专升本模拟

一、单项选择题 (共50题,每题2分,共计100分)

(  B  )
1、若i、j已定义成int型,则下列程序段中内循环体的总执行次数是________。
for(i=6;i>0;i--) for(j=0;j<4;j++)
{
…
}
A、20
B、24
C、25
D、30
(  A  )
2、以下叙述中正确的是________。
A、a是实型变量,C允许进行赋值a=10,但不可以这样说:实型变量中允许存放整型值
B、在赋值表达式中,赋值号左边既可以是变量也可以是任意表达式
C、执行表达式a=b后,在内存中a和b存储单元中的原有值都将被改变,a的值已由原值改变为b的值,b的值由原值变为0
D、已有a=3,b=5,当执行了表达式a=b,b=a之后,使a中的值为5,b中的值为3
(  A  )
3、c语言结构体类型变量在程序执行期间,________。
A、所有成员一直驻留在内存中
B、没有成员驻留在内存中
C、部分成员驻留在内存中
D、只有一个成员驻留在内存中
(  B  )
4、已知有如下结构体:
struct sk
{
int a;
float b;
}
data,*p;
若有p = &data,则对data的成员a引用正确的是________。
A、(*p).data.a
B、(*p).a;
C、p->data.a
D、P.data.a
(  D  )
5、c语言中,下列不合法的字符常量是________。
A、'\xff'
B、'\65'
C、'&'
D、'\028'
(  B  )
6、有以下程序:
main()
{
int i,j;
for(j=10;j<11;j++)
{
for(i=9;i<j;i++) if(!(j%i))break;
if(i==j-1) printf("%d",j);
}
}
输出结果是________。
A、11
B、10
C、9
D、10 11
(  A  )
7、下述程序执行的输出结果是________。
main()
{
char a[2][4];
strcpy(a,"are");
strcpy(a[1],"you");
a[0][3]='&';
printf("%s\n",a):
}
A、are&you
B、you
C、are
D、&
(  D  )
8、设x、y和z是int型变量,且x=4,y=6,z=8,则下列表达式中值为0的是________。
A、x&&y
B、x<=y
C、x||y+z&&y—Z
D、!((x<Y)&&!Z||1)
(  D  )
9、阅读下面的程序
main()
{
int i,j;
scanf("%3d%2d",&i,&j);
printf("i=%d,j=%d\n",i,j);
}
如果从键盘上输入1234567<回车>,则程序的运行结果是________。
A、i=123,j=4567
B、i=1234,j=567
C、i=1,j=2
D、i=123,j=45
(  C  )
10、以下符合c语言语法的实型常量是________。
A、1.2E0.5
B、3.14.159E
C、.5E-3
D、E15
(  B  )
11、若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0) s=a; for(b=1;b<=c;b++) s=s+1; 则与上述程序段功能等价的赋值语句是________。
A、s=a+b;
B、s=a+c;
C、s=s+c;
D、s=b+c;
(  B  )
12、以下能正确定义一维数组的选项是________。
A、int num[];
B、#define N 100
int num[N];
C、int num[0..100];
D、int N=100;
int num[N];
(  A  )
13、以下不能正确进行字符串赋初值的语句是________。
A、char str[5]="good!";
B、char str[]="good!";
C、char *str="good!";
D、char str[5]={‘g',‘o',‘o',‘d'};
(  B  )
14、下列关于c语言的说法错误的是________ 。
A、C程序的工作过程是编辑、编译、连接、运行
B、C语言不区分大小写。
C、C程序的三种基本结构是顺序、选择、循环
D、C程序从main函数开始执行
(  B  )
15、以下叙述中正确的是______。
A、全局变量的作用域一定比局部变量的作用域范围大
B、静态 (static) 类别变量的生存期贯穿于整个程序的运行期间
C、函数的形参都属于全局变量
D、未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值
(  D  )
16、以下循环体的执行次数是 _________
#include<stdio.h>
void main( )
{
int i,j;
for(i=0,j=1; i<=j+1; i+=2, j--) printf("%d \n",i);
}
A、3
B、2
C、1
D、0
(  B  )
17、下列字符中,ascii码值最小的是________。
A、a
B、A
C、x
D、Y
(  A  )
18、数组a[1..5,1..6]的每个元素占5个单元,将其按行优先顺序存储在起始地址为1000的连续的内存单元中,则元素a[5,5]的地址为 (15) 。
A、1140
B、1145
C、1120
D、1125
(  A  )
19、下列对字符数组进行初始化的语句中,______ 是正确的。
A、char s 1[]=“abcd”;
B、char s2 [3]=”xyz”;
C、char s 3[] [3]={‘a’,‘x’,‘y’}
D、char s3 [][3]={“xyz”,“mnp”};
(  C  )
20、若有下面的程序片段:
int[12]={0},*p[3],**pp,i;
for(i=0;i<3;i) p[i]=&a[i*4];
pp=p
则对数组元素的错误引用是________。
A、pp[0][1]
B、a[10]
C、p[3][1]
D、*(*(p+2)+2)
(  B  )
21、设有两个字符串p和q,其中q是p的子串,把q在p中首次出现的位置作为子串q在p中位置的算法称为 (43) 。
A、求子串
B、匹配
C、连接
D、求串长
(  C  )
22、下述语句中,_____中的if语句语法是错误的。 ( )
A、if(x>y);
B、if(x==y)x+=y;
C、if(x!=y)seanf("%d",&x)else scanf("%d",&y);
D、if(x<y)x++;y++;
(  B  )
23、假定有以下变量定义: int k=6,x=12; 则能使x、k值为5、6的表达式是________。
A、x%=++k%10
B、x%=k+k%5
C、x-=++k%5
D、x-=k++%5
(  A  )
24、下列程序的运行结果是________。
main()
{
int a=-5,b=1,c=1;
int x=0,y=2,z=0;
if(c>0)x=x+ y;
if(a<=0)
{
if(b>0) if(c<=0)y=x-y;
}
else if(c>0)y=x-y;
else z=y;
printf("%d,%d,%d\n",x,y,z);
}
A、2,2,0
B、2,2,2
C、0,2,0
D、2,0,2
(  A  )
25、有以下程序:
#include <stdio.h>
main()
{
int a=1,b=2;
for(;a<12;a++)
{
b+=a*2;
a+=3;
}
printf("%d,%d\n",b,a);
}
程序运行后的输出结果是________。
A、32,13
B、46,10
C、72,13
D、72,10
(  D  )
26、若下列选项中的各变量均为整型且已有值,其中不正确的赋值语句是________。
A、++i;
B、n1=(n2/(n3=2));
C、k=i=j;
D、a=b+c=2;
(  C  )
27、有以下函数: int fun(char *x, char *y)
{
int n=0;
while((*x==*y)&&*x!=’\0’)
{
x++;
y++;
n++;
}
return n;
}
函数的功能是________。
A、将y所指字符串赋给x所指存储空间
B、查找x和y所指字符串中是否有’\0’
C、统计x和y所指字符串中最前面连续相同的字符个数
D、统计x和y所指字符串中相同的字符个数
(  A  )
28、以下叙述中正确的是______。
A、不能用字符串常量对字符数组名进行整体赋值操作
B、字符串常量"Hello"会被隐含处理成一个无名字符型数组,它有5个元素
C、char str[7]="string!";在语法上是合法的,运行也是安全的
D、char *str;str="Hello";与char str[];str="Hello";效果是一样的
(  C  )
29、请读程序:
#include<stdio.h>
#include<string.h>
void fun(char * w,int m) {
char s,* p1,* p2;
p1=w;
p2=w+m-1;
while(p1<p2) {
s=* p1++;
*pl=* p2 --;
* p2=s;
}
}
main( )
{
char a[]="abcdefg";
fun(a,strlen(a));
puts(a);
}
上面程序的输出结果是________。
A、GEFDCBA
B、AGADAGA
C、AGAAGAG
D、GAGGAGA
(  B  )
30、有如下程序:
#include <stdio.h>
long fib(int n) {
if(n>2) return(fib(n-1)+fib(n-2));
else return(2);
}
main()
{
printf("%d\n",fib(3));
}
该程序的输出结果是________。
A、2
B、4
C、6
D、8
(  C  )
31、下列表达式中,类型可以作为int型的是________。
A、"abe"+"efg"
B、"abc"+"efg"
C、'a'+'b'
D、3+"4"
(  B  )
32、某一维数组中依次存放了数据元素12,23,30,38,41,52,54,76,85,在用折半(二分)查找方法(向上取整)查找元素54时,所经历"比较"运算的数据元素依次为________。
A、41, 52, 54
B、41, 76, 54
C、41, 76, 52, 54
D、41, 30, 76, 54
(  B  )
33、请选出以下程序的输出结果______。
#include <stdio.h>
sub(int x,int y,int *z)
{
*z=y-x;
}
main()
{
int a,b,c;
sub(10,5,&a);
sub(7,a,&b);
sub(a,b,&c);
printf("%d,%d,%d\n",a,b,c);
}
A、5,2,3
B、-5,-12,-7
C、-5,-12,-17
D、5,-2,-7
(  B  )
34、有以下程序:
#include <stdio.h>
main()
{
file *fp;
int i,k=0,n=0;
fp=fopen("d1.dat","w");
for(i=1;i<4;i++) fprintf(fp,"%d",i);
fclose(fp);
fp=fopen("d1.dat","r");
fscanf(fp,"%d%d",&k,&n);
printf("%d %d\n",k,n);
fclose(fp);
}
执行后输出结果是______。
A、1 2
B、123 0
C、1 23
D、0 0
(  C  )
35、有如下程序
#include <stdio.h>
main()
{
file *fp1;
fp1=fopen("f1.txt","w");
fprintf(fp1,"abc");
fclose(fp1);
}
若文本文件f1.txt中原有内容为:good,则运行以上程序后文件f1.txt中的内容为______。
A、goodabc
B、abcd
C、abc
D、abcgood
(  D  )
36、int a;
float f;
double i;
表达式15+i*f+ ’a’ -a 的值是型
A、float
B、int
C、char
D、double
(  B  )
37、c语言中,运算符>=属于
A、算术运算符
B、关系运算符
C、逻辑运算符
D、条件运算符
(  A  )
38、以下选项中合法的 c 语言赋值语句是________。
A、++i;
B、a=b=34
C、a=3,b=9
D、k=int(a+b);
(  A  )
39、以下关于字符串的叙述中正确的是________。
A、空串比空格打头的字符串小
B、两个字符串中的字符个数相同时才能进行字符串大小的比较
C、可以用关系运算符对字符串的大小进行比较
D、C 语言中有字符串类型的常量和变量
(  B  )
40、c语言中数组下标的下限是________。
A、1
B、0
C、视具体情况而定
D、无固定下限
(  C  )
41、与数学式子3乘以x的n次方/(2x-1)对应的c语言表达式是______。
A、3*x^n/(2*x-1)
B、3*x**n/(2*x-1)
C、3*pow(x,n)*(1/(2*x-1))
D、3*pow(n,x)/(2*x-1)
(  C  )
42、enum a
{
sum=9,mon=-1,tue
}
;
定义了________。
A、枚举变量
B、3个标识符
C、枚举数据类型
D、整数9和-1
(  A  )
43、若有int *p=(int *)malloc(sizeof(int)); 则向内存申请到内存 空间存入整数123的语句为________。
A、scanf("%d",p);
B、scanf("%d",&p);
C、scanf("%d",*p);
D、scanf("%d",**p);
(  C  )
44、下列各定义数组的语句中不正确的是________。
A、int a[1][3];
B、int x[2][2]={1,2,3,4};
C、int x[2][ ]={1,2,4,6};
D、int m[ ][3]={ 1,2,3,4,5};
(  B  )
45、以下程序的输出结果是________。 。
main()
{
int x=1,y=0,a=1,b=1;
switch(x)
{
case 1:switch(y)
{
case 0:a++;
break;
case 1:b++;
break;
}
case 2:a++;
b++;
break;
}
printf("%d,%d\n",a,b);
}
A、2,1
B、3,2
C、2,3
D、3 2
(  D  )
46、下列个选项中,合法的c语言关键字是________。
A、integer
B、sin
C、string
D、void
(  C  )
47、以下与库函数strcmp(char*s,char*t) 的功能相等的程序段是________。
A、strcmp1(char *s,char *t){
for (;*s++==*t++;)
If (*s=='\0')
return 0;
return (*s-*t);
}
B、strcmp2(char *s,char *t){
for (;*s++==*t++;)
If (!*s) return 0;
return (*s-*t);
}
C、strcmp3(char *s,char *t){
for (;*t==*s;){
if (!*t)
return 0;
t++;
s++;
}
return (*s-*t);
}
D、strcmp4(char *s,char *t){
for (;*s==*t;s++,t++)
If (!*s) return 0;
return (*t-*s);
}
(  C  )
48、算术运算符、赋值运算符和关系运算符的运算优先级按从高到低的顺序依次为____
A、算术运算、赋值运算、关系运算
B、关系运算、赋值运算、算术运算
C、算术运算、关系运算、赋值运算
D、关系运算、算术运算、赋值运算
(  B  )
49、C语言函数内定义的局部变量的隐含存储类别是
A、static
B、auto
C、register
D、extern
(  C  )
50、下面叙述中正确的是
A、对于用户自己定义的函数,在使用前必须加以声明
B、声明函数时必须明确其参数类型和返回类型
C、函数可以返回一个值,也可以什么值也不返回
D、空函数在不完成任何操作,所以在程序设计中没有用处