省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx

上传人:b****2 文档编号:5789853 上传时间:2023-05-05 格式:DOCX 页数:44 大小:40.34KB
下载 相关 举报
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第1页
第1页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第2页
第2页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第3页
第3页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第4页
第4页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第5页
第5页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第6页
第6页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第7页
第7页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第8页
第8页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第9页
第9页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第10页
第10页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第11页
第11页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第12页
第12页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第13页
第13页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第14页
第14页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第15页
第15页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第16页
第16页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第17页
第17页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第18页
第18页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第19页
第19页 / 共44页
省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx_第20页
第20页 / 共44页
亲,该文档总共44页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx

《省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx(44页珍藏版)》请在冰点文库上搜索。

省二级C第33次笔试及机试试题答案及分析Word格式文档下载.docx

表达式"

5<

=i<

=10"

的值是(16)。

(考点:

关系运算表达式)

16(A)0(B)1(C)10(D)没有正确答案

2.求取满足式12+22+32+……+n2≤1000的n,正确的语句是(17)。

循环结构)

17(A)for(i=1,s=0;

(s=s+i*i)<

=1000;

n=i++);

(B)for(i=1,s=0;

n=++i);

(C)for(i=1,s=0;

(s=s+i*++i)<

n=i);

(D)for(i=1,s=0;

(s=s+i*i++)<

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

循环语法)

18(A)C语言中所有的循环语句都是先判断条件再执行循环体

(B)break语句只能中断循环

(C)continue语句可以结束所有的循环

(D)C语言中,任意表达式都可作为循环条件,只要能做出0和非0的判断即可

4.设有以下定义:

structnode

{

intdata;

structnode*next;

}*p;

则以下的语句中正确的是(19)。

结构体指针、动态分配存储空间函数)

19(A)p=malloc(sizeof(structnode))(B)p=(structnode*)malloc(sizeof(structnode))

(C)*p=(structnode*)malloc(4)(D)p=(structnode)malloc(sizeof(structnode))

5.运行以下程序的输出结果为(20)。

枚举类型)

#include<

stdio.h>

voidmain()

enumcolor{Black=1,Red,Blue,Green};

enumcolorc1,c2;

c1=Red;

c2=Blue;

printf("

%d,%d\n"

c1,c2);

}

20(A)2,3(B)1,2(C)1,1(D)0,-1

6.若变量x和y都为int类型,x=100,y=200,下面程序段的输出结果是(21)。

逗号运算)

printf("

%d"

(x,y));

21(A)200(B)100(C)100200(D)输出不确定的值

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

带参数的宏)

#definef(x)x*x

inta=6,b=2,c;

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

%d\n"

c);

22(A)-2.5(B)-2(C)64(D)4

8.C语言中fscanf函数的正确调用形式是(考点:

文件)

23(A)fscanf(文件指针,格式字符串,输出列表);

(B)fscanf(格式字符串,输出列表,文件指针);

(C)fscanf(格式字符串,文件指针,输入列表);

(D)fscanf(文件指针,格式字符串,输入列表);

9.设有定义:

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

,以下语句中执行效果与其它三个不同的是(24)。

if语句)

24(A)if(a>

b)c=a,a=b,b=c;

(B)if(a>

b){c=a,a=b,b=c;

}

(C)if(a>

b)c=a;

a=b;

b=c;

(D)if(a>

b){c=a;

分析:

if语句只能控制之后的一条执行语句

10.以下选项中与if(a==1)a=b;

elsea++;

语句功能不同的switch语句是(25)。

switch语句)

25(A)switch(a)(B)switch(a==1)

{case1:

a=b;

break;

{case0:

default:

a++;

case1:

}}

(C)switch(a)(D)switch(a==1)

{default:

{case1:

case1:

case0:

}}

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

1.有如下程序:

函数、变量的作用域)

intk=1;

//全局变量

voidfun(intm)//m=4

m+=k;

k+=m;

//此处用到的k是全局变量,m=5,k=6

{

chark='

D'

;

//k为局部变量

\n%d"

k-'

C'

);

/*①*///1

inti=4;

fun(i);

//i是普通值传递,由实参单向传递给形参

\n%d,%d"

i,k);

/*② *///k是全局变量,4,6

①处输出结果为(26)。

26(A)2(B)1(C)3(D)A、B、C参考答案都不对

②处输出结果为(27)。

27(A)4,1(B)5,6(C)4,6(D)A、B、C参考答案都不对

2.有如下程序(考点:

函数、字符数组)

voidfun(char*s)

inti;

charc;

c=s[0];

//c暂存第一个字符

for(i=1;

s[i]!

='

\0'

i++)

s[i-1]=s[i];

//从第二个字符开始到末尾,每个字符左移一个位置

s[i-1]=c;

//将第一个字符放到字符串的末尾

chars[10]="

abcdefg"

i<

=3;

fun(s);

puts(s);

}

函数fun的功能是(28)。

28(A)左移一个字符,并将第一个字符放到字符串末尾

(B)右移一个字符,并将最后一个字符放到字符串开头

(C)删除第一个字符(D)删除最后一个字符

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

29(A)bcdefga(B)defgabc(C)efgabcd(D)bcdefg

3.有下列程序(考点:

递归函数)

voidfun(intn)

{intm;

m=n/10;

if(m!

=0)fun(m);

putchar(n%10+'

0'

{intn;

scanf("

&

n);

if(n<

0)

{putchar('

-'

n=-n;

fun(n);

若输入整数-1234,请回答下面两个问题:

函数fun的调用次数为(30)。

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

程序的输出结果为(31)。

31(A)4321(B)1234(C)-4321(D)-1234

4.有下列程序(考点:

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

voidfun1(int*x,int*y)//指针参数,但未对实参间接运算,所以不能改变实参的值

{int*z;

z=x;

x=y;

y=z;

voidfun2(int*x,int*y)

{intz;

z=*x;

*x=*y;

*y=z;

//对指向的目标对象间接交换,实质a=9,b=5

(*x)++;

(*y)++;

//对指针的目标对象自增,实质a=10,b=6

{inta=5,b=9;

fun1(&

a,&

b);

a=%d,b=%d\n"

a,b);

fun2(&

main函数中第一个printf输出结果为(32)。

32(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10

main函数中第二个printf输出结果为(33)。

33(A)a=9,b=5(B)a=5,b=9(C)a=10,b=6(D)a=6,b=10

5.有如下程序(设其文件名为2-5.c)(考点:

命令行参数)

voidmain(intargc,char*argv[])//argc=4

{inti;

char*p;

//p为一级字符指针

argc);

//4

if(argc>

2)p=argv[1];

//p指向第二个字符串的首地址

puts(p+1);

//输出指向字符串加1个字符后的字符串

若运行该程序时,在命令提示符后输入('

↙'

表示回车换行符):

2-5file1file2file3↙

则执行printf("

时,输出结果为(34)。

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

执行puts(p+1);

时,输出结果为(35)。

35(A)file1(B)file2(C)ile1(D)ile2

6.有下列程序(考点:

字符数组、函数(地址参数))

string.h>

longfun(charstr[])

longs=0,t;

for(i=0;

str[i]!

{t=0;

while(str[i]>

&

&

str[i]<

9'

)//将连续的数字字符串转换成整数

{t=t*10+str[i]-'

i++;

s=s+t;

//累加之前转换的整数,若没有则加0

returns;

charstring[]="

Welcome123To456Sichuan789"

longlen;

len=fun(string);

%ld\n"

len);

(1)程序运行的输出结果为(36)

36(A)123456789(B)9(C)1368(D)450

(2)该程序的功能是(37)

37(A)取出字符串中的数字子串连接起来

(B)统计数字子串在字符串中出现的次数

(C)将数字子串转换为整数并累加

(D)将字符串中的数字字符转换为数字,结果加起来乘以10

7.有如下程序:

字符数组、循环、switch语句)

{staticchars[]="

SSSWiL_TECH1\11W\1WALLMP1"

//’\11’值为整数9,’\1’值为整数1

intj;

charch;

for(j=2;

(ch=s[j])!

j++)

{switch(ch)

case'

A'

:

putchar('

a'

continue;

1'

break;

while((ch=s[++j])!

\n'

ch!

case9:

#'

E'

L'

default:

putchar(ch);

//continue作用于循环,用于结束本次循环

*'

}

\n"

①程序的运行结果是(38)。

38(A)SWiTCH*#(B)SSSWiTCH*#

(C)SWiTCH*#W#(D)SSSWiLTECHWWALLMP

②字符串"

SSSWiLTECH1\11W\1WALLMP1"

中的“\1”是(39)。

39(A)字符1(B)十制制数值1(C)两个字符(D)八进制数值1

8.在下面程序中,若file.dat文件中原有内容为:

abc,则运行程序后file.dat文件中的内容为(40)。

文件打开方式)

{FILE*fp;

fp=fopen("

file.dat"

"

w"

//’w’方式打开的文件是新建

fprintf(fp,"

def"

//将”def”写到fp所指的文件

fclose(fp);

40(A)abcdef(B)abc(C)def(D)NULL

注意:

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

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

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

1.下面程序的功能是按学生的姓名(假设没有重名)查询其成绩排名和平均成绩。

查询可以连续进行,直到输入0时查询结束。

请填空。

结构体类型,顺序查找算法)

#defineNUM4

structstud//定义结构体类型

{intcode;

//排名

char*name;

//姓名

floatscore;

//平均成绩

};

structstudstu[]={2,"

liuying"

85.5,3,"

wangyong"

79.6,

4,"

ligang"

92.5,1,"

tianling"

88.2};

//定义结构体数组并初始化

{charstr[10];

do

{prnitf("

Enteraname:

"

%s"

str);

//输入待查询学生的姓名

NUM;

if(strcmp(①stu[i].name,str)==0)

{printf("

Name:

%s\n"

stu[i].name);

Code:

%3d\n"

stu[i].code);

Average:

%5.1f\n"

sut[i].score);

②continue;

//若找到,输出该元素的各个成员后转入下一次查询

if(③i>

=NUM)printf("

Notfound.\n"

}while(strcmp(str,"

0"

)!

=0);

2.函数fun的功能是:

求出无符号十进制数n中包含0的个数,及各位数字的最大值。

最大值通过函数值返回,0的个数通过形参指针zero带回。

在main函数中输入n的值,调用fun函数并输出结果。

例如:

n=300800,则0的个数为4,各位数字的最大值为8。

求最值、整数的分解算法)

intfun(unsignedintn,int*zero)

{intcnt=0,max=0,t;

while(n!

=0)

{t=①n%10;

//取个位

if(t==0)cnt++;

//计数器,计0的个数

if(max<

t)max=t;

n=n/10;

//舍个位

②*zero=cnt;

//对形参指针间接运算,将0的个数赋给其目标对象(主函数中的zero变量)

returnmax;

{unsignedintn;

intzero,max;

Inputn:

%u"

max=fun(③n,&

zero);

max=%d,zero=%d\n"

max,zero);

3.以下程序的功能是把从键盘输入的字符依次存放在文件test.txt中,但是要过滤掉其中的数字字符,在输入字符‘%’并回车作为结束标志。

文件、字符串)

#include<

charfname[12]="

test.txt"

if((fp=fopen(fname,"

))==①NULL)

Fileopenerror!

else

Pleaseentercharacters:

while((ch=getchar())!

%'

if(ch>

ch<

//若ch是数字字符,则不输出到文件,转入下一次循环

else

fputc(ch,③fp);

//若是非数字字符,则将ch输出到fp所指的文件

4.以下程序是建立一个带头结点的单向链表,并用随机函数为各个结点赋值。

函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

单链表)

stdlib.h>

typedefstructaa

{intdata;

//数据域

structaa*next;

//指针域,存放下一个结点的地址

}NODE;

//typedef自定义类型,新的结构体类型名为NODE

intfun(NODE*h)

{intsum=0;

①NODE*p;

//定义结构体类型指针p

p=②h->

next;

//p指向跳过头结点后的第一个结点

while(p)

{if(p->

data%2==0)

sum+=p->

data;

p=③p->

next;

//p指针指向下一个结点

returnsum;

NODE*creatlink(intn)//建立带头结点的单链表

{NODE*h,*p,*s;

h=p=(NODE*)malloc(sizeof(NODE));

=n;

{s=(NODE*)malloc(sizeof(NODE));

s->

data=rand()%16;

next=p->

next;

p->

next=s;

p=p->

next=NULL;

returnh;

outlink(NODE*h)//输出链表

{NODE*p;

p=h->

->

%d"

p->

data);

p=p->

{NODE*head;

inteven;

head=creatlink(12);

//调用ceratlink函数建立单链表

head->

data=9000;

outlink(head);

//输出以head开始链表

even=fun(head);

\nThesumofevennumbers:

%d\n"

even);

5.程序的功能是计算

,其中,m与n为两个正整数。

请在程序中编号处填写适当的表达式,使程序得出正确的结果。

(考点:

循环、阶乘算法)

intfun(intx)//

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

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

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

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