C语言专升本样卷
(总分100分,考试时长90分钟)
一、单项选择题(每小题2 分,共 40分)
1、以下叙述中正确的是________。
A、预处理命令行必须位于c源程序的起始位置
B、在c语言中,预处理命令行都以“#”开头
C、每个c程序必须在开头包含预处理命令行:#include
D、C语言的预处理不能实现宏定义和条件编译的功能
2、在c语言程序中可用做用户标识符的是________。
A、void
B、aa
123 _abc
BBN cas
C、as+b3
D、6f
—123 Do
If SIG
3、设a=3,b=2,则表达式a^b>>2的值的二进制表示为________。
A、00000011
B、00000110
C、00000100
D、10
4、以下程序的输出结果是________。
#include<stdio.h>
main()
{
int a=1,b=3;
if((++a<0)&&!(b--<=0)) printf("%d,%d\n",a,b);
else printf("%d,%d\n",b,a);
}
A、2,2
B、1,3
C、3,2
D、3,1
5、以下说法中不正确是________。
A、使用while循环时,循环变量初始化的操作应在循环语句之前完成
B、while循环是先判断表达式,后执行循环体语句
C、do-while和for循环均是先执行循环体语句,后判断表达式
D、for,while和for-while循环中的循环体均可以由空语句构成
6、putchar ( )函数可以向终端输出一个 ( ) 。
A、整型变量表达式值
B、实型变量值
C、字符串
D、字符或字符型变量值
7、以下不合法的数值常量是________。
A、011
B、1e1
C、8.0E0.5
D、0xabcd
8、以下关于数组的描述正确的是______。
A、数组的大小是固定的,但可以有不同的类型的数组元素。
B、数组的大小是可变的,但所有数组元素的类型必须相同。
C、数组的大小是固定的,但所有数组元素的类型必须相同。
D、数组的大小是可变的,但可以有不同的类型的数组元素。
9、以下关于c/c语言指针变量的叙述中,正确的是________。
A、指针变量可以是全局变量也可以是局部变量
B、必须为指针变量与指针所指向的变量分配相同大小的存储空间
C、对指针变量进行算术运算是没有意义的
D、指针变量必须由动态产生的数据对象来赋值
10、下列字符串中可以用作c标识符的是________。
A、2009var
B、goto
C、test-2009
D、-123
11、下面程序段的执行结果是________。
#include<stdio.h>
main()
{
int a[5][5],i,j;
for(i=1;i<5;i++) for(j=1;j<5;j++) a[i][j]=(i<j)*(j/i);
for(i=1;i<5;i++) {
for(j=1;j<5;j++) printf("%2d",a[i][j]);
printf("\n");
}
}
A、1111
1111
1111
1111
B、0001
0010
0100
1000
C、0234
0012
0001
0000
D、0000
0000
0000
0000
12、在函数调用过程中,如果函数funa调用了函数funb,函数funb又调用了函数funa,则 ________。
A、称为函数的直接递归调用
B、称为函数的间接递归调用
C、称为函数的循环调用
D、C语言中不允许这样的递归调用
13、以下字符常量中不合法的一项是________。
A、'b
'
B、' '
C、' '
D、'Y'
14、下列程序的输出结果是________。
#include<stdio.h>
int fun(int x)
{
int p;
if(x==0‖x==1) return 3;
else p=x-fun(x-2);
return p;
}
void main()
{
print f("\n%d", fun(5));
}
A、5
B、3
C、7
D、1
15、若有如下定义并赋值: char ch='a', a; 则执行语句"printf("%d",a=ch+2.6); "后的输出结果是________。
A、c
B、d
C、99
D、100
16、有以下程序
#include <stdio.h>
main()
{
int a[]={2,3,5,4},i;
for(i=0;i<4;i++)
switch(i%2)
{
case 0: switch(a[i]%2)
{
case 0:a[i]++;
break;
case 1:a[i]--;
}
break;
case 1:a[i]=0;
}
for(i=0;i<4;i++) printf("%d ",a[i]);
printf("\n");
}
程序运行后的输出结果是________。
A、3 3 4 4
B、2 0 5 0
C、3 0 4 0
D、0 3 0 4
17、有以下程序:
#include <stdio.h>
struct s
{
int a, b;
}
data[2]= {10, 100, 20, 200 };
main()
{
struct s p=data[1];
printf("%d\n", ++(p.a));
}
程序运行后的输出结果是______。
A、10
B、11
C、20
D、21
18、下面程序的运行结果是________。
main( )
{
int a,b;
a=-1;
b=0;
do
{
++a;
++a;
b+=a;
}
while(a<9);
printf("%d\n",b);
}
A、34
B、24
C、26
D、25
19、有以下程序
main()
{
char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是________。
A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6
20、设有以下语句
typedef struct s
{
int g;
char h;
}
t;
则下面叙述中正确的是________。
A、可用S定义结构体变量
B、可以用T定义结构体变量
C、S是struct类型的变量
D、T是struct S类型的变量
二、判断题(每小题2 分,共 20分)
( )1、在标准c中并不区分英文字符的大小写
( )2、在标准c语言中,宏替换是程序运行时完成的。
( )3、静态局部变量的值在函数调用结束后不消失而保留原值
( )4、do-while循环中,根据情况可以省略while.( )
( )5、字符串可以存储在字符数组中,也可以存储在字符型指针变量中
( )6、函数的实参和形参都可以是变量、常量和表达式。
( )7、数组名能与其它变量名相同。数组名后是用方括号括起来的常量表达式,不能用圆括号。
( )8、文件的读函数是从输入文件中读取信息,并存放在内存中。
( )9、在定义数组时,有时可以将该数组的维数省略。( )
( )10、全局静态变量的作用域限制在定义它的源文件内,只能为该源文件内的函数公用。
三、编程题(每小题 分,共 40分)
1、编写程序:利用指针方法, 输入3个数a,b,c,按大小顺序输出。 (本题10分)
2、编程计算1!+2!+3!+…+10的值。 (本题14分)
3、编写程序:创建一个长度为n的链表,然后反向输出该链表。 (本题16分)
参考答案
一、单项选择题
1、B
2、B
3、A
4、C
【解析】解答本题的关键在于读懂if语句条件中的表达式。初始时a=1,b=3,所以++a=2>0,因此++a<0为假,因为是进行逻辑与(&&)运算,在&&的第一个运算对象为假的前提下不用判断第二个运算对象的真假,就可以直接得出整个表达式的值为逻辑0,所以直接执行else语句。
5、C
【解析】本题主要考查的知识点为for、while和do-while循环的特点。
[要点透析] for循环是先判断表达式,后执行循环体语句。
sizeof是什么6、D
7、C
8、C
9、A
【解析】存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地址。选项A显然是正确的。对于选项B,指针变量和指针所指向的变量存放的内容是不一样的,只要分配够用就行了,不需要分配一样大小的存储空间。对于选项C,指针变量加1便指向下一个存储单元,是有意义的。另外指针变量可以静态地定义。
10、D
【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符号。C++变量区分大小写。
11、C
【解析】本题使用一个双重循环对―个二维数组的一部分赋值(下标中含0的元素不赋值),赋值表达式是a[i][j]=(i/j)*(j/i)。因为i和j都是正整数,所以当i大于j时,j/i为0,当i小于j时,i/j为0,
而0乘以任何数都为0,故表达式(i/j)*(j/i)在i和j不相等时的值为0。当i和j相等时,i/j和j/i的值都为1,所以表达式(i/j)*(j/i)的值为1。故二维数组中的a[1][1]、a[2][2]、 a[3][3]、a[4][4]被赋为1,其余下标不含0的元素被赋为0。故应该选择C。
12、B
【解析】在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。本题描述的函数调用属于函数的间接递归调用。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论