二级C语言程序设计7.docx

上传人:b****5 文档编号:5897702 上传时间:2023-01-02 格式:DOCX 页数:17 大小:21.19KB
下载 相关 举报
二级C语言程序设计7.docx_第1页
第1页 / 共17页
二级C语言程序设计7.docx_第2页
第2页 / 共17页
二级C语言程序设计7.docx_第3页
第3页 / 共17页
二级C语言程序设计7.docx_第4页
第4页 / 共17页
二级C语言程序设计7.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

二级C语言程序设计7.docx

《二级C语言程序设计7.docx》由会员分享,可在线阅读,更多相关《二级C语言程序设计7.docx(17页珍藏版)》请在冰豆网上搜索。

二级C语言程序设计7.docx

二级C语言程序设计7

二级C语言程序设计-7

(总分:

100.00,做题时间:

90分钟)

一、{{B}}选择题{{/B}}(总题数:

30,分数:

60.00)

1.构成C程序的三种基本结构是

∙A.顺序结构、转移结构、递归结构

∙B.顺序结构、嵌套结构、递归结构

∙C.顺序结构、选择结构、循环结构

∙D.选择结构、循环结构、嵌套结构

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

2.C语言编译程序的功能是

∙A.执行一个C语言编写的源程序

∙B.把C源程序翻译成ASCII码

∙C.把C源程序翻译成机器代码

∙D.把C源程序与系统提供的库函数组合成一个二进制执行文件

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

3.下列形式中不合法的常量是

∙A.2.E8

∙B.-.28

∙C.-028

∙D.2e-8

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

4.以下不是C语言字符型或字符串常量的是

∙A."It's"

∙B."0"

∙C.'a=0'

∙D.'/010'

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

5.C语言程序中,若函数无返回值,则应该对函数说明的类型是

∙A.int

∙B.double

∙C.char

∙D.void

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

6.若变量已正确定义并赋值,则错误的赋值语句是

∙A.a+=a+1;

∙B.a=sizeof(double);

∙C.a=d‖c;

∙D.a+1=a;

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

7.若有定义:

inta=1,b=2,c=3;,则执行表达式(a=b+c)‖(++b)后a,b,c的值依次为

∙A.1,2,3

∙B.5,3,2

∙C.5,2,3

∙D.5,3,3

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

8.有以下程序

#include<stdio.h>

main()

{intk=10;

printf("%4d,%o,%x/n",k,k,k);

}

程序的运行结果是(□代表一个空格)

∙A.10,12,a

∙B.□□10,012,a

∙C.010,12,a

∙D.□□10,12,a

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

9.设有:

chars[5],c;,则调用函数scanf能正确给s和c读入数据的是

∙A.scanf("%s%c",s,c);

∙B.scanf("%d%c",&s,&c);

∙C.scanf("%d%c",s,&c);

∙D.scanf("%s%c",s,&c);

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

10.设x,y,z均为实型变量,代数式

在C语言中的正确写法是

∙A.x/y*z

∙B.x%y%z

∙C.x/y/z

∙D.x*z/y

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

11.有以下程序

#include<stdio.h>

main()

{inti,j,k,a=5,b=6;

i=(a==b)?

++a:

--b;

j=a++;k=b;printf("%d,%d,%d/n",i,j,k);

}

程序的运行结果是

∙A.7,6,5

∙B.5,5,5

∙C.7,5,5

∙D.5,6,5

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

12.设变量x为longint型并已正确赋值,以下表达式中能将x的百位上的数字提取出的是

∙A.x/10%100

∙B.x%10/100

∙C.x%100/10

∙D.x/100%10

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

13.有以下程序

#include<stdio.h>

main()

{inti,j,x=0;

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

{x++;

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

{if(j%2==0)continue;x++;}

x++;

}

printf("x=%d/n",x);

}

程序的运行结果是

∙A.x=4

∙B.x=6

∙C.x=8

∙D.x=12

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

14.有以下程序

#include<stdio.h>

main()

{intsum=0,x=5;

do{sum+=x;}while(!

--x);

printf("%d/n",sum);

程序的运行结果是

∙A.0

∙B.5

∙C.14

∙D.15

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

15.有以下程序

#include<stdio.h>

main()

{charch='Z';

ch=(ch-'A'+1)%26+'A';putchar(ch);

程序的运行结果是

∙A.Z

∙B.Y

∙C.B

∙D.A

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

16.以下函数的功能是:

计算a的n次方作为函数值返回

doublefun(doublea,intn)

{inti;doubles=1.0;

for(i=1;i<=n;i++)s=______;

return8;

}

为实现上述功能,函数中下划线处应填入的是

∙A.s*i

∙B.s*a

∙C.s+i*i

∙D.s+a*a

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

17.在C语言程序中,下列说法正确的是

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

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

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

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

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

18.若主函数中有定义语句:

inta[10],b[10],c;,在主函数前定义的fun函数首部为:

voidfun(intx[]),则以下选项中错误的调用语句是

∙A.fun(b);

∙B.fun(&c);

∙C.fun(&a[3]);

∙D.fun(b[1]);

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

19.有以下程序

#include<stdio.h>

main()

{intk,n=0;charc,str[]="teach";

for(k=0;str[k];k++)

{c=str[k];

switch(k)

{case1:

case3:

case5:

putchar(c);printf("%d",++n);break;

default:

putchar('N');

}

}

}

程序的运行结果是

∙A.Ne1NN

∙B.e1a2e3

∙C.Ne1Nc2N

∙D.Na1NNNN

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

20.以下叙述中错误的是

∙A.同一个数组中所有元素的类型相同

∙B.不可以跳过前面的数组元素,给后面的元素赋初值

∙C.定义语句:

inta[10]={0};,给a数组中所有元素赋初值0

∙D.若有定义语句:

inta[4]={1,2,3,4,5};,编译时将忽略多余的初值

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

21.执行以下程序段后,s的值为

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

for(k=0;k<8;k+=2)s+=*(a+k);

∙A.13

∙B.16

∙C.17

∙D.45

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

22.有以下程序

#include<stdio.h>

#defineN4

voidfun(inta[][N],intb[])

{inti;

for(i=0;i<N;i++)b[i]=a[i][N-1-i];

}

main()

{intx[N][N]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16},y[N],i;

fan(x,y);

for(i=0;i<N;i++)printf(:

%d,",y[i]);

printf("/n");

}

程序的运行结果是

∙A.1,2,3,4,

∙B.3,6,9,12,

∙C.4,7,10,13,

∙D.1,5,9,13,

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

23.有以下程序

#include<stdio.h>

#include<string.h>

main()

{charstr[]={"Hello,Beijing"};

printf("%d,%d/n",strlen(str),sizeof(str));

}

程序的运行结果是

∙A.13,13

∙B.13,14

∙C.13,15

∙D.14,15

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

24.有以下程序

#include<stdio.h>

voidfun(char(*p)[6])

{inti;

for(i=0;i<4;i++)prinff("%c",p[i][i]);

printf("/n");

}

main()

{chars[6][6]={"ABCDE","abcde","12345","FGHIJ","fghij","54321"};

fun(s);

}

程序的运行结果是

∙A.Aa1F

∙B.Ab3I

∙C.ABCD

∙D.fghij

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

25.有以下程序

#include<stdio.h>

intfun(intn)

{if(n)returnfun(n-1)+n;

elsereturn0;

}

main()

{printf("%d/n",fun(3));}

程序的运行结果是

∙A.4

∙B.5

∙C.6

∙D.7

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

26.有以下程序

#include<stdio.h>

#defineM5

#definef(x,y)x*y+M

main()

{intk;

k=f(2,3)*f(2,3);

printf("%d/n",k);

}

程序的运行结果是

∙A.22

∙B.41

∙C.100

∙D.121

(分数:

2.00)

 A.

 B. √

 C.

 D.

解析:

27.有以下定义

struetdata

{inti;charc;doubled;}x;

以下叙述中错误的是

∙A.x的内存地址与x.i的内存地址相同

∙B.structdata是一个类型名

∙C.初始化时,可以对x的所有成员同时赋初值

∙D.成员i、c和d占用的是同一个存储空间

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

28.有以下程序

#include<stdio.h>

#include<string.h>

typedefstruet{charname[9];charsex;floatscore[2];}STU;

voidf(STU*a)

{strcpy(a->name,"Zhao");

a->sex='m';a->score[1]=90.0;

main()

{STUc={"Qian",'f',95.0,92.0},*d=&c;

f(d);printf("%s,%c,%2.0f,%2.0f/n",d->name,c.sex,c.seore[0],c.score[1]);

}

程序的运行结果是

∙A.Qian,f,95,92

∙B.Zhao,f,95,90

∙C.Zhao,m,95,90

∙D.Zhao,f,95,92

(分数:

2.00)

 A.

 B.

 C. √

 D.

解析:

29.若有以下定义

struettt{charname[10];charsex;}aa={"aaaa",'F'},*p=&aa;

则错误的语句是

∙A.scanf("%c",aa.sex);

∙B.aa.sex=getchar();

∙C.printf("%c/n",(*p).sex);

∙D.printf("%c/n",p->sex);

(分数:

2.00)

 A. √

 B.

 C.

 D.

解析:

30.若有说明:

typedefstruet{inta;charc;}W;则以下叙述正确的是

∙A.编译后系统为W分配5个字节

∙B.编译后系统为W分配6个字节

∙C.编译后系统为W分配8个字节

∙D.编译后系统不为W分配存储空间

(分数:

2.00)

 A.

 B.

 C.

 D. √

解析:

二、{{B}}程序填空题{{/B}}(总题数:

2,分数:

20.00)

31.程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

所有学生数据均以二进制方式输出到文件中。

函数fun的功能是重写形参filename所指文件中最后一个学生的数据,即用新的学生数据覆盖该学生原来的数据,其他学生的数据不变。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

源程序如下:

#include<stdio.h>#defineN5typedefstructstudent{longsno;charname[10];floatscore[3];}STU;voidfun(char*filename,STUn){FILE*fp;/*********found*********/fp=fopen(______,"rb+");/********found********/fseek(fp,-1L*sizeof(STU),______);/********found********/fwrite(______,sizeof(STU),1,fp);fclose(fp);}main(){STUt[N]={{10001,"MaChao",91,92,77},{10002,"CaoKai",75,60,88},{10003,"LiSi",85,70,78},{10004,"FangFang",90,82,87},{10005,"ZhangSan",95,80,88}};STUn={10006,"ZhaoSi",55,70,68},ss[N];inti,j;FILE*fp;fp=fopen("student,dat","wb");fwrite(t,sizeof(STU),N,fp);fclose(fp);fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);printf("/nTheoriginaldata:

/n/n");for(j=0;j<N;j++)printf("/nNo:

%ldName:

%-8sScores:

",ss[j].sno,ss[j],name);for(i=O;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("/n");fun("student,dat",n);printf("/nThedataaftermodifing:

/n/n");fp=fopen("student,dat","rb");fread(ss,sizeof(STU),N,fp);fclose(fp);for(j=0;j<N;j++)printf("/nNo:

%ldName:

%-8sScores:

",ss[j].sno,ss[j],name);for(i=0;i<3;i++)printf("%6.2f",ss[j].score[i]);printf("/n");}}

(分数:

10.00)

填空项1:

__________________ (正确答案:

filename或"student.dat"SEEK_END或2&n)

解析:

32.给定程序中,函数fun的功能是:

找出100~999之间(含100和999)所有整数中各位上数字之和为x(x为一正整数)的整数,然后输出;符合条件的整数个数作为函数值返回。

例如,当x值为5时,100~999之间各位上数字之和为5的整数有:

104、113、122、131、140、203、212、221、230、302、311、320、401、410、500。

共有15个。

当x值为27时,各位数字之和为27的整数是:

999。

只有1个。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

注意:

源程序存放在考生文件夹下的BLANK1.C中。

不得增行或删行,也不得更改程序的结构!

源程序如下:

#include<stdio.h>fun(intx){intn,s1,s2,s3,t;n=0;t=100;/********found********/while(t<=______){/********found********/s1=t%10;s2=(______)%10;s3=t/100;/********found********/if(s1+s2+s3==______){printf("%d",t);n++;}t++;}returnn;}main(){intx=-1;while(x<0){printf("Pleaseinput(x>0):

");scanf("%d",&x);}printf("/nTheresultis:

%d/n",fun(x));}

(分数:

10.00)

填空项1:

__________________ (正确答案:

999t/10X)

解析:

三、{{B}}程序修改题{{/B}}(总题数:

2,分数:

20.00)

33.给定程序MODI1.C中函数fun的功能是:

统计一个无符号整数中各位数字值为零的个数,通过形参传回主函数;并把该整数中各位上最大的数字值作为函数值返回。

例如,若输入无符号整数30800,则数字值为零的个数为3,各位上数字值最大的是8。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

源程序如下:

#include<stdio.h>intfun(unsignedn,int*zero){intcount=0,max=0,t;do{t=n%10;/********found********/if(t=0)count++;if(max<t)max=t;n=n/10;}while(n);/********found********/zero=count;returnmax;}main(){unsignedn;intzero,max;printf("/nInputn(unsigned):

");scanf("%d",&n);max=fun(n,&zero);printf("/nTheresult:

max=%dzero=%d/n",max,zero);

(分数:

10.00)

__________________________________________________________________________________________

正确答案:

(错误点1:

if(t==0)或if(!

t)或if(0==t)错误点2:

*zero=count;)

解析:

34.给定程序MODI1.C中函数fun的功能是:

依次取出字符串中所有数字字符,形成新的字符串,并取代原字符串。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构!

源程序如下:

#include<stdio.h>voidfun(char*s){inti,j;for(i=0,j=0;sill!

='/0';i++)if(s[i]>='0'&&s[i]<='9')/**********found**********/s[j]=s[i];/**********found**********/s[j]="/0";main()charitem[80];printf("/nEnterastring:

");gets(item);printf("/n/nThestringis:

"%s"/n",item);fun(item);printf("/n/nThestringofchangingis:

"%s"/n",item);}

(分数:

10.00)

__________________________________________________________________________________________

正确答案:

(错误点1:

s[j++]=s[i];或*(s+j++)=*(s+i);或s[j]=s[i],j++;或s[j]=s

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

当前位置:首页 > 求职职场 > 简历

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

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