2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)_第1页
2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)_第2页
2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)_第3页
2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)_第4页
2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)_第5页
已阅读5页,还剩32页未读 继续免费阅读

下载本文档

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

文档简介

2022-2023年安徽省安庆市全国计算机等级考试C语言程序设计测试卷一(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在有序表(12,24,36,48,60,72,84)中二分查找关键字72时所需进行的关键字比较次数是()

A.1B.2C.3D.4

2.有以下程序:#include<stdio.h>#include<strin9.h>main(){printf{"%d\n",strlen("%d\n",strlen("ATS\n012\|"));}程序运行后的输出结果是()。A.3B.8C.4D.9

3.

4.具有10个叶子结点的二叉树中有()个度为2的结点。

A.8B.9C.10D.11

5.有如下定义#defineD2intx=5;floaty=3.83;charC='D';则下面选项中错误的是

A.x++;B.y++;C.c++;D.D++;

6.在一个有头结点的链队列中,假设f和r分别为队首和队尾指针,则队头出队的运算是()。

A.q=f->next;f->next=f->next->next;free(q);

B.q=f;f->next=f->next->next;free(q);

C.f->next=f->next->next;q=f->next;free(q);

D.q=f->next->next;f=f->next;free(q);

7.

有以下程序:

main

{intx=102,y=012;

printf("%2d,%2d\n",x,y);

}

执行后输出结果是()。

A.10,01B.02,12C.102,10D.02,10

8.堆的形状是一棵_______。

A.二叉排序树B.满二叉树C.完全二叉树D.平衡二叉树

9.下列程序的运行结果是()。

#include<stdio.h>

main()

{intx=5,a=1,b=2,C=5,d=0;

if(a<B)

if(b!=3)

if(!C)

x=1;

else

if(D)x=1;

elsex=-1;

printf("%d",x);

}

A.-1B.0C.1D.不确定的值

10.树最适合用来表示()。

A.有序数据元素B.无序数据元素C.元素之间具有分层次关系的数据D.元素间无联系的数据

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

A.C语言比其他语言高级

B.C语言可以不用编译就被计算机识别并执行

C.C语言以接近英语国家的自然语言和数学语言作为语言的表达形式

D.C语言出现最晚,具有其他语言的一切优点

12.有以下程序:#include<string.h>inta=4;intf(intn){intt=0;staticinta=5;if(n%2){inta=6;t++=a++;}else{inta=7;t+=a++;}returnt+a++;}main(){ints=a,i=0;for(;i<2;i++)s+=f(i);printf("%d\n",s);}程序运行后的输出结果是()。

A.24B.28C.32D.36

13.一个关系中属性个数为1时,称此关系为()。

A.对应关系B.单一关系C.一元关系D.二元关系

14.若文件指针fp已正确指向文件,ch为字符型变量,以下不能把字符输出到文件中的语句是()。

A.fget(f0,ch);

B.foutc(ch,fo);

C.fprinff(fp,”%c”,ch);

D.fwrite(&ch,sizeof(ch),1,fp);

15.以下叙述中错误的是()。A.C程序在运行过程中所有计算都以二进制方式进行

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

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

D.C程序中整型变量只能存放整数,实型变量只能存放浮点数

16.以下不合法的字符常量是()。

A.‘\\’B.‘\”’C.‘\018’D.‘\xcc’

17.人们提出了用______的原理来设计软件,这就是软件工程学诞生的基础。

A.计算机科学B.数学C.工程学D.运筹学

18.如果最常用的操作是取第i个结点及其前驱,最节省时间的存储方式是()。

A.单链表B.双向链表C.单循环链表D.顺序表

19.如果一个函数位于C程序文件的上部,在该函数体内说明语句后的复合语句中定义了一个变量,则该变量().

A.为全局变量,在本程序文件范围内有效

B.为局部变量,只在该函数内有效

C.为局部变量,只在该复合语句中有效

D.定义无效,为非法变量

20.以下关于字符串的叙述中正确的是()。

A.C语言中有字符串类型的常量和变量

B.两个字符串中的字符个数相同时才能进行串符串大小的比较

C.可以用关系运算符对字符串的大小进行比较

D.空串一定比空格打头的字符串小

二、2.填空题(20题)21.以下程序段中,错误的行号是【】。①#include<stdio.h>②main()③{charstr[14];str[]={"IloveChina!"};④printf("%s",str);⑤}

22.当运行以下程序时,输入abcd,程序的输出结果是【】。

insert(charstr[])

{inti;

i=stolen(str);

while(i>0)

{str[2*i]=str[i];str[2*i-1]='*';i--;}

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

}

main()

{charstr[40];

seanf("%s",str);insert(str);

}

23.阅读下面语句,则程序的执行结果是【】。

#include"stdio.h"

main()

{inta=-1,b=1,k;

if((++a<0)&&!(b--<=0))

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

elseprintf("%d,%d\n",b,a);}

24.下面程序的功能是实现变量x、y内容交换,请填空。

#defineEXCHANGE(a,b,c){a=b;b=c;c=a;}

main()

{intx=10,y=8,z;

【】

printf("%d,%d",x,y);}

25.有以下程序:

intsub(intn){return(n/10+n%10);}

main()

{intx,y;

scanf("%d",&x);

y=sub(sub(sub(x)));

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

}

若运行时输入:1234<回车>,程序的输出结果是【】。

26.下列程序的运行结果为【】。

main()

{inti;

chara[]="Ilovechina!",b[20],*p1,*p2;

p1=a;

p2=b;

while(*p1)

{*p2=*p1;

p1++;

p2++;

}

*p2='\0';

printf("stringbis:%s\n",b);

}

27.假设线性表的长度为n,则在最坏情况下,冒泡排序需要的比较次数为【】。

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

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

main()

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

switch(x)

{case1:switch(y)

{case0:a++;break;

case1:b++;break;

}

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

}

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

}

30.测试用例包括输入值集和【】值集。

31.下面程序的运行结果是______。

#defineDOUBLE(x,y)x/y

main()

{intx=4,y=2,t;

t=DOUBLE(x+y,x-y);

printf("%d",t);

}

32.用以下语句调用库函数malloc,使字符指针st指向具有11个字节的动态存储空间,请填空。st=(char*)【】;

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

34.下面函数的功能是将一个字符串的内容颠倒过来,请填空。

voidfun(charstr[])

{inti,j,k;

for(i=0,j=【】;i<j;i++,j--)

{k=str[i];

str[i]=str[j];

str[j]=k;}}

35.以下程序中用户由键盘输入一个文件名,然后输入一串字符(用#结束输入)存放到此文件中,形成文本文件,并将字符的个数写到文件的尾部。请填空。

#include<stdio.h>

main()

{FILE*fp;

charch,fname[32];intcount=0;

printf(”Inputthefilename:");

scanf("%s",fname);

if((fp=fopen(【】,"w+"))==NULL)

{printf("Can'topenfile:%s\n",fname);exit(0);}

printf("Enterdata:\n");

while((ch=getchar())!='#')

{fputc(ch,fp);count++;}

fprintf(【】,"\n%d\n",count);

fclose(fp);

}

36.设有以下定义

struetss

{intinfo;struetss*link;}x,y,z;

且已建立如下图所示链表结构:

请写出删除结点y的赋值语句【】。

37.性结构中,队列的操作顺序是先进先出,而栈的操作顺序是______。

38.由计算机、操作系统、DBMS、数据库、应用程序及用户组成的一个整体叫做【】。

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

#defineMCRA(m)2*m

#defineMCRB(n,m)2*MCRA(n)+m

main()

{inti-2,j=3;

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

}

40.下面程序的运行结果是()。

#include<stdio.h>

#defineSlZE12

main()

{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--;

}

}

三、1.选择题(20题)41.有以下程序段:intx=3;do{printf("%d",x-=2);}while(!(--x));其输出结果是______。

A.1B.30C.1-2D.死循环

42.以下不能正确定义二维数组的选项是

A.inta[2][2]={{1},{2)};

B.inta[][2]={1,2,3,4};

C.inta[2][2]={{1},2,3};

D.inta[2][]={{1,2},{3,4)};

43.若有定义语句:intk[2][3],*pk[3];,则以下语句中正确的是A.pk=k;B.pk[0]=&k[1][2];C.pk=k[0];D.pk[1]=k;

44.下面程序的输出结果是______。#include<stdio.h>main(){charch[7]={"12ab56"};inti,s=0;for(i=0;ch[i]>='0'&&ch[i]<='9';i+=2)s=10*s+ch[i]-'0';printf("%d\n",s);}

A.1B.1256C.12ab56D.1256

45.设计软件结构是在软件生命周期的()。

A.软件定义期B.软件开发期C.软件维护期D.以上3个都不是

46.判断字符串s1是否大于字符串s2,应该使用()。

A.if(strcmp(s1,s2)<0)

B.if(s1>s2)

C.if(strcmp(s2,s1)<0)

D.if(strcmp(s1,s2))

47.下面的程序在编泽时产生错误,其出错原因是()。#include<stdio.h>main(){int1_case;floatprintF;printf("请输入2个数:");scanf("%d%f",&1_case,&printF);printf("%d%f\n",1_case,printF);}

A.定义语句出错,1_case不能作为变量名

B.定义语句出错,printF不能用作用户自定义标识符

C.定义语句无错,scanf不能作为输入函数使用

D.定义语句无错,printf不能输出1_case的值

48.有以下程序main(){intc=35;printf("%d\n",c&c);}程序运行后的输出结果是______。

A.0B.70C.35D.1

49.读下面程序段(字符串内没有空格字符):printf("%d\n",strlen("ATS\n012\1\\"));其输出结果是()。

A.11B.10C.9D.8

50.下述程序的输出结果是()。#include<stdio.h>voidmain(){inta[20],*p[4];inti,k=0;for(i=0;i<20;i++)a[i]=i;for(i=0;i<4;i++)p[i]=&a[i*i+1];for(i=0;i<4;i++){k=k+*p[i];}printf("%d",k);}

A.10B.18C.6D.数组元素引用不合法,输出结果不定

51.以下能正确定义二维数组的是()。

A.inta[][3];

B.inta[][3]={2*3};

C.inta[][3]={};

D.inta[2][3]={{1},{2},{3,4}}:

52.下面结构体的定义语句中,不正确的是______。

A.structdate{intmonth;intday;intyear;}Structdatedatel;

B.stmctdate{intmonth;intday;intyear;}datel;

C.struct{intmonth;intday;intyear;}date1;

D.#defineDATEstmctdateDATE{intmonth;intday;intyear;}datel;

53.有以下程序:#include<stdio.h>#include<string.h>main(){charp[]={'a','b','c'],q[10]={'a','h','c'}prinff("%d%d\n",strlen(p),strlen(q));以下叙述中正确的是()。

A.在给p和q数组赋初值时,系统会自动添加字符串结束符,故输出的长度都为3

B.由于P数组中没有字符串结束符,长度不能确定;q数组中字符串长度为3

C.由于q数组中没有字符串结束符,长度不能确定;p数组中字符长度为3

D.由于p和q数组中没有字符串结束符,故长度都不能确定

54.设有如下程序:#include"string.h"main(){staticchars1[20],s2[20];scanf("%s",s1);scanf("%s",s2);if(strcmp(s1,s2))printf("@");elseprintf("$");printf("%d\n",strlen(strcat(s1,s2)));}如果从键盘上输入name<回车>name1<回车>,则程序运行后的输出结果是()

A.$8B.@10C.$9D.@9

55.下列所述中,是软件调试技术的是()。

A.错误推断B.集成测试C.回溯法D.边界值分析

56.若有如下程序段,其中s、a、b、c均已定义为整型变量,且a、c均已赋值(c大于0)s=a;for(b=1;b<=c;b++)s=s+1;则与上述程序段功能等价的赋值语句是()。

A.s=a+b;B.s=a+c;C.s=s+c;D.s=b+c;

57.软件工程的理论和技术性研究的内容主要包括软件开发技术和()。

A.消除软件危机B.软件工程管理C.程序设计自动化D.实现软件可重用

58.有以下程序

#include<stdio.h>

main()

{inti,j,m=55;

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

for(j=3;j<=i;j++)m=m%j;

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

}

程序的运行结果是

A.0B.1C.2D.3

59.有定义语句:chars[10];,若要从终端给s输入5个字符,错误的输入语句是

A.gets(&s[0]);

B.scanf("%s",s+1);

C.gets(s);

D.scanf("%s",s[1]);

60.若有如下说明,则______的叙述是正确的。structst{inta;intb[2];}a;

A.结构体变量a与结构体成员a同名,定义是非法的

B.程序只在执行到该定义时才为结构体st分配存储单元

C.程序运行时为结构体st分配6个字节存储单元

D.类型名structst可以通过extern关键字提前引用(即引用在前,说明在后)

四、选择题(20题)61.

62.结构化分析方法是面向()的自顶向下、逐步求精进行需求分析的方法

A.对象B.数据结构C.数据流D.目标

63.

64.

65.若有定义和语句:inta,b;scanf("%d,%d",&a,&b);以下选项中的输人数据,不能把值3赋给变量a、5赋给变量b的是()。

A.3,5,

B.3,5,4

C.3,5

D.35

66.C语言结构体类型变量在程序执行期间,()。

A.所有成员一直驻留在内存中B.没有成员驻留在内存中C.部分成员驻留在内存中D.只有一个成员驻留在内存中

67.

68.语句“printf(”a\bhow\’are\’y\\\bou\n”);”的输出结果是()。A.A.a\bhow\'are\'y\\bou

B.a\bhow\’are\’y\bou

C.how'are'you

D.ahow'are'y\bou

69.若调用fputc函数输出字符成功,则其返回值是()。

A.EOFB.1C.0D.输出的字符

70.

71.

72.

73.(75)下列不属于结构化分析的常用工具的是()

A.数据流图

B.数据字典

C.判定树

D.PAD图

74.若有下面的程序段

#include"stdio.h"

main()

{inti=6;

while(i--)

printf("%d",--i);

printf("\n");

}

那么程序的输出结果为

A.531B.420

C.654321D.死循环

75.若变量x、y已正确定义并赋值,以下符合C语言语法的表达式是()。

A.X+1=yB.++X.Y=X一一C.X=X+10=X+YD.double(X)/10

76.

有下列程序:

intfun(intn)

{if(n==1)}return1;

else

return(n+fun(n-1));

}

main

{intx;

scanf("%d",&x);x=fun(x);printf("%d\n",x);

)

执行程序时,给变量x输入10,程序的输出结果是()。

A.55B.54C.65D.45

77.(33)分布式数据库系统不具有的特点是______。

A.分布式

B.数据冗余

C.数据分布性和逻辑整体性

D.位置透明性和复制透明性

78.下列叙述中正确的是()。

A.软件交付使用后还需要进行维护

B.软件一旦交付使用就不需要再进行维护

C.软件交付使用后其生命周期就结束

D.软件维护是指修复程序中被破坏的指令

79.(23)在深度为5的满二叉树中,叶子结点的个数为______。

A.32

B.31

C.16

D.15

80.

对两个数组a和b进行下列初始化:

charm[]="1234567";

charn[]={1,2,3,4,5,6,7};

则下列叙述正确的是()。

A.数组m与数组n完全相同B.数组m与数组n长度相同C.数组m比数组n长1D.数组m与数组n中都存放字符串

五、程序改错题(1题)81.下列给定程序中,函数fun()的功能是:将str所指字符串中的字母转换为按字母序列的后续字母(Z转换A,z转换a),其他字符不变。

请修改函数fun()中的错误,得出正确的结果。

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

试题程序:

六、程序设计题(1题)82.编写函数fun(),其功能是:求出1~1000中能被7或11整除,但不能同时被7和ll整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。注意:部分源程序给出如下。请勿改动main()函数和其他函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。试题程序:

参考答案

1.B

2.B本题考查strlen函数和转移字符,strlen函数的功能是求字符串的长度,在本题中有“\”,C语言中“\”是转义字符,在计算长度时会将转义符以及后面的第一个字符作为1个长度进行计算,所以答

3.B

4.B

5.D解析:C语言中++运算符的对象可以是整型、实型和字符型,但不可是常量,本题中D为常量。

6.A

7.C解析:本题中,“printf('%2d,%2d\\n',x,y)”表示以逗号隔开输出两个十进制整数,每个整数域宽是2。而在C语言中规定:当域宽小于实际宽度时域宽不起作用,按实际宽度输出,因此最后的输出值为102和10(y的初值012表示八进制整数12,等于十进制的10)。所以,4个选项中选项C符合题意。

8.C

9.A解析:本题考查ifelse语句。第1个if语句,先判断条件,发现a<b条件成立,执行下列的语句;第2个if语句,先判断条件,发现b!=3条件成立,执行下列的语句:第3个if语句,先判断条件,c=5,则!c条件不成立,执行与其配对的else语句:第4个if语句,先判断条件,d=0,条件不成立,则x=-1,结束循环。

10.C

11.C解析:计算机语言分为低级语言和高级语言,C语言属于高级语言,但并非比其他语言高级,选项A)错误;除了机器语言外,其他各种语言都必须编译成能被计算机识别的机器代码才能执行,选项B)错误;C语言出现于1972年至1973年,并不是出现最晚的语言,选项D)错误。

12.B解析:本题考查的是外部变量的应用。因为程序的初始inta=4;语句定义了外部变量a,在以后的执行过程中,当i=0时,调用f(0)函数,执行的语句是else{inta=7;t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=7,返回值语句returnt+a++;处,外部变量a起作用,返回值为7+5=12:当i=1时,调用f(1)函数,执行的是语句else{inta=6:t+=a++;},此处程序中又定义了变量a,所以原来定义的外部变量在此不起作用,得到t=6,返回值语句

13.C解析:在关系模型数据库中,基本结构是二维表,这种二维表称为关系。关系的列称为属性,一个具有N个属性的关系称为N元关系。注意:各种关系查询语言与过程性语言和非过程性语言的关系,过程性语言的特点。

14.A函数fgete()从文件读入一个字符到指定变量。函数fputc()将指定字符写入审文件中,函数fprinff(),fwrite()均是写入文件操作函数。因此选项B,c。D错误。答案为A选项。

15.B所有的C程序都必须经过编译链接无误之后才能运行。在运行过程中,由计算机完成程序中的所有运算。由于计算机只能识别二进制,所以所有的运算都以二进制方式进行,而不是十进制。

16.C转义字符中,八进制的表示形式为\\ddd,但是八进制中不能包含数字8,所以C选项不合法。故本题答案为C选项。

17.C

18.D

19.C

20.D解析:C语言中只有字符串常量而没有字符串变量,故选项A不正确:字符串比较大小是以第1个不相同字符的大小为标准的,跟长度没有关系,故选项B不正确:字符串比较大小除了使用库函数stremp()以外,就只能靠自己写代码来实现了,而不能通过关系运算符来比较大小,因为字符串在表达式中相当于coostchar*,即常字符指针,代表的是字符串的首地址,关系运算符会将两个字符串的首地址值比较大小,这是毫无意义的。所以选项C也不正确。空串的长度为0,而以空格打头的字符串的长度至少为1,故选项D正确,本题应该选择D。

21.③数组可以在定义时整体赋初值,但不能在赋值语句中整体赋初值。因此,可将第三行改为charstr[14]={"IloveChina!"};

22.a*b*c*d*a*b*c*d*解析:程序中的变量i用于存放字符串str的长度,执行while语句,通过分析可知,字符串第2*i项的值可由第i项的值得到;第2*i-1项直接赋值为。号,i减1,如此反复直到不满足i>0的条件时,输出运行后的字符串。

23.101,0解析:与运算两边的语句必须同时为真时,结果才为真,当执行完if((++a<0)&&!(b--<=0))时,a,b的值已经发生了变化。

24.EXCHANGE(zxy)或EXCHANGE(zxy);EXCHANGE(z,x,y)或EXCHANGE(z,x,y);

25.1010解析:y=sub(sub(sub(x)))=sub(sub(127))=sub(19)=10。

26.stringbis:Ilovechina!

27.n(n-1)/2

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

29.2121解析:外层switch语句后面括号里的x的值为1,所以执行从case1:后面的语句开始执行,而case1:后面语句也为switch语句,这个switch语句后面括号里的y的值为0,所以从该switch语句里的case0:开始执行即执行a++,这时a的值变为1,执行完毕,遇到break语句,退出内层switch语句,又回到外层switch语句,继续执行case1:下面的语句即case2:执行完毕后,a自加1变为2,b自加1变1。所以最后输出的a和b的值为21。

30.输出输出解析:测试用例曲测试输入数据(输入值集)和与之对应的预期输出结果(输出值集)两部分组成。

31.2

32.malloc(11)malloc函数的格式是void*(或char*)malloc(size),size表示应分配的存储区,此题要分配11字节的单元,把11代入即可。

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

34.strlen(str)-1strlen(str)-1解析:程序中的for循环就是用来完成串反序的,所以应该对循环的条件进行初始化,所以在[18]应该填入strlen(str)-1。注意,在串反序的时候,不应该把串结束符‘\\0’也反序。

35.fnamefpfname\r\nfp解析:fopen()函数实现打开文件的功能,通常的调用方式为:FILE*fp;fp=fopen(文件名,使用文件方式),因此,第一个横线处要求填写要打开文件的名字fname。fprintf()函数的—般调用方式为:fprintf(文件指针,格式字符串,输出表列),所以第二个横线处应填写fp。

36.x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;x.link=&z;或x.link=y.link;或x.link=x.link->link;或x.link=*(x.link).link;解析:链表中结点的删除,要删除结点y,只需要让结点x的指针域指向y结点的指针域所指向的后续结点就可,因此只需把结点z的地址赋给x的指针域就可以了,即让结点x的指针域指向结点z。而结点z的地址保存在结点y的指针域中,因此只需把结点y的指针域赋值给结点x的指针域即可。

37.先进后出先进后出解析:队列和栈都是线性结构,但是不同之处在于队列的操作顺序是先进先出,而栈的操作顺序是先进后出。

38.数据库系统数据库系统

39.1616解析:首先将程序中宏替换掉,先把“MCRA(i)”替换成“2*i”,然后把“MCRA(j,2*i)”替换成“2*2*j+2*i”,经计算该表达式的值为16,所以最后输出为16。

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

41.C解析:在程序中,首先定义了一个整型变量x并赋初值为3,接着执行do-while循环。在do-while循环中,先执行循环体,即执行printf语句(输出表达式X-=2;的值,这个表达式相当于x=x-2=3-2=1,所以第一次输出值为1),接着判断while后面括号里的条件表达式是否为真。这个表达式!(--X)等价于!(0)为真(这里--X是先自减,再进行判断,此时x自减1,值为0),继续执行循环体,即执行printf语句(输出表达式x-=2;的值,这个表达式相当于x=x-2=0-2=-2,所以第二次输出值为-2),接着判断while后面括号里的条件表达式是否为真,显然,表达式!(--x)等价于(!(-3))为假,退出循环,所以其最终的输出结果为1-2。所以,4个选项中选项C符合题意。

42.D解析:本题考核的知识点是二维数组的定义和初始化。在定义中如果对所有元素赋初值,其第1维的长度可以省略,故选项B正确;二维数组初始化也可以只对每行或前若干个行的前若干个元素赋初值,故选项A和选项C正确;在二维数组定义时不能省略第二维的长度,故选项D错误。所以,4个选项中选项D符合题意。

43.B答案B

解析:*pk[3]表示的是一个共有3个元素的一维指针数组。pk[0]=&k=[1][2]表示把二维数组中下标为k[1][2]的值赋予pk[0],也就是pk[0]指向k[1][2]这个元素。

44.A解析:for语句中的条件表达式决定了循环体只执行一次。因此s=0*10+1,于是输出结果为1。

45.BB。【解析】设计软件结构,是在软件概要设计阶段进行的,而概要设计属于软件开发期。

46.C解析:本题考查字符串比较函数strcmp()。调用形式:strcmp(s1,s2),其中s1、s2分别是字符串存储区的首地址。函数功能:比较字符串str1和str2,当str1<str2时,返回值为负数;当str1=str2时,返回0;当str1>str2,返回值为正数(注意:不能使用关系运算符比较两个字符串的大小)。

47.A解析:C语言变量名可由数字,字母,下划线构成,但首字符不能为数字。

48.C解析:位与运算是将两个运算分量看作两个二进制数,然后对两个二进制数的相应位进行与运算,若同时为1则结果相应位为1,否则结果相应位为0。因此,当两个运算分量相同时,它们的相应位肯定也相同,即不同为1就同为0。所以得到的结果和运算分量也相同。所以,4个选项中选项C)符合题意。

49.C解析:本题考查字符串的长度。printf的功能是输出'ATS\\n012\\1\\\\'这个字符串的长度,在字符串中“\\\\”代表一个“\\”,仅为一个字符,而“\\1”代表数字1,占一个字符,“\\n”是回车换行符,也占一个字符,加上A、T、S、0、1、2,一共是9个字符。

50.B解析:第一个for循环,给数组a的20个元素分别赋值0~19;第二个for循环,给数组p赋值,p[0]=a[1]=1,p[1]=a[2]=2,p[2]=a[5]=5,p[3]=a[10]=10;第三个for循环,将数组p中元素的值进行累加,k=1+2+5+10=18。

51.B解析:(1)二维数组的定义

二维数组的定义方式为:类型说明符数组名[常量表达式][常量表达式]。

二维数组在内存中是按行优先的顺序存放的,即先存放第一行的元素,再存放第二行的元素,依次类推。

(2)二维数组元素的引用

二维数组元素的表示形式为:数组名[下标][下标],下标可以是整型常量或整型表达式其范围为:0~(常量表达式-1)。

(3)二维数组的初始化

可以用以下方法对二维数组元素初始化:

①分行给二维数组赋初值

例如:inta[2][2]={{1,2},{3,4}};

这种赋值方式比较直观,把第1个大括号内的数据赋给第1行的元素,第2个大括号内的数据赋给第2行的元素,即按行赋值。

②可以将所有数据写在一个大括号内,按数组排列的顺序对各个元素赋初值。

③可以对部分元素赋初值,没有初始化的元素值为0。

④如果对全部数组元素赋初值,则定义数组时对第一维的长度可以不指定,但第二维的长度不能省略。

52.A

53.B解析:strlen函数用于计算以,'\\0'结束的字符串的长度,函数值为字符串的实际长度,长度中不包括,'\\0'。q数组定义的数组大小为10,而初始化时字符串只占用了前3个存储单元,其余存储单元系统自动加'\\0',故数组q的长度为3;而p数组定义时没有指定大小,其大小根据初始化所赋值确定为3,没有字符串结束符,故字符串的长度不能确定。

54.D

55.C解析:软件调试技术包括强行排错法、回溯法和原因排除法。边界值分析、错误推断都是黑盒测试的方法。

56.B解析:本题考核的知识点是for循环次数的计算.本程序中for循环的次数为c-1+1共循环了c次,而每循环一次s的值加1,所以s的值为s+c.而最开始s的值为a,故4个选项中选项B符合题意.

57.B软件工程的目标是,在给定的成本、进度的前提下,开发出具有有效性、可靠性、可理解性、可维护性、可重用性、可适应性、可移植性、可追踪性和可互操作性且满足用户需求的产品。基于这一目标,软件工程的理论和技术性研究的内容主要包括:软件开发技术和软件工程管理。

58.B解析:本题考查循环语句的嵌套以及条件的判断问题。在程序中,内层循环判断条件为'\ue008j<=i\ue009',而j的初值为3,故当i的值为1和2时,内层循环体都不会被执行。只有当i和j都等于3时才会执行一次。m的值为55对3取模,计算结果为1。

59.D解析:在格式输入中,要求给出的是编译的地址,而D)答案中给出的s[1]是一个值的表达式。

60.D解析:结构体变量a与结构体成员a同名是合法的定义,引用成员a的方法是a.a,变量a处于不同的“层次”上,系统完全能够分情。st是—个结构体名,不会为结构体名分配存储空间,应该是在运行时为结构体变量a分配6个字节的存储单元,故选项B和选项C错误。

61.Afwrite函数将数组a写入文件,写入两遍,读出后为选项A)的值,所以选择A)。

62.CC。【解析】结构化分析方法是面向数据流进行需求分析的方法,采用自顶向下、逐层分解,建立系统的处理流程,以数据流图和数据字典为主要工具,建立系统的逻辑模型。

63.A

64.B

65.C在输入3和5之间除逗号外不能有其他字符。

66.A解析:C语言结构体类型变量在程序执行期间所有成员一直驻留在内存中。

67.A

68.C“\\b”格式符表示退格,功能是将它后面的字母把它前面的字母覆盖,导致“\\b”格式符前面的字母不能输出;“\\'”格式符表示输出单引号字符;“\\\\”格式符表示输出反斜线字符。

69.Dfputc函数的一般调用形式为fputc(ch,fp),其中ch是要输出的字符,它可以是一个字符常量,也可以是一个字符变量,fp是文件指针变量。函数的作用是将字符(ch的值)输出到fp所指向的文件中。

温馨提示

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

最新文档

评论

0/150

提交评论