C语言29次笔试试题与答案解析文档格式.docx

上传人:b****5 文档编号:19483949 上传时间:2023-01-06 格式:DOCX 页数:15 大小:22.39KB
下载 相关 举报
C语言29次笔试试题与答案解析文档格式.docx_第1页
第1页 / 共15页
C语言29次笔试试题与答案解析文档格式.docx_第2页
第2页 / 共15页
C语言29次笔试试题与答案解析文档格式.docx_第3页
第3页 / 共15页
C语言29次笔试试题与答案解析文档格式.docx_第4页
第4页 / 共15页
C语言29次笔试试题与答案解析文档格式.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

C语言29次笔试试题与答案解析文档格式.docx

《C语言29次笔试试题与答案解析文档格式.docx》由会员分享,可在线阅读,更多相关《C语言29次笔试试题与答案解析文档格式.docx(15页珍藏版)》请在冰豆网上搜索。

C语言29次笔试试题与答案解析文档格式.docx

(*考点:

C++)

16(A)类用于描述事物的属性和对事物的操作

(B)类与类之间通过封装而具有明确的独立性

(C)类与类之间必须是平等的关系,而不能组成层次结构

(D)类与类之间可以通过一些方法进行通信和联络

2.C++中,已知有如下定义:

constintD=5;

inti=1;

longintf=0;

charc=15;

则下列选项错误的是(17)。

17(A)++i;

(B)D--;

(C)c++;

(D)--f;

3.下面关于类和对象的描述中,错误的是(18)。

18(A)类就是C语言中的结构体类型,对象就是C语言中的结构体变量

(B)类和对象之间的关系是抽象和具体的关系

(C)对象是类的实例,一个对象必须属于一个已知的类

(D)类是具有共同行为的若干对象的统一描述体

4.设有定义:

intn=0,*p=&

n,**q=&

p,则下列选项中正确的赋值语句是(19)。

(考点:

指针赋值)

19(A)p=5;

(B)*q=5;

(C)q=p;

(D)*p=5;

注意:

指针不能和非0的整数赋值,赋值运算符左右的类型要一致

5.设有定义:

chars[20]="

ab\101\ncd"

;

则sizeof(s)和strlen(s)的值为(20)。

字符数组)

20(A)6,6(B)20,6(C)20,7(D)20,10

sizeof运算符是求字节数,数组的字节数为元素个数决定,strlen求字符串中第一个空字符前的字符个数,即字符串的长度,\101、\n各占一个字符

6.在C语言的函数中(21)。

21(A)必须有形参(B)形参必须是变量名

(C)可以有也可以没有形参(D)数组名不能作为形参

7.下列程序输出结果是(22)。

带参数的宏定义)

#include"

stdio.h"

#defineSQR(x)x*x

voidmain()

{inta=10,k=2,m=1;

a/=SQR(k+m)/SQR(k+m);

printf("

%d\n"

a);

}

22(A)10(B)1(C)9(D)0

8.已知学生记录描述如下(考点:

嵌套结构体)

structstudent

{intno;

charname[20];

charsex;

struct

{intyear;

intmonth;

intday;

}birth;

};

structstudents;

设变量s中“生日”是“1982年5月29日”,对“生日”的正确赋值方式是(23)。

23(A)year=1982;

month=5;

day=29;

(B)birth.year=1982;

birth.month=5;

birth.day=29;

(C)s.year=1982;

s.month=5;

s.day=29;

(D)s.birth.year=1982;

s.birth.month=5;

s.birth.day=29;

9.有下列程序输出结果是(24)。

字符指针、函数(地址参数)、条件运算)

#include<

stdio.h>

voiddig(char*s)//删除字符串的数字字符

{char*p=s;

while(*s)

*s>

='

0'

&

&

*s<

9'

?

s++:

(*p++=*s++);

*p='

\0'

{char*str="

A1B2C3"

dig(str);

puts(str);

24(A)ABC(B)A1B2C3(C)A1B2C(D)ABC3

10.在下面的选项中,赋值语句错误的是(25)。

赋值语句)

25(A)i++;

(B)a=(b=(c=2,d=3));

(C)a=a<

a;

(D)a=a*b=2;

二、读程序回答问题(每个选择3分,共45分)

1.读下面程序并回答问题:

函数参数的传递方式(普通值传递、地址值传递))

voidfun1(intx,inty)

{intt;

t=x;

x=y;

y=t;

voidfun2(intx[])

t=x[0];

x[0]=x[1];

x[1]=t;

{inta[2]={1,2},b[2]={1,2};

fun1(b[0],b[1]);

fun2(a);

%d,%d,%d,%d\n"

a[0],a[1],b[0],b[1]);

(1)下列说法错误的是(26)。

26(A)数组名作为函数参数进行传递,传递的是数组的首地址

(B)数组名作为函数参数时,形参数组与实参数组共用内存空间

(C)普通变量作为函数参数进行传递,实参与形参之间发生的是单向值传递

(D)数组名作为函数参数时,传递的是数组元素的值

(2)程序的运行结果是(27)。

27(A)1,2,1,2(B)1,2,2,1(C)2,1,1,2(D)2,1,2,1

2.读程序并回答问题。

命令行参数、静态变量)

intfun()

{staticintc=0;

c++;

returnc;

voidmain(intargc,char*argv[])

{intx,i,j;

for(i=1;

i<

argc;

i++)

for(j=0;

argv[i][j]!

j++)

x=fun();

x*argc);

//7*3=21,输出21

(1)若程序经编译连接后生成可执行文件2_3.exe,若键入以下命令行:

2_3abcd123

则程序的运行结果为(28)。

28(A)3(B)21(C)9(D)0

(2)若将函数fun中的static去掉,变为intc=0;

程序经编译后连接生成可执行文件2_3.exe,若键入以下命令行:

则程序的运行结果为(29)。

29(A)3(B)30(C)22(D)10

3.读程序并回答问题(考点:

字符数组、函数(指针参数)、逆置算法)

string.h>

voidfun(char*s,intp1,intp2)//逆置s指向数组中的元素值

{chart;

while(p1<

p2)

{

t=*(s+p1);

*(s+p1)=*(s+p2);

*(s+p2)=t;

p1++;

p2--;

}

{charstr[10];

inti;

for(i=0;

9;

str[i]='

A'

+i;

fun(str,0,strlen(str)-1);

(1)第一个puts(str)的输出结果为(30)。

30(A)AHCFEDGBI(B)IBGDEFCHA

(C)ABCDEFGHI(D)IHGFEDCBA

(2)第二个puts(str)的输出结果为(31)。

31(A)AHCFEDGBI(B)IBGDEFCHA

4.阅读下面程序,回答问题。

循环应用、阶乘求和算法)

{intn,m,s=0,t=1;

scanf("

%d"

&

m);

for(n=1;

n<

=m;

n++)

{t*=n;

//t为当前n的阶乘值

s+=t;

//累加t

s);

程序的功能是(32)

32(A)实现1的阶乘至m的阶乘的求和

(B)求m的阶乘

(C)1到m的求和

(D)实现1至m-1的阶乘的求和

5.读程序,回答问题。

字符数组、删除字符算法)

{chars[80];

inti,j;

gets(s);

for(i=j=0;

s[i]!

if(s[i]!

c'

)s[j++]=s[i];

s[j]='

puts(s);

程序运行时输入cctv10,其输出结果为(33)。

33(A)cc(B)tv10(C)ctv10(D)tv10cc

6.有下列程序:

函数(地址参数)、指针运算)

charfunc(char*s)

while(*p!

p++;

//将指针p移到字符串的末尾

returnp-s;

//两个指针相减得之间相差的元素个数

{printf("

\n%d\n"

func("

Hello!

"

));

getch();

//接收一个字符但不显示,作用为方便查看结果

(1)程序的运行结果是(34)。

34(A)3(B)Hello!

6(C)无输出(D)6

(2)指针变量的运算不可以(35)。

35(A)指针变量加整形变量(B)指针变量减整形变量

(C)指针变量加指针变量(D)指针变量减指针变量

7.以下是一个C++程序,读程序写出程序运行结果。

iostream.h>

{intnum=0,i=8;

do

{i--;

num++;

}while(--i);

cout<

<

num<

endl;

//输出num的值

程序的运行结果是(36)。

36(A)2(B)0(C)4(D)5

8.有下列程序:

switch语句、循环)

{charc='

intk=0;

{switch(c++)

{case'

:

k++;

break;

case'

B'

k--;

C'

k+=2;

D'

k%=2;

continue;

E'

k*=10;

break;

default:

k/=3;

}while(c<

'

G'

);

k=%d\n"

k);

(1)程序输出结果是(37)。

37(A)k=3(B)k=4(C)k=2(D)k=0

(2)本程序中continue的作用(38)。

38(A)与break一样(B)不起任何作用

(C)开始下一次循环(D)出现语法错误

9.有下列程序(考点:

递归函数、全局变量和局部变量)

intw=3;

intfun(intk)

{if(k==0)returnw;

//w为全局变量

return(fun(k-1)*k);

{intw=10;

fun(5)*w);

//w为局部变量

输出结果是(39)。

39(A)360(B)3600(C)1080(D)1200

10.有下列程序(考点:

指针数组、字符转换处理)

{charch[2][5]={"

6934"

"

8254"

},*p[2];

inti,j,s=0;

2;

p[i]=ch[i];

p[i][j]>

p[i][j]<

j+=2)//p[i][j]ch[i][j]

s=10*s+p[i][j]-'

//将取得的数字字符串转换为整数

输出结果是(40)。

40(A)6385(B)69825(C)63825(D)693825

①请把下面“程序填空”中各小题答案写在主观题答题纸上

②每一个空只填一个语句或一个语句所缺的部分内容

三、程序填空(每空2分,共30分)

1.函数fun的功能是:

找出N行M列二维数组元素中的最大值,并作为函数值返回,最大值的行列下标通过形参指针带回main函数中。

请填空。

函数(指针参数)、求最值算法)

#defineN3

#defineM4

intfun(inta[N][M],int*row,int*col)

{inti,j,r,c;

r=c=0;

N;

j<

M;

if(a[i][j]>

①a[r][c]){r=i;

c=j;

②*row=r;

*col=c;

③returna[r][c];

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

introw,col,max;

max=fun(a,&

row,&

col);

max=%d,row=%d,col=%d\n"

max,row,col);

2.程序的功能是:

求出分数序列2/1,3/2,5/3,8/5,13/8……前20项之和,请填空。

循环、序列求和算法)

{doublex=2,y=1,t,s=0;

=20;

{s=①s+x/y;

t=②x;

x=③x+y;

s=%f\n"

3.有5个学生的成绩需要保存在文件score.dat文件中,保存格式如下:

文件)

姓名,年龄,成绩<

CR>

请填空。

{FILE*fp;

charname[80];

intage;

floatscore;

fp=fopen(①“score.dat”,"

w"

5;

{printf("

请输入第%d个学生的信息\n"

i);

姓名:

%s"

name);

年龄:

age);

成绩:

② 

scanf(“%f”,&

score);

fprintf(fp,"

%s,%d,%f\n"

name,age,score);

③fclose(fp);

4.下列程序的功能是:

从5个字符串中找出最长的那个字符串。

二维字符数组、行指针参数、返回指针值函数、字符串处理函数)

#defineN5

#defineM81

char*fun(char(*sq)[M])//sq为行指针变量,函数fun为返回指向char类型的指针

{inti;

①char*sp;

sp=sq[0];

//sq[0]&

sq[0][0]&

str[0][0]

if(②strlen(sq[i])>

strlen(sp))sp=sq[i];

returnsp;

{charstr[N][M],*longest;

//二维数组的名字是行指针常量

pleaseenter5string:

gets(str[i]);

puts(str[i]);

longest=③fun(str);

//调用函数

\nThelongeststring:

puts(longest);

5.下面程序的功能是:

由25人坐成圆圈,先从任一人出发用1到25顺时针依次编号,然后从1号开始顺时针报数(1,2,3,4,…),数到5的倍数的出圈,剩下的继续报数,求最后出圈的编号。

数组、循环、约瑟夫环算法)

{inta[26],j,n,count;

for(j=1;

=25;

j++)a[j]=j;

//编号

j=1;

count=0;

①n=0;

{if(a[j]!

=0)//条件为真表示在圈内

{n++;

//n是报数器

if(n%5==0)//条件为真表示报到5的倍数,以下作出圈处理

{②a[j]=0;

//a[j]退出圈子

if(count==24)printf("

j);

//如果之前已经退出24个人,则当前的j为最后出圈的编号

count++;

//计退出圈的人数

j++;

if(j>

25)j=1;

//处理成循环,当报完最后一个人后,又从第一个人开始报数

while(③count<

25);

第二部分C与C++语言程序设计

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

1、C2、B3、A4、D5、B

6、C7、B8、D9、A10、D

二、读程序题(每个选择3分,共45分)

1、

(1)D

(2)C2、

(1)B

(2)A3、

(1)C

(2)D

4、A5、B6、

(1)D

(2)C

7、C8、

(1)B

(2)C9、B10、A

三、程序填空题(每空2分,共30分)

1、①a[r][c]②*row=r③returna[r][c]

2、①s+x/y②x③x+y

3、①"

score.dat"

②scanf("

%f"

score)③fclose(fp)

4、①char*sp②strlen(sp)<

strlen(sq[i])③fun(str)

5、①n=0②a[j]=0③count<

25

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

当前位置:首页 > 工程科技 > 能源化工

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1