C语言期末模拟试题12.docx

上传人:b****4 文档编号:4144864 上传时间:2023-05-06 格式:DOCX 页数:38 大小:29.90KB
下载 相关 举报
C语言期末模拟试题12.docx_第1页
第1页 / 共38页
C语言期末模拟试题12.docx_第2页
第2页 / 共38页
C语言期末模拟试题12.docx_第3页
第3页 / 共38页
C语言期末模拟试题12.docx_第4页
第4页 / 共38页
C语言期末模拟试题12.docx_第5页
第5页 / 共38页
C语言期末模拟试题12.docx_第6页
第6页 / 共38页
C语言期末模拟试题12.docx_第7页
第7页 / 共38页
C语言期末模拟试题12.docx_第8页
第8页 / 共38页
C语言期末模拟试题12.docx_第9页
第9页 / 共38页
C语言期末模拟试题12.docx_第10页
第10页 / 共38页
C语言期末模拟试题12.docx_第11页
第11页 / 共38页
C语言期末模拟试题12.docx_第12页
第12页 / 共38页
C语言期末模拟试题12.docx_第13页
第13页 / 共38页
C语言期末模拟试题12.docx_第14页
第14页 / 共38页
C语言期末模拟试题12.docx_第15页
第15页 / 共38页
C语言期末模拟试题12.docx_第16页
第16页 / 共38页
C语言期末模拟试题12.docx_第17页
第17页 / 共38页
C语言期末模拟试题12.docx_第18页
第18页 / 共38页
C语言期末模拟试题12.docx_第19页
第19页 / 共38页
C语言期末模拟试题12.docx_第20页
第20页 / 共38页
亲,该文档总共38页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C语言期末模拟试题12.docx

《C语言期末模拟试题12.docx》由会员分享,可在线阅读,更多相关《C语言期末模拟试题12.docx(38页珍藏版)》请在冰点文库上搜索。

C语言期末模拟试题12.docx

C语言期末模拟试题12

一、选择题:

(20分,每题2分)

1.以下不正确的C语言标识符是()。

A.ABCB.abcC.a_bcD.

2.C程序是由    构成的。

A.主程序与子程序

B.主函数与若干子函数

C.一个主函数与一个其它函数

D.主函数与子函数

3.以下说法中正确的是:

A.在C语言中,实参与其对应的形参各占独立的存储单元;

B.在C语言中,实参与其对应的形参共占同一个存储单元;

C.在C语言中,只有当实参与其对应的形参同名时,才共占同一个存储单元;

D.在C语言中,形参是虚拟的,不占存储单元。

4.设n=3;则n++的结果是()。

A.2B.3C.4D.5

5.设整型变量n=10,i=4,则赋值运算n%=i+1执行后,n的值是()。

A.0B.1C.2D.3

6.凡是函数中未指定存储类别的局部变量其隐含的存储类别是()。

A.自动(auto)B.静态(static)C.外部(extern)D.寄存器(register)

7.在while(x)语句中的x与下面条件表达式等价的是:

A.x==0B.x==1C.x!

=1D.x!

=0

8.若有以下说明和语句:

structworker

{

intno;

char*name;

}work,*p=&work;

则以下引用方法不正确的是()。

A.B.(*p).noC.p->noD.work->no

9.以下对二维数组进行正确初始化的是()。

a[2][3]={{1,2},{3,4},{5,6}};

a[][3]={1,2,3,4,5,6};

a[2][]={1,2,3,4,5,6};

a[2][]={{1,2},{3,4}};

10.二维数组a有m列,则在a[i][j]之前的元素个数为:

A)j*m+i

B)i*m+j

C)i*m+j-1

D)i*m+j+1

二、给出下列程序的运行结果:

(20分,前四题每题3分,后两题每题4分)

1.#include<>

main()

{

inti=16,j,x=6;

j=i+++1;

x*=i=j;

printf(“%d,%d\n”,j,x);

}

运行结果是:

2.#include<>

#include<>

main()

{

inta=1,b=4,c=2;

floatx=,y=,z;

z=(a+b)/c+sqrt((double)y)*c+x;

printf(“%f\n”,z);

}

运行结果是:

3.#include<>

main()

{

inta,b,c,d;

a=c=0;

b=1;

d=20;

if(a)d=d-10;

elseif(!

b)

if(!

c)d=25;

elsed=15;

printf(“d=%d\n”,d);

}

运行结果:

4.main()

{

inti=10;

switch(i){

case9:

i+=1;

case10:

i+=1;

case11:

i+=1;

default:

i+=1;

}

printf(“%d”,i);

}

运行结果:

5.#include<>

main()

{

inta[]={1,2,3,4},i,j,s=0;

j=1;

for(i=3;i>=0;i--)

{

s=s+a[i]*j;

j=j*10;

}

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

}

运行结果:

6.func(intx)

{x=20;}

main()

{

intx=10;

func(x);

printf(“%d”,x);

}

运行结果:

三、阅读程序,在标有下划线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

(20分,每空2分)

1.已知能被4整除而不能被100整除的或者能被400整除的年份是润年,则判断某一年是否是润年的程序如下:

main()

{

intyear,leap;

scanf(“%d”,&year);

if()

leap=1;

elseleap=0;

if()printf(“是润年”);

elseprintf(“不是润年”);

}

2.将100至200间不能被3整除的数输出:

main()

{

intn;

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

{

if(n%3==0);

printf(“%d”,n);

}

}

3.判断m是否是素数

#include<>

main()

{

intm,i,k;

scanf(“%d”,&m);k=sqrt(m);

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

if(m%i==0);

if(i>=k+1)printf(“%disaprimenumber\n”,m);

elseprintf(“%disnotaprimenumber\n”,m);

}

4.给定一3*4的矩阵,求出其中值最大的元素的值,及所在的行列号。

main()

{

inti,j,row=0,colum=0,max;

staticinta[3][4]={{1,2,3,4}{9,8,7,6}{10,-10,-4,4}};

;

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

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

if(a[i][j]>max)

{

max=a[i][j];

;

;

}

printf(“max=%d,row=%d,colum=%d\n”,max,row,colum);

}

5.下面函数的功能是将两个字符串s和t连接起来。

char*conj(char*s,char*t)

{

char*p=s;

while(*s);

while(*t)

{

*s=;

s++;

t++;

}

*s=’\0’;

;

}

四、编程(40分)

1.计算1-1/2+1/3-1/4+…+1/99-1/100+…,直到最后一项的绝对值小于10-4为止。

(13分)

2.输入一行字符,分别统计求出其中英文字母、空格、数字和其他字符的个数并输出结果。

(13分)

3.任意从键盘输入10个整数,按从小到大的顺序排序,并输出结果。

(14分)

答案

一、选择题

1、D,2、B,3、A,4、B,5、A,6、A,7、D,8、D,9、B,10、B

二、给出下列程序的运行结果

1、17,102

2、

3、d=20

4、13

5、s=1234

6、10

三、阅读程序,在标有下滑线的空白处填入适当的表达式或语句,使程序完整并符合题目要求。

1、(year%4==0&&year%100!

=0)||year%400==0)

leap

2、continue

3、break

4、max=a[0][0]

row=i+1

colum=j+1

5、s++

*t

return(p)

四、编程

1、

#include<>

main()

{

inti;

floatsum,sign;

i=1;

sum=0;

sign=;

while(i)>=1e-4)

{

sum+=sign/i;

i++;

sign=-sign;

}

printf("sum=%.4f",sum);

}

2、

#include<>

main()

{

charstr[81];

inti;

intletter,space,num,other;

charc;

printf("Pleaseenterastring:

");

gets(str);

letter=space=num=other=0;

for(i=0;str[i]!

='\0';i++)

{

c=str[i];

if((c>='A'&&c<='Z')||(c>='a'&&c<='z'))

letter++;

elseif(c>='0'&&c<='9')

num++;

elseif(c=='')

space++;

elseother++;

}

printf("Inthisstring:

letter=%d,space=%d,num=%d,other=%d",letter,space,num,other);

}

3、

#include<>

main()

{

intnum[10];

inti,j,k;

inttemp;

printf("Pleaseenter10numbers:

\n");

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

scanf("%d",&num[i]);

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

{

k=i;

for(j=i+1;j<10;j++)

{

if(num[k]>num[j])

k=j;

if(k!

=i)

{

temp=num[i];

num[i]=num[k];

num[k]=temp;

}

}

printf("Aftersorted:

\n");

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

printf("%5d",num[i]);

}

}

选择题(后附答案)

1.以下叙述正确的是_____。

A)在C程序中,main函数必须位于程序的最前面。

B)C语言本身没有输入输出语句。

C)C程序的每行只能写一条语句。

D)在对一个C程序进行编译的过程中,可发现注释中的拼写错误。

2.下面四个选项中,均是不合法的用户标识符的选项是。

A)AB)floatC)b-aD)_123

P_01a0gototemp

do_AintINT

3、下列四个选项中都是合法的转义字符的

A)‘\’’‘\\’‘\n’B)‘\’‘\017’‘\”’

C)‘\018’‘\f’‘xab’D)‘\\0’‘\101’‘x1f’

4、设所有变量均为整型,则表达式z=(a=2,b=5,b++,a+b)的值是:

A)7B)8C)6D)2

5、若有代数式,则不正确的C语言表达式是:

A)a/b/c*e*3B)3*a*e/b/c

C)3*a*e/b*cD)a*e/c/b*3

6、若希望当A的值为奇数时,表达式的值为”真”,A的值为偶数时,表达式的值为”假”。

则以下不能满足要求的表达式是_________。

A)A%2==1B)!

(A%2==0)

C)!

(A%2)D)A%2

7、以下程序的运行结果是:

main()

{

intm=6;

if(m++>6)printf("%d\n",m);

e1seprintf("%d\n",--m);

}

A)4B)5C)7D)6

8、当a=1,b=3,c=5,d=4,执行完下面一段程序后x的值是:

if(a

if(c

else

if(a

if(b

elsex=3;

elsex=6;

elsex=7;

A)1B)2C)3D)6

 

9、阅读以下程序,当输入数据的形式为25,13,10正确的输出结果为

main()

{

intx,y,z

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

printf(“x+y+z=%d\n”,x+y+z);。

}

A)x+y+z=48B)x+y+z=35

C)x+y+z=35D)不确定值

 

10、已知各变量的类型说明如下

intk,a,b;

unsignedlongw=5;

doublex=;

则以下不符合C语言语法的表达式是:

A)x%(-3)B)w+=-2

C)k=(a=2,b=3,a+b)D)a+=a-=(b=4)*(a=3)

11、设有:

inta=1,b=2,c=3,d=4,m=2,n=2;

执行(m=a>b)&&(n=c>d)后n的值为_______。

A)1B)2C)0D)4

12、判断char型变量ch是否为大写字母的正确表达式是________。

A)'A'<=ch<='Z'B)(ch>='A')&(ch<='Z')

C)(ch>='A')&&(ch<='Z')D)('A'<=ch)AND('Z'>=ch)

13、以下描述中正确的是_________:

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

B)在while循环体中,循环体至少要执行一次。

C)在do一while循环体中,循环体至少无条件的执行一次

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

 

14、已知intx=10,y=20,z=30;以下语句执行后x,y,z的值是_______。

if(x>y)

z=x;x=y;y=z;

A)x=10,y=20,z=30B)x=20,y=30,z=20

C)x=20,y=30,z=10D)x=20,y=30,z=30

15、若i为整型变量,则以下循环执行次数是:

for(i=2;i!

=0;)printf("%d",i--);

A)无限次B)0次C)1次D)2次

16、下面程序段:

for(t=1;t<=100;t++)

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

if(x<0)continue;

printf("%3d",t);

}

A)当x<0时整个循环结束

B)x>=0时什么也不输出

C)printf函数永远也不执行

D)最多允许输出100个非负整数

17、若有说明:

inta[3][4];则对a数组元素的正确引用是______。

A)a[2][4]B)a[1,3]C)a[1+1][0]D)a

(2)

(1)

18、定义如下变量和数组:

intk;

inta[3][3]={1,2,3,4,5,6,7,8,9};

则下面语句的输出结果是:

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

A)369B)753C)963D)357

19、判断字符串a和b是否相等,应当使用_______.

A)if(a==b)B)if(a=b)

C)if(strcpy(a,b))D)if(strcmp(a,b))

20、对两个数组a和b进行如下初始化

chara[]="ABCDEF";

charb[]={’A’,’B’,’C’,’D’,’E’,’F’};

则以下叙述正确的是__.

A)a与b数组完全相同B)a与b长度相同

C)a和b中都存放字符串D)a数组比b数组长度长

21、有两个字符数组a和b,则以下正确的输入语句是_________:

A)gets(a,b);B)scanf(“%s%s”,a,b);

C)scanf(“%s%s”,&a,&b);D)gets(“a”),gets(“b”);

22、下面程序段的运行结果是______

charstr[]="ABC",*p=str;

printf("%d\n",*(p+2));

(A)0(B)字符'C'的ASCII码(C)字符'C'的地址(D)字符'C'

23、下面描述正确的是_______。

A)两个字符串所包含的字符个数相同时,才能比较字符串

B)字符个数多的字符串比字符个数少的字符串大

C)字符串”STOP”(注:

有一个空格)与”STOP”相等

D)字符串”That”小于字符串”The”

24、下面判断正确的是_______。

A)char*a=“china”;等价于char*a;*a=“china”;

B)charstr[10]={“china”};等价于charstr[10];str[]={“china”};

C)char*s=“china”;等价于char*s;s=“china”;

D)charc[4]=“abc”,d[4]=“abc”;等价于charc[4]=d[4]=“abc”;

25、若用数组名作为函数调用的实参,传递给形参的是_______。

A)数组的首地址

B)数组第一个元素的值

C)数组中全部元素的值

D)数组元素的个数

26、下面函数调用语句含有实参的个数为_______。

y=func(a,b,max(d,e));

A)5B)2C)3D)4

27、C语言允许函数值类型缺省定义,此时该函数值隐含的类型是_______。

A)float型

B)int型

C)long型

D)double型

28、在C语言中,形参的缺省存储类是

A)autoB)registerC)staticD)extern

29、以下正确的函数定义形式是__________:

A)doublefun(intx,inty)

B)doublefun(intx;inty)

C)doublefun(intx,inty);

D)doublefun(intx,y);

30、在宏定义#definePI“”中,用宏名PI代替一个_______。

A)常量B)单精度数C)双精度数D)字符串

31、#defineADD(x)x+x

main()

{

intm=1,n=2,k=3;

intsum=ADD(m+n)*k;

printf(“sum=%d”,sum);

}

上面的程序运行结果是_________:

A)sum=9B)sum=10C)sum=12D)sum=18

32、以下有关宏替换和函数的调用叙述不正确的是________:

A)宏替换和函数的调用均占用运行时间。

B)宏名无类型,函数有类型

C)宏替换只是字符替换,不分配内存,但函数调用要分配内存

D)再调用宏时程序的长度要加长,而函数调用不变

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

main()

{inti;

for(i=1;i<=2;i++)incre();

}

incre()

{staticintx=1;

x*=x+1;

printf("%d",x);

}

A)33B)22C)26D)25

34、有如下定义

structperson{charname[9];intage;};

strictpersonclass[10]={"Johu",17,

"Paul",19,

"Mary",18,

"Adam”,16,};

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

A)prinft("%c\n",class[3].mane);

B)pfintf("%c\n",class[3].name[1]);

C)prinft("%c\n",class[2].name[1])

D)printf("%c\n",class[2].name[0]);

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

#include<>

main()

{

inta[12]={1,2,3,4,5,6,7,8,9,10,11,12},*p[4],i;

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

p[i]=&a[i*3];

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

}

A.输出项不合法B.6

C.8D.12

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

unionmyun

{struct

{

intx,y,z;

}u;

intk;

}a;

main()

{"%d\n",4B)5C)6D)1

37、以下关于结构体与共用体的说法,其中正确的是

A)共用体同一个内存段可以来存放几种不同类型的成员,但在某一时刻只能存放一个成员。

B)结构体变量所占的内存长度等于最长的成员的长度,共用体变量所占内存长度是各成员占的内存长度之和。

C)共用体每个成员分别占有自己的内存单元。

D)结构体类型可以出现在共用体类型的定义中,但共用体不能出现在结构体类型定义之中。

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

longfun(intn)

{

longs;

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

elses=n-fun(n-1);

returns;

}

main()

{

printf("%ld\n",fun(5));

}

A)1B)2C)3D)4

39、下列程序段的输出结果为

intarr[]={6,7,8,9,10};

int*ptr;

ptr=arr;

*(ptr+2)+=2;

printf("%d,%d\n",*ptr,*(ptr+2));

A)8,10B)6,8C)7,9D)6,10

40、设有如下定义:

int(*ptr)();

则以下叙述中正确的是

A)ptr是指向一维组数的指针变量

B)ptr是指向int型数据的指针变量

C)ptr是指向函数的指针变量,该函数返回一个int型数据

D)ptr是一个函数名,该函数的返回值是指向int型数据的指针

1-5:

BCABC6-10:

CDBDA

11-15:

BCCDD16-20:

BCBDD

21-25:

BBDBA26-30:

CBAAD

31-35:

BACDD36-40:

DABD

一单项选择题(每小题1分,共10分)

1.以下4组用户定义标识符中,全部合法的一组是()

A)_totalclu_1sum

B)if-maxturb

C)txtREAL3COM

D)intk_2_001

2.以下程序的输出结果是()

#include<>

main()

{

inta=1,b=2,c=3;

printf(“%d”,c>b>a);

}

A)2B)1C)0D)3

3.以下正确的叙述是()

A)在C语言中,main函数必须位于文件的开头

B)C语言每行中只能写一条语句

C)C语言本身没有输入、输出语句

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2