重庆工商大学2022年计算机C语言专升本(共六卷)_第1页
重庆工商大学2022年计算机C语言专升本(共六卷)_第2页
重庆工商大学2022年计算机C语言专升本(共六卷)_第3页
重庆工商大学2022年计算机C语言专升本(共六卷)_第4页
重庆工商大学2022年计算机C语言专升本(共六卷)_第5页
已阅读5页,还剩81页未读 继续免费阅读

下载本文档

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

文档简介

重庆工商大学2022年计算机C语言专升本(-)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、变量a中的数据用二进制表示的形式是01011101,变量b中的数据用二进制

表示的形式是11110000。若要求将a的高4位取反,低4位不变,所要执行的运

算是o

A、ab

B、a|b

C、a&b

D、a<<4

【答案】A

2、表示关系xV=yV=z的c语言表达式为o

A、(xV=y)&&(yV=z)

B、(x<=y)and(y<=z)

C、(x<=y<=z)

D、(x<=y)&(y<=z)

【答案】A

【解析】C语言中没有关键词and,逻辑与运算符是&&,不是and,因此,选项

B是错误的;而&是c语言的按位与运算,因此选项D是错误的:选项C是数学

表达式,也是不对的。

3、下列表达式为关系表达式的为。(其中a为一整型变量)

A、3+4*5

B、a==10

C、a>0a:-a

D、a=l

【答案】B

4、以下叙述中正确的是o

A、do-while语句构成的循环不能用其他语句构成的循环来代替

B、do-while语句构成的循环只能用break语句退出

C、用do-while语句构成循环时,只有在while后的表达式为非零时结束

循环

D、用do-while语句构成循环时,只有在while后的表达式为零时结束循

环_

【答案】D

5、若定义了以下函数:

voidf(...)

(

...*p=(double*)malloc(10*sizeof(double));

p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形

参p的正确定义应当是O

A、double*p

B、float**p

C、double**p

D,float*p

【答案】C

6、下列正确的标识符是o

A、-al

B、a[i]

C、a2_i

D、intt

【答案】C

7、定义如下变量和数组:intk;inta[3][3]={9,8,7,6,5,4,3,2,1};则下

面语句的输出结果是o

for(k=0;k<3;k++)printf("%d",a[k][k]);

A、753

B、951

C、963

D、741

【答案】B

【解析】本题中二维数组的每个元素就是一个由三个元素构成的一维数组,根

据条件for(k=0;k<3;k++)和要求的a[k][k]可以得出本题的答案应该是

9510

8、已知大写字母a的ascii码是65,小写字母a的acsii码是97。下列能将变

量c中的大写字母转换为对应小写字母的语句是O

A、c=(c-'A')%26+'A'

B、C=c+32

C、c=c-'A'+'A'

D、c=('A'+C)%26—'a'

【答案】B

9、判断两个字符串是否相等,正确的表达方式是。

A、while(sl==s2)

B、while(sl=s2)

C,while(strcmp(si,s2)==0)

D、while(strcmp(si,s2)=0)

【答案】C

10、b等于()

A、1000字节

B、1024字节

C、1000X1000字节

D、1024X1024字节

【答案】D

11、下列程序的输出结果是O

#include<stdio.h>

intf(inta,intb);

main()

(

inti=2,p,j,k;

j=i;

k=++i;

p=f(j,k);

printf("%d",p);

)

intf(inta,intb)

(

intc;

if(a>b)c=l;

elseif(a==b)c=0;

elsec=-l;

return(c);

)

A、-1

B、1

C、2

D、编译出错,无法运行

【答案】A

【解析】函数调用相当于f(2,3),程序运算结果为-1。

12、设整型变量n的值为2,执行语句"n+=n-=n*n;"后,n的值是

A、0

B、4

C、-4

D、2

【答案】C

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

A、5

B、6

C、7

D、编译出错

【答案】B

14、有以下程序段:

intj;

floaty;

charname[50];

scanf("%2d%f%sname);

当执行上述程序段,从键盘上输入555667777abc后,y的值为

A、55566.0

B、566.0

C、7777.0

D、566777.0

【答案】B

【解析】本题考查通过scanf函数输入数据时的格式控制问题。变量j的格式

控制为“%2d”,即只接收输入数据的前两位,从第3位开始直到空格之间的输

入都会被保存到变量y中,因为y为浮点型数据,所以输出结果为选项B)。

15、下述程序的输出结果是

intmain()

(

inta=0,b=0,c=0;

if(++a>0|++b>0)++c;

printf("%d,%d,%d",a,b,c);

return0;

}

A、0,0,0

B、1,1,1

C、1,0,1

D、0,1,1

【答案】C

16、下面对do-while结构的描述中,不正确的是。

A、循环体至少执行一次

B、属于“直到型”循环

C、与while语句执行情况相同

D、先执行循环体,再计算终止条件,若结果为true,重复执行循环体,直

到布尔表达式的值为falseo

【答案】C

【解析】while循环属于“当型”循环,可能一次也不执行,是先判断终止条

件,为true则执行循环体,否则退出循环。

17、若有以下调用语句,则不正确的fun函数的首部是。

main(){

inta[50],n;

fun(n,&a[9]);

)

A、voidfun(intm,intx[J)

B、voidfun(ints,inth[4])

C、voidfun(intp,int*s)

D、voidfun(intn,intx)

【答案】C

【解析】根据主函树中的函数调用可知,第一个实参为整型数据,第二个实参

为整型数组中一个元素的地址值。因此函数fun()的第二个形参应该为一个指

针,故应该选择C。实参不是将整个数组传递给形参,故选项A和B不正确;

选项D的第二个形参的数据类型与实参的数据类型不符。

18、下列语句输出结果是ointi=65535;

printf("%d",i);

A、65535

B、0

C、-1

D、语法错

【答案】C

19、已定义两个字符数组a,b,则以下正确的输入格式是o

A、scanf("%s%s",a,b);

B、get(a,b);

C、scanf("%s%s",&a,&b);

D、gets("a"),gets("b");

【答案】A

20、以下关于c语言数据类型使用的叙述中错误的是o

A、若只处理“真”和“假”两种逻辑值,应使用逻辑类型

B、若要保存带有多位小数的数据,可使用双精度类型

C、整数类型表示的自然数是准确无误差的

D、若要处理“人员信息”等含有不同类型的相关数据,应自定义结构体类

【答案】A

21、下列运算符中优先级最高的算符是o

A、!

B、%

C、一二

D、&&

【答案】A

22、设有如下定义:

strucksk

(

inta;

floatb;

}data;

int*p;

若要使p指向data中的a域,正确的赋值语句是。

A、p=&a;

B、p=data.a;

C、p=&data.a;

D、*p=data.a;

【答案】D

23、以下程序的输出结果是longfun(intn){

longs;

if(n==l|n==2)s=2;

elses=n-fun(n-1);

returns;

}

main(){

printf(M%ld\nH,fun(3));

A、1

B、2

C、3

D、4

【答案】A

【解析】该题考查的是递归函数的调用,题中读fun函数进行了递归调用,第

1次调用:fun(3)n=3s=3-fun(2)第二次调用时:fun(2)n=2s=2返回第一次

调用后,s=3-2=lo

24、以下程序的输出结果是o

#include<stdio.h>

main()

(

char*s="121";

intk=0,a=0,b=0;

do

{

k++;

if(k%2==0)

(

a=a+s[k]-'\0';

continue;

}

b=b+s[k]-'\0';

a=a+s[k]-'\0";

)

while(s[k+1]);

printf("k=%da=%db=%d\n",k,a,b);

)

A、k=3a=98b=49

B、k=3a=99b=50

C、k=2a=99b=50

D、k=2a=98b=49

【答案】C

【解析】第1次循环中,k=l,不执行if分支,s[k]='2',因此b=2,a=2

因s[k+l]='1'进入第2次循环,k=2,执行if分支,s[k]='1',使a=3,

进而提前结束本次循环,s[k+l]='\0’,则退出循环,所以k=2,a=3,b=20

25、若有以下定义和语句:char*s1="12345",*s2="1234";

printf("%d\n",strlen(strcpy(si,s2)));

则输出结果是o

A、4

B、5

C、9

D、10

【答案】A

【解析】函数strcpy(sl,s2)的返回结果是指针果的新值"1234",因此求串长

函数的结果为4。

26、有intx=3,y=4,z=5;

则下面表达式中值为0的是O

A、'x'&&'y'

B、x<=y

C、x|;y+z&&y-z

D、!((x<y)&&!z||1)

【答案】D

27、若函数调用时用数组名作为函数参数,以下叙述中,不正确的是

A、实参与其对应的形参共占用同一段存储空间

B、实参将其地址传递给形参,结果等同于实现了参数之间的双向值传递

C、实参与其对应的形参分别占用不同的存储空间

D、在调用函数中必须说明数组的大小,但在被调函数中可以使用不定尺寸

数组

【答案】C

28、下面关于指针的说法中错误的是。

A、在指针定义的同时可以对其进行初始化

B、指针根据其所指向变量的类型的不同,所占用内存大小也不同

C、指针中存放的是内存单元的地址

D、相同类型的指针之间可以相互赋值

【答案】B

【解析】指针是一种用来存放其他变量地址的数据类型,它的声明形式为:(类

型〉+〈变量名〉,可以在声明的时候对其进行初始化。由于其存放的是内存单

元的地址,所以大小一般都是4个字节。

29、下面不能正确进行字符串赋值操作的语句是o

A、chars[5]={"ABCDE");

B、chars[5]={'A','B','C,'D",'E');

C、char*s;s="ABCDEF";

D,char*s;scanf("%s",s);

【答案】A

30、下面对c语言的描述中,正确的是o

A、函数一定有返回值,否则无法使用函数

B、C语言函数既可以嵌套定义又可以递归调用

C、在C语言中,调用函数时,只能将实参的值传递给形参

D、C语言程序中有调用关系的所有函数都必须放在同一源程序文件中

【答案】C

【解析】函数不一定有返回值(void类型),C语言规定,在一个函数的内部不

能再定义函数,函数可以递归调用,一个C程序允许由多个文件组成,C语言

支持函数的外部调用,不一定有调用关系的所有函数都放在同一个源程序文件

中。选项A)函数不一定有返回值,选项B)函数不可以嵌套定义,选项D)函数

可以外部调用。

31、以下叙述正确的是o

A、C程序总是以main。作为程序执行的起始行

B、main。函数若不带参数,其后面的一对圆括号可省略

C、函数体内的定义语句和可执行语句允许任意交替出现

D、C语言中的语句之间必须用分号作为分隔符

【答案】A

32、对于存储同样一组数据元素而言,o

A、顺序结构比链接结构多占存储空间

B、顺序结构与链接结构相比,更有利于对元素的插入、删除运算

C、顺序结构比链接结构易于扩充空间

D、顺序结构占用整块空间而链接结构不要求整块空间

【答案】D

【解析】顺序结构的存储空间就是存放数据信息的空间,不需要附加空间,而

链接结构节点(即元素)的存储空间包括两部分:一部分存放数据信息,一部分

存放指针信息,因此A选项是错误的:在顺序结构中,要插入、删除元素需移

动其他元素;而在链接结构中,插入、删除元素不需要移动其他元素。因此,

选择项B是错误的;顺序结构中,存储空间必须事先定义,在运算过程中难以

扩充:链接结构中,元素之间通过指针链接,空间易于扩充。因此选择项C也

是错误的;顺序结构中,元素之间的关系通过存储单元的邻接关系来表示,其

存储空间必须占用整块空间:链接结构中,节点之间的关系通过指针来表示,

不要求整块空间。因此,D是正确答案。

33、两次运行下面的程序,如果从键盘上分别输入3和2,则输出结果是

#include<stdio.h>

main(){

intx;

scanf("%d",&x);

if(x++>2)printf("%d",x);

elseprintf("%d\n",x-);

)

A、4和3

B、4和2

C、4和1

D、3和2

【答案】A

【解析】本题考查if-else语句。首先,scanf函数通过键盘读入x的值。当

x=3时,第一个if语句先判断条件,取x的值3和2比较,然后将x的值加

1,if条件成立,执行下面的printf语句,输出x的值4。当x=2时,第一个

if语句先判断条件,先取x的值2和2比较,然后将x的值加l(x的值变为

3),if条件不成立,执行下面的else语句,先输出x的值3,再将x的值减

lo

34、对以下定义的表述中,正确的是

structnode

{

intnum;

charname[10];

)

stud;

A、stud是一个结构体变量

B、stud是一个结构体类型

C、node是一个结构体数据

D、node是一个结构体变量

【答案】A

【解析】node结构体变量。

35、运行下面程序时,若从键盘输入"3,5Vcr>",则程序的输出结果是

#include<stdio.h>

voidmain()

(

intx,y;

scanf("%d,%d",&x,&y);

if(x==y)printf("x==y");

elseif(x>y)printf("x>y");

elseprintf("x<y");

)

A、3<5

B、5>3

C、x>y

D、x<y

【答案】D

36、用在switch语句的关键字没有哪个?

A、continue

B、break

C、default

D、if

【答案】A

37、下面选择中正确的赋值语句是(设chara[5],*p=a;)。

A、p="abcd";

B、a="abcd";

C^*p="abcd";

D、*a="abcd";

【答案】A

38、有以下程序

main()

(

charch[]="uvwxyz",*pc;

pc=ch;

printf("%c\n",*(pc+5));

)

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

A、z

B、0

C、元素ch[5]的地址

D、字符y的地址

【答案】A

39、定义如下变量和数组:inti,x[3][3]={l,2,3,4,5,6,7,8,9

);则下面语句for(i=0;i<3;i++)printf("%d",xLi][2-i]);的输出结果是

A、159

B、147

C、357

D、369

【答案】C

40、已知有如下结构体:

structsk

(

inta;

floatb;

)

data,*p;

若有p=&data,则对data的成员a引用正确的是。

A、(*p).data,a

B、(*p).a;

C、p->data.a

D、P.data,a

【答案】B

41、有定义语句:intx,y;若要通过scanf("%d,%d",&x,&y);语句使变量x

得到数值11,变量y得到数值12,下面四组输入形式中,错误的是o

A、1112V回车〉

B、11,12〈回车〉

C、11,12V回车)

D、11,〈回车〉

12〈回车〉

【答案】A

42、下列语句中,不正确的一个是______<,

A、floate=l.If;

B、charf=-l.If;

C、doubleg=l.If;

D、byteh=l;

【答案】B

【解析】float类型的数据1.If可以被自动转换为double类型数据;byte类

型数据的声明是正确的;float类型的数据不可以自动转换为char类型数据。

43、下列程序的输出结果是o

main()

(

inta=4,b=5,c;

if(a<b)

{

c=a*b;

printf("%d,%d,%d\n",b,a,c);

else

c=b/a;

printf("%d,%d,%d\n",b,a,c);

A、4,5,12

B、20

C、5,4,20

D、12

【答案】C

【解析】本题考查ifelse语句。第一个if语句,先判断条件,发现aVb成

立,执行下列的复合语句,得c=a*b=20,b、a的值不变。

44、下面关于break语句的描述中,不正确的是。

A、break可以用于循环体内

B、break语句可以在for循环语句中出现多次

C、break语句可以在switch语句中出现多次

D、break语句可用于if条件判断语句内

【答案】D

【解析】本题考查的是break语句的使用。break可以结束switch语句和for

循环语句,但是不能使用在条件判断语句内。

45、有说明语句inta[4][5];则a⑵+3表示一

A、a数组行下标为2、列下标为3的元素的地址

B、a数组行下标为2、列下标为3的元素的值

C、a数组第2行的首地址

D、a数组第3行的首地址

【答案】A

46、c语言提供的预处理功能包括条件,其基本形式为:#XXX标识符程序段

1#else程序段2#endif这里的XXX可以是。

A、define或include

B、ifdef或include

C、indef或ifndef或define

D、ifdef或ifndef或if

【答案】D

47、下列各定义数组的语句中不正确的是o

A、inta[l][3];

B、intx⑵[2]={1,2,3,4};

C、intx[2][]={1,2,4,6};

D、intm[][3]={1,2,3,4,5);

【答案】C

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

48、下列运算符中,优先级最高的是o

A、+=

B、==

C、&&

D、++

【答案】D

【解析】算术运算符的优先级中,++和一级别最高。

49、下列数据中属于"字符串常量"的是o

A、“a”

B、{

ABC}

C、'abc\O'

D、'a,

【答案】A

50、在文件系统中若采用一级目录结构,存在的最主要的一个问题是o

A、目录表的大小难以确定

B、磁盘容量大时,文件检索太慢

C、用户使用不方便

D、“重名”问题,即文件命名冲突

【答案】D

【解析】单级目录结构的优点是简单,且能实现目录管理的基本功能一一按名

存取。但却存在下述一系列的缺点。

•查找速度慢。对于稍具规模的文件系统,会拥有数目可观的目录项,致使

为找到一个指定的目录项要花费较多的时间。对于一个具有N个目录项的单级

目录,为检索出一个目录项,需要平均查找N/2个目录项。

•不允许重名。在一个目录表中的所有文件,都不能有与另一个文件相同的

名字。然而,重名问题在多道程序环境下,却又是难以避免的;即使在单用户

环境下,当文件数超过数百个时,也难于记准。

•不便于实现文件共享。通常每个用户都具有自己的名字空间或命名习惯,

因此,应当允许不同用户使用不同的文件名来访问同一个文件。然而,单级目

录却要求所有用户都用同一个名字来访问同一文件。简言之,单级目录只能满

足对目录管理的4点要求中的第2点,因而,它只适用于单用户环境。

其中,最致命的缺陷是文件命名冲突的问题。

重庆工商大学2022年计算机C语言专升本(二)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、下列选项可以正确表示字符型常量的是。

A,'\r'

B、"a"

C、"\897"

D、296

【答案】A

【解析】C语言中,一个字符常量代表ASCH字符集中的一个字符,在程序中

用单引号括起来作为字符常量,字符常量的范围是0-127。由于字符常量用单

引号括起来,所以选项B),C)错误,选项D)超过了字符常量的表示范围。

2、下列选项中,不正确的赋值语句是

A、++t;

B、nl=(n2=(n3=0));

C、k=l=j;

D、a=b+c=l;

【答案】C

3、以下程序的输出结果是

main()

(

inta=0,i;

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

(

switch(i)

(

case0:case3:a+=2;

case1:case2:a+=3;

default:a+=5;

)

)

printf("%d\n",a);

)

A、31

B、13

C、10

D、20

【答案】A

4、以下for语句构成的循环执行了次。

^include<stdio.h>

#defineN2

#defineMN+l

#defineNUM(M+l)*M/2

main()

(

inti,n=0;

for(i=l;i<=NUM;i++)

{

N++;

printf("%d",n);

)

printf("\n");

)

A、5

B、6

C、8

D、9

【答案】C

5、以下关于宏的叙述中正确的是0

A、宏名必须用大写字母表示

B、宏定义必须位于源程序中所有语句之前

C、宏替换没有数据类型限制

D、宏调用比函数调用耗费时间

【答案】C

6、判断字符型变量ch是否为大写英文字母,应使用表达式

A、ch>='A'&ch<='Z'

B、ch<='A'|ch>='Z'

C,'A'<=ch<='Z'

D、ch>='A'&&ch<='Z'

【答案】D

【解析】本题考核C表达式类型及求值规则。ch为大写字母的条件是大于等于

'A'且小于等于'Z'。

7、下面程序的输出结果是o

main()

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

printf("%d\n",p[3]);

A、6

B、7

C、3

D、5

【答案】B

【解析】指针变量p指向数组a的第5个元素,p[3]在原指向基础上移3个单

位,指针变量P将指向第8个元素(下标为7的元素),值为7。

8、c语言用表示逻辑"真"值。

A、true

B、t或y

C、非零整型值

D、整型值0

【答案】C

9、有以下程序:

main()

(

charstr[]="xyz",*ps=str;

while(*ps)ps++;

for(ps-;ps-str>=o;ps-)puts(ps);

)

执行后的输出结果是。

A、yz

xyz

B、z

yz

C、z

yz

D、x

xyz

【答案】C

【解析】执行while循环,使指针变量ps指向字符串"xyz”的字符串结束标

志,然后执行for循环,先执行ps一,使ps指向字符'z',故puts(ps)输出

结果为z;再次执行ps一,使ps指向字符'y',故puts(ps)输出结果为yz;

再次执行ps一,使ps指向字符'x',故puts(ps)输出结果为xyz,退出循

环。所以,C选项为所选。

10、59,73,83,94,()

A、107

B、101

C、105

D、113

【答案】A

【解析】44+4+4=52,52+5+2=59,59+5+9=73,73+7+3=83,83+8+3=94,

94+9+4=107,选A。

11、以下关于函数的叙述中正确的是O

A、每个函数都可以被其它函数调用(包括main函数)

B、每个函数都可以被单独编译

C、每个函数都可以单独运行

D、在一个函数内部可以定义另一个函数

【答案】B

12、以下正确的说法是:在c语言中。

A、实参和与其对应的形参各占用独立的存储单元

B、实参和与其对应的形参共占用一个存储单元

C、只有当实参和与其对应的形参同名时才共占用存储单元

D、形参是虚拟的,不占用存储单元

【答案】A

13、设有定义:char*c;以下选项中能够使字符型指针c正确指向一个字符

串的是O

A、charstr[]="string";c=str;

B、scanf("%s",c);

C、c=getchar();

D、*c="string";

【答案】A

14、对于以下变量定义,正确的赋值是oint*p[3],a[3];

A、p=a

B、*p=a[0]

C、p=&a[0]

D、p[0]=&a[0]

【答案】D

15、阅读下列程序:

main()

intn[3],i,j,k;

for(i=0;i<3;i++)n[i]=0;

k=2;

for(i=0;i<k;i++)for(j=0;j<k;j++)n[j]=n[i]+l;

for(i=0;i<3;i++)printf(''%d'',n[i]);

printf(''\n'');

)

运行该程序,其输出结果是o

A、230

B、330

C、123

D、321

【答案】B

16、下面程序的运行结果是o

main()

(

inti,j,a=0;

for(i=0;i<2;i++)

(

for(j=0;j<4;j++)

(

if(j%2)break;

a++;

}

a++;

}

printf("%d\n",a);

)

A、4

B、5

C、6

D、7

【答案】A

17、关于return语句,下列正确的说法是。

A、不能在主函数中出现且在其他函数中均可出现

B、必须在每个函数中出现

C、可以在同一个函数中出现多次

D、只能在除主函数之外的函数中出现一次

【答案】C

18、有以下程序:

main()

(

chars[]="rstuv";

printf("%c\n",*s+2);

)

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

A、tuv

B、字符t的ASCII码值

C、t

D、出错

【答案】C

19、若数组a定义为int□[]a=newint[3][4],则a是。

A、一维数组

B、二维数组

C、三维数组

D、四维数组

【答案】B

【解析】二维数组有两种定义方式:①typearrayName□□;

②type[][]arrayName;从题目中的语句可以看出,本题定义了一个二维数组。

20、以下对枚举类型名的定义中正确的是。

A、enuma={sum,mon,tue);

B、enuma{sum=9,mon=-l,tue);

cfMIftrffIf.H)

C、enuma-{sum,mon,tue);

D、enuma[r”sumit,tfmontt,w.tue”]j;

【答案】B

21、以下选项中,合法的数值型常量是。

A、3.2

B、'X'

C、099

D、OxEH

【答案】A

22、设变量x为float型且已赋值,则以下语句中能将x中的数值保留到小数点

后两位,并将第三位四舍五入的是O

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

23、有以下程序:

int*f(int*x,int*y){

if(*x<*y)returnx;

elsereturny;

)

main()

(

inta=7,b=8,*p,*q,*r;

p=&a;

q=&b;

r=f(p,q);

printf("%d,%d,%d\n",*p,*q,*r);

)

执行后输出结果是。

A、7,8,8

B、7,8,7

C、8,7,7

D、8,7,8

【答案】B

【解析】本题定义了一个返回值为指针的函数f(),此函数有两个指针型的形

参x和y,该函数的功能,是返回x和y指向的变量中值较小的那个指针变

量。主函数中定义了两个指针变量p和q,并让它们指向变量a和b,调用函数

f(),返回指向的变量值较小的指针变量,r的值为指针变量p的值(变量a的

地址),因此最后输出的*p、*q和*r的值是7,8和7。所以,B选项为所选。

24、下列语句中,可以作为无限循环语句的是o

A、for(;;)

B、for(inti=0;i<10000;i++)

C>while(false)

D、do)while(false)

【答案】A

【解析】B的循环终止条件为10000,CD的终止条件为常量false,都不能无限

循环。

25、有以下程序charfun(charx,chary)

(

if(x<y)returnx;

returny;

)

main()

(

inta='9',b='8',c='V;

printf("%c\n",fun(fun(a,b),fun(b,c)));

)

程序的执行结果是o

A、函数调用出错

B、8

C、9

D、7

【答案】D

26、已知i、j、k为int型变量,若要从键盘输入2、3、4<cr>,使i、j、k

的值分别为2、3、4,下列正确的输入语句是o

A、scanf("%3d,%03d,%3d",&i,&j,%k);

B、scanf("%d,%d,%d",&i,8Lj,&k);

C、scanf("%d%d%d",&i,&j,&k);

D、scanf("i=%d,j=%d,k=%d",&i,&j,&k);

【答案】B

27、下列语句中正确的是o

A、char*myString="Hello-World!";

B、charmyString="Hello-World!";

C、charmyString[ll]=wHello-World!w;

D、charnlyString[12]="Hello-World!";

【答案】A

【解析】选项C、D的数组下标超界;对于选项B,不能将字符串赋值给字符,

可以将一个字符串赋值给字符指针,指针指向字符数组的首地址。

28、以下叙述中错误的是o

A、可以通过typedef增加新的类型

B、可以用typedef将已存在的类型用一个新的名字来代表

C、用typedef定义新的类型名后,原有类型名仍有效

D、用typedef可以为各种类型起别名,但不能为变量起别名

【答案】A

29、有以下程序

#include<stdio.h>

main()

chars[]="012xy\08s34f4w2";

inti,n=0;

for(i=0;s[i]!=0;i++)if(s[i]>='0'&&s[i]<='9')n++;

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

)

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

A、0

B、3

C、7

D、8

【答案】B

【解析】阅读本程序可知,字符串s的前三个字符满足if语句,所以n++,当

遇到'\0'时,for循环终止,所以最后输出n值为3。

30、有以下程序:

ttinclude<stdio.h>

ttinclude<string.h>

main(intargc,char*argv[]){

inti,len=0;

for(i=l;i<argc;i+=2)len+=strlen(argv[i]);

prinff("%d\n",len);

)

此程序经编译链接后生成的可执行文件是ex.exe,若运行时输入以下带参数的

命令行:exabedefgh3k44则执行后的输出结果时。

A、14

B、12

C、8

D、6

【答案】D

【解析】main函数可以有两个参数,第一个参数为一个整型变量,表示命令行

参数的个数,本题为5;第二个参数为一个字符型指针数组,其中第一个数组

元素指向程序名,第二个数组元素指向命令行中的第一个参数,以后依此类

推。

由程序中的for循环可以看出,程序是求第一(argv[l])、第三(argv[3])个

参数的长度之和,即4+2=6。

31、在下列语句中,其含义为"q是一个函数指针,该指针指向整型数据"的定义

语句是o

A、int**q;

B、int(*q)();

C、int*q;

D、int*q();

【答案】B

32、程序必须在有限的步骤、有限的时间内执行完毕,指的是算法的()特点

A、确定性

B、有穷性

C、可行性

D、输入

【答案】B

33、若有以下语句,则正确的描述是chara[]="toyou";

charb[]=『t',(o','y'o',7uz);

A、a数组和b数组的长度相同

B、a数组长度小于b数组长度

C、a数组长度大于b数组长度

D、a数组等价于b数组

【答案】C

34、有以下程序段

typedefstructnode

(

intdata;

structnode*next;

)

*node;

nodep;

以下叙述中正确的是o

A、p是指向structnode结构变量的指针的指针

B、NODEp;语句出错

C、p是指向structnode结构变量的指针

D、p是structnode结构变量

【答案】C

【解析】在C语言中,typedef用于说明一种新的类型名,本题中的node被定义

为一种结构体类型名,NODE被定义为指向这种结构体变量的指针,我们可以用它

来定义一个指向该类型结构体变量的指针。

35、下列程序的输出结果是o

point(char*pt);

main()

{

charb[4]={'a','c','s','f'),*pt=b;

pt=point(pt);

printf(M%c",*pt);

)

point(char*p)

(

p+=3;

returnp;

)

A、s

B、c

C、f

D、a

【答案】C

36、下列for循环的次数为。

for(inti=0,x=0;!x&&i<=5;i++)

A、5

B、6

C、1

D、无限

【答案】B

37、下列对字符串的定义中,错误的是o

A、charstr[7]="FORTRAN";

B、charstr口="FORTRAN";

C、char*str="FORTRAN";

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

【答案】A

38、下面程序段的运行结果是inta=l,b=2,c=2,t;

while(a<b<c)

t二a;

a=b;

b=t;

C一;

)

printf("%d,%d,%d",a,b,c);

A、1,2,0

B、2,1,0

C、1,2,1

D、2,1,1

【答案】A

39、有以下程序:

#include<stdio.h>unionpw

(

inti;

charch[2];

)

a;

main()

(

a.chL0]=13;

a.ch[l]=0;

printf("%d\n",a.i);

)

程序的输出结果是o

A、13

B、14

C、208

D、209

【答案】A

【解析】在本题中,首先定义了一个共用体pw,其中有两个域:整型变量i和

字符数组ch。因为共用体中的域是共享内存空间的,数组元素由低到高存储:

ch[0]在低字节;ch[l]在高字节;整型变量i占两个字节,高位与ch[l]共用

存储空间,低位与ch[0]共用存储空间,而高位ch[l]的值为0,所以输出的成

员变量i的值就是ch[0]的值13。

40、设有下面的定义:

structst

{

inta;

floatb;

)d;

int*p;

要使P指向结构变量d中的a成员,正确的赋值语句是o

A、*p=d.a;

B、p=&a;

C、p=d.a;

D、p=&d.a;

【答案】D

【解析】本题主要考查按结构数组元素方式引用结构成员。结构体变量的成员

引用方法有3种:①结构体变量名,成员名;②指针变量名成员名;③(*指

针变量名).成员名。因为p是指针变量,所以应该将地址值赋给p。

41、关于for(表达式1;表达式2;表达式3),叙述正确的是o

A、表达式1不可以缺省

B、表达式2不可以缺省

C、表达式3不可以缺省

D、三个表达式都可以缺省

【答案】D

42、有说明语句:inta,b;如果输入111322333,使得a的值为111,b的值为

333,则以下正确的语句是。

A、scanf("%3d%*3d%3d",&a,&b);

B、scanf("%*3d%3d%3d",&a,&b);

C、scanf("%3d%3d%*3d",&a,&b):

D、scanf("%3d%*2d%3d",&a,&b);

【答案】A

【解析】根据题意,要是a的值为ll,b的值为333,必须在读入时指定a的

读入宽度为3,b的读入宽度为3,且a和b的控制字符之间必须额外增加触

控制符用于跳过中间的三位输入数字,选项A正确;本题答案A

43、有以下程序

main()

{

inti=l,j=l,k=2;

if((j++IIk++)&&i++)

printf("%d,%d,%d\n",i,j,k);

}

执行后输出结果是o

A、1,1,2

B、2,2,1

C、2,2,2

D、2,2,3

【答案】C

【解析】首先计算if语句后面的表达式值,先计算运算符&&前面括号里的

“II”运算。在I”运算中先计算j++,值为l(j的值为2),为真,后面的

k++将不再计算,k的值依旧为2。计算&&后面的表达式i++,值为l(i的值变

为2)。整个表达式的值为真,所以执行后面的输出语句,最后输出的i、j和k

的值为2、2和2。

44、以下的for循环次数是多少次?for(x=0,y=0;(y!=123)|(x<

4);x++);

A、执行3次

B、执行4次

C、循环次数不定

D、是无限循环

【答案】D

45、下面的描述中错误的是

A、调用函数时,实参可以是表达式

B、调用函数时,实参与形参可以共用内存单元

C、调用函数时,将为形参分配内存单元

D、调用函数时,实参与形参的类型必须一致

【答案】B

【解析】函数调用时,如果实参是表达式,则表达式的结果传入形参。形参和

实参之间进行数据的拷贝,当然需要为形参临时分配内存单元,函数调用完成

之后,形参分配的单元被系统收回。

因此选项B为正确答案。

46、若有定义语句:inta=10;doubleb=3.14;,则表达式'a'+a+b值得类型

是。

A、char

B、int

C、double

D、float

【答案】C

47、以下函数的功能是:通过键盘输入数据,为数组中的所有元素赋值。#define

N10

voidarrin(intx[N])

inti=0;

while(i<N)scanf("%d",.);

)

在下划线处应填入的是一

A、x+i

B、&x[i+l]

C、&x[i++]

D、&x[++i]

【答案】C

48、c语言允许将一条语句写在两行上,下列语句不正确是。

A、inta,

b;

B、inta

,b;

C、int

a,b;

D、inta,b

»

【答案】D

49、下面各语句行中,能正确进行给字符串赋值操作的语句行是o

A、charst[4][5]={"ABCDE"};

B、chars[5]={'A',"B','C',"D','E');

C、char*s="ABCDE";

D、char*s;scanf("%s",*s);

【答案】C

50、若程序中已包含头文件stdio.h,以下选项中,正确运用指针变量的程序段

是。

A、int*i=NULL;scanf("%d",i);

B、float*f=NULL;*f=10.5;

C、chart='m',*c=&t;*c=&t;

D、long*L;L='\0";

【答案】D

重庆工商大学2022年计算机C语言专升本(三)

考试方式:【闭卷】考试时间:【60分钟】总分:【100分】

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

1、以下选项中不合法的标识是o

A、&a

B、FOR

C、print

D、_00

【答案】A

2、C语言中,char类型数据占()。

A、1个字节

B、2个字节

C、4个字节

D、8个字节

【答案】A

3、设变量a、b、e、d和y都已正确定义并赋值。若有以下if语句:if(aVb)

if(c==d)y=0;elsey=l;该语句所表示的含义是。

A、y=0,a

B、y=0,a

y=l,a》by—1,a》b且c#d

C、y=0,a

D、y=0,a

y=l,aVB且CWDy="l,cWd

【答案】C

4、以下语句中,循环次数不为10次的语句是()。

A、for(i=l;i<10;i++);

B、i=l;do{i++;}while(i<=10);

C、i=10;while(i>0){­i;}

D、i=l;m:if(i<=10){i++;gotom;}

【答案】A

5、调用函数时,当实参和形参都是简单变量时,它们之间数据传递的过程是

A、实参将其地址传递给形参,并释放原先占用的存储单元

B、实参将其地址传递给形参,调用结束时形参再将其地址回传给实参

C、实参将其值传递给形参,调用结束时形参再将其值回传给实参

D、实参将其值传递给形参,调用结束时形参并不将其值回传给实参

【答案】D

6、执行语句scanf("%d,%d",&m,&n);使m和n的值分别为1和2,正确输入是

A、1

B、12

C、1,2

D、12

【答案】C

7、算法指的是

A、解决问题的方法、步骤和思路的一种描述

B、计算机程序

C、排序方法

D、数据处理

【答案】A

8、以下关于c/c语言指针变量的叙述中,正确的是o

A、指针变量可以是全局变量也可以是局部变量

B、必须为指针变量与指针所指向的变量分配相同大小的存储空间

C、对指针变量进行算术运算是没有意义的

D、指针变量必须由动态产生的数据对象来赋值

【答案】A

【解析】存放地址的变量称为指针变量。指针变量是一种特殊的变量,它不同

于一般的变量,一般变量存放的是数据本身,而指针变量存放的是数据的地

址。选项A显然是正确的。对于选项B,指针变量和指针所指向的变量存放的

内容是不一样的,只要分配够用就行了,不需要分配一样大小的存储空间。对

于选项C,指针变量加1便指向下一个存储单元,是有意义的。另外指针变量

可以静态地定义。

9、char*s="\t\\name\\address\n";指针s所指字符串的长度为:。

A、说明不合法

B、19

C、18

D、15

【答案】D

10、设有定义语句:charcl=92,c2=92;

,则以下表达式中值为零的是o

A、clc2

B、cl&c2

C、~c2

D、clc2

【答案】A

11、以下正确的描述是。

A、函数的定义可以嵌套,但函数的调用不可以嵌套

B、函数的定义不可以嵌套,但函数的调用可以嵌套

C、函数的定义和函数的调用均不可以嵌套

D、函数的定义和函数的调用均可以嵌套

【答案】B

12、选出下列标识符中不是合法的标识符的是o

A、hot_do

B、catl

c、_pri

D、2ab

【答案】D

13、下列关于指针定义的描述,是错误的

A、指针是一种变量,该变量用来存放某个变量的地址值的

B、指针是一种变量,该变量用来存放某个变量的值

C、指针变量的类型与它所指向的变量类型一致

D、指针变量的命名规则与标识符相同

【答案】B

14、以下叙述中正确的是()。

A、构成.C程序的基本单位是函数

B、可以在一个函数中定义另一个函数

C、main。函数必须放在其它函数之前

D、所有被调用的函数一定要在

温馨提示

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

评论

0/150

提交评论