山西师范大学2022年C语言程序设计专升本试题

本试卷为山西师范大学2022年C语言程序设计专升本试题,题目包括:单项选择题。

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

本卷包括如下题型:

一、单项选择题

C语言程序设计专升本试题

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

(  B  )
1、当变量c的值不为2、4、6时,值也为"真"的表达式是________。
A、(c==2)‖(c==4)‖(c==6)
B、(c>=2&&c<=6)‖(c!=3)‖(c!=5)
C、(c>=2&&c<=6)&&!(c%2)
D、(c>=2&&c<=6)&&(c%2!=1)
(  A  )
2、有以下函数: char fun(char*p)
{
return p;
}
该函数的返回值是________。
A、无确功的值
B、形参P中存放的地址值
C、一个临时存储单元的地址
D、形参P自身的地址值
(  A  )
3、下列字符数组初始化语句中,不正确的是________。
A、char c[]='goodmorning';
B、char e[20]="goodmorning":
C、char c[]=('a','b','c','d');
D、char c[]={”ffgoodmorning”);
(  D  )
4、c语言中,下列不合法的字符常量是________。
A、'\xff'
B、'\65'
C、'&'
D、'\028'
(  C  )
5、下面正确的字符常量是________。
A、“d”
B、‘\\’’
C、‘D’
D、‘’
(  D  )
6、若int i=10;
执行下列程序后,变量i的正确结果是________。 switch (i)
{
case 0: i+=1;
case 10: i+=1;
case 11: i+=1;
default: i+=1;
}
A、10
B、11
C、12
D、13
(  B  )
7、设有如下程序段: int i=0, sum=1;
do
{
sum+=i++;
}
while(i<6);
printf("%d\n", sum);
上述程序段的输出结果是________。
A、11
B、16
C、22
D、15
(  C  )
8、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是________。
A、int型
B、float型
C、double型
D、不确定
(  C  )
9、设有定义:int k=1,m=2; float f=7; ,则以下选项中错误的表达式是________。
A、k=k>=k
B、-k++
C、k%int(f)
D、k>=f>=m
(  C  )
10、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点后两位,并将第三位四舍五入的是________。
A、x=x*100+0.5/100.0;
B、x=(x*100+0.5)/100.0;
C、x=(int)(x*100+0.5)/100.0;
D、x=(x/100+0.5)*100.0;
(  C  )
11、设有说明 int (*ptr)[m]; 其中 ptr 是______。
A、M 个指向整型变量的指针
B、指向 M 个整型变量的函数指针
C、一个指向具有 M 个整型元素的一维数组的指针
D、具有 M 个指针元素的一维指针数组,每个元素都只能指向整型量
(  D  )
12、若有以下说明和语句: int c[4][5],(*p)[5]; p=c; 能够正确引用c数组元素的是________。
A、p+l
B、*(p+3)
C、*(p+1)+3
D、*(p[0]+2)
(  B  )
13、若需要利用形参直接访问实参,则应把形参变量说明为( )参数。
A、指针
B、引用
C、传值
D、常值
(  B  )
14、下列可用于c语言用户标识符的一组是________。
A、void,define,WORD
B、a3_b3,_123,Car
C、For,-abc,IF Case
D、2a,DO,sizeof
(  C  )
15、以下关于c语言数据类型的叙述中正确的是________。
A、C基本数据类型包括:分为整型、实型、浮点型、字符型四种
B、实型常量的表达方式包括十进制形式、十六进制形式、二进制形式、八进制形式、指数形式
C、若要处理如“人员信息”等含有不同类型的相关数据,应自定义结构体类型
D、若只处理“真”和“假”两种逻辑值,应使用逻辑类型
(  D  )
16、下列不属于逻辑运算符的是________。
A、!
B、||
C、&&
D、|
(  A  )
17、在下列原型所示的c++函数中,按"传值"方式传递参数的是________。
A、void f1(int x);
B、void f2(int*x);
C、void f3(const int*x);
D、void f4(int&x);
(  B  )
18、一条计算机指令中,通常应包含______。
A、数据和字符
B、操作码和操作数
C、运算符和数据
D、被运算数和结果
(  D  )
19、如果在一个运算表达式中包含有逻辑运算、关系运算和算术运算,并且其中未用圆括号规定这些运算的先后顺序,那么这样的综合型表达式的运算顺序是______。
A、逻辑→算术→关系
B、关系→逻辑→算术
C、算术→逻辑→关系
D、算术→关系→逻辑
(  B  )
20、设有两个字符串p和q,其中q是p的子串,把q在p中首次出现的位置作为子串q在p中位置的算法称为 (43) 。
A、求子串
B、匹配
C、连接
D、求串长
(  C  )
21、有以下程序
main()
{
char s[]="\n123\\";
printf("%d,%d\n",strlen(s),sizeof(s));
}
执行后输出结果是________。
A、赋初值的字符串有错
B、6,7
C、5,6
D、6,6
(  D  )
22、有以下程序:
#include <stdio.h>
#include <string.h>
main(int argc,char *argv[]) {
int i,len=0;
for(i=1;i<argc;i+=2) len+=strlen(argv[i]);
prinff("%d\n",len);
}
此程序经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的命令行: ex abed efg h3 k44 则执行后的输出结果时________。
A、14
B、12
C、8
D、6
(  D  )
23、若有说明语句 char a[ ]="it is mine";
char *p="it is mine";
则以下不正确的叙述是________。
A、a+1表示的是字符t的地址
B、p指向另外的字符串时,字符串的长度不受限制
C、p变量中存放的地址值可以改变
D、a中只能存放10个字符
(  C  )
24、下列字符数组长度为5的是________。
A、char a[10]= { 'h','a','b','c','d' };
B、char b[]={ 'h','a','b','e','d','\0'};
C、char c[]={'h','a','b','c','d'};
D、char d[6]= {'h','a','b','c','\0'};
(  B  )
25、以下程序运行后的输出结果是______。
main ()
{
int y=18,i=0,j,a[8];
do
{
a[i]=y%2;
i++;
y=y/2;
}
while(y>=1);
for(j=i-1;j>=0;j--)printf("%d",a[j]);
printf("\n");
}
A、1000
B、10010
C、00110
D、10100
(  D  )
26、以下关于排序算法的叙述中,正确的是________。
A、冒泡排序法中,元素的交换次数与元素的比较次数一定相同
B、冒泡排序法中,元素的交换次数不少于元素的比较次数
C、简单选择排序中,关键字相同的记录在排序前后的相对位置一定不变
D、简单选择排序中,关键字相同的记录在排序前后的相对位置可能交换
(  B  )
27、有以下程序
main()
{
int i=10,j=1;
printf("%d,%d\n",i--,++j);
}
执行后输出的结果是________。
A、9,2
B、10,2
C、9,1
D、10,1
(  A  )
28、设有循环语句"for(i=1;i>0;i++) i++; ",其循环执行的次数是________。
A、无限
B、0
C、3
D、4
(  C  )
29、以下说法错误的是________。
A、C语言没有输入输出语句
B、运算符%的作用是求余
C、printf()是输入函数
D、保留字又称关键字,是指被赋予特定含义和有专门用途的标识符
(  B  )
30、若要求在if后一对圆括号中表示a不等于0的关系,则能正确表示这一关系的表达式为________。
A、a<>0
B、a
C、!a
D、a=0
(  B  )
31、对于以下递归函数f,调用 f(3) 的返回值是________。 int f(int n)
{
if(n) return f(n-1) + n;
else return n;
}
A、10
B、6
C、3
D、0
(  A  )
32、以下关于逻辑运算符两侧运算对象的叙述中正确的是________。
A、可以是任意合法的表达式
B、只能是整数 0 或非 0 整数
C、可以是结构体类型的数据
D、只能是整数 0 或 1
(  B  )
33、算法具有五个特性,以下选项中不属于算法特性的是______。
A、有穷性
B、简洁性
C、可行性
D、确定性
(  B  )
34、有以下程序
main()
{
int i, j;
for(i=1;i<4;i++)
{
for(j=i;j<4;j++) printf("%d*%d=%d ",i,j,i*j);
printf("\n");
}
}
程序运行后的输出结果是______。
A、1*1=1 1*2=2 1*3=3
2*1=2 2*2=4 2*3=6
3*1=3 3*2=6 3*3=9
B、1*1=1 1*2=2 1*3=3
2*2=4 2*3=6
3*3=9
C、1*1=1
D、1*1=1 1*2=2
2*1=2 2*2=4
3*3=9
(  B  )
35、c语言中,数组名代表________。
A、数组全部元素的值
B、数组首地址
C、数组第一个元素的值
D、数组元素的个数
(  B  )
36、若有定义语句:double x[5]= {1.0,2.0,3.0,4.0,5.0 }, *p=x;
则错误引用x数组元素的是______。
A、*p
B、x[5]
C、*(p+1)
D、*x
(  C  )
37、若有定义:int a=1,b=2,c=3,d=4,m=2,n=2; 则执行(m=a>b)&&(n=c>d)后 n 的值是________。
A、4
B、3
C、2
D、1
(  B  )
38、下面选项中合法的字符常量是________。
A、"X"
B、'X'
C、'abc'
D、'\'
(  A  )
39、先用语句定义字符型变量c,然后要将字符a赋给c,则下列语句中正确的是________。
A、c='a';
B、c="a";
C、c="97";
D、C='97'
(  D  )
40、以下程序的运行结果是________。
main()
{
int i=1,sum=0;
while(i<10) sum=sum+1;
i++;
printf("i=%d,sum=%d",i,sum);
}
A、i=10,sum=9
B、i=9,sum=9
C、i=2,sum=1
D、运行出现错误
(  A  )
41、设有如下定义:
struct sk
{
int a;
float b;
}
data,*p;
若要使p指向data中的a域,正确的赋值语句是________。
A、p=(struct sk*)&data.a;
B、p=(struct sk*) data.a;
C、p=&data.a;
D、*p=data.a;
(  B  )
42、下面程序输出的结果为________。
#include <stdio.h>
int main()
{
int  s=3;
switch(s)
{
case  5: printf("我");
break;
    case  4: printf("是");
    case  3: printf("好");
    case  2: printf("学");
break;
    default: printf("生");
}
}
A、好
B、好学
C、好学生
D、我是好学生
(  C  )
43、c语言规定,在一个源程序中,main函数的位置________。
A、必须在最开始
B、必须在其他函数的后面
C、可以任意
D、必须在最后
(  A  )
44、设n 为整型变量,则循环语句for(n=10;n > 0;n--) 的循环次数为________。
A、10
B、9
C、11
D、12
(  D  )
45、对于数学式x /2a,下面正确的c 语言表达式是________。
A、sqr(x)/2a
B、sqr(x)/2*a
C、sqrt(x)/(2*a)
D、sqrt(x)/2*a
(  C  )
46、下列语句的输出结果是()。
printf("%d\n",(int)(2.5+3.0)/3);
A、有语法错误不能通过编译
B、2
C、1
D、0
(  A  )
47、下列数组说明中,正确的是()。
A、static char str[]="China";
B、static char str[]; str="China";
C、static char str1[5],str2[]={"China"}; str1=str2;
D、static char str1[],str2[];str2={"China"}; strcpy(str1,str2);
(  A  )
48、以下语句中,循环次数不为 10 次的语句是()。
A、for(i=1;i<10;i++);
B、i=1;do{i++;}while(i<=10);
C、i=10;while(i>0){--i;}
D、i=1;m:if(i<=10){i++;goto m;}
(  B  )
49、若执行 fopen 函数时发生错误,则函数的返回值是()。
A、地址值
B、0
C、1
D、EOF
(  A  )
50、执行下面语句后的输出为____
int i= -1;
if (i < =0)printf("****\n");
else printf("%%%%\n");
A、****
B、%%%%
C、%%%%C
D、有语法错,不能执行