2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第1页
2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第2页
2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第3页
2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第4页
2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

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

文档简介

2021-2022年浙江省台州市全国计算机等级考试C语言程序设计重点汇总测试卷(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.计算机系统的组成是______。

A.主机、外设B.运算器、控制器C.硬件系统和软件系统D.CPU、内存储器

2.假设在程序中a、b、c均被定义成整型,所赋的值都大于1,则下列能正确表示代数式1/abc的表达式是()。A.1.0/a*b*cB.1/(a*b*c)C.1/a/b/(float)cD.1.0/a/b/c

3.假设整型数i的地址为0x12345678,指针ip地址为0x21850043,则执行以下后,k的值为()。A.0x12345678B.0x21850043C.100D.不确定

4.有以下程序intfun(intx,inty){return(x+y);}main{inta=1,b=2,C=3,sum;sum=fun((a++,b++,a+b),c++printf("%d\n",sum);)执行后的输出结果是()。A.6B.7C.8D.9

5.以下选项中,合法的一组C语言数值常量是()。

A.12.0Xa234.5e0

B.028.5e-3-0xf

C..1774e1.50abc

D.0x8A10,0003.e5

6.请选出正确的程序段

A.int*p;scanf("%d",p);…

B.int*s,k;*s=100;…

C.int*s,k;char*p,c;s=&k;p=&c;*p='a';…

D.int*s,k;char*p,e;s=&k;p=&c;s=p;*s=1;…

7.若程序中有宏定义行“#defineN100”,则下列叙述中正确的是()。

A.宏定义行中定义了标识符N的值为整数100

B.在编译程序对C语言源程序进行预处理时用100替换标识符N

C.上述宏定义行实现将100赋给标识符N

D.在运行时用100替换标识符N

8.已知字符A的ASCII值是65,字符变量c1的值是‘A’,c2的值是‘D’,则执行语句“printf(“%d,%d”,c1,c2-2);”的输出结果是()。

A.65,68B.A,68C.A,BD.65,66

9.下列不属于过程设计工具中图形工具的是()。

A.N—SB.PADC.程序流程图D.PDL

10.下列叙述中错误的是()。

A.在C语言中,函数中的自动变量可以赋初值,每调用一次赋一次初值

B.在C语言中,在调用函数时,实参和对应形参在类型上只需赋值兼容

C.在C语言中,外部变量的隐含类型是自动存储类别

D.在C语言中,函数形参的存储类型是自动(auto)类型的变量

11.

12.有以下程序程序执行后的输出结果是()。

A.y=-IB.y=oC.y=lD.while构成无限循环.

13.若有说明:inta[][3]={0,0};则不正确的叙述是()。

A.数组a的每个元素的初值都是0

B.数组a的第一维大小为1

C.数组a的行数为1

D.只有元素a[0][0]和a[0][1]可得到初值0,其余元素均得不到初值0

14.有以下程序段当执行上述程序段,从键盘上输A,555667777123后,y的值为()。

A.566.0B.55566.0C.7777.0D.566777.0

15.

16.有以下程序:#include<stdio,h>#include<string,h>struetSTU{intnam;floatTotalSeore;};voidf(strnctSTUp){structSTUs[2]={{20044,550},{20045,537}};p.num=s[1].num;p.TotalScore=s[1].TotalScore;main(){structSTUs[2]={{20041,703},{20042,580}};f(s[0]);printf("%d%3.Of\n",s[0].num,s[0].TotalSeore);}程序运行后的输出结果是()。

A.20045537B.20044550C.20042580D.20041703

17.设C语言中,一个int型数据在内存中占2个字节,则unsignedint型数据的取值范围为()。

A.0~255B.0~32767C.0~65535D.0~2147483647

18.数据库的故障恢复一般是由()来执行恢复

A.电脑用户B.数据库恢复机制C.数据库管理员D.系统普通用户

19.具有n个顶点的完全有向图的弧数为()。

A.n(n-1)/2B.n(n-1)C.n2D.n2-1

20.下列数据结构中,能用二分法进行查找的是()

A.无序线性表B.线性链表C.二叉链表D.顺序存储的有序表

二、2.填空题(20题)21.以下程序的功能是:处理由学号和成绩组成的学生记录,N名学生的数据已在主函数中放入结构体数组s中,它的功能是:把分数最高的学生数据放在h所指的数组中,注意:分数高的学生可能不只一个,函数返回分数最高学生的人数。请填空。

#include<stdio.h>

#defineN16

typedefstruct

{charnum[10];

ints;

}STREC;

intfun(STREC*a,STREC*b)

{inti,j=0,max=a[0].s;

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

if(max<a[i].s)max=a[i].s;

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

if(【】)b[j++]=a[i];

returnj;

}

main()

{STRECs[N]={{"GA005",85},{"GA003",76},{"GA002",69},{"GA004",85},

{"GA001",91},{"GA007",72},{"GA008",64},{"GA006",87},

{"GA015",85},{"GA013",91},{"GA012",64},{"GA014",91},

{"GA011",66},{"GA017",64},{"GA018",64},{"GA016",72}

};

STRECh[N];

inti,n;FILE*out;

n=fun(s,h);

printf("The%dhighestscore;\n",n);

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

printf("%s%4d\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out15.dat","w");

fprintf(out,"%d\n",n);

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

fprintf(out,"%4d\n",h[i].s);

fclose(out);

}

22.写出下列程序的输出结果______。

main()

{intn=0;

while(n++<=1);

printf("%d,",n);

printf("%d",n++);

}

23.以下程序的输出结果是【】。

main()

{

intarr[]={30,25,20,15,10,5},*p=arr;

p++;

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

}

24.数据的逻辑结构有线性结构和______两大类。

25.下面程序是计算100以内能被4整除且个位数为4的所有整数,请填空。

main()

{intm,n;

for(m=0;【】;m++)

{n=m*10+4;

If(【】)continue;

printf("%d\n",n);}}

26.mystrlen函数的功能是计算str所指字符串的长度,并作为函数值返回。请填空。

intmystrlen(char*str)

{inti;

for(i=0;【】!='\0';i++);

return(【】);

}

27.数据库系统的三级模式分别为【】模式、内部级模式与外部级模拭。

28.以下程序运行后的输出结果是【】。

main()

{chars[]="9876",*p;

for(p=s;p<s+2;p++)printf("%s\n",p);

}

29.以下程序的输出结果是【】。

#include<stdio.h>

main()

{inta[5]={2,4,6,8,10},*p;

p=a;p++;

printf("%d",*p);

}

30.执行以下程序后,输出#号的个数是【】。

#include<studio.h>

main()

{inti,j;

for(i=1;i<5;i++)

for(j=2;j<=i;j++)putchar('#');

}

31.常用的软件结构设计工具是结构图(SC),也称程序结构图。其中,用矩形表示______,用带空心圆的箭头表示传递的是数据。

32.下列循环的循环次数是______。

intk=2;

while(k=0)

printf["%d",k);

k--;

printf("\n");

33.下述函数统计一个字符串中的单词个数,单词是指处在空格之间的字符序列,请填空。

intword(char*s)

{intnum=0,flag=0;

while(*s)

{if(【】=='')flag=0;

elseif(【】){flag=1;num++}

}

return【】;}

34.以下程序的输出结果是______。

main()

{inta=1,b=2;

a=a+b;b=a-b;a=a-b;

printf("%d,%d\n",a,b);

}

35.下面程序的运行结果是【】。

main()

{inti=0,j=10,k=2,s=0;

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

36.在一棵二叉树上第6层的结点个数最多是______个。

37.某二叉树中度为2的结点有18个,则该二叉树中有【】个叶子结点。

38.下面程序的运行结果是()。#include<stdio.h>#defineSIZE12main(){chars[SIZE];inti;for(i=0;i<SIZE;i++)s[i]='A'+i+32;sub(s,5,SIZE-1);for(i=0;i<SIZE;i++)printf("%c",s[i]);printf("\n");}sub(char*a,intt1,intt2){charch;while(t1<t2){ch=*(a+t1);*(a+t1)=*(a+t2);*(a+t2)=ch;t1++;t2--;}}

39.下面fun函数的功能是将形参x的值转换成二进制数,所得二进制数的每一位数放在数组中返回,二进制数的最低位放在下标为0的元素中,其他依此类推。请填空。

Fun(intx,intb[])

{intk=0,r;

do

{r=x%2;

()=r;

x/=2;

}while(x);

}

40.若输入字符串:abcde↓,则以下while循环体将执行【】次。

while((ch=getchar())=='e')printf("*");

三、1.选择题(20题)41.以下程序的输出结果是______。main(){intm=5;if(m++>5)printf("%d\n",m);elseprintf("%d\n",m--);}

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

42.下列程序是用来判断数组中特定元素的位置所在的。#include<conic.h>#include<stdio.h>intfun(int*s,intt,int*k){inti;*k=0;for(i=0;i<t;i++)if(s[*k]<s[i])*k=i;returns[*k];}main(){inta[10]={876,675,896,101,301,401,980,431,451,777},k;fun(a,10,&k);printf("%d,%d\n",k,a[k]);}如果输入如下整数:876675896101301401980431451777则输出结果为

A.7,431B.6C.980D.6,980

43.有以下程序

main()

{inti=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d%d%d\n",i,j,k);

}

程序运行后的输出结果是()

A.123

B.234

C.223

D.233

44.以下只有在使用时才为该类型变量分配存储单元的存储类说明是______。

A.auto和static

B.auto和register

C.register和static

D.extern和register

45.有以下程序:intfun1(doubleA){returna*=a;}intfun2(doublex,doubley){doublea=0,b=0;a=fun1(x);b=funl(y);return(int)(a+B);}main(){doublew;w=fun2(1.1,2.0);……}程序执行后变量w中的值是()。

A.5.21B.5C.5D.0

46.下列选项中,不是一个算法的基本特征的是()。

A.完整性B.可行性C.有穷性D.拥有足够的情报

47.结构化程序设计的一种基本方法是()

A.筛选法B.递归法C.归纳法D.逐步求精法

48.以下正确的程序段是

A.charstr1[]="12345",str2[]="abcdef";

B.charstr[10],*st="abcde";strcat(str,st);

C.charstr[10]=""。*st="abcde";strcat(str,st);

D.char*st1="12345",*st2="abcde";strcat(st1,st2);

49.下面程序:voidfunc(int*a,intb[]){b[0]=*a+6;)main(){inta,b[5];a=0;b[0]=3;func(&a,b);printf("%d\n",b[0]);}则程序运行后的输出结果是()。

A.6B.7C.8D.9

50.软件开发离不开系统环境资源的支持,其中必要的测试数据属于A.硬件资源B.通信资源C.支持软件D.辅助资源

51.以下程序的输出结果是_______。#include<stdio.h>main(){inti;for(i=1;i<5;i++){if(i%2)printf("*");elsecontinue;printf("#");}printf("$\n");}

A.*#*#*#$B.#*#*#*$C.*#*#$D.#*#*$

52.以下说法中,不正确的是

A.C程序中必须有一个main()函数,从main()函数的第一条语句开始执行

B.非主函数都是在执行主函数时,通过函数调用或嵌套调用而执行

C.C程序中的main()函数必须放在程序的开始位置

D.C程序中的main()函数位置可以任意指定

53.有以下程序:main(){ints=0,a=1,n;scanf("%d",&n);do{s+=1;a=a-2;}while(a!=n);printf("%d\n",s);}若要使程序的输出值为2,则应该从键盘给n输入的值是()。

A.-1B.-3C.-5D.0

54.已知a、b、c为整型变量,若从键盘输入5<空格>6<空格>7<回车>,使a的值为5,b的值为6,c的值为7,则下列选项中正确的输入语句是()。

A.scanf("%3d%3d%3d",a,b,C);

B.scanf("%d%d%d",a,b,C);

C.scanf("%d%d%d",&a,&b,&c);

D.scanf("%d%d%d",&a,&b,&c);

55.有以下程序:main(){intn=0;do{n++;printf("%d\n",n);}while(n<=3);}程序的输出结果是()。

A.12B.123C.1234D.1

56.软件需求分析一般应确定的是用户对软件的______。

A.功能需求B.非功能需求C.性能需求D.功能需求和非功能需求

57.一些重要的程序语言(如C语言和Pascal语言)允许过程的递归调用。而实现递归调用中的存储分配通常用()。A.A.栈B.堆C.数组D.链表

58.对表进行水平方向和垂直方向的分割,分别对应的关系运算是()

A.选择和投影B.投影和选择C.选择和联接D.投影和联接

59.有以下程序main(){chara[]="abcdefg",b[10]="abcdefg";printf("%d%d\n",sizeof(a),sizeof(b));}执行后输出结果是

A.77B.88C.810D.1010

60.有以下程序:voidsum(inta[]){a[0]=a[-1)+a[1];}main(){inta[10]=(1,2,3,4,5,6,7,8,9,10};sum(&a[2]);printf("%d\n",a[2]);}程序运行后的输出结果是______。

A.6B.7C.5D.8

四、选择题(20题)61.假设a和b为int型变量,则执行以下语句后b的值为()。a=1;b=10;do{b-=a;a++;}while(b--<0);A.9B.-2C.-lD.8

62.有三个关系R、S和t如下:由关系R和s通过运算得到关系T,则所使用的运算为()。

A.笛卡儿积B.交C.并D.自然连接

63.

64.有以下程序:

}、、、程序运行后的输出结果是()。

A.一263B.2C.0D.一26

65.下列是用户自定义标识符的是

A._w1B.3_xyC.intD.LINE-3

66.阅读下面程序段,则执行后的结果为()。

A.64B.8C.56D.0

67.下列排序方法中,最坏情况下比较次数最少的是()。

A.简单选择排序B.冒泡排序C.堆排序D.直接插入排序

68.有以下程序:

voidswap(char*x,char*y)

{chart;

t=*x;*x=*y;*y=t;

}

main

{char*s1="abe",*s2="123":

swap(s1,s2);

printf("%s,%s\n",s1,s2);

}

程序执行后的输出结果是()。A.A.123,abeB.abc.123C.1bc,a23D.321,cba

69.

70.下列选项中属于结构化程序设计原则的是()。

A.可封装

B.多态性

C.自下而上

D.逐步求精

71.现有以下结构体说明和变量定义,如图所示,指针P、q、r分别指定一个链表中连续的3个结点。

structnode

{hardata;

structnode*next;)*P,*q,*r;

现要将q和r所指结点交换前后位置,同时要保持链表的结构,下列不能完成此操作的语句是()。A.q-:>next=r->next;p--:>next=r;rm:>next=q;

B.q-:>next=r;q->next=r->next;r->next=q;

C.q-:>next=r->next;r->next=q;p->next=r;

D.q-:>next=q;p->next=r;q->next=r->next;

72.有以下程序:

voidmain()

{

inti=10,j=1;

printf("%d,%d\n",2*i--,++j*2);

}

执行后输出的结果是()。

A)20,4B)10,2

C)20,1D)10,4

73.下列定义变量的语句中正确的是()。

A)int_int;B)double3int_;

C)charfor;D)floatUS&;

74.有以下程序

75.

76.

77.

有以下程序:

main

{inti,n=0:

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

{do

{if(i%3)continue:

n++:

}while(!i);

n++:

}

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

}

程序执行后输出结果是()。

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

78.有以下程序

79.下列语句组中,正确的是()。

A.char*s;s=”Olympic”;

B.chars[7];s=”Olympic”;

C.char*s;s={¨Olympic”};

D.chars[7];s={"Olympic”};

80.

五、程序改错题(1题)81.下列给定程序中,函数proc()的功能是根据整型形参n,计算如下公式的值:y=1-1/(22)+1/(33)-1/(44)+…+(-1)(n+1)/(m)例如,n中的值为l0,则应输出0.817962。请修改程序中的错误,使它能得到正确结果。注意:不要改动main()函数,不得增行或删行,也不得更改程序的结构。试题程序:

六、程序设计题(1题)82.使用VC++2010打开考生文件夹下prog1中的解决方案。此解决方案的项目中包含一个源程序文件prog1.c。在此程序中,请编写一个函数fun(),用来求出数组中值最大的元素在数组中的下标并将其存放在k所指向的存储单元中。例如,输入如下整数:876675896101301401980431451777则输出结果为6,980。注意:部分源程序在文件prog1.c中。请勿改动主函数main()和其他函数中的任何内容,仅在函数fun()的花括号中填入你编写的若干语句。试题程序:

参考答案

1.C

2.D

3.C

4.Csum=fun((a++,b++,a+b),c++)中a++,b++,a+b为逗号表达式,运算后取a+b的值为5,c++为3,故函数调用后输出结果为8。

5.AC语言中,八进制整型常量以0开头,十六进制整型常量以0x或0X开头。C语言中的实型常量有两种表示形式:小数形式和指数形式。小数形式,表示的实型常量必须要有小数点;指数形式,在e或E后加一个整数来表示以10为底数的幂数,且规定字母e或E之前必须要有数字,且e或E后面的指数必须为整数。B选项中“028”不合法,八进制中没有数字8。C选项中,e后面的指数不是整数。D选项中“10,000”数字之间不能有逗号。故本题答案为A选项。

6.C解析:本题的选项A)和B)犯了同样的错误,即指针变量在定义后并没有指向具体的变量。也就是说,指针变量中没有确定的地址值,它的值是不可预见的,所指的单元也是不可预见的,因此不能进行赋值操作。另外,在选项D)中,s是int型指针变量,p是char型指针变量,所指向的内存单元所占用的字节数是不同的,因而不能将字符指针变量p的值赋给整型指针变量s。

7.B宏定义在编译程序时做了一个简单的替换,所以B选项正确。故本题答案为B选项。

8.D输出时以%d整型格式输出,所以输出字符变量c1的值为65,c2-2的值为68-2,即66。故本题答案为D选项。

9.D\n常用的过程设计工具有图形工具(程序流程图、N-S图、PAD图、HIPO)、表格工具(判定表)、语言工具(PDL)。

\n

10.C解析:外部变量在编译时由系统分配永久的内存空间,所以外部变量的类型不是自动存储类别。

11.C

12.A当y为。时,表达式y一才为假,循环结束,最终y的值为一l,所以答案选择A)。

13.D解析:本题考查给二维数组元素赋值。给二维数组元素赋值时应注意下列两点:①在对二维数组元素赋初值时,可以只对部分元素赋初值,未赋初值的元素自动取0。②二维数组第一维的大小由下列规则确定;当初值的个数能被第二维的常量表达式的值除尽时,所得商数就是第一维的大小;当初值的个数不能被第二维的常量表达式的值除尽时,第一维的大小等于所得商数加1。

14.A本题考查的是格式输)ki$i数,即按用户指定的格式从键盘上把数据输入到指定的变量之中,其中的格式命令可以说明最大域宽。在百分号(%)与格式码之间的整数用于限制从对应域读入的最大字符数。因此j的值为55,y的值为566.0,字符数组nanle的值为7777123。故本题答案为A)。

15.B

16.D解析:函数f中定义了结构体类型的变量P作为形参,在main函数中,将结构体变量s[0]中的值传给了形参变量P,在函数f中,虽然改变了p中的内容,但其改变对main函数中s[0]的值不产生影响,所以main函数中输出s[0]的数据仍然是main函数中初始化时的数据。

17.C

18.CC)【解析】数据库一旦发生故障,需要及时进行故障恢复,并由数据库管理员负责执行故障恢复。

19.B

20.DD)【解析】二分法查找只适用于顺序存储的有序表,表中的元素按值从小到大排列。

21.max==a[i].smax==a[i].s解析:该程序使用循环嵌套,第1个for语句的作用是找出最大值。第2个循环的作用是找出与max相等的成绩,也即最高成绩的学生,并存入b中。

22.333,3解析:本题在while(n++<=1)语句后,直接加了分号,说明如果while()的条件为真时,该循环什么都不做:n++是先取n的当前值和1做比较,然后再将n加1。第一次循环,n=0时,循环条件n++=<1成立,执行循环,然后得到n=1。第二次循环,n=1时,循环条件n++=1<=1成立,执行循环,然后得到n=2。第三次循环,n=2时,循环条件n++=2<=1不成立,不执行循环,但在判断循环条件时仍将n加1,得到n=3.退出循环后执行printf语句,第二个printf语句输出n++,是先输出n的当前值3,然后再将n加l,即程序结束后得到n=4,但输出的是3。

23.1010解析:整型指针最初被赋的值是数组arr的头指针,即指向数组的第一个元素30,p++后,指针指向数组的下一个元素,即*p=arr[1]=25,在执行*(p+3)时,则相当于a[1+3],即10。因此,输出应为100。

24.非线性结构非线性结构

25.m<10n%4!=0

26.str[i]或str+iistr[i]或str+i\r\ni

27.概念或概念级概念或概念级解析:数据库系统在其内部具有三级模式及二级映射,三级模式分别是概念级模式、内部级模式和外部级模式。概念模式是数据库系统中全局数据逻辑结构的描述,是全体用户(应用)公共数据视图。

内模式式又称物理模式,它给出了数据库物理存储结构与物理存取方法,如数据存储的文件结构、索引、集簇及hash等存取方式与存取路径,内模式的物理性主要体现在操作系统及文件级上,它还未深入到设备级上(如磁盘及磁盘操作)。

外模式也称子模式或用户模式,它是用户的数据视图,也就是用户所见到的数据模式,它由概念模式推导而出。

28.98768769876\r\n876解析:指针是一种数据类型,这种数据类型的变量用来存放内存中分配的存储单元的首地址。指针的定义:

类型说明符*指针变量名;

29.44解析:在主函数中,语句p=a;p++使用指针p指向数组a[1],所以输出结果为4。

30.66解析:本题中,i、j分别为外循环和内循环的循环控制变量,外层循环共执行了4次。当i=1时,由于内层循环判断条件(2<=1)为假不执行内层循环。当i=2时,执行内层循环,输出一个#;当i=3时,内层循环循环两次,输出两个#:当i=4时,内层循环循环3次,输出3个#。当i=5时,循环判断条件不成立,退出外层循环。所以一共输出6个#。

31.模块模块解析:矩形表示的是模块,箭头表示的是模块间的调用关系。用带实心圆的箭头表示传递的是控制信息,用带空心圆的箭头表示传递的是数据。

32.00解析:解答本题需要注意表达式“k=0”,它是赋值表达式而不是关系表达式,不论k为何值,表达式k=0总会使k为0,所以不能进入循环。

33.*s++flag==0或*(s-1)==''num*s++\r\nflag==0或*(s-1)==''\r\nnum解析:在统计字符串单词个数的算法中,本题的flag是为了记录一个单词是否结束。第18空应填*s++;如果某个字符不是空格,则必需判断它是否是单词,如是,则使得flag的标志为1,num的值加1。本题判断方法是:先判断s所指向的字符是否为空格,如果是则使得flag=0,否则判断前一个字符是否是空格,如果是则说明这个字符是一个单词的开始,将flag标志为1,num的值加1,如果不是,则不必记录。故第19空应flag==0或*(s-1)=='';最后一个空格需填写的是返回的单词的个数,即num。

34.21

35.3030解析:考查for循环的使用。题目中for(;;)表示:for循环的初始化表达式,条件表达式和修正表达式都省略了,表示进行for循环和for循环的终止都没有限制。

36.3232解析:根据二叉树的性质,在二叉树的第K层上,最多有2k-1个结点。所以,第6层的结点数最多为32。

37.1919解析:根据二叉树的性质:在任意一棵二叉树中,度为。的结点(即叶子结点)总是比度为2的结点多一个。本题中度为2的结点数为18,故叶子结点数为18+1=19个。

38.abcdelkjihgfabcdelkjihgf解析:本题先给字符型数组s的12个元素赋值a到1的12个字母,函数sub(shar*a,intt1,intt2)的功能是将数组a的从第t1+1个元素到t2+1个元素进行逆置,在主函数中调用sub(s,5,SIZE-1)函数,是将数组s的第6个元素到第12个元素进行逆置,其他元素位置不变。

39.b[k++]b[k++]解析:本题的考查点是do-while语句。形参x默认为十进制,要想将一个十进制的数转换成二进制,可以使用整除求余法,题中的程序段也表明了将使用这种方法,将一个十进制的数转换成二进制要用这个十进制数不断的整除2,将每次的余数记录下来,直至无法再除,此时,整除得到的第一个元素即为二进制数的最低位,其余依次类推,所以在程序段中的横线处,应当填写“b[k++]”。

40.00解析:函数getchar()是从键盘得到用户输入的一个字符。用户输入的第1个字符是a,不管后面输入的是什么ch的值都是'a',因此条件(ch=getchar())=='e'为假,这个循环不会被执行。

41.B解析:注意自增和自减运算符在变量的左右侧的不同用法。本题条件表达式m++>5,即5>5不成立,此时m=6,执行else后面的语句,输出6后再m--使得m又等于5了。

42.D解析:本题中直接使用指针变量k,但在使用时要注意对k的指针运算。此外,一开始应知道*k的值为数组中的某一下标值,即。k=0,本函数的功能是找出数组中的最大元素的位置及最大元素的值。

43.D解析:根据优先级顺序,先计算内层括号的值。j自加1等于3,所以++j==3成立,表达式为1,由于1“|”任何数都为1,所以不用计算“||”后面的表达式,所以k=3,最后计算“&&”之前的表达式,i先进行判断再自加1,所以i++==1成立,自加1后i=2。if语句的条件为“1”,所以输出i、j、k的值分别是2,3,3。

44.B解析:auto变量和register变量在使用时,系统自动为其分配存储单元;退出时自动释放这些存储单元另做它用。

45.C解析:在fun1()函数中只有一条return语句,返回的是表达式a*=a的值,该值等于a*a。但是,由于fun1()函数的返回值类型被定义为int,所以返回值被取整,即fun1()函数实现的是求一个双精度数平方的整数部分。在fun2()函数中,分别对两个参数调用fun1()函数,然后将两个返回值相加、取整后返回。所以,程序执行后,w中的值是[1.12]+[2.02]=1+4=5(中括号代表截尾取整)。又因为w被定义为double型,所以变量w中的值应该为一个双精度值5.0。故应该选择C。

46.A解析:作为一个算法,一般应该具有下列4个特征:(1)可行性,即考虑到实际的条件能够达到一个满意的结果;(2)确定性,算法中的每一个步骤都必须是有明确定义的,(3)有穷性,一个算法必须在有限的时间内做完;(4)拥有足够的情报。

47.D解析:在结构化程序设计中,通常采取自顶向下、逐步求精的方法,尤其是在详细设计和编码阶段,其总的思想就是先全局后局部、先整体后细节、先抽象后具体、程序自顶向下、逐步细化。而筛选法、递归法和归纳法指的都是程序的某种具体算法。逐步求精法是结构化程序设计中很重要的思想,一定要牢记!

48.C解析:本题考查了一维字符数组的定义和初始化。选项C中str[10]初始化为空,可以不必进行类似''的空赋值,字符数组若没有进行初始化赋值,默认的字符为空,并且定义完str数组后,应该用“,”分隔而不是“。”,所以选项C错误。

49.A解析:在函数的形参中使用int*类型和使用int[]类型并无区别,两者都可用宋传递数组名或指针变量,所以func()函数的形参是两个指针a和b,又因为b[0]亦可写成*b,所以表达式b[0]=*a+6也可以写成*b=*a+6,其意思是:将a所指内容加上6赋给b所指内容。所以主函数中对func()的调用func(&a,b)可看成b[0]=a+6,所以最后b[0]的结果为6。正确答案为选项A。

50.D软件开发离不开系统环境资源的支持,其中主要的资源有硬件资源、通信资源、辅助资源等。(1)硬件资源是指组成计算机及相关应用所需要的硬件,它是软件开发必不可少的资源,因为无论什么样的软件工具都需要在硬件上完成任务,它是其他资源的基础资源。(2)通信资源是指为软件开发提供通信支撑的资源,它与测试数据无关。(3)支持软件是指为软件开发提供操作平台的软件,如常用的面向对象开发的Rose软件,它主要是软件开发的工具。通过对上述分析的总结,可以知道本题的正确答案选D。

51.C解析:当i不可以整除2时打印“*”然后打印“#”,不能整除2则执行continue,跳挝printf('#');语句,结束本次循环,返回到循环的起始点。当循环结束后,打印“$”。

52.C解析:main()函数的作用,以及main()函数在程序中出现的位置。一个完整的C语言程序有且仅有一个主函数(main()函数)。程序总从main()函数的第一条语句开始执行,到main()函数的最后—条语句结束,其他函数都是在执行main()函数时,通过函数调用或嵌套调用而得以执行的。C语言规定,main()函数在程序中的位置是任意的。

53.B解析:根据题目要求,最后要使输出的s值为2,在程序中改变s的值的语句只有循环体中的s+=1;语句,而初始s的值为0,显然要使s的值变为2,该语句必须执行两次,即do-while循环中的循环体要执行两次,而在do-while中,首先不执行条件而执行do后面的循环体语句,然后再判断while循环条件。所以不管循环判断条件是否为真s+=1;语句至少执行一次,根据分析,只需要while后面括号的循环判断表达式的值为真成立一次且只能为真一次,将4个选项中的内容依次代入该程序中不难得到只有n=-3刚好使循环判断条件a!=n为真一次。故4个选项中选项B符合题意。

54.C解析:通过scanf()函数从键盘读入数据时,接收参数的使用变量的地址值,所以选项A和B是错误的。选项D要求输入时以逗号间隔,故按题目要求的输入方式不能正确读取到3个数,也是错误的。所以正确答案是C。

55.C解析:本题考查do…while循环。在do…while构成的循环体中,总是先执行一次循环体,然后再求表达式的值。当执行完第三次循环时,得到n=3,while循环表达式仍然成立,接着执行直到n=4,表达式不成立,跳出循环,结束程序。

56.DD。【解析】软件需求分析中需要构造一个完全的系统逻辑模型,理解用户提出的每一功能与性能要求,使用户明确自己的任务。因此,需求分析应确定用户对软件的功能需求和非功能需求。

57.A解析:一些较流行的程序语言允许过程的递归调用。递归调用就是过程调用本身。递归实现的是:当过程每一次执行后,都能返回到最近一次调用它的过程中。这样各调用点之间形成一种后进先出关系,而栈结构正适合来存储这些调用点。选项A正确。

58.A解析:从关系中找出满足给定条件的那些元组称为选择,是从行的角度进行的运算,即水平方向抽取元组。从关系模式中挑选若干属性组成新的关系称为投影,是从列的角度进行的运算,相当于对关系进行垂直分解。所以,本题选择A。

59.C解析:本题考核的知识点是字符数组的定义、赋初值以及函数sizeof()的应用。本题中定义两个字符型数组,其中a省略了长度,定义了b的长度为10,并赋初值分别为“abcdefg”和“abcdfg”。所以a的长度为赋值给它的字符串的字符个数7加上一个结束转义字符,即a的长度为7+1为8.定义时b的长度定义为10,故b的长度为10,因此最后通过函数sizeof()求得的数组a和数组b的长度分别为8和10,所以,4个选项中选项C符合题意。

60.A解析:调用sum(&a[2])时,a[0]=a[2]=3,a[-1]=a[1]=2,a[1)=a[3]=4,因此a[2]=6,可以看到sum函数的功能是将数组的一项的值改成其前一项的值与后一项的值之和。

61.D当b为10时,执行b-=a,此时b为9,接着b--表达式值为9,b的值为8,大于0,while不成立,退出循环,故选择D选项。

62.D自然连接是一种特殊的等值连接,它要求两个关系中进行比较的分量必须是相同的属性组,并且在结果中把重复的属性列去掉,因此根据关系T中的有序组可知关系R与s进行的是自然连接操作,故本题答案为D)。

63.C

64.Disspaee(c)检查参数c是否为空格字符。若参数e为空格字符,则返回TRUE,否则返回NULL(0)。Is—di#t(c)函数检查参数c是否为阿拉伯数字0到9。返回值若为阿拉伯数字,则返回TRUE,否则返回NULL(O)。fLm()函数的第一个for循环判断字符串是否为负号。第二个for循环获取符号后面的数字字符,并将它们转化为整数。遇到了非数字的字符跳出,最后返回数组的结果。因此,可知首先获取负号,紧接着获取数值26,遇到了字符a,跳出返回一26,因此打印的结果是一26。故答案为D选项。

65.A本题主要考查标识符的定义。对标识符的定义是考试中常考的内容之

温馨提示

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

评论

0/150

提交评论