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

下载本文档

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

文档简介

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

一、单选题(20题)1.

2.有以下程序:#include<stdio.h>main(){inty=10;while(y--);printf(“y=%d\n”,y);}程序运行后的输出结果是()。

A.y=0B.y=-1C.y=1D.while构成无限循环

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

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

4.设q1和q2是指向一个float型一维数组的指针变量,k为float型变量,则不能正确执行的语句是()。

A.k=*q1+*q2;B.q1=k;C.q1=q2;D.k=*q1*(*q2);

5.有以下程序:#include<stdio.h>voidswap(int*a,int*b){intt,*tp;t=*a;*a=*b;*b=t;tp=a;a=b;b=tp;printf(“%d,%d,”,*a,*b);}main(){inti=3,j=7,*p=&i,*q=&j;swap(p,q);printf(“%d,%d,%d,%d”,i,j,*p,*q);}程序运行后的输出结果是()。

A.3,7,3,7,3,7B.7,3,7,3,7,3C.3,7,3,7,7,3D.3,7,7,3,7,3

6.下面程序的运行结果是

#include<stdio.h>

main()

{inta=28,b;

chars[10],*p;

p=s;

do{b=a%16;

if(b<10)*p=b+48;

else*p=b+55;

p++;a=a/5;}while(a>0);

*p=′\0′;puts(s);}

A.10B.C2C.C51D.\0

7.

8.递归式的先序遍历一个n节点,深度为d的二叉树,则需要栈空间的大小为()

A.O(logn)B.O(nlogn)C.O(n)D.O(d)

9.下面程序的运行结果是

#include<stdio.h>

voiddelch(char*s)

{inti,j;

char*a;

a=s;

for(i=0,j=0;a[i]!=′\n′;i++)

if(a[i]>=′0′&&a[i]<=′9′)

{s[j]=a[i];j++;}

s[j]=′\0′;}

main()

{char*item="a34bc";

delch(item);

printf("\n%s",item);}

A.abcB.34C.a34D.a34bc

10.语句:“printf("%d",(a=)&&(b=-2));”的输出结果是()。

A.无输出B.结果是不确定C.-1D.1

11.若f(n)=3n2+2n+1,则f(n)=()。

A.O(n2)B.O(n)C.O(2n)D.O(3n2)

12.数组A[0...4,-1...-3,5...7]中含有的元素个数是()。A.A.55B.45C.36D.16

13.设R是一个2元关系,有3个元组,S是一个3元关系,有3个元组。如T=R×S,则T的元组的个数为()。A.6B.8C.9D.12

14.

15.有以下程序段chareh;intk;ch='a';k=12;printf("%c,%d,",ch,ch,k);printf("k=%d\n",k);已知字符a的ASCII码值为97,则执行上述程序段后输出结果是

A.因变量类型与格式描述符的类型不匹配输出无定值

B.输出项与格式描述符个数不符,输出为零值或不定值

C.a,97,12k=12

D.a,97,k=12

16.

17.

18.如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用()。

A.只有表头指针没有表尾指针的循环单链表B.只有表尾指针没有表头指针的循环单链表C.非循环双链表D.循环双链表

19.给定数列(541,132,984,746,518,181,946,314,205,827)按照从小到大的顺序排列,采用直接选择大值开始排序时,第一趟扫描结果是()

A.(541,132,827,746,518,181,946,314,205,984)

B.(205,132,314,181,518,746,946,984,541,827)

C.(132,541,746,984,181,518,314,946,205,827)

D.(132,541,746,518,181,946,314,205,827,984)

20.下列叙述中正确的是:()A.C语言程序中,main()函数必须在其它函数之前,函数内可以嵌套定义函数

B.C语言程序中,main()函数的位置没有限制,函数内不可以嵌套定义函数

C.C语言程序中,main()函数必须在其它函数之前,函数内不可以嵌套定义函数

D.C语言程序中,main()函数必须在其它函数之后,函数内可以嵌套定义函数

二、2.填空题(20题)21.以下程序的输出是【】。

main()

{

charstr1[]=Howdoyoudo",*p=strl;

strcpy(str1+strlen(str1)\2"esshe");

pfinff("%s\n",p1);

}

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

#include<stdio,h>

#include<string,h>

main()

{charch[]="abc".,x[3][4]:inti:

for(i=0;i<3:i++)strcpy(x[i],ch):

for(i=0;i<3:i++)printf("%s",&x[i][i]);

printf("\n")

}

23.若有定义intm=5,y=2,则执行表达式y+=y-=m*=y后,y的值为【】。

24.以下程序的功能是调用函数fun计算:m=1-2+3-4+…+9-10,并输出结果。请填空。

intfun(intn)

{intm=0,f=1,i;

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

m+=i*f;

f=【】;

returnm;

}

main()

{printf("m=%d\n",【】);}

25.下列程序的运行结果是______。

#include<stdio.h>

main()

{inta,b,c,n;

a=2;b=0;c=1;n=1;

while(n<=3)

{c=c*a;b=b+c;++n;}

printf("b=%d",B);

}

26.表达式10+'a'+1.5-0.5*'B'的结果是【】。

27.以下程序的运行结果是【】。

#include<stdio.h>

main()

{intx=1,y=0,a=0,b=0;

switch(x)

{case1:

switch(y)

{case0:a++;break;

case1:b++;break;

}

case2:a++;b++;break;

case3:a++;b++;

}

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

}

28.存储300个16×16点阵的汉字信息需要【】字节。

29.若输入字符串:(图片),则以下while循环体将执行【】次。

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

30.设有如下程序段:

inti=0,sum=1;

do

{sum+=i++;}

while(i<6);

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

上述程序段的输出结果是【】。

31.设Y是int型变量,请写出判断Y为奇数的关系表达式【】。

32.以下程序中函数f的功能是在数组x的n个数(假定n个数互不相同)中找出最大最小数,将其中最小的数语第一个数兑换,把最大的数语最后一个数对换。请填空。

#include<stdio.h>

voidf(intx[],intn)

{intp0,p1,i,j,t,m;

i=j=x[0];p0=p1=0;

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

if(x[m]>i){i=x[m];p0=m;}

elseif(x[m]<j){j=x[m];p1=m;

}

t=x[p0];x[p0]=x[n-1];x[n-1]=t;

t=x[p1];x[p1]=[11];[12]=t;

main()

{inta[10],u;

for(u=0;u<10;u++)scanf("%d",&a[u]);

f(a,10);

for(u=0;u<10;u++)printf("%d",a[u]);

printf("\n");

}

33.以下程序运行后的输出结果是()。

#include

char*ss(char*s)

{char*p,t;

P=s+1;t=*s;

while(*p){*(P-1)=*P;P++;}

*(P-1)=t;

returns;

}

main()

{char*p,str[10]="abcdefgh";

p=ss(str);

printf("%s\n",p);

}

34.软件测试是保证软件质量的重要手段,而软件测试的主要和重要的测试方法是通过测试数据和【】的设计来实现。

35.排序是计算机程序设计中的一种重要操作,常见的排序方法有插入排序、______和选择排序。

36.语句:x++;++x;x=1+x;执行后都使变量x中的值增1,请写出一条同一功能的赋值语句______。

37.下面程序的输出是【】。

main()

{enumern{em1=3,em2=1,em3};

char*aa[]={"AA","BB","CC","DD"};

printf("%s%s%s\n",aa[em1],aa[em2],aa[em3]);

}

38.函数调用语句:“fgets(buf,n,fp);”从中指向的文件中读入n个字符放到buf字符数组中,函数返回值为______。

39.以下程序建立了一个带有头结点的单向链表,链表结点中的数据通过键盘输入,当输人数据为-1时,表示输入结束(链表头结点的data域不放数据,表空的条件是ph->next=NULL).

#include<stdio.h>

structlist{intdatd;structlist*next;};

【】creatlist()

{structlist*p,*q,*ph;

inta;

ph=(structlist*)malloc(sizeof(structlist));

p=q=ph;

printf("Inputanintegernumber,enter-1toend:\n");

scanf("%d",&a);

while(a!=-1)

{

p=(structlist*)malloc(sizeof(structlist));

p->data=a;

q->next=p;

【】=p;

scanf("%d",&a);

}

p->next='\0';

return(ph);

}

main()

{

structlisthead;

head=creatlist();

}

40.设在主函数中有以下定义和函数调用语句,且fun函数为void类型;请写出fun函数的首部【】。要求形参名为b。

main()

{double[10][22];

intn;

......

fun(s);

}

三、1.选择题(20题)41.设a和b均为int型变量,且a=6、b=11、c=3,则能使值为3的表达式是()。

A.b%(c%4)B.b%(c-a%5)C.b%a-a%5D.(b%A)-(a%4)

42.设函数fun的定义形式为voidfun(charch,floatx){…}则以下对函数fun的调用语句中,正确的是

A.fun("abc",3.0);

B.t=fun('D',16.5);

C.fun('65',2.8);

D.fun(32,32);

43.当输入为"quert?"时,下面程序的执行结果是#include<stdio.h>main(){charc;c=getchar();while(c!='?'){putchar(c);c=getchar();}}

A.quertB.RvfsuC.quert?D.rvfsu?

44.有以下程序段:typedefstructNODE{intnum;structNODE*nex;}OLD;以下叙述中正确的是()。

A.以上的说明形式非法B.NODE是一个结构体类型C.OLD是一个结构体类型D.OLD是一个结构体变量

45.以下C程序的运行结果为______。main(){inti=1,sum=0;loop:if(i<=10){sum+=i;i++;gotoloop;}printf("sum=%d\n",sum);}

A.sum=10B.sum=55C.sum=100D.sum=88

46.有程序段:intal,a2;Charcl,c2;scanf("%d%c%d%c",&a1,&cl,&a2,&c2);若要求a1、a2、c1、c2的值分别为10、20、A、B,正确的数据输入()

A.10A20B<CR>B.10A20B<CR>C.10A20B<CR>D.10A20B<CR>

47.在标准C语言中,下列程序的输出结果为______。main(){printf("%e",123.456);}

A.123.456B.123.4560C.1.23456e2D.1.234560e+002

48.下列描述中正确的是()。

A.软件工程只是解决软件项目的管理问题

B.软件工程主要解决软件产品的生产率问题

C.软件工程的主要思想是强调在软件开发过程中需要应用工程化原则

D.软件工程只是解决软件开发过程中的技术问题

49.阅读以下程序及对程序功能的描述,其中正确的描述是#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中

D.程序完成将两个磁盘文件合并并在屏幕上输出

50.下面程序的输出是______。main(){intx=3,y=6,a=0;while(x++!=y-=1)){a+=1;if(y<x)break;}printf("x=%d,a=%d\n",x,y,A);}

A.x=4,y=4,a=1B.x=5,y=5,a=1C.x=5,y=4,a=3D.x=5,y=,a=1

51.设有以下程序段intx=0,s=0;while(!x!=0)s+=++x;printf("%d",s);则

A.运行程序段后输出0B.运行程序段后输出1C.程序段中的控制表达式是非法的D.程序段执行无限次

52.下列叙述中,不符合良好程序设计风格要求的是

A.程序的效率第一,清晰第B.程序的可读性好C.程序中要有必要的注释D.输入数据前要有提示信息

53.阅读以下程序以及对程序功能的描述,其中正确的描述是()。#include<stdio.h>main(){FILE*in,*out;charch,infile[10],outfile[10];printf("Entertheinfilename:\n");scanf("%s",infile);printf("Entertheoutfilename:\n");scanf("%s",outfile);if((in=fopen(infile,"r"))==NULL){printf("cannotopeninfile\n");exit(0);}if((out=fopen(outfile,"w"))==NULL){printf("cannotopenoutfile\n");exit(0);}while(!feof(in))fputc(fgetc(in),out);fclose(in);fclose(out);}

A.程序完成将磁盘文件的信息在屏幕上显示的功能

B.程序完成将两个磁盘文件合二为一的功能

C.程序完成将一个磁盘文件复制到另一个磁盘文件中的功能

D.程序完成将两个磁盘文件合并并在屏幕上输出的功能

54.已知形成链表的存储结构如下图所示,则下述类型描述中的空白处应填______。structlink{chardata;______;}node;

A.Structlinknext

B.link*next

C.structnextlink

D.Structlink*next

55.结构化程序设计主要强调的是

A.程序的规模B.程序的效率C.程序设计语言的先进性D.程序易读性

56.有以下程序#include<stdio.h>main(){inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a+5,*q=NULL;*q=*(p+5);printf("%d%d\n",*p,*q);}程序运行后的输出结果是______。

A.运行后报错B.66C.611D.510

57.设变量均已正确定义,若要通过scanf("%d%c%d%c",&a1,&c1,&a2,&c2);语句为变量a1和a2赋数值10和20,为变量c1和c2赋字符X和Y。以下所示的输入形式正确的是(注:□代表空格字符)()。

A.10□X□20□Y<回车>

B.10□X20□Y<回车>

C.10□X<回车>

D.10X<回车>20□Y<回车>20Y<回车>

58.设有以下说明语句structex{intX;floaty;charz;}example;则下面的叙述中不正确的是

A.struct结构体类型的关键字

B.example是结构体类型名

C.x,y,z都是结构体成员名

D.structex是结构体类型名

59.以下程序中函数sort的功能是对a所指数组中的数据进行由大到小的排序:floatsort(inta[],intn){inti,j,t;for(i=0;i<n-1;i++)for(j=i+1;j<n;j++)if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}}main(){intaa[10]={1,2,3,4,5,6,7,8,9,10),i;sort(&aa[3],5);for(i=0;i<10;i++)printf("%d",aa[i]);printf("\n");}程序运行后的输出结果是______。

A.1,2,3,4,5,6,7,8,9,10

B.10,9,8,7,6,5,4,3,2,1

C.1,2,3,8,7,6,5,4,9,10

D.1,2,10,9,8,7,6,5,4,3

60.下面程序的输出结果是()。#include<stdio.h>main(){chara[]={'a','b','c','d','f','g'},*p;p=a;printf("%c\n",*p+4);}

A.aB.bC.eD.f

四、选择题(20题)61.若二维数组a有m列,则在a[i][j]前的元素个数为()。

A.i*m+j-1B.i*m+jC.J*m+iD.i*m+j+1

62.若有定义“intb[8],*p=b;”,则p+6表示()。

A.数组元素b[6]的值B.数组元素b[6]的地址C.数组元素b[7]的地址D.数组元素b[o]的值加上6

63.

64.有三个关系R、S和T如下:

则由关系R和s得到关系T的操作是()。

A.自然连接B.并C.交D.差

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

A.c语言规定必须用main作为主函数名,程序将从此开始执行

B.可以在程序中由用户指定任意一个函数作为主函数,程序将从此开始执行

C.c语言程序将从源程序中第一个函数开始执行、

D.main的各种大小写拼写形式都可以作为主函数名,如MAIN,Main等

66.运行下列程序,若从键盘输入字符“a”,则输出结果是()。

charc;

c=getchar;

if(c>=a&&c<=g)c=c+4:

elseif(c>=9&&c<=2)c=c-21:

elseprintf("inputerror!\n");

putchar(c);

A.fB.tC.eD.d

67.以下叙述中错误的是()。

A.C程序在运行过程中所有计算都以二进制方式进行

B.C程序在运行过程中所有计算都以十进制方式进行

C.所有C程序都需要编译链接无误后才能运行

D.C程序中字符变量存放的是字符的ASCIl码值

68.

69.若a是数值类型,则逻辑表达式(a==1)||(a!=1)的值是()。

A.0B.1C.2D.不知道a的值,不能确定

70.(47)在结构化方法中,软件功能分解属于下列软件开发中的阶段是()

A.详细设计

B.需求分析

C.总体设计

D.编程调试

71.

72.不能实现函数之间数据传递的是()。

A.全局变量B.局部变量C.函数接口D.函数返回值

73.有以下程序

74.

75.

76.若在定义语句:

77.若输入“abcdef”“abdef”,下述程序的输出结果为()。#include#includemain{intn;chars1[20],s2[20],*p1,*p2;scanf("%s",s1);scanf("%S",s2);p1=s1;p2=s2;n=strcmp(p1,p2);printf("Vood\n",n);}A.A.-1B.0C."abcdef"D."abdef"

78.程序中若有如下说明和定义语句

charfun(char*);

main()

{

char*s="one",a[5]={0},(*f1)()=fun,ch;

……

}

以下选项中对函数fun的正确调用语句是

A.(*f1)(A);B.*f1(*s);C.fun(&A);D.ch=*f1(s);

79.下列处理中与队列有关的是()。

A.操作系统中的作业调度B.执行程序中的过程调用C.执行程序中的循环控制D.——-X树的遍历

80.

五、程序改错题(1题)81.已知一个数列从0项开始的前3项为0,0,1,以后的各项都是其相邻的前3项之和。下列给定的程序中,函数proc的功能是:计算并输出该数列前n项的和sum。n的值通过形参传人。例如,当n=20时,程序的输出结果应为42762.000000。

请修改程序中的错误,使它能得到正确结果。

注意:不要改动maiil函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include<stdlib.h>

#include<conio.h>

#include<stdio.h>

doubleproc(intn)

{

doublesum,s0,s1,s2,s;

intk;

sum=1.0;

if(n<=2)

sum=0.0;

s0=0.0;

s1=0.0;

s2=1.0;

//****found****

for(k=4;k<n;k++)

}

{

s=s0+s1+s2;

sum+=S:

s0=s1;

s1=s2;

//****found****

s2=s;

returnsum;

}

voidmain

{

intn;

system("CLS");

printf("InputN=");

scanf("%d",&nJ;

printf("%f\n",proc(n));

}

六、程序设计题(1题)82.请编写函数proc,该函数的功能是:将M行N列的二维数组中的数据,按行的顺序依次放到一维数组中,一维数组中数据的个数存放在形参n所指的存储单元中。

例如,若二维数组中的数据为

13233343

14243444

15253545

则一维数组中的内容应该是132333431424344415253545。

注意:部分源程序给出如下。

请勿改动main函数和其他函数中的任何内容,仅在函数proc的花括号中填入所编写的若干语句。

试题程序:

#include<stdio.h>

voidproc(int(*s)[103,int*b,int*n,intrain.intnn)

{}

voidmain

{

intarr[10][10]={{33,33,33,33),{44,44,44,44},

{55,55,55,55}),i,j;

inta[l00]={o),n=o;

printf("Thematrix:\n");

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

{

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

printf("%3d",arr[i][j]):

printf("\n");

}

proc(arr,a,&n,3,4):

printf("TheAarray:\n");

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

printf("%3d",a[i]):

printf("\n\n");

}

参考答案

1.C

2.B执行“y--”直到值为0。退出循环。由于“y--”是后缀自减运算,先使用再自减,因此退出循环时,y的值为-1。故本题答案为B选项。

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

\n

4.B解析:选项A)是将指针q1和q2所指向的变量值相加,然后赋给k;选项B)中,float型数据和指针型数据之间不能进行赋值运算:选项C)中,是两个指针变量之间的赋值:选项D)中,是两个指针型变量所指向的两个float型数据相乘。

5.Dmain函数中,首先定义两个整型变量i和j,初值为3和7,并将i的地址赋给p,j的地址赋给q,传给swap函数。swap函数接收两个整型指针变量a、b,然后使用整型变量t交换a、b所指向的值并输出。通过指针变量的交换改变了实参i、j的值,使得i=7,j=3。指针变量tp交换a和b的值,由于a、b的值是p、q值的复制,因此这次交换只改变了形参a、b的值,对实参p、q的值没有改变,此时指针变量a指向j,指针变量b指向i。函数最后输出*a和*b,所以输出3,7。由于swap函数改变了p和q指向的值,因此main函数输出i的值为7,j的值为3,*P的值为i,*q的值为j。最终程序输出:3,7,7,3,7,3。故本题答案为D选项。

6.C解析:考查用字符指针处理字符串的方法。语句'p=s;'是使指针p指向字符数组s。*p则引用了p所指位置的数组元素。通过指针来引用一维数组元素。

7.D

8.D

9.B解析:考查用指针引用字符串元素的方法。指针a通过数组元素下标来从头逐个地引用字符串item中的字符,判断不是0~9之间的数字时,就去掉这个字符,所以程序结束后,字符串item中就只剩下和两个字符了。

10.D因为在逻辑表达式中,两边的赋值表达式都成立,即值为1,故选择D选项。

11.A

12.A

13.CC。R为n元关系,有P个元组S为m元关系,有q个元组。两个关系笛卡儿积是一个n+m元的关系,元组个数是q×p。所以T的元组的个数为9个。

14.B

15.D解析:输出格式控制符%c表示将变量以字符的形式输出;输出格式控制符%d表示将变量以带符号的十进制整型数输出,所以第一个输出语句输出的结果为a,97;第二个输出语句输出的结果为k=12。

16.D

17.D

18.B

19.A

20.B每个C程序有且只有一个主函数main,C程序总是从main函数开始执行,main函数后面的一对圆括号不能省略,main函数可以位于程序的任意位置。函数不可以嵌套定义,但函数可以嵌套调用。

21.HowdoessheHowdoesshe解析:strcpy(strl,sl):字符串拷贝函数,作用是将字符串sl拷贝到字符数组strl中去。strlen(str):测试字符串str的长度,函数的值为字符串中实际长度,不包括‘\\0’在内。本题中strlen(strl)的值为13,则strcpy(strl+strlen(strl)/2'esshe')相当于strcpy(strl+6'esshe');,因此可得答案为Howdoesshe。

22.abcbccabcbcc解析:for循环用strcpy函数将字符数组ch的值'abc',分别复制给二维数组x的每一行,然后通过for循环先后打印出以x[0][0],x[1][1],x[2][2]开头的字符串'abe','bc','c',所以输出结果为:abcbcc。

23.-16-16解析:将赋值运算符右侧的“表达式”的值赋给左侧的变量,并且赋值运算符按照“自右而左”的结合顺序,本题表达式应先算m的值为10,再运算y的值为8,最后计算y=y+(-8)=-8+(-8)=-16。

24.-f或f*-1或-1*f或f*(-1)或(-1)*ffun(10)-f或f*-1或-1*f或f*(-1)或(-1)*f\r\nfun(10)解析:调用fun()函数计算m的值,在主函数中的空格处应该填调用fun()函数的语句。fun()函数有一个形参n,为每次参加计算的值的个数,故在主函数中的空格处应该填fun(10),回到fun()函数,函数用到了一个for循环,共循环n次,当循环第i次的时候,m的值等于m=1-2+……+[(-1)的i-1次方]*i,所以在fun()函数的空格处应该填使f改变符号的语句,故应填-f或f*-1或-1*f或f*(-1)或(-1)*f。

25.b=14b=14解析:分析程序可知,n的初始值为1,因此,while(n<=3)循环3次。第1次:c=c*a=2:b=b+c=2;n=2。第2次:c=c*a=4;b=-b+c=6;n=3。第3次;c=c*a=8:b=b+c=14。当n=4时,判断条件不满足,退出循环。

26.75.5

27.a=2b=1a=2,b=1解析:本题考查了switch结构的内容。C语言中,程序执行完一个case标号的内容后,如果没有break语句,控制结构会转移到下一个case继续执行,因为case常量表达式只是起语句标号作用,并不是在该处进行条件判断。本题程序在执行完内部switch结构后,继续执行了外部switch结构的case2:分支,最后a和b的值分别为2和1。

28.800800解析:一个16x16点阵的字形码需要16x16/8=32字节的存储空间,所以300个汉字信息需要9600个字节。

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

30.16

31.Y%2=1或Y%2!=0Y%2=1或Y%2!=0解析:判断变量是否为奇数可以用变量与2取模,判断结果是为1或下为0。本题具体做法如下:Y%2=1或Y%2!=0。

32.x[0]x[0]x[0]x[0]解析:函数f()通过for循环逐个比较数组x中的元素,循环结束后,p0和p1分别表示最大值和最小值在数组中的下标位置,然后按照题意将最大值x[p0]和数组的最后一个元素x[n-1)交换位置,再将最小值x[p1]和第一个元素(x[0])进行交换,所以空白处应该填入x[0]。

33.bcdefgha

34.测试实例测试实例解析:进行软件测试时,应精心设计测试实例和选择测试数据,以对系统进行全面测试。

35.交换排序交换排序解析:所谓排序是指将一个无序序列整理成按值非递减顺序排列成的有序序列,常用的排序方法有:交换排序、插入排序和选择排序。其中交换排序包括冒泡排序和快速排序,插入排序包括简单插入排序和希尔排序,选择排序包括直接选择排序和堆排序。

36.x+=1x+=1解析:本题考查“++”,“--”运算符。“++”、“--”只能作用于变量,不能用于表达式或常量;前缀形式是在使用变量之前先将其值增1或减1,后缀形式是先使用变量原来的值,使用完后再使其增1或减1。

37.DDBBCCDDBBCC解析:c语言对枚举的定义规定定:在枚举中声明的各个枚举元素,如果没有明确指出某个枚举元素的值,它的上一个元素存在并有明确值的情况下,这个枚举元素的值为其上一个元素的值+1。在本题中,没有明确说明枚举元素em3的值,则em3=em2+1=1+1=2,进而可知,在printf()打印函数中,要打印的数组元素是aa[3]、aa[1]、aa[2],因此最后的打印结果应当为“DDBBCC”。

38.buf的首地址buf的首地址解析:考查fsets()函数的功能,f8ets()函数用来从文件中读入字符串。调用格式为:f8ets(buf,n,fp)。此处,fp是文件指针,buf是存放字符串的起始地址,n是一个int型变量。调用函数fsets()时,最多能读入n-1个字符,系统自动在最后加字符串结束标志,并以buf作为函数值返回。

39.structlist*q

40.voidfun(doubleb[10][22])voidfun(doubleb[10][22])解析:本题答案:voidfun(doubleb[10][22])。

41.D选项D)括号内的运算分别是b%a=11%6=5和a%c=6%4=2,最后得到5-2=3。

42.D解析:题目中定义的函数fun()有两个参数,一个是字符型变量ch,另一个是浮点型变景x,函数类型是void即无返回值。选项A调用fun的第1个参数是字符串常量与字符变量不匹配,所以不正确。选项B是有返回值函数的调用形式,不正确。选项C的第1个参数是错误的字符常量,字符常量是用单引号括起来的—个字符(是转义字符可能有多个字符),故也不正确。选项D使用两个整型常量调用fun这在C语言中是允许的。因为整型到字符型可以自动转换,整型到浮点型也可以自动转换。故应该选择D。

43.A解析:本题考查的是字符的输入输出函数getchar和putchar。本题程序段实现的功能是:从键盘上逐个的输入字符,直到遇到‘?’则结束输入,并把除‘?’以外输入的每个字符输出到屏幕上。

44.C解析:typedef关键字用于声明一个新的类型名代替已有的类型名。本题中如果没有用typedef进行定义的话,则structNODE为结构体类型,而用typedef定义后,相当于用OLD代表了struetNODE这一结构体类型,故OLD为结构体类型。

45.B

46.A

47.D

48.CC。【解析】软件工程是指将工程化的思想应用于软件的开发、应用和维护的过程,包括软件开发技术和软件工程管理。

49.C解析:本题中,最主要的是掌握几个有关文件的函数的应用。

函数名:fopen功能:打开一个文件调用方式FILE*fp;fp=fopen(文件名,使用文件方式);

函数名:feof功能:检查文件是否结束调用方式:feof(FILE*fp);

函数名:fputc功能:把一个字符写到磁盘文件上去调用方式:fputc(ch,fp)(ch是要输出的字符,fp是从指定的文件读入一个字符,该文件必须是以读或读写方式打开的调用方式:ch=fgetc(fp)(ch是字符变量,fp是文件指针变量);

函数名:fclose功能:关闭一个文件调用方式:fclose(文件指针)。

50.D解析:注意的是x++中x值的引用时,这里应当是先引用,后自加,具体执行过程如下:

第一次while循环:条件为真,执行a=a+1=1;此时,x的值已为4,判断y<x不成立,继续执行循环;

第二次while循环;条件为假,此时x的值已为5,退出while循环,执行printf。

51.B解析:本题考查while语句的使用。本题考查逻辑非运算符和不等于运算符的区别,逻辑非运算符'!'的优先级大于不等于运算符'!='的优先级。

52.A解析:当今主导的程序设计风格是“清晰第一,效率第二”的观点。结构化程序设计思想提出之前,在程序设计中曾强调程序的效率,而在实际应用中,人们更注重程序的可理解性。

53.C解析:在C程序中,如果已经定义文件指针FILE*fp;fopen函数的功能是打开一个文件,调用方式为fp=fopen(文件名,使用文件方式);feof函数的功能是检查文件是否结束,调用方式为feof(FILE*fp);fpute函数的功能是把一个字符写到磁盘文件中,调用方式为fputc(ch,fp),ch是要输出的字符,fp是指定要将该字符写入的文件,该文件必须已经以写或读写方式打开了;fgetc函数的功能是从磁盘文件中读入一个字符,调用方式为ch=fsetc(fp),ch是字符变量,fp是文件指针变量;fclose函数的功能是关闭一个文件,调用方式为fclose(文件指针)。

54.D解析:在单向链表中,由于每个结点需要存储下一个结点的地址,且下一个结点的数据类型与前一个结点的数据类型完全相同,故应为structlink*next。

55.D结构化程序设计由迪杰斯特拉(E.W.dijkstra)在1969年提出,他主张“清晰第一,效率第二”,以模块化设计为中心,将待开发的软件系统划分为若干个相互独立的模块,这样使完成每一个模块的工作变得单纯而明确,为设计一些较大的软件打下了良好的基础。

由于模块相互独立,因此,在设计其中一个模块时,不会受到其他模块的牵连,因而可将原来较为复杂的问题化简为一系列简单模块的设计。模块的独立性还为扩充已有的系统、建立新系统带来了不少的方便,因为可以充分利用现有的模块作为积木式的扩展。

结构化程序设计的基本思想是采用“自顶向下,逐步求精”的程序设计方法和“单入口单出口”的控制结构。自顶向下、逐步求精的程序设计方法从问题本身开始,经过逐步细化,将解决问题的步骤分解为由基本程序结构模块组成的结构化程序框图;“单入口单出口”的思想认为一个复杂的程序,如果它仅是由顺序、选择和循环三种基本程序结构通过组合、嵌套构成,那么这个新构造的程序一定是一个单入口单出口的程序。据此就很容易编写出结构良好、易于调试的程序。

56.A解析:本题考核的知识点是通过指针引用数组的元素的方法.本题中首先定义了一个一维数组a并初始化,由于定义该数组的时候省略了长度,因此该数组的长度为初始化时候赋初值的个数即为12。数组名a代表数组的首地址,所以*p=a+5语句使得p指向数组的第6个元素,而在程序中定义了一个指针q并让它指向空,实际上程序并没有在内存中为指针q开辟存储空间,这样给q赋值不允许的,故该程序运行后报错。所以,4个选项中选项A符合题意。

57.D解析:当从键盘输入字符,并且在格式说明中未制定宽度时,输入字符(包括空格符、回车符、Tab符)将按顺序赋予各输入项。也就是说,输入字符之间没有间隔符,所以选项D是正确的。

58.B解析:本题中,structex是结构体类型名,ex-ample是结构体变量名。

59.C解析:本题考查数组名作为函数形参的函数调用问题。数组名作函数形参是按地址传递,形参的改变可以传回实参。sort函数的两个形参中一个是数组名,sort函数的功能是对数组元素进行由大到小的排序。主函数调用sort函数时,实参为aa[3]元素的地址和整数5,即sort函数将对数组aa中的元素aa[3]、aa[4]、aa[5]、aa[6]、aa[7]5

温馨提示

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

评论

0/150

提交评论