北京农学院2023年C语言专升本

本试卷为北京农学院2023年C语言专升本,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言专升本

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

(  C  )
1、下列叙述中正确的是________。
A、break语句只能用于switch语句体中
B、continue语句的作用是使程序的执行流程跳出包含它的所有循环
C、break语句只能用在循环体内和switch语句体内
D、在循环体内使用break语句和continue语句的作用相同
(  B  )
2、交换两个变量的值,不允许用临时变量,应该使用下列( )位运算符。
A、&
B、^
C、||
D、~
(  B  )
3、设有定义:"int a;float b;",执行"scanf("%2d%f",&a,&b);"语句时,若从键盘输入876543.0<回车>,a和b的值分别是________。
A、876和543.000000
B、87和6.000000
C、87和543.000000
D、76和543.000000
(  B  )
4、若有定义"int b[8],*p=b;",则p+6表示( )。
A、数组元素b[6]的值
B、数组元素b[6]的地址
C、数组元素bE73的地址
D、数组元素hEo]的值加上6
(  C  )
5、两次运行下面的程序,如果从键盘上分别输入6和3,则输出结果是________。 if(x++>5) printf("%d",x); else printf("%d\n",x --);
A、7和5
B、6和3
C、7和4
D、6和4
(  C  )
6、以下有4组用户标识符,其中合法的一组是________。
A、FOr
-sub
Case
B、4d
DO
Size
C、f2_G3
IF
abc
D、WORD
void
define
(  A  )
7、在c语言中,存储一个字符型、整型、双精度实型变量所需的字节数是________。
A、1、2、8
B、1、4、4
C、4、1、4
D、2、2、8
(  C  )
8、以下不能对二维数组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}
(  B  )
9、c语言对嵌套if语句的规定是:else总是与( ) 。
A、其之前最近的if配对
B、其之前最近的且尚未配对的if配对
C、缩进位置相同的if配对
D、第一个if配对
(  C  )
10、已定义c为字符型变量,则下列语句中正确的是________。
A、c='97';
B、c="97";
C、c=97;
D、c="a";
(  B  )
11、以下选项中不能正确把cl定义成结构体变量的是________。
A、typedef struct
{
int red;
int green;
int blue;
} COLOR;
COLOR cl;
B、struct color cl
{
int red;
int green;
int blue;
};
C、struct color
{
int red;
int green;
int blue;
} cl;
D、struct
{
int red;
int green;
int blue;
} cl;
(  B  )
12、下列函数定义中,会出现编译错误的是________。
A、max(int x,int y,int *z)
{ *z=x>y ? x:y; }
B、int max(int x,y)
{
int z;
z=x>y ? x:y;
return z;
}
C、max(int x,int y)
{
int z;
z=x>y?x:y; return(z);
}
D、int max(int x,int y)
{
return(x>y?x:y); }
(  C  )
13、有以下程序
#include <string.h>
main()
{
char str[][20]={"hello","beijing"},*p=str;
printf("%d\n",strlen(p+20));
}
程序运行后的输出结果是________。
A、0
B、5
C、7
D、20
(  D  )
14、以下正确的字符串常量是________。
A、“╲╲╲”
B、‘abc’
C、Olympic
D、**
(  C  )
15、程序流程图中指有箭头的线段表示的是________。
A、图元关系
B、数据流
C、控制流
D、调用关系
(  D  )
16、c 语言规定,函数返回值的类型是由 。
A、return 语句中的表达式类型所决定
B、调用该函数时的主调函数类型所决定
C、调用该函数时系统临时决定
D、在定义该函数时所指定的函数类型决定
(  B  )
17、以下叙述中正确的是______。
A、全局变量的作用域一定比局部变量的作用域范围大
B、静态 (static) 类别变量的生存期贯穿于整个程序的运行期间
C、函数的形参都属于全局变量
D、未在定义语句中赋初值的 auto 变量和 static 变量的初值都是随机值
(  B  )
18、当调用函数时,实参是一个数组名,则向函数传送的是 _______ 。
A、数组的长度
B、数组的首地址
C、数组每一个元素的地址
D、数组每个元素中的值
(  D  )
19、有如下程序段: int*p,a[7]={-5,0,4,2,7,1}; p=a+6; 执行该程序段后,*p的值为________。
A、4
B、2
C、1
D、0
(  B  )
20、若有定义语句:int x=12,y=8,z; 在其后执行语句z=0.9+x/y; 则z的值为___________。
A、1.9
B、1
C、2
D、2.4
(  A  )
21、以下叙述中正确的是______。
A、每个数组包含一组具有同一类型的变量,这些变量在内存中占有连续的存储单元
B、一条语句只能定义一个数组
C、数组说明符的一对方括号中只能使用整型常量,而不能使用表达式
D、在引用数组元素时,下标表达式可以使用浮点数
(  D  )
22、若有以下定义,则能使值为3的表达式是 int k=7,x=12;
A、x%=(k%=5)
B、x%=(k-k%5)
C、x%=k-k%5
D、(x%=k)-(k%=5)
(  A  )
23、以下for语句中不是死循环的是________。
A、for(int i=0;i<1;i++);
B、for(int i=0;i++);
C、for(int i=1;i>0;++i);
D、for( ;;);
(  A  )
24、对以下定义的表述中,正确的是________
struct node
{
int num;
char name[10];
}
stud;
A、stud是一个结构体变量
B、stud是一个结构体类型
C、node是一个结构体数据
D、node是一个结构体变量
(  A  )
25、有如下语句: s=int(100*rnd) 执行完毕后,s的值是________。
A、[0,99]的随机整数
B、[0,100]的随机整数
C、[1,99]的随机整数
D、[1,100]的随机整数
(  D  )
26、表达式x+1>x是________。
A、算术表达式
B、非法表达式
C、字符串表达式
D、关系表达式
(  D  )
27、设a为int型变量,执行下列赋值语句后,a的取值分别为 ( )
a=125.534; a=20.0/3; a=20%3; a=(int)125%521%4; a=5<<2;
A、125,6.666666,2,1,1
B、125,6,2,1,1
C、125.534,6.666666,2,1,20
D、125,6,2,1,20
(  B  )
28、下列不属于简单数据类型的是________。
A、整数类型
B、类
C、浮点数类型
D、布尔类型
(  B  )
29、在32位的计算机中,一个char型数据所占的内存长度的字节是________。
A、4
B、1
C、2
D、8
(  C  )
30、关于下面的程序
#include<stdio.h>
main()
{
int x=3,y=0,z=0;
if(x=y+z)printf("****");
else printf("$$$$");
}
说法正确的是______。
A、有语法错误不能通过编译
B、输出****
C、输出$$$$
D、可以通过编译,但不能通过连接,无法运行
(  C  )
31、有以下程序:
#include <stdio.h>
main()
{
int i, j, m=1;
for(i=1; i<3; i++)
{
for(j=3; j>0; j--)
{
if(i*j>3)break;
m*=i*j;
}
}
printf("m=%d\n", m);
}
程序运行后的输出结果是______。
A、m=4
B、m=2
C、m=6
D、m=5
(  A  )
32、有以下程序
#include <stdio.h>
main( )
{
file *fp;
int i,a[6]={1,2,3,4,5,6};
fp=fopen("d3.dat","w+b");
fwrite(a,sizeof(int),6,fp);
fseek(fp,sizeof(int)*3,seek_set);
/*该语句使读文件的位置指针从文件头向后移动3个int型数据*/ fread(a,sizeof(int),3,fp);
fclose(fp);
for(i=0;i<6;i++)printf("%d,",a[i]);
}
程序运行后的输出结果是________。
A、4,5,6,4,5,6,
B、1,2,3,4,5,6,
C、4,5,6,1,2,3,
D、6,5,4,3,2,1,
(  A  )
33、有以下程序:
#include<stdio.h> union pw
{
int i;
char ch[2];
}
a;
main()
{
a.ch[0]=13;
a.ch[1]=0;
printf("%d\n",a.i);
}
程序的输出结果是________。
A、13
B、14
C、208
D、209
(  D  )
34、下列有关格式输入函数scanf的叙述中正确的是________。
A、输入项可以是C语言中规定的任何变量,并且在任何变量前必须加地址符号“&”
B、可以只有格式控制项,没有地址列表项
C、在输入数据时,必须规定精度。如scanf("%4.2f",&d);
D、当输入数据时,必须指明变量地址
(  D  )
35、下面说明不正确的是________。
A、char a[10]="china";
B、char a[10],*p=a;p="china"
C、char*a;a="china";
D、chara[10],*P;P=a="china"
(  A  )
36、下列语句中正确的是________。
A、char*myString="Hello-World!";
B、char myString="Hello-World!";
C、char myString[11]=”Hello-World!”;
D、char nlyString[12]="Hello-World!";
(  C  )
37、下列程序的输出结果是______。
#include<stdio.h>
main()
{
int a=0,b=1,c=2;
if(++a>0 || ++b>0) ++c;
printf("%d,%d,%d",a,b,c);
}
A、0,1,2
B、1,2,3
C、1,1,3
D、1,2,2
(  B  )
38、有以下程序: int*f(int*x,int*y)
{
if(*x<*y) return x;
else return y;
}
main()
{
int a=7,b=8,*p,*q,*r;
p=&a;
q=&b;
r=f(p,q);
print("% d,% d,% d\n",*p,*q,*r);
}
执行后的输出结果是 ______。
A、7,8,8
B、7,8,7
C、8,7,7
D、8,7,8
(  D  )
39、下面合法的c语言字符常量是__________.
A、'\t'
B、"A"
C、65
D、A
(  B  )
40、有如下程序段int *p,a=6,b=2; p=&a; a=*p+b; 执行该程序段后,a的值为______。
A、6
B、8
C、7
D、编译出错
(  A  )
41、下面程序的输出结果是_______。
f1(int x)
{
int y;
y=x+x;
return(y);
}
f2(int a ,int b)
{
int z;
z=f1(a*b);
return(z);
}
main( )
{
int a=2,b=5,c;
c=f2(a,b);
printf("%d",c);
}
A、20
B、7
C、4
D、10
(  A  )
42、以下程序的输出结果是 _______ 。
main()
{
int x=1,y=0,a=0,b=0;
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、2,2
C、1,1
D、2 1
(  B  )
43、要表达出关系x ≥ y ≥ z,应使用表达式( )
A、(x>=y) AND (y>=z)
B、(x>=y) && (y>=z)
C、(x>=y) || (y>=z)
D、(x ≥ y ≥ z)
(  B  )
44、二维数组a有m行n列,则在a[i][j]之前的元素个数为________。
A、j*n+i
B、i*n+j
C、i*n+j-1
D、i*n+j+1
(  A  )
45、以下正确的说法是:在c语言中________。
A、实参和与其对应的形参各占用独立的存储单元
B、实参和与其对应的形参共占用一个存储单元
C、只有当实参和与其对应的形参同名时才共占用存储单元
D、形参是虚拟的,不占用存储单元
(  D  )
46、若变量已正确定义,执行语句scanf("%d,%d,%d ",&k1,&k2,&k3);
时,___是正确的输入
A、2030,40
B、20 30 40
C、20, 30 40
D、20,30,40
(  A  )
47、定义共用体的关键字是________。
A、union
B、enum
C、struct
D、typedef
(  A  )
48、对于用"r"方式打开文件下列说法正确的是________。
A、用"r"方式打开的文件只输入不能输出
B、用"r"方式打开的文件只能输出,不能输入
C、用"r"方式可以打开任何文件
D、以上均不对
(  A  )
49、执行以下循环语句时,下列说法正确的是________。x = -1;
do
{
x = x * x;
}
while (x == 0);
A、循环体将执行一次
B、循环体将执行两次
C、循环体将执行无限次
D、系统将提示有语法错误
(  D  )
50、在宏定义#define PI 3.14159中,用宏名代替一个________。
A、常量
B、单精度数
C、双精度数
D、字符串