2022年内蒙古某大学C语言练习(八套试卷)及答案_第1页
2022年内蒙古某大学C语言练习(八套试卷)及答案_第2页
2022年内蒙古某大学C语言练习(八套试卷)及答案_第3页
2022年内蒙古某大学C语言练习(八套试卷)及答案_第4页
2022年内蒙古某大学C语言练习(八套试卷)及答案_第5页
已阅读5页,还剩121页未读 继续免费阅读

下载本文档

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

文档简介

内蒙古师范大学

C语言练习(一)

总分:100分考试时间:60分钟

注意事项:

>开考前,仔细核对科目是否正确,有无试卷、答题卡分发错误及试题字迹不清、重

E八漏印或缺页等问题。

>部分学科有选作题,注意按题目要求进行作答,如有选项框,请使用2B铅笔将选

定题目对应的选项框涂满涂黑,不得多涂或漏涂。

>考试中途不能无端离场,否则视为放弃。

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

1、下列属于不合法的C语言整型常量的选项是O

A、-32679

B、OXabc

C、069

D、3e2

2、下列程序段的输出结果为ointa=7,b=9,t;t=a*=a>b?a:b;printf(M%dM,t);

A、7

B、9

C、63

D、49

3、if语句的基本形式是:if(表达式)语句,以下关于“表达式”值的叙述中正确的是o

A、可以是任意合法的数值

B、必须是整数值

C、必须是正数

D、必须是逻辑值

4、有以下程序

main()

inti,j;

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

for(j=i;j<4;j++)printf(w%d*%d=%dn,i,j,i*j);

printf(M\nM);

}

)

程序运行后的输出结果是

A、1*1=11*2=21*3=3

2*1=22*2=42*3=6

3*1=33*2=63*3=9

B、1*1=11*2=21*3=3

2*2=42*3=6

3*3=9

C、1*1=1

D、1*1=11*2=2

2*1=22*2=4

3*3=9

5、c语言允许函数值类型缺省定义,此时该函数值隐含的类型是一

A、float

B、int

C、long

D、double

6、下面不是c语言整型常量的是________。

A、081

B、01

C,-32768

D、0x81

7、设有定义doublea[10],*s=a;以下能够代表数组元素a[3]的是.

A、*(s+3)

B、(*s)[3]

C、*s[3]

D、*s+3

8、根据数制的基本概念,下列各进制的整数中,值最大的一个是—

A、十六进制数10

B、十进制数10

C、八进制数10

D、二进制数10

9、下列字符串中可以用作c标识符的是o

A、2009var

B、goto

C、test-2009

D、-123

10、以下错误的定义语句是。

A、intx[][3>{{0},{1},{1,2,3)};

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

C、intx[4][]-{{!,2.3},{1,2.3},{1,2,3},{1,2,3}};

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

11、下列说法正确的是。

A、在执行C程序时不是从main函数开始的

B、C程序书写格式严格限制,一行内必须写一个语句

C、C程序书写格式自由,一个语句可以分写在多行上

I)、C程序书写格式严格限制,一行内必须写一个语句,并要有行号

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

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

A、x%2==0

B、!x%2!=0

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

D、!(x%2)

13、下列各项中不属于算法基本特征的是。

A、可行性

B、递归性

C、确定性

D、有穷性

14、下列说法不正确的是。

A、一个C语言源程序可以由一个函数组成也可以由多个函数组成

B、main。中的“()”是函数的参数部分,括号内可为空,但括号不能省略

C、C语言程序是以函数为基本单位的

1)、在C语言程序中,注释行只能位于一条语句的后面

15、若希望下面的程序运行后输出45,程序空白处的正确选择是

ttinclude<stdio.h>

voidmain()

inti,j=10,a[]={1,3,5,7,9,11,13,15};

for()j+=a[i];

printf(,r%d\nw,j);

)

A、i=5;i>l;i一

B、i=0;i<7;++i

C、i=5;i>=l;—i

D、i=2;i<6;++i

16、有以下程序:

main(){

intk=4,n=0;

for(;n<k;){

n++;

if(n%3!=o)continue;

k一;

)

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

}

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

A、1,1

B、2,2

C、3,3

D、4,4

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

longs;

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

elses=n-fun(n-l);

returns;

)

main(){

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

A、1

B、2

C、3

D、4

18、请读程序:

^include<stdio.h>

f(intb[],intn)

(

inti,r=l;

for(i=0;i<=n;i++)r=r*b[i];

returnr;

}

voidmain()

(

intx,a[]={2,3,4,5,6,7,8,9};

x=f(a,3);

printf(M%d\nM,x);

)

上面程序的输出结果是.

A、720

B、120

C、24

D、6

19、排序的重要目的是为了以后对已排序的数据元素进行—

A、打印输出

B、分类

C、查找

D、合并

20、以下对结构体类型变量的定义中,不正确的是—

A、typedefstructaa{

intn;

floatm;

}AA;

AAtdl;

B、#defineAAstructaaAA{

intn;

floatm;

}tdl;

C、struct{

intn;

floatm;

}aa;

structaatdl;

D'struct{

intn;

floatm,

}tdl;

21、在c语言中,char型数据在内存中的存储形式是。

A、补码

B、反码

C、原码

D、ASCII码

22、若有说明charc[7]={'s','t','r','i','n','g'};则对元素的非法引用是

A、c[0]

B、c[9-6]

C、c[4*2]

D、c[2*3]

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

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

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

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

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

24、下列关于宏操作的叙述错误的是。

A,do-while的循环体至少无条件执行一次

B'while的循环控制条件比do-while的循环控制条件更严格

C、do-whi1e允许从外部转到循环体内

D、do-while的循环体不能是复合语句

25、在c语言中,函数的隐含存储类别是。

A、auto

B、static

C、extern

D、无存储类别

26、设ch是char型变量,其值为c,且有下面的表达式ch=(ch>='a'&&ch<="z')?(ch-

32):ch上面表达式的值是______o

A、c

B、C

C、Z

D、z

27、数组inta[3][41;其中错误的数组引用为»

A、a[0][0]

B、a[l][3]

C、a[3][3]

D、a[0]

28、下面程序段的功能是

ttinclude<stdio.h>

main()

(

charsi;

sl=putc(getc(stdin),stdout);

}

A、从键盘输入一个字符给字符变量si

B、从键盘输入一个字符,然后再输出到屏幕

C、从键盘输入一个字符,然后在输出到屏幕的同时赋给变量si

I)、在屏幕上输出stdout的值

29、字符串指针变量中存入的是。

A、字符串

B、字符串的首地址

C、第一个字符

D、字符串变量

30、下列叙述中正确的是______。

A、C语言编译时不检查语法

B、C语言的子程序有过程和函数两种

c、c语言的函数可以嵌套定义

D、C语言中,根据函数能否被其它源文件调用,被区分为内部函数和外部函数

31、有以下函数

intaaa(char*s)

(

char*t=s;

while(*t++);

t-=l;

return(t-s);

)

以下关于aaa函数的功能叙述正确的是。

A、求字符串s的长度

B、比较两个串的大小

C、将串s复制到串t

D、求字符串S所占字节数

32、下列运算符中优先级最高的算符是。

A、!

B、%

C、-=

D、&&

33、若有以下函数调用语句:fun(m+n,x+y,f(m+n,z,(x,y)));在此函数调用语句中实参的个

数是o

A、6

B、5

C、4

D、3

34、c语言中,定义结构体的保留字是o

A、union

B、struct

C、enum

D、typedef

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

main()

inta=5,b=4,c=6,d;

printf(,,%d\nM,d=a>b?(a>c?a:c):(b));

)

A、5

B、4

C、6

D、不确定

36、与下面程序段等价的是。

for(n=100;n<=200;n++)

(

if(n%3=0)continue;

printf(H%4d,r,n);

}

A、for(n=100;(n%3)&&n<=200;n++)printf(H%4dw,n);

B、for(n=100;(n%3)||n<=200;n++)printf(n%4dM,n);

C、for(n=100;n<=200;n++)if(n%3!=0)printf(n%4d\n);

D、for(n=100;n<=200;n++){

if(n%3)printf(n%4dn,n);Elsecontinue;Break;}

37、判断字符串si是否大于字符串s2,应该使用o

A、if(strcmp(sl,s2)<0)

B、if(sl>s2)

C>if(strcmp(s2,si)<0)

D、if(strcmp(si,s2))

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

main()

(

charcl二’6',c2='0f;

printf(1%d\n,cl,c2,cl-c2);

}

A、因输出格式不合法,输出出错信息

B、54,48,6

C、6)0,7

D、6,0,6

39、有以下程序

main()

(

inta[4][4]={{1,4,3,2},{8,6,5,7),{3,7,2,5},{4,8,6,1}},i.k,t;

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

for(k=i+l;k<4;k++)

if(a[i][i]<a[k][k])

(

t=a[i][i];

a[i][i]=a[k][k];

a[k][k]=t;

}

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

printf(H%d,w,a[0][i]);

)

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

A、6,2,1,1,

B、6,4,3,2,

C、1,1,2,6,

D、2,3,4,6,

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

structtest

(

intml;

charm2;

floatm3;

unionuu

(

charul[5];

intu2[2];

)

ua;

}

myaa;

则sizeof(structtest)的值是。

A、12

B、16

C、14

D、9

41、假设所有变量均为整型,则表达式(a=2,b=5,b++,a+b)的值。

A、8

B、7

C、6

D、4

42、与数学公式a・b/xey不等价的语句是

A、a*b/x*y

B、a*b/x/y

C、a*b/(x*y)

I)、a/(x*y)*b

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

main()

(

inta=4,b=5,c;

if(a<b)

(

c=a*b;

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

)

else

(

c=b/a;

printf(w%d,%d,%d\nH,b,a,c);

)

)

A、4,5,12

B、20

C、5,4,20

D、12

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

main()

(

inta=l,b=0,x=l,y=l;

switch(a)

(

case1:switch(b)

(

case0:x++;

break;

casel:y++;

break;

case2:x++;

y++;

break;

)

printf("%d,%d\n”,x,y);

A、2,1

B、2,3

C、3,2

D、32

45、如果在一个复合语句中定义了一个变量,则有关该变量正确的说法是o

A、只在该复合语句中有效

B、只在该函数中有效

C、在本程序范围内均有效

D、为非法变量

46、设变量已正确定义,则以下能正确计算f=n!的程序是o

A、f=0:

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

B、F=l:

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

C、f=l:

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

D、f=l;

for(i=n;i>=2;i-)f*=i:

47、在一个应用程序中有如下定义:inta[]=(1,2,3,4,5,6,7,8,9,10},为了打印输出数

组a的最后一个元素,下面正确的代码是o

A、printf(n%dtt,a[10];)

B、printf(H%d,',a[9]);

C、printf(n%dtt,a[a.length]);

D、printf(w%dw,a[8]);

48、以下叙述中,不正确的是.

A、使用staticfloata定义的外部变量存放在内存中的静态存储区

B、使用floatb定义的外部变量存放在内存中的动态存储区

C、使用staticfloatc定义的内部变量存放在内存中的静态存储区

D、使用floatd定义的内部变量存放在内存中的动态存储区

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

A、charstr[7]=HFORTRANM;

B、charstr[]="FORTRAN";

C、char*str="FORTRAN,r;

D、charstr[]={'F','O','R','丁,'R','A','N',0};

50、以下函数不能用于向文件写入数据的是。

A、ftell

B、fwrite

C、fputc

D、fprintf

【C语言练习(一)参考答案】

一、单项选择题

1、c

【解析】C语言中,以。开头的整型常量表示八进制数,而八进制数只能由‘0‘〜'7'

八个字符组成,选项C中出现了数字9是错误的。故应该选择C。

2、C

3、A

【解析】“表达式”的值类型可以是合法的数值,但是都分为两类,0是假,非0是真。

4、B

【解析】本题考查的是循环嵌套。在一个循环体内又完整地包含了另一个循环,称为循

环嵌套。外循环i的值分别为1、2、3,当i=l,内循环j=l时,输出1*1=1;当内循环

j=2时,输出1*2=2;当内循环j=3时,输出1*3=3;当i=2,内循环j=2时,输出

2*2=4;当内循环j=3时,输出2*3=6;当i=3,内循环j=3时,输出3*3=9。

5、B

6、A

【解析】本题考核整型变量的3种表示形式,选项B是一个八进制数;选项C是一个十

进制数;选项D是一个十六进制数;选项A以0开始没有跟字母x,但后面的数字8并不

是八进制中使用的数符,故选项A不是C语言的整型变量。

7、A

【解析】*(s+3)指针后移3个单位,为a[3]的值。答案选择A。

8、A

【解析】分别将四个数转换为十进制为16,10,8,2。

9、D

【解析】在C中,变量标识符必须以大小写字母或下画线开始,是由数字或者字母下画

线等组成的一个字符串,其中C++关键字不能作为标识符,不能包含-、+、*、/等运算符

号。C++变量区分大小写。

10、C

11、C

12、C

13、B

【解析】一个算法所必须具有的基本特征是:可行性、确定性、有穷性和拥有足够的情

报。B选项是指算法设计基本方法。

14、D

【解析】本题涉及C语言基本的3个知识点:①C语言是以函数为基本单位的,每一个函

数完成相对独立的功能,一个程序可以包括多个函数,但有且仅有一个主函数;②主函数

main。的圆括号内是填写参数的,可以没有参数,但括号不可以省略:③程序的注释部分

应该在"/*.......*/“之间,它允许出现在程序的任何位置。

15、C

16、C

【解析】在本程序的for循环中,用到了一个continue语句,continue语句的作用是停

止本次循环,不执行循环体内continue语句后面的其他语句,继续下次循环的条件判断。

首先在for循环中n自加1(值变为1),然后执行后面的if语句,由于if语句后面括号的

表达式1%3!=0的值为真,程序执行continue语句,回到for循环的开始部分,并且判断

for循环中的条件表达式(nVk)为真,重复执行“n++;”语句,如此循环直到n=3时,if

语句判定条件中表达式3%3!=0的值为假,程序执行if语句后面的“k—;”语句,此时k

的值为3,不满足nVk,退出for循环。故最后的k和n的值为3和3,选项C符合题

意O

17、A

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

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

2=1o

18、B

19、C

【解析】排序是指将一个无序序列整理成按值顺序排列的有序序列。排序的重要目的是

为了以后对已排序的数据元素进行查找。

20、C

21、D

22、C

23、D

24、A

【解析】VisualFoxPro中,支持两种类型的菜单,分别是条形菜单和弹出式菜单。菜单

系统一般是一个下拉式菜单,它是由一个条形菜单和一个弹出式菜单所组成的。

25、C

【解析】为简化编程,C语言中允许在定义外部函数时省略关键字extern。

26、B

27、C

28、C

29、B

30、D

31、A

32、A

33、D

【解析】参数之间是用逗号分隔的,不要因为参数是表达式而被迷惑。函数的第一个参

数是表达式m+n,第三个参数是表达式f(m+n,z,(x,y))o

34、B

35、C

36、C

37、C

【解析】本题考查字符串比较函数strcmpO。调用形式:strcmp(sl,s2),其中si、s2

分别是字符串存储区的首地址。函数功能:比较字符串strl和str2,当strl〈str2时,

返回值为负数;当strl=str2时,返回0;当strl>str2,返回值为正数(注意:不能使用

关系运算符比较两个字符串的大小)。

38、B

39、B

【解析】本题使用选择法对二维数组对角线上的元素按从大到小的顺序进行排列。最后

输出数组第一行的数据。故本题答案为B)。

40、A

41、A

42、A

43、C

【解析】本题考查ifelse语句。第一个if语句,先判断条件,发现a<b成立,执行

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

44、C

45、A

46、D

47、B

48、B

49、A

50、A

【解析】考察文件的操作,函数ftellO用于得到文件位置指针当前位置相对于文件首

的偏移字节数。在随机方式存取文件时,由于文件位置频繁的前后移动,程序不容易确定

文件的当前位置。调用函数ftellO就能非常容易地确定文件的当前位置。不能写入数

据,其他三个选项都可以向文件中写入。

内蒙古师范大学

C语言练习(二)

总分:100分考试时间:60分钟

注意事项:

>开考前,仔细核对科目是否正确,有无试卷、答题卡分发错误及试题字迹不清、重

E八漏印或缺页等问题。

>部分学科有选作题,注意按题目要求进行作答,如有选项框,请使用2B铅笔将选

定题目对应的选项框涂满涂黑,不得多涂或漏涂。

>考试中途不能无端离场,否则视为放弃。

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

1、以下哪个不是c语言中的有效标识符

A、34a

B、-AB

C、A-B

D、A25

2、执行下面程序段后,k的值是ointi,j,k;for(i=0,j=10;i<j;i++,j—)k=i+j;

A、9

B、11

C、8

D、10

3、分析下列程序:

#include<stdio.h>

main()

(

int*pl,*p2,*p;

inta=6,b=9;

pl=&a;

p2=&b;

if(a<b)

(

P二pl;

pl=p2;

p2=p;

)

printf(,r%d,%dn,*pl,*p2);

printf(H%d,%dw,a,b);

}

程序的输出结果为o

A^9,66,9

B、6,99,6

C、6,96,9

D、9,69,6

4、有如下程序

main()

(

intx=3;

do

(

printf(H%d",x一);

J

while(!x);

)

该程序的执行结果是O

A、321

B、3

C、不输出任何内容

D、陷入死循环

5.chara[10];不能将字符串“abc"存储在数组中的是

A、strcpy(a,HabcM);

B、a[0]=0;strcat(a,MabcH);

C、a="abc";

D、inti;for(i=0;i<3;i++)a[i]=i+97;a[i]=0;

6、有如下程序

main()

(

inty=3,x=3,z=l;

printf(w%d%d\nw,(++x,y++),z+2);

)

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

A、34

B、42

C、43

D、33

7、下面说法正确的是o

A、char*x,y,**str同时定义了三个变量,符合语法规范

B、数组说明符的一对方括号中只能使用常量数值

C、单精度浮点值也可以作为数组下标

D、若有定义floatarr⑵则printf(H%2.Ifarray[0.5])是合法的语句

8、以下是不正确的转义字符。

A、7

B、、

C、,\081’

D、

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

A、charstr口=“string";c=str;

B、scanf(吗s”,c);

C、c=getchar();

D、*c="string”;

10、以下选项中,与n=i++完全等价的表达式是o

A、n=i,i=i+l

B、n+=i+l

C、i=i+l,n=i

D、n=++i

11、若有定义语句:chars[10]="1234567\0\0";则strlen(s)的值是

A、7

B、8

C、9

D、10

12、结构化程序设计主要强调程序的()

A、效率

B、速度

C、可读性

D、大小

13、设函数定义如下:floatfl(floata,floatb)

(

return(a+b);

)

若有floatx=l.l,y=2.2;

,则以下语句中正确的函数调用是O

A、printf(n%fw,fl();

B、printffl(&x,);

C、printffl(*x,*);

D、printf(M%fw,fl(x,);

14、有以下程序段:

intj;

floaty;

charname[50];

scanf(H%2d%f%s",&j,&y,name);

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

A、55566.0

B、566.0

C、7777.0

D、566777.0

15、main()

(

intn;

(n=6*4,n+6),n*2;

printf(,rn=%d\nH,n);

)

此程序的输出结果是.

A、30

B、24

C、60

D、48

16、c语言中下面哪个不是循环语句?

A、dowhi1e

B、if

C^while

D、for

17、有以下程序:

voidfun(int*a,inti,intj){

intt;

if(i<j)t=a[i];

a[i]=a[j];

a[j]=t;

fun(a,++i,-j);

}

main(){

inta[]=l,2,3,4,5,6,i;

fun(a,0,5);

for(i=0;i<6;i++)printf(映d”,a[i]);

)

执行后的输出结果是o

A.654321

B、432156

C>456123

D、123456

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

main()

(

inta="l,b=l,k;

if((++a<0)&&!(b--<=0))printf(,r%d%d\nw,a,b);

elseprintf(n%d%d\n'\b,a);

)

A、-11

B、01

C、10

D、00

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

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

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

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

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

20、有以下程序

^include<studio.h>

#include<string.h>

structa

(

inta;

charb[10];

doublec;

);

voidf(structat);

main()

(

structaa={1001,"zhangda",1098.0};

f(a);

pringt(H%d,%s,%6.lf\n",a.a,a.b,a.c);

}

voidf(structat)

(

t・a—1002;

strcpy(t.b,"changrong");

t.c=1202.0;

)

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

A、1001,ZhangDa,1098.0

B、1002,ChangRong,1202.0

C、1001,ChangRong,1098.0

D、1002,ZhangDa,1202.0

21、若变量已正确定义并赋值,以下符合c语言语法的表达式是

A、a:=b+l

B、a=b=c+2

C、int18.5%3

D、a=a+7=c+b

22、与十六进制数cd等值的十进制数是o

A、204

B、205

C、206

D、203

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

#include<stdio.h>

intfun(intx){

inta;

if(x==0IIx==l)return3;

elsea=x-fun(x-2);

returna;

)

voidmain(){

printf(',%d'r,fun(7));

)

A、2

B、8

C、9

D、5

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

A、switch(a)

ease0:a=b;break;

default:a++;

B、switch(a==l)

case0:a++:

default:a=b;

C、switch(a)

default:a=b;break;

case1:a++;

D、a=(a==l)(a++):b

25、若二维数组a有m列,则计算任一元素在数组中相对位置的公式为(假设a[0]

[0]位于数组的第一个位置上)O

A、i*m+j

B、j*m+I

C、

D、i*m+j+l

26、十进制数127转换成二进制数是o

A、11111111

B、01111111

C、10000000

D、11111110

27、设有如下程序段chars[20]="bejing",*p;p=s;则执行p=s;语句后,以下叙述正确

的是»

A、可以用*p表示s[0]

B、s数组中元素的个数和p所指字符串长度相等

C、s和p都是指针变量

D、数组s中的内容和指针变量p中的内容相等

28、以下叙述中正确的是。

A、输入项可以是一个实型常量,如scanf(w%f",3.5);

B、只有格式控制,没有输入项,也能正确输入数据到内存,例如:scanf("a=%d,

b=%d");

C、当输入一个实型数据时,格式控制部分可以规定小数点后的位数,例如:

scanf("%4.2f",&p);

D,当输入数据时,必须指明变量地址,例如:scanf(w%f",&p);

29、下列类型的数据不可以存储在可变型变量中的是o

A,整型

B、字节型

C、单精度型

D、日期型

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

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';

31、关于过程、自定义函数的调用,正确的叙述是。

A、实参的数量必须等于形参的数量,它们是一对应的关系

B、实参的数量可以少于形参的数量,多余的形参取逻辑假

口实参的数量可以多于形参的数量,多余的实参被忽略

D、实参的数量可以多于形参的数量,多余的实参取逻辑假

32、若变量a、b、x、i都已正确定义并赋值,则以下符合c语言语法的表达式是

A、a+=a-=(b=4)*(a=3)

B、x%(-3);

C、a=a*3=2

D、v=float(i)

33、若有定义:char*st="howareyou*';下列程序段中正确的是。

A、chara[11];*p;strcpy(p=a+l,&st[4]);

B、charatl1];strcpy(++a,st);

C、chara[11];strcpy(a,st);

D、chara[],*p;strcpy(p=&a[l],st+2);

34、有如下定义

structperson

(

charname[9];

intage;

)

structpersonclass[10]={"john",17,"paul”,19,HmaryM,18,nadamM,16);

根据上述定义,能输出字母a的语句是o

A、printf(,,%c\nH,class[3].name);

B、printf(M%c\nw,class[3].name[0]);

C、printf(n%c\nw,class[4].nametl]);

D、printf(H%c\nM,class[4].name[0]);

35、阅读以下程序:

main()

(

intx;

for(x=5;x>0;x--)if(x--<5)printf(,r%d,H,x);

elseprintf("%d,",x++);

}

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

A、4,3,2

B、4,3,1,

C、5,4,2

D、5,3,1,

36、下面for语句的循环次数为()ofor(x=l,y=0;(y!=19)&&(x<6);x++);

A、是无限循环

B、循环次数不定

C、最多执行6次

D、最多执行5次

37、下列一维数组初始化语句中,正确且与语句floata[]={0,3,8,0.9};等价的是

A、floata[6]={

0,3,8,0,9);

B、floata[4]={

0,3,8,0,9);

C、floata[7]={

0,3,8,0,9};

D、floata[5]={

0,3,8,0,9};

38、请读程序:

#include<stdio.h>

f(chars[])

(

inti,j;

i=0;

j=0;

while(s[j]!='\0')j++;

return(j-i);

}

voidmain()

(

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

}

上面程序的输出结果是.

A、0

B、6

C、7

D、8

39、对长度为8的数组进行快速排序,最多需要的比较次数为—

A、8

B、28

C、56

D、64

40、以下选项中不能正确把cl定义成结构体变量的是

A、typedefstruct

(

intred;

intgreen;

intblue;

}COLOR;

COLORcl;

B、structcolorcl

(

intred;

intgreen;

intblue;

}:

C、structcolor

(

intred;

intgreen;

intblue;

}cl;

D、struct

(

intred;

intgreen;

intblue;

}cl;

41、在下列字符中,其ascii码值最小的一个是______c

A、空格字符

B、0

C、A

D、a

42、在c语言程序中可用做用户标识符的是。

A、void

B、aa

123_abc

BBNcas

C、as+b3

D、6f

—123Do

IfSIG

43、下列程序的运行结果是o

main()

(

inta=-5,b=l,c=l;

intx=0,y=2,z=0;

if(c>0)x=x+y;

if(a<=0)

(

if(b>0)if(c<=0)y=x-y;

)

elseif(c>0)y=x-y;

elsez=y;

printf(M%d,%d,%d\nw,x,y,z);

}

A、2,2,0

B、2,2,2

C、0,2,0

D、2,0,2

44、下面程序的输出是o

main()

(

intx=3,y=6,a=0;

while(x++!=(y-=l))

(

a+=l;

if(y<x)break;

}

printf(,rx=%d,y=%d,a=%d\n”,x,y,a);

)

A、x=4,y=4,a=l

B、x=5,y=5,a=l

C、x=5,y=4,a=3

D、x=5,y=4,a=l

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

main()

(

inti,x[3][3]={9,8,7,6,5,4,3,2,l},*p=&x[l][l];

for(i=0;i<4;i+=2)printf(M%d\p[i]);

}

A、52

B、51

C、53

D、97

46、执行以下语句后a的值为o

inta,b,c;

a=b=c=l;

++a||++b&&++c;

A、错误

B、0

C、2

D、1

47、若有如下定义,则是对数组元素的正确的引用inta[10],;p=a;

A、*&a[10]

B、a[ll]

C、*(p+ll)

D、*p

48、分析以下程序,下列说法正确的是o

main()

(

intx=5,a=0,b=3;

if(x=a+b)printf(M****\nn);

elseprintf(M####\n");

A、有语法错,不能通过编译

B、通过编译,但不能连接

C、输出****

D、输出####

49、下面关于编译预处理命令,正确的是

A、ttdefinecharCHAR

B、^DefineE0.0000034

C、##defineFALSE0

D、ttdefineDIM26

50、程序中头文件typcl.h的内容是一

ttdefineN5

ttdefineMlN*3

程序如下:

#includeHtypel.hn

#defineM2N*2

main()

(

inti;

I=M1+M2;

printf(',%d\n,r,i);

}

程序编译后运行的输出结果是

A、10

B、20

C、25

D、30

【C语言练习(二)参考答案】

一、单项选择题

1、A

【解析】考查C语言标识符规则。[解题要点]在C语言中,标识符只能由数字,字母,

下划线组成,并且第一个字符不能是数字。[错解分析]选项A是以数字开始的。[考点链

接]关键字不能用作标识符。

2、D

3、A

【解析】通过pl=&a,p2=&b分别将a、b的地址赋给指针pl、p2,接着执行if语句,发

现a<b成立,则通过交换pl、p2的值,即交换a、b所在存储单元的地址,但是a、b的

值并没有发生变化。

4、B

【解析】本题x赋初值为3,当执行printf(5d”,x-);时,由于x-的作用是先运算x,

再将x的值减1,所以,printf输出的x值为3,等输出后,x的值减1变为2,继续执

行,判断条件!x为假,循环只被执行一次。

5、C

6、D

【解析】逗号表达式(++x,y++)的值应该是y++的值,由于y++是先引用后自增,所以

y++的值是3«

7、A

【解析】定义数组时,一对方括号内为整型数据类型,可以是变量也可以是常量,选项B

错误;访问数组时,数组下标为整型数据,选项C,D错误。在选项A中,定义了3个变量,

类型为char的变量x,类型为char的变量y类型为char的变量str本题答案为A

选项。

8、C

9、A

10、A

11,B

【解析】C语言中strlenO函数的功能是返回字符串的长度,其中‘\0'是一个转义字

符,它占存储空间,但不计入串的长度。所以选项B正确。

12、C

13、D

14、B

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

“%2d”,即只接收输入数据的前两位,从第3位开始直到空格之间的输入都会被保存到变

量y中,因为y为浮点型数据,所以输出结果为选项B)。

15、B

16、B

17、A

【解析】本题考查指针变量作函数形参的问题。指针变量作函数的形参,实现的是地址

传递,形参的改变可以影响实参。fun由数的功能是将a所指数组中的内容逆置。在main

函数中调用fun函数后,实参数组s中元素的值变为:a[0]=6、a[l]=5、a[2]=4.

a[3]=3>a[4]=2>a[5]=lo

18、C

19、A

20、A

21、B

【解析】本题考查C语言的正确赋值方法。a=b二c+2实际上相当于a=(b=c+2),进而可分

解为两个表达式:b=c+2和a=b。注意:选项A)中包含一个不合法的运算符“:二”;选

项C)应改为(int)18.5%3;选项D)可理解为两个表达式:a+7=c+b和a=a+7,其中第一

个是错的,因为C语言规定赋值号的左边只能是单个变量,不能是表达式或常量等。

22、B

【解析】(CD)16=12X16+13=192+13=(205)10,故选B。

23、A

【解析】本题考查函数的递归调用。在函数递归调用时,fur)(7):a=7-

fon(5)-*,fun(5):a=5-fon(3)-*fun3:a=3-fun(1)->fun(1):a=3,反推回去fun(3):a=3-

3=0ffun(5):a=5-0=5ffun(7):a=7-5-2,最后的计算结果为2。

24、B

【解析】ifelse语句的含义是,如果变量a的值等于1,变量a的值加1,否则,则把

变量b的值赋给变量a。在本题的4个选项中,与其含义不同的是选项B),因为没有

break语句,当a=l的时候,会顺序执行两条语句,最终结果是将b的值赋给a。

25、A

26、B

27、A

28、D

29、B

【解析】本题考查可变型变量。可变型变量可以存储9种类型的数据:空、NULL型、整

型、长整型、单精度型、双精度型、货币型、日期型和字符串型。选项A错误,整型数据

可以存储在可变型变量中;选项B正确,字节型数据不可以存储在可变型变量中;选项C

错误,单精度型数据可以存储在可变型变量中;选项D错误,日期型数据可以存储在可变

型变量中。答案为B。

30、D

31、B

【解析】调用模块程序时,系统自动把实参传递给对应的形参。形参的数目不能少于实

参的数目,否则系统会产生运行时错误;如果形参数日多于实参的数日,那么多余的形参

取初值逻辑假。

32、A

33、A

【解析】本题综合考查字符数组的赋值和strcpy函数的用法。C语言不允许用赋值表达

式对字符数组赋值,如下面的语句就是非法的:strl="China”,如果想把“China”这

5个字符放到数组strl中,除了逐个输入外,还能使用strcpy函数,该函数的功能是将

一个字符串复制到一字符数组中。例如:strcpy(strl,“China”)或strcpy(strl,

str2);注意,不能企图用以下语句来实行赋值(将str2的值传给strl):strl=str2;不

能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

strcpy函数的结构是:strcpy(字符数组1,字符串2)

其中,需要注意的是,字符数组1的长度不应小于字符串2的长度,"字符数组1”必

须写成数组名形式,如(strl),“字符串2”可以是字符数组名,也可以是字符串常量,

不能用赋值语句将一个字符串常量或字符数组直接给一个字符数组。

34、B

35、B

36、D

37、D

38、B

39、B

【解析】对长度为n的线性表进行快速排序,最坏情况下需要比较的次数为n(n-l)/2.

数组属于线性表,故对长度为8的数组进行快速排序,最多需要的比较次数为8(8-

0/2=28.本题答案为B选项。

40、B

41、A

【解析】ASCII码值(用十进制表示)分别为:空格对应32,0对应48,A对应65,a对应

97o

42、B

43、A

【解析】本题考查ifelse语句的使用。先判断第1个if语句,因为c=l>0,所以

x=x+y=0+2=2。第1个if语句,因为a=-5V0,所以进入下列的复合语句。经判断发现,

复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的

值没有发生变化。

44、D

45、C

46、C

47、D

48、C

49、D

【解析】无参宏定义的一般格式:#define标识符语言符号字符串,其中:“define”为

宏定义命令;"标识符为所定义的宏名,通常用大写字母表示,以便于与变量区别;”语言符

号字符串”可以是常数、表达式、格式串(格式串是用双引号括起来的字符串)等,选项A

BC错误,选项D正确;本题答案为Do

50、C

内蒙古师范大学

温馨提示

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

评论

0/150

提交评论