2021年华北水利水电大学C语言专升本练习(十二套试卷)及答案_第1页
2021年华北水利水电大学C语言专升本练习(十二套试卷)及答案_第2页
2021年华北水利水电大学C语言专升本练习(十二套试卷)及答案_第3页
2021年华北水利水电大学C语言专升本练习(十二套试卷)及答案_第4页
2021年华北水利水电大学C语言专升本练习(十二套试卷)及答案_第5页
已阅读5页,还剩154页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华北水利水电大学

C语言专升本练习(一)

考试方式:【闭卷、笔试】考试时间:【60分钟】

总分:【100分】出题人:【】

题号一总分

得分

•考生要认真核对条形码上打印的姓名、座位号是否与本人准考证上一致

•除在答题区域内作答外,不得在答题卡的任何部位做任何标记或乱涂乱画。

•考试结束,不得将试卷、答题卡或草稿纸带出考场。

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

()1、若有定义inta□={10,20,30},*p=a;,当执行p++;后,下列说法错误的是

A、p向高地址移了一个字节

B、p向高地址移了一个存储单元

C、p向高地址移了四个字节

D、p与a+1等价

()2、设变量已正确定义,则以下能正确计算f=n!的程序是.。

A、f=0;

for(i=l;i<=n:i+十)f*=i;

B、f=l

for(i=l:i

C、f=l:

e月for(i=n;i>l;i十+)f*=i;

皿D、f=l:

for(i=n;j>=2;j—)f*=i;

()3、与y=(x>0?l:x<0?-l:0);的功能相同的if语句是。

A、if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

B、if(x)

if(x>0)y=l;

elseif(x<0)y=-l;

elsey=0;

C、y=-l

if(x)

if(x>0)y=l;

elseif(x=0)y=0;

elsey=-l;

D,y=0;

if(x>=0)

第1/159页

if(x>O)y=l;

elsey=一1;

()4、设n为整型变量,则循环语句for(n=10;n>0;n-)的循环次数为—

A、10

B、9

C、11

D、12

()5、下面程序的输出结果是o

main()

(

char*pl二〃abc〃,*p2二〃abc〃,str[50]二〃xyz〃;

strcpy(str+2,strcat(pl,p2));

printf("%s\n〃,str);

)

A^xyzabcABC

B、zabcABC

C^xyabcABC

D^yzabcABC

()6、在c语言程序中可用做用户标识符的是o

A、void

123

BBN

B、aa

_abc

cas

C、as+b3

-123

If

D、6f

Do

SIG

()7、下列描述中正确的是o

A、标识符首字符的后面可以跟数字

B、标识符不区分大小写

C、复合数据类型变量包括布尔型、字符型和浮点型

D、数组属于基本数据类型

()8、下列哪一项不是表达式

A、1

B、a+b

C、©a;

D、c=a+b

()9、以下关于字符串的叙述中正确的是o

A、c语言中有字符串类型的常量和期量

第2/159页

B、两个字符串中的字符个数相同时才能进行字符串大小的比较

C、可以用关系运算符对字符串的大小进行比较

D、空串一定比空格打头的字符串小

)10、下列选项中不是c语句的是_______o

A^{inti;i++;printf(w%d\n",i);}

B、;

C^a=5,c=10

D、{;}

)11、函数的形式参数隐含的存储类型说明是o

A、extern

B、static

C^register

D>auto

)12、设变量a是整型,f是实型,i是双精度型,则表达式10+'a'+i*f的数据类型是

A、int型

B、float型

C^double型

D、不确定

)13、以下叙述中正确的是o

A、在函数中必须要有return语句

B、在函数中可以有多个return语句,但只执行其中的一个

C、return语句中必须要有一个表达式

D、函数值并不总是通过retum语句传回调用处

)14、若二维数组a有m歹山则计算任一元素在数组中位络的公式为(假设a[0][0]位于

数组的第一个位辂上)o

A、i*m+j

B、j*m+i

C、i*m+jT

D、i*m+j+l

)15、以下程序结果为:o

voidpp()

(

staticintn=5;

n——;

printfC%d,z,n);

)

main()

intm;

for(m=0;m<4;m++)pp();

}

第3/159页

A、5555

B、4321

C、4444

D、5432

()16、下面程序的输出结果是.

#include<stdio.h>

voidmain()

(

intx=3;

do

(

printf(〃%d",x-=2);

)

while(!(-x));

)

A、1

B、1-2

C、30

D、是死循环

()17、设有以下语句,其中不是对a数组元素的正确引用的是(其中0WiV6)inta[6]=

{11,22,33,44,55,66},*m=a;

A^&(*(a+i))

B、*(&a[i])

C、m[i]

D、a[i]

()18、有以下程序

mainO

(

inta=666,b=888;

printf(*%d\n*,(a,b));

}

程序运行后的输出结果是______。

A、错误信息

B、666

C、888

D、666,888

()19、若有以下定义和语句,且0Wi<10则对数组元素的错误引用是ointa[10]={

1,2,3,4,5,6,7,8,9,10},*p,i;p=a;

A^*(a+i)

B、a[p-a]

C^p+i

D、*(&a[i])

()20、下面结构体的定义语句中,错误的是o

第4/159页

A、structord{

intx;inty;intz;};structorda;

B、structord

intx;inty;intz;}structorda;

C、structord{

intx;inty;intz;}n;

D、struct{

intx;inty;intz;}a;

()21、判断i和j至少有一个值为非0的表达式是.

A、i!=0&&j!=0

B、i+j!=0

C>i||j

D、i&aj

()22、以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。

mainO/*beginning*/

(

intr;

floats;

scanf&r);

s=*p*r*r;

printf("s=%f\n”,s);

}

出错的原因是O

A、注释语句书写位置错误

B、存放圆半径的变量「不应该定义为整型

C、输出语句中格式描述符非法

1)、计算圆面积的赋值语句中使用了非法变量

()23、以下程序有语法错误,有关错误原因的正确说法是

main()

(

intg=5,k;

voidprt_char();

k=prt_char(g);

)

A、语句voidprt_char();有错,它是函数调用语句,不能用void说明

B、变量名不能使用大写字母

C、函数说明和函数调用语句之间有矛盾

D、函数名不能使用下划线

()24、以下描述中正确的是o

A、由于do-while循环中循环体语句只能是一条可执行语句,所以循环体内不能使用复合语句

B、do-while循环由do开始,用while结束,在while(表达式)后面不能写分号

C、在do-while循环体中,是先执行一次循环,再进行判断

第5/159页

D、do-while循环中,根据情况可以省略while

()25、若有说明:inta,b=2,*p=&a;则能完成a二b赋值功能的语句是。

A、a=*p;

B、*p=*&b;

C、a=&b;

D、a=**p;

()26若已定义x和y为double类型,则表达式x=l,y=x+3/2的值是。

A、1

B、2

C、2.0

D、2.5

()27、不能把字符串“hello!〃赋给数组b的语句是。

A、char!’;

B、charb[10]=,h','e',T',T','o',';

C、charb[10];strcpy(b,"Hello!”);

D、charb[10]=,/Hello!,z:

()28设有intx,y;

以下语句判断x和y是否相等,正确的说法是该语句oif(x=y)printfC"xisequal

toy."");

A、语法错

B、不能判断x和y是否相等

C、编译出错

D、能判断x和y是否相等

()29、下列变量定义中,错误的是。

A、intx=3;

B、floatf;d;

C、Strings二〃Hello!”;

D、booleanb=true;

()30、有以下计算公式若程序前面已在命令中包含malh.h文件,不能够正确计算上述公式的

程序段是0

A、if(x>=0)y=-sqrt(x);

elsey=sqrt(-x);

y=sqrt(x)

if(x<0)y=sqrt(〜x);

C^if(x>=0)y—sqrt(x);

If(x<0)y=sqrt(—x);

D、y=sqrt(x>=0?x:-x);

()31、下面函数的功能是_a(sl,s2)charsl[],s2[];while(s2++=sl++);

A、字符串比较

B、字符串复制

第6/159页

C、字符串链接

D、字符串反向

()32、以下选项中,非法的字符常量是.

A、’\t'

B、'\17'

C、"\n"

D、’\xaa,

()33、有以下程序

main()

(

chars[]="\nl23\\”;

printf("%d,%d\n”,strlen(s),sizeof(s));

}

执行后输出结果是=

A、赋初值的字符串有错

B、6,7

C、5,6

D、6.6

()34、下列选项中属于c语言构造类型的是。

A、指针类型

B、空类型

C、枚举类型

D、数组类型

()35、下列程序的输出结果是_

main()

(

chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf*一p);

}

A、非法

B、a[4]的地址

C、5

D、3

()36、若变量已正确定义:for(x=0,y=0;(y!=99&&x<4);x++)则以上for循环()

A、执行3次

B、执行4次

C、执行无限次

D、执行次数不定

()37、在c中,函数原型不能标识o

A、函数的返回类型

第7/159页

B、函数参数的个数

C、函数参数类型

D、函数的功能

()38、下列程序执行后的输出结果是_______o

main()

(

inta[3][3],*p,i,j;

p=&a;

for(i=p;i<9;i++)p[i]=i-i+l;

printf("%d\n",a[l][2]);

)

A、3

B、6

C、9

D、随机数

()39、若已定义:inta[]={0,l,2,3,4,5,6,7,8,9},*p=a,i;其中0WiW9,则对a数组元素的引用不

正确的是__。

A、a[p-a]

B、*(&a[i])

C、p[i]

D、*(*(a十i))

()40、下面定义结构变量的语句中错误的是。

A、structstudent{

intnum;charname[20];

}s;

B、struct{

intnum;charname[20];

)s;

C、structstudent{

intnum;charname[20];

);

structstudents;

D、structstudent{

intnum;charname[20];

);

students;

()41、语句:〃printf(〃%d〃,6=2)&&(4-2));〃的输出结果是。

A^无输出

B、结果是不确定

C、-1

D、1

()42、有如下程序段int*p,a=5,b=l;p=&a;a=*p+b;执行该程序段后,a的值为。

A、5

第8/159页

B、6

C、7

D、编译出错

()43、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句:if(a<b)if(c==d)y=0;

elsey=l;该语句所表示的含义是。

A、y=0,a

B、y=0,a

y二Laeby—1,a2b且cWd

C、y=0,a

D、y=0,a

y=LaVB且CrDy="1,crd

()44>在c语言中,while和do…while循环的主要区别是。

A^do…while的循环体不能是复合语句

B、do…while允许从循环体外转到循环体内

C、whi18的循环体至少被执行•次

D、do…while的循环体至少被执行一次

()45c语言规定:main函数的位置_______。

A、必须在最开始

B、必须在系统调用的库函数的后面

C、可以任意

I)、必须在最后

()46、以下程序的运行结果是o

#include<stdio.h>

main()

(

inta=3,b=4,c=8,d=4,m=l,n=3;

printf(zz%d\nz/,(m=a>b)&&(n=c>d));

)

A、0

B、1

C、2

D、3

()47、若已定义:inta[]={0,1,2,3,4,5,6,7,8,9},*p=a,i;其中0Wi<9,则对a数组元素不

正确的引用是o

A、int

double

C、float

D、不确定

()48、下列属于条件运算符的是o

A、:

B、&&

第9/159页

c、>>

D、+

)49、下列选项中,表示字符串末尾的结束标志是

A、'\n'

B、’\r'

C、'\0'

D、NULL

)50、有以下程序o

#include<stdio.h>

main()

(

file*fp;

intk,n,a[6]={l,2,3,4,5,6};

fp=fopen(〃d2.dat","w〃);

fprintf(fp,/z%d%d%d\nz,,a[0],a[l],a[2]);

fprintf(fp,〃%d%d%d\n〃,a[3],a[4],a[5]);

fclose(fp);

fp=fopen(/zd2.datz,,"r");

fscanf(fp,z/%d%dz,,&k,&n);

printf("%d%d\n”,k,n);

close(fp);

}

程序运行后的输出结果是O

A、12

B、14

C、1234

D、123456

第10/159页

参考答案

一、单项选择题

1、A

2、D

3、A

4、A

5、C

6、B

7、A

【解析】选项B错误,c语言标识符是区分大小写的;选项C错误,复合数据类型应该包括数组、类和接口;选项D错误,

数组应该属于复合数据类型;选项A正确,标识符首字符的后面可以跟数字、字母、下划线和美元符号。

8、C

9、D

10、C

11、D

12、C

13、B

14、D

15、B

16、B

17、A

18、C

19、C

20、B

21、C

22、D

23、C

【解析】在C语言中,对于返回值是其他类型的函数,若把函数定义放在调用之后,应该在调用之前对函数进行说明,

或称为函数原型说明。函数说明句中的类型必须与函数返回类型一致,函数说明可以是一条独立的语句,也可以与普通

变量一起出现在同一个语句中。对于函数值为整型的函数的说明,prt_char中定义时是void类型,那天返回值与

k=prt_char();矛盾。所以本题的错误之处在于“函数说明和函数调用语句之间有矛盾。”

24、C

【解析】dowhile语句的一般形式为:do循环体语句while(表达式);,其中循环体语句可以是复合型语句,但必须用

花括号括起来。while后必须要有分号作为语句的结束,在do-while循环中,不可以省略while。

25、B

26、C

27、B

【解析】在C语言中,大写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字

第11/159页

符串。

28、B

29、B

【解析】A选项定义了一个整型;C选项定义了一个字符串;D选项定义了一个布尔型变量:B选项中的f;d不符合标识符

规范,因而选B。

30、B

31、B

32、C

33、C

【解析】本题在定义字符数组时没有定义数组长度,但是给数组赋了初值,这时初值的个数即为数组的长度,故数组长

度为6(包括字符串的长度为有效字符的个数5。因此printf语句中输出的结果为5,6。

34、D

【解析】构造类型数据是由基本类型数据按一定规则组成的。C语言中的构造类型数据只有3种,它们是数组类型、结构

体类型和共用体类型。故应该选择D。

35、C

36、B

【解析】本题重点考查for语句的循环次数,for(x=0,y=0;(y!=99&&xV4);x++),y!=99&&xV4即循环条件当y不等于

99以及xV4时,执行循环语句,当有一个条件不成立时,均结束循环,因此循环4次,B选项正确。

37、D

38、D

39、D

40、D

41、D

42、B

43、C

44>D

【解析】本题考查while和do…while循环的区别。while循环的控制出现在循环体之前,只有当while后面的表达式的

值为非零时,才可能执行循环体:在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值,因此

无论表达式的值是否为零,循环体至少要被执行一次。

45、C

46、A

【解析】逻辑与(&&)运算符的功能是:当“&&”运算符两边的运算对象均为1时,整个表达式的值为1,否则为0。因为

a=3<b=4,即加二。,所以整个表达式的值为0。

47、C

【解析】本题中,首先将0赋给k,表达式变为0,跳出循环,没有执行循环体语句。解答本题的关键是掌握while语句。

48、A

【解析】:为条件运算符;&&为布尔逻辑运算符;>>为位运算符;+为算术运算符。

49、C

【解析】字符串末尾结束标志为'\0'

第12/159页

50、D

第13/159页

华北水利水电大学

C语言专升本练习(二)

考试方式:【闭卷、笔试】考试时间:【60分钟】

总分:【100分】出题人:【】

题号一总分

得分

•考生要认真核对条形码上打印的姓名、座位号是否与本人准考证上一致

•除在答题区域内作答外,不得在答题卡的任何部位做任何标记或乱涂乱画。

•考试结束,不得将试卷、答题卡或草稿纸带出考场。

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

()1、若变量均已正确定义并赋值,以下合法的C语言赋值语句是。

A、x=y=5;

x=n%2.5;

C、x+n=l;

D、x=5=4+l

()2、以下选项中正确的c语言常量是o

A、2.46E-1.5

B、0382

C、'123'

D、'\0'

()3、下列说法中不正确的是o

A、switch语句功能可以由if-clse语句实现

B、若用于比较的数据类型为double,则不能用switch语句来实现

C、if-else语句的执行效率总是比switch语句高

D、case子句可以有多个语句,并且不需要用大括号””括起来

()4、语句for(k=0;kV5;++k)

(

if(k==3)continue;

printf(〃%d”,k);

)

的输出结果为

A、012

B、0124

C、01234

D、没有输出结果

()5、若有定义语句:inta[2][3],*p[3];则以下语句中正确的是

第14/159页

a、p=a;

B、p[O]=a;

C、p[0]=&a[l][2];

D^p[I]=&a;

()6、设整型变量a=2,则执行下列语句后,浮点型变量b的值不为0.5的是o

A、b=l.0/a

B、b=(float)(1/a)

C、b=l/(float)a

I)、b=l/(a*l.0)

()7、已有定义:inti,a[10],*p;则合法的赋值语句是。

A、p=100;

p=a[5]

C、p=a[2]+2

D>p=a+2;

()8、以下叙述中不正确的是o

A、在C程序中,逗号运算符的优先级最低

B、在C程序中,APH和aph是两个不同的变量

C、若a和b类型相同,在计算赋值表达式"b后,b中的值将放入a中,而b中的值不变

I)、当从键盘输入数据时,对于整型变量只能输入整型数值,对于实型变量只能输入实型数值

()9、设有以下程序段:inta[5]=0,*p,*q;p=a;q=a;则下列选项中,合法的运算是。

A^p+q

B、p-q

C、p*q

D、p%q

()10、以下符合c语言语法的实型常量是。

A、1.2E0.5

B、3.14.159E

C、0.0005

D、E15

()11、有以下程序

#include<stdio.h>

voidfun(intn,int*s){

intf;

if(n=l)*s=n+1;

elsefun(n-1,&f);

*s=f;

}

main(){

intx=0;

fun(4,&x);

printf("%d\n〃,x);

)

第15/159页

程序运行后的输出结果是„O

A、2

B、1

C、3

D、4

()12、如果一个表达式包含算术运算、关系运算、逻辑运算和字符运算时,运算的先后顺序是

A、算术运算一关系运算一逻辑运算一字符运算

B、算术运算一字符运算一关系运算一逻辑运算

C、逻辑运算一关系运算一算术运算一字符运算

D、字符运算一算术运算一逻辑运算一关系运算

()13、c语言中,可用于说明函数的是o

A^auto或static

extern或auto

C、static或extern

D、auto或register

()14、以下叙述中错误的是o

A、用户定义的函数中可以没有retu门i语句

B、用户定义的函数中可以有多个return语句,以便可以调用一次返回多个函数值

C、用户定义的函数中若没有return语句,则应当定义函数为void类型

D、函数的return语句中可以没有表达式

()15、运行以下程序后,如果从键盘上输入:6514〈回车〉,则输出结果为

main()

(

intm,n;

printf("enterm,n:〃);

scanf("%d%d”,&m,&n);

while(m!=n)

(

while(m>n)m-=n;

while(n>m)n-=m;

}

printf(〃m=%d\n〃,m);

)

A、m=3

B、m=2

C、m=l

D、m=0

()16^for(intx=0,y=0;!x&&yO5;y++)语句执行循环的次数是。

A、0

B、5

C、6

第16/159页

D、无数次

()17、下列数组说明中,正确的是o

A^intarray[][4];

B、intarray[]口;

C>intarray[][][5];

D^intarray[3][];

()18、有以下程序:

doublef(doublex);

main()

(

doublea=0;

inti;

for(i=0;i<30;i+=10)a+=f((doub1e)i);

printf("%5.0f\n〃,a);

)

doublef(doublex)

(

returnx*x+l;

}

程序运行后的输出结果是一o

A、503

B、401

C、500

D、1404

()19、二维数组m[i,j]的元素是4个字符(每个字符占一个存储单元)组成的串,行下标i范围从0到

4,列下标,i的范围从0到5。m按行存储时元素m[3,5]的起始地址与m按列存储时元素()的起始地

址相同。

A、M[2,4)

B、M[3,4)

C、M[3,5]

D、M[4,4)

()20、有如下定义:structstudent

(

charname[10];

intage;

chargender;

)

std[3],*p=std;

则以下各输入语句中错误的是一。

A、scanf&(*p).age);

scanf&std[0].gender);

C、scanf&(p->gender));

D、scanf(〃%s〃,&);

()21、若a为整型变量,则以下语句oa=-21;printf("%d\n型a);

第17/159页

A、赋值不合法

B、输出为不确定的值

C、输出值为-2

D、输出值为2

()22>若有chara[80],*s=a;不正确的输入语句是。

A、scanf(〃%s〃,s);

B、gets(s);

C、fscanf(stdin,"%c〃,s);

D^fgets(s,80,stdin);

()23、以下程序运行后,输出结果是

^definePT5.5

^defineS(x)PT*x*x

#include<stdio.h>

main()

(

inta=l,b=2;

printf(,z%4.lf\nz/,s(a+b));

}

A、49.5

B、9.5

C、22

D、45.0

()24以下选项中与if(a=l)a=b;elsea++;语句功能不同的switch语句是

A、switch(a)

case1:a=b;break;

default:a++;

B、switch(a==l)

case0:a=b;break;

case1:a++;

C、switch(a)

default:a++;break;

case1:a=b;

[)、switch(a==l)

case1:a=b;break;

case0:a++:

()25、函数默认返回类型为

A、int

B、void

C、随机

D、bool

()26、以下不合法的数值常量是_______o

A、Oil

B、lei

第18/159页

C、8.OEO.5

D、Oxabcd

()27、对于int*pa[5];的描述,以下哪个选项是正确的

A、pa是一个指向数组的指针,所指向的数组是五个int类型的指针

B、pa是一个具有五个元素的指针数组,每个元素都是一个int类型的指针

C、pa[5]表示某个数的第五个元素的值

D、pa是一个指向某个数组中第五个元素的指针,该元素是ini类型的变量

()28、c程序中的宏展开是在。

A、编译时进行的

B、程序执行时进行的

C、编译前预处理时进行的

[)、编辑时进行的

()29、下列表达式中,类型可以作为int型的是«

A、"abe"+"efg”

B、"abc"+"efg”

C、‘a'+'b'

D、3+"4”

()30、以数据块为单位对数据进行整体读写时如果ptr是指向内存中数据块的首地址,fp是文件指

针,那么数据块中每个数据项的大小为。

A、sizeof(*ptr)

B、*ptr

C^sizeof(ptr)

D、sizeof(*fp)

()31、printf函数中用到格式符%-6s,其中数字6表示输出的字符串占用6列。如果字符串长度小于

6,则输出按方式。

A、从左起输出该字符串,右补空格

B、从右起输出该字符串,左补空格

C、0

【)、输出错误信息

()32、下列()表达式不满足;

当x的值为偶数时值为"真",为奇数时值为"假"。

A、x%2==0

B、!x%2!=0

C、x/2*2-x==0

D、!(x%2)

()33、有语句:inta[10];则对指针变量p的正确定义和初始化。

A、intp=*a;

B、int*p=a;

第19/159页

C、intp=&a;

DAint*p=&a;

()34、以下对结构变量stul中成员age的非法引用是

structstudent

(

intage;

intnum;

}stul,*p;

p=&stul;

ANstul.age

B、student,age

C、p->age

D、(*p).age

()35、下列程序的执行结果是—

#include<stdio.h>

main()

(

inta,b,c;

a二b二2;

c=(a++)-1;

printf(z,%d,%d〃,a,c);

c+=-a+++(++b);

printf(〃%d,%d〃,a,c);

}

A、3,14,1

B、3,14,2

C、2,04,1

D、2,14,1

()36、下面程序输出的结果为________。

^include<stdio.h>

intmain()

(

ints=3;

switch(s)

{

case5:printf(〃我〃);

break;

case4:printf(〃是“);

case3:printf(〃好”);

case2:printf(〃学〃);

break;

default:printf(〃生〃);

)

}

A、好

B、好学

C、好学生

第20/159页

D、我是好学生

()37、对以下程序,正确的说法是.sub(charx,chary)

(

intz;

z二x%y;

returnz;

)

voidmain()

(

intg=5,h=3,k;

k=sub(g,h);

printf(,z%d\nzz,k);

)

A、实参与其对应的形参类型不一致,程序不能运行

B、被调函数缺少数据类型说明,程序不能运行

C、主函数中缺少对被调函数的说明语句,程序不能运行

D、程序中没有错误,可以正常运行

()38、有以下程序:

main()

(

inta=l,b=0;

if(--a)b++;

elseif(a=0)b+=2;

elseb+=3:printf(〃%d\n〃,b);

)

程序运行后的输出结果是O

A、0

B、1

C、2

D、3

()39、数组a[10]的下标从()开始。

A、1

B、0

C、10

D、不确定

()40、若有下面的说明和定义:

structtest

(

intml;

charm2;

floatm3;

unionuu

(

charul[5];

intu2[2];

)

ua;

第21/159页

myaa;

则sizeof(structtest)的值是。

A、12

B、16

C、14

D、9

()41、若a为int类型,且其值为3,则执行完表达式a+=a-后,a的值是

A、-3

B、9

C、-12

D、6

()42>表达式0x13八0x17的值是o

A、0x04

B、0x13

C、0xE8

D、0x17

()43、c语言中逻辑表达式的值为________o

A、0或1

B、非零值或零值

C、true或false

D、'true'或'false,

()44、下面程序段的运行结果是.

for(i=l;i<=5;)

printfi);

i++;

A、12345

B、1234

C、15

D、无限循环

()45、c语言规定,简单变量做实参时,它和对应形参之间的数据传递方式为.

A、地址传递

B、单向值传递

C、由实参传给形参,再由形参传回给实参

D、由用户指定传递方式

()46、将二进制数101101101111转换成十六进制数是o

A、5557

B、B6F

C、7555

第22/159页

D、F6B

()47、设pl和p2是指向同一个int型一维数组的指针变量,k为int型变量,则不能正确

执行的语句是O

A、k=*Pl+*P2;

B、p2=k;

C、P1=P2;

D、k=*Pl*(*P2);

()48、关于标识符,下列选项中描述错误的是o

A、标识符只能由字母、数字和下划线组成

B、标识符不能以下划线作为第一个字符

C、标识符不能以数字作为第一个字符

D、标识符不区分大小写字母

()49、下列对字符串的定义中,错误的是。

A、charstr[7]="FORTRAN”;

B、charstr[]="FORTRAN";

C、char*str="FORTRAN";

D、charstr口={'F','O','R','T','R','A','N',0};

()50、有一文本文件test,txt,其内容为〃cprogram〃(不包含引号),以下程序段的运行结果是

file*fp;

charstr[20];

if((fp=fopen(z,test.txt〃,〃r〃))!=null)

str=fgets(str,5,fp);

printfstr);

A^cpro

cprog

C、prog

D^cprogram

第23/159页

参考答案

一、单项选择题

1、A

2、D

【解析】请仔细阅读交规难度:简单

3、C

【解析】并不是所有的if-else语句的执行效率都高于switch语句,在一些特定的情况下,switch语句可以比较简炼,

同时容易阅读,因此,选项C的描述是错误的。

4、B

5、C

6、D

7、D

【解析】本题中定义了一个整型数组a和一个整型指针变量p。选项A中将一个整型数赋值给一个指针变量,C语言规定,

只能将地址赋给指针变量,故选项A不正确。选项B中a[5]为一数组元素,同样不是一个地址,故选项B不正确。选项c中

a[2]为一数组元素,同样是一个整型数据,不是个地址,故选项C不正确。数组名a代表数组首地址,首地址加2代表第3

个元素的地址,将该地址赋值给指针变量,故选项D正确。所以,4个选项中选项D符合题意。

8、D

【解析】在C语言所有的运算符中,逗号运算符的优先级最低。C语言中区分大小写,所以APH和aph是两个不同的变量。

赋值表达式a=b表示将b的赋付给a,而b本身的值保持不变;通过键盘可以向计算机输入允许的任何类型的数据。选项D)

中当从键盘输入数据时,对于整型变量可以输入整型数值和字符,对于实型变量可以输入实型数值和整型数值等。

9、B

【解析】本题考核指针的运算。C语言中,指向同一字符串的指针之间能且只能进行减运算,减运算后返回的是一整型

数,表示指针之间的地址偏移量。

10、C

11、A

【解析】fun函数是递归函数,调用到n为0时*$二1+1为2,返回主函数,x为2。

12、B

【解析】在一个含有各种运算的表达式中,它们运算的优先顺序是:算术运算一字符运算和日期时间运算一关系运算一

逻辑运算。故选项B为正确答案。

13、C

14、B

15、C

16、C

【解析】本题考核for循环语句。题中x=0,则!x永远为真,对于条件表达式“!x&&yV=5”只考虑“yV=5”,由于每次

循环y都增加1,而且y从0开始到5。所以可知总共循环了6次。

17、A

18、A

19、B

【解析】M按行存储时元素M[3,5]位于第4行第6列(下标从0开始),也就是处在第3X6+6=24个存储位置,设与它存储的

第24/159页

起始位置相同的,按列存储时的元素行下标为X,列下标为y,则有yX5+x+l=24,解得x=3,尸4,即选项B是正确答案。

20、D

21、C

22、C

23、A

【解析】考查宏替换的使用。[解题要点]宏替换用/define宏名宏体”的形式来定义。在进行编译预处理时,将把

程序中宏定义之后的所有宏名用宏体替换。宏虽然可以带参数,但宏替换过程中不像函数那样要进行参数值的计算、传

递及结果返回等操作;宏替换只是简单的字符替换,不进行计算,因而本题中的s(a+b)进行宏替换后为

PT*l+2*l+2=5.5*1+2*1+2=9.5。[考点链接]带参数的宏定义。

24、B

25、A

26、C

27、B

28、C

29、C

【解析】选项A的运算结果为字符串类型;选项B语法错误;选项D的运算结果也是字符串;只有选项C可以看做是两个字

符的ASCII值相加,结果为int型。

30、A

【解析】ptr是指向数据块的指针,*ptr才能表示整个数据块。

31、A

32、C

33、B

34、B

35、A

【解析】本题主要考查自加运算符(++、--)的使用。①前缀变量"++i、一i”,在使用i之前,先使i的值加1或者减1,

再使用此时的表达式的值参与运算:②后缀变量“i++、i-”,先使用此时的表达式的值参与运算,在使用i之后,再

使i的值加1或者减1。题中计算表达式c=(a++)T时先使用a的值进行计算,结果为c=2-1二L然后将a的值加1,即执行

完此语句后a的值是3;表达式c+=-a+++(++b)等价于c=c+(-a++)+(++b),c=l+(-3)+3=l,此时a=4,b=3o

36、B

37、D

38、D

39、B

40、A

41、C

42、A

【解析】运算符“一'是按位异或运算符,其运算规则是:参与运算的两个二进制数,若相对应的二进制位上的数相

同,则该位的结果为0;否则该位的结果为1。可得:

0x13^0x17=1001110111=0x04

43、A

44、D

第25/159页

45、B

46、B

47、B

48、D

【解析】标识符区分大小写字母。

49、A

50、A

第26/159页

华北水利水电大学

C语言专升本练习(三)

考试方式:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论