2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩66页未读 继续免费阅读

下载本文档

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

文档简介

2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下程序执行后sum的值是()。

A.15

B.14

C.不确定

D.0main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}

2.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数

3.

4.有以下程序:

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

A.357B.753C.369D.751

5.C语言中,要求参加运算的数必须是整数的运算符是()。

A./B.!C.%D.==

6.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

程序的运行结果是

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

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

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

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

7.下列表达式中,可以正确表示的关系是()。

A.(x>=1)10(x<=0)B.x>1‖x=0C.x>=1ORx<=0D.X>=1&&x<=0

8.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

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

10.设有定义语句:doublex=123.456;则语句printf(“%6.2f,%3.0f\n”,x,x);的输出结果是()。

A.123.46,123.0B.123.45,123C.123.46,123D.123.45,123.

11.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

12.若有如下程序:main(){inta=0,t=0;while(!a!=0)t+=a++;printf("%d,%d\n",t,A);}则程序运行后的输出结果是()

A.0,1B.1,0C.0,0D.1,1

13.有以下程序:main{inta[]=(2,4,6,8,10},y=0,x,*P;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n,y");}程序运行后的输出结果是()。A.10B.11C.14D.15

14.有以下程序:

执行后的结果是()。A.7B.3C.2D.0

15.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。

A.0B.4C.8D.6

16.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

17.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行出入与删除时,不需要移动表中的元素

D.以上三种说法都不催

18.

19.在数据流图(DFD)中,带有名字的箭头表示

A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

20.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。

A.11,11B.29,29C.26,29D.121,121

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

#include<string.h>

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]="abcdergh";

p=ss(str);

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

}

22.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

23.软件结构是以【】为基础而组成的一种控制层次结构。

24.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

25.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

26.以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序运行后的输出结果是

27.在宏定义#definePI3.14159中,用宏名PI代替一个______。

28.软件工程研究的内容主要包括:【】技术和软件工程管理。

29.如果调用fopen函数不成功,则函数返回【】;如果调用fclose函数不成功,则函数返回【】。

30.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

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

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

}

main()

{charstr[40];

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

}

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

main()

{

inti,n[]={0,0,0,0,0};

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

{

n[i]=n[i-1]*2+1;

printfi["%d",n[i]);

}

}

32.当调用函数时,实参是一个数组名,则向函数传递的是【】。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

34.软件生命周期包括8个阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。

35.#define命令出现在程序中函数的外面,宏名的有效范围为______。

36.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<n-i+1;j++)

{printf("%2c",ch);

[10];

}

[11];

}

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

main()

{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

}

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

}

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

main()

{unsignedshorta=65536;intb;

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

}

39.若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为()。

40.数据库理论中,数据的独立性一般可分为物理独立性和______。

三、1.选择题(20题)41.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______.

A.cedbaB.acbedC.decabD.deabc

42.有下列函数定义:intfun(doublea,doubleb){returna*b;}若下列选项中所用变量都己正确定义并赋值,错误的函数调用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

43.运行下面的程序,其输出结果为______。main(){pintf("%d,%d",5%-3,-5%3);}

A.2,-2B.-2,2C.-2,-2D.2,2

44.以下正确的函数头定义形式是()。

A.doublefun(intx,inty)

B.doublefun(intx;inty)

C.doublefun(intx,inty);

D.doublefun(intx,y);

45.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]++;for(i=l;i<5;i++)printf("%d",c[i]);printf("\n");}程序的运行结果是

A.1234B.2344C.4332D.1123

46.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.—个返回指向整型值指针的函数swap()

C.—个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

47.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*P=str[0];printf("%d\n",strlen(p+20));}程序运行后的输出结果是()。

A.0B.5C.7D.20

48.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c)}若运行时从键盘上输入987643210则上面程序的输出结果是______。

A.a=98,b=75,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000c=4321.000000

D.a=98,b=765.0,c=4321.000000

49.有以下程序:#include<stdio.h>main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是()。

A.6,1B.2,1C.6,0D.2,0

50.设变量均已正确定义,若要通过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<回车>20□Y<回车>

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

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

52.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

53.设x、y、t均为血型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

54.下列不属于算法特性的是

A.确定性B.可行性C.有输出D.无穷性

55.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

56.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

57.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

58.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

59.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

60.以下选项中不属于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

四、选择题(20题)61.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

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

fun(&a[3]);

}

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

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

62.

63.

64.设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

65.

66.

67.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法需要的内存空间

68.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

69.有以下程序

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

70.HTTP协议的内容协商消息头包括()。

i.内容协商消息头ii.缓存控制消息头

iii.条件控制消息头iv.服务器状态消息头

A.i和iiB.i、ii和iiiC.ii和iiiD.iii和iv

71.

72.下列程序的输出结果是()。

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}A.A.49B.36C.25D.64

73.

74.执行以下程序段后,T的值为

intT=’a’,x=12,y=5;

T=((x||y)&&(T>’A’));

A.1B.NULLC.-lD.0

75.

76.下列字符串不属于标识符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

77.以下叙述中不正确的是

A.预处理命令都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行

C.宏替换不占用运行时间,只占编译时间

D.以下定义是正确的:#definePI3.1415926;

78.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

79.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.A.(a<b)&&!c‖1

B.(!a==1)&&(!b==0)

C.a&&b

D.a||(b+b)&&(c-a)

80.在软件开发中,需求分析阶段产生的主要文档是()。

A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。

例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数proc(),对长度为9个字符的字符串,除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。注意:部分源程序给出如下。请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语句。试题程序:

参考答案

1.C解析:C语言中,如果对定义的变量没有赋初值,那么在后面使用时,变量的值是不确定的。所以,本程序中,没有对sum赋初值,它的值不确定。在执行了for循环语句后,sum的值也不确定的,所以,4个选项中选项C符合题意。

2.B解析::串的长度定义为串中字符的数目。所以B)为正确答案。C)答案不正确,因为串中可以含有相同的字符;A)答案不正确,因为串中可能含有相同的字母,而且也可能含有数字等其他非字母字符;D)答案不正确,因为空格也是一种字符,在计算长度时理应将其计算在内。

3.D

4.A本题考查的是for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第l行的第1个元素起,直到第l行满,接着代表第2行、第3行……的每一个元素。程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循环中输出的数分别是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后输出的结果为357。故应该选择A)。

5.C

6.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

7.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是'‖'。

8.C

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

10.C对于double类型的实数,可以在printf函数的格式化字符串中使用”n1.n2”的形式来指定输出宽度(n1和n2分别代表一个整常数)。其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位的位数,n2也称为精度。当输出数据的小数位多于n2位时,截取右边多余的小数,并对截取部分的第1位小数做四舍五入处理;当输出数据的小数位少于n2时,在小数的最右边补0,使得输出数据的小数部分宽度为n2;如果指定“n1.0”格式,则不输出小数点和小数部分。题干中,%6.2f表示输出6位宽度,2位小数,所以被截取的小数位为0.006,进行四舍五入,结果为123.46;%3.0f表示输出3位宽度,0位小数,结果为123。故本题答案为C选项。

11.A

12.A

13.C由题目的语句P=&a[1]可知,P指向a数组中下标为1的元素“4”,又因为P为指针变量,所以P[x]与*(p+x)等价,因而在for循环语句中,第一次循环P[1]指向a数组中下标为2的元素“6”,第二次循环p[2]指向a数组中下标为3的元素“8”,所以y=6+8=14,因而选项C为正确答案。

14.C调用函数fun(7)时,由于x的值为7,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(5);

调用函数fun(5)时,由于x的值为5,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(3);调用函数fun(3)时,由于X的值为3,执行语句“p=x-fun(x-2);”,相当于执行p=7-fun(1);调用函数fun(1)时,由于x的值为1,执行语句“return(3);”,函数的返回值为3。

因此函数调用fun(7)等价于7-(5-fun(3)),即7-(5-(3-fun(1))),即7-(5-(3-3)),所以函数fun(7)的返回值为2。

15.A

16.Breturn语句又称为返回语句。该语句的格式如下:“return;”和“return(<表达式>);”。其中,return是关键字。该语句有两种格式:不带返回值格式和带返回值格式。该语句用在被调用函数中,在被调用函数中执行到该语句时,将结束对被调用函数的执行,并把控制权返回给调用函数,继续执行调用函数后边的语句。在带有返回值的情况下,将return语句所带的表达武的值返回给调用函数,作为被调用函数的值。在被调用函数中,可以用return语句,也可以不用return语句。如果要求被调用函数有返回值,则一定要用return语句,采用return(<表达式>);格式。如果被调用函数不需要返回值,并且当被调用函数的所有语句执行完后进行返回,则被调用函数可以不用return语句。

17.C

试题2分析

结点的存储顺序和逻辑顺序不一定一致,存储空间也不一定连续。插入和删除元素的时候,不需要移动表中的元素。

试题2答案

C

18.A

19.D解析:数据流相当于一条管道,并有一级数据(信息)流经它。在数据流图中,用标有名字的箭头表示数据流。数据流可以从加工流向加工,也可以从加工流向文件或从文件流向加工,并且可以从外部实体流向系统或从系统流向外部实体。

20.B#define命令是C语言中的一个宏定义命令,为了区分其他标识符,标识符一般使用大写。将标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。宏定义不进行其他操作,仅仅只是替换标识符。题目中的S(k+j+2)=k+j+2*k+j+2/k+j+2”,经计算可得29。“S(j+k+2)=j+k+2*k+j+2/j+k+2”,经计算可得29。因此输出为29,29。故本题答案为B选项。

21.bcdefghabcdefgha解析:在本题定义的ss()函数中首先定义了一个指针p和一个字符变量t,然后让p指向参数指针s的下一个位置s+1,并让t保存s位置的字符。然后使用一个while循环将p指向的内容赋给它前面一个位置,即将参数s所指的字符串从第2个字符开始整体往前移动一位。循环结束时,p指向原s串的结束标志处,所以让*(p-1)=t;即是将原s串的第1个字符复制到s串的最后一个位置。整个函数实现的是让一个字符串循环左移一位。故主函数中最后输出的字符串是'bcdefgha'。

22.gaga解析:考查了用字符指针处理字符串的方法。用字符指针处理字符串,首先要使指针指向这个字符串,即题中的ptr1=a和ptr2=b,然后就是通过指针的移动可以引用到字符串中的每一个字符。题中的*(ptr1+k)是使指针ptr1向后移动k个位置,然后取出指向的字符。

23.模块模块

24.黑箱或黑盒黑箱或黑盒解析:黑箱测试是根据程序规格说明所规定的功能来设计测试用例,它不考虑程序的内部结构和处理过程。常用的黑箱测试技术分为等价类划分、边界分析、错误猜测以及因果图等。

25.调试调试

26.A

27.字符串字符串解析:本题考查字符替换格式:#define标识符字符串。

28.软件开发

29.NULL或0EOF或-1NULL或0\r\nEOF或-1解析:如果fopen()函数调用不成功,则返回一个空指针值NULL(0);如果fclose()函数调用不成功,则返回EOF(-1)。所以本题的两个空应分别填NULL和EOF。

30.a*b*c*d*a*b*c*d*解析:字符处理函数strlen()测试字符串常量的长度,不包括‘\\0’在内。因此,函数insert()实现了将字符数组中每个非‘\\0’的字符后插入字符‘*’的功能。故输出结果是a*b*c*d*。

31.1371513715解析:本题中,定义了个整型数组n并初始化,在for循环语句中,再对数组中各元素重新赋值。循环执行第一次时,n[1]=n[0]*2+1=0+1=1,printf函数输出1,然后i的值加1,比较i<=4成立,继续执行循环体语句,相应输出3、7、15,直至i<=4不成立,退出循环。所以最后输出为1、3、7、15。

32.数组的首地址数组的首地址解析:在函数中,可以通过指针变量来引用调用函数中对应的数组元素,此操作是通过传递数组的首地址来实现的。

33.246246解析:本题考查静态(static)局部变量的使用。fun函数中的静态局部变量a所占用的存储单元在程序运行过程中始终不释放,即当下一次调用该函数时,该变量仍然保留上一次函数调用结束时已有的值,3次调用fun函数分别得到2,4,6。

34.软件开发软件开发解析:软件生命周期可以分为3个时期:软件定义期,包括问题定义、可行性研究和需求分析3个阶段;软件开发期,包括系统设计、详细设计、编码和测试4个阶段;软件维护期,即运行维护阶段。编码和测试属于软件开发阶段。

35.从定义到本源文件结束从定义到本源文件结束解析:C语言规定,宏名的有效范围为从定义宏到本源程序结束。

36.C语言允许字符数据与整数进行直接的算术运算,故输出大写字母A开始的连续字符,可通过白加运算ch++完成。三角形字符阵列第i行的字符个数为n-i+1,在每行结尾以回车字符‘\\n’换行。\r\n\r\n

37.9292解析:本题的主函数中首先定义了一个4行4列的二维数组,然后执行一个while循环,该循环中又嵌套了一个do-while循环。先看while循环,该循环通过i++的值来判断是否结束循环,当i++的值为4的时候结束循环,当i=O时,执行while的循环体,显然if语句条件不满足不执行,接着让j=0,然后执行do-while循环体,不难看出do-while循环的功能是将第i+1行的所有元素加起来,所以这时s的值为s=a[1][0]+a[1][1]+a[1][2]+a[1][3]=26,当i=1时,i+1=2,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环;当i=2时,i加1变为3,把第3+1行的所有元素的值加到s上,此时s=s+a[2][0]+a[2][1]+a[2][2]+a[2][3]=92,当i=3时,3+1=4,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环,当i=3时,if后面括号里的表达式的值为真执行后面的continue语句,结束该次循环当i=4时while循环结束,所以最后输出的s的值为92。

38.00解析:对于一个unsignedshort来说,它能取的最大值是65535。这里给a赋值65536,已经超出了它的取值范围,这样它的高位将被截掉,只把低位赋给它(全零)。所以a的值实际为0。

39.11解析:(int)(x/5)=3,3%2=1。

40.逻辑独立性逻辑独立性解析:数据的独立性一般可分为物理独立性和逻辑独立性。

41.A解析:由二叉树后序遍历序列和中序遍历序列可以唯一确定一棵二叉树。二叉树BT的后序遍历序列为dabec,故BT的根结点为c(后序遍历序列的最后一个结点为树的根结点):而BT的中序遍历序列是debac,即遍历序列中最后一个结点为根结点,说明BT的右子树为空。由BT的后序遍历序列和中序遍历序列可知BT左子树的后序遍历序列和中序遍历序列分别为dabe和deba,因此BT左子树的根结点是e。再由中序遍历序列可知其左子树为d,右子树为ba。因此BT的前序遍历序列为cedba。

42.C解析:本题考查函数调用时的参数传递。C项中第一个参数的表达式不正确,因此不能得到正确的结果。

43.A解析:在C中,参与%运算的两个参数都必须为整形,在大多数C编译器下(包括TurboC)都采用了“向0靠近”的原则,即当两个运算量有一个为负数时,余数的符号由被除数的符号决定。故本题答案为A。

44.A解析:函数的形式参数之间以逗号“,”隔开,且每个变量均需说明其数据类型,圆括号后面不能有分号。只有选项A)符合要求。

45.C解析:在for(i=0;i<12;i++)c[s[i]]++中,数组元素s[i]的值作为数组c的下标,当退出循环时,数组c的4个元素的值分别为4、3、3、2。

46.B解析:—个函数可以带回—个整型值、字符值、实型值等,但也可以带回指针型数据,即地址。本题的定义中,包括括号和*号,由于()优先级高于*。故它是—个返回整型指针的函数。

47.C解析:本题考查字符数组和指针的运用。strlen是测试字符串长度的函数,函数的值为字符串的实际长度,不包括\'/0\'在内。str[][20]={'Hello','Beijing'}定义了一个2行20列的数组,数组的首地址是&str[0][0],p+20是从首地址向后移了20位,指针指向了str[1][0]处,此时求字符串的长度,是从str[1][0]开始的,即“Beijing”的长度,所以输出结果是7。

48.C解析:scanf()把用户从键盘录入的数字的第1、2位存入整型变量a;把第3、4、5位存入单精度实型变量b,把第6、7、8、9位存入单精度实型变量c,用户录入的第10位被scanf()遗弃。这时变量a、b、c的值分别为:98、765.000000、4321.000000。

49.B解析:“/”表示整除,“%”表示求余。程序中表达式a=d/10%9的值为25/10%9=2,则b=a&&(-1)=2&&(-1)=1(注意:-1表示真,0表示假),所以a,b的值分别为2,1。

50.D解析:本题中,scanf函数的格式控制没有空格,所以,对于选项A)、B)、C),输入的第一个空格会作为字符赋值给变量c1,而不会被解释成分隔符。

51.CC.【解析】线性表是一种线性结构,由n(n≥0)个元素组成,所以线性表可以是空表。但是在线性表中,第一个结点没有前件,最后一个结点没有后件,其他结点有且只有一个前件和后件,所以选项C.是错误的。

52.C解析:在fun函数中,while循环的功能是:逐个取字符数组s的字符判断其是否是数字。若是则将其作为个位数字保存到变量n中,n的原数据的各个数位将相应左移一个10进制位。当指针s指向数组的第3位时,循环条件不成立,循环结束,返回n的值,输出n的值为61。

53.C解析:C语言中在做逻辑或运算时,自左向右判断各个参加或运算的表达式,一旦运算到某式的值为非零时,表明整个表达式一定为真,余下的语句则不再进行运算。本题中,++x的值为真,则++y并没有进行运算,所以y值不变。

54.D解析:一个算法必须具有5个特性,即有穷性、确定性、可行性、有输入、有输出。其中有穷性是指算法必须总是在执行完有穷步之后结束,而且每步都在有穷时间内完成。

55.A队列是一种特殊的线性表,只允许在表的一端插八元素,在表的另一端删除元素,插入元素的一端叫“队尾”,删除元素的一端叫“队头”。先插入的元素先被删除,是按“先进先出”的原则组织数据的。

【知识拓展】“队列”和“栈”都是一种特殊的线性表。之所以称之为“队列”,其形式如“排队”。要讲究“先来后到”,先进先出,后进后出。

56.B解析:采用结构化编程方法的好处主要在于:一是便于控制、降低程序的复杂性,因此便于编写程序。二是程序清晰易读,可理解性好。因此,结构化程序设计主要强调的是程序的易读性,而不是程序的规模、程序的执行效率和程序的可移植性。

57.B解析:外循环的循环变量i从0递增到1会循环2次,内循环的循环变量j从0递增到3会循环4次。但是内循环中有一条if语句,每当j%2为真,即j为奇数时会跳过下面的x++;语句,所以4次内循环只有2次执行到x++;语句,再加上外循环中包含的2条x++语句,所以每次外循环会使x自增4次,2次外循环下来x的值为8。故应该选择B。

58.C解析:选项A中定义了一个字符型数组并赋初值,故选项A正确;选项B定义了一个字符型数组t并初始化,然后定义了一个指针变量s并让它指向t,故选项B正确;选项C先定义?一个长度为10的字符型数组,然后在给它赋值,这时应该分别给数组中的每个元素赋值,故选项C不正确;选项D中先定义了一个长度为10的字符型数组s,然后通过字符串拷贝函数将字符串“abedefs”赋值给它,选项D正确。所以,4个选项中选项C符合题意。

59.C在C语言中,二维数组的名字表示的是二维数组的地址,表达式*(W+1)表示的是二维数组的第一行的第二个元素。在其前面再加上*(*(w+1))就是错误的表达式。

60.B解析:在C语言程序中,用单引号把一个字符或反斜线后跟一个特定的字符括起来表示一个字符常量。选项A)、C)和D)为正确的字符常量,而选项B)是用双引号括起来的字符,表示一个字符串常量。

61.B\n由题可知,fun(&a[3])是将&a[3]作为参数,而fun(int*p)后执行的语句为p[5],由数组a可知输出的为6。

\n

62.D

63.B

64.A解析:因为“intk=0;”,所以B)、C)、D)三个选项的表达式的值都等于1,而A)选项的表达式的值等于0。这是因为“k++”这个表达式先进行取k值的运算,然后是k值自加1。故本题答案为A)。

65.C

66.D

67.D解析:算法的复杂度主要包括算法的时间复杂度和算法的空间复杂度。所谓算法的时间复杂度是指执行算法所需要的计算工作量;算法的空间复杂度一般是指执行这个算法所需要的内存空间。

68.A软件危机主要表现在:软件需求的增长得不到满足;软件开发成本和进度无法控制;软件质量难以保证;软件不可维护或维护程度非常低;软件的成本不断提高;软件开发生产率的提高赶不上硬件的发展和应用需求的增长。所以选择A。

69.A本题主要考查函数的递归调用。在做递归调用函数类型的题目时,我们首先要找到函数的出口和递归结束的条件。

在本题中,程序首先定义了一个fun函数,函数的形参是一个整型变量n,从后面的程序可以看出,该函数是一个递归函数。在函数体中,首先执行条件判断语句,如果条件结果为真,说明变量n为1,此时返回1,这是递归函数的出口;否则返回函数的递归调用。

在主函数中,定义一个变量x,并试图通过键盘输入的方式为变量x赋初值,然后调用fun函数,并用x作为其形参,用x保存最后的运行结果输出。

变量x的初值为10,从上面的分析我们知道,递归调用的出口是n=1,而每递归一次n的值减1,因此,函数fun递归调用了9次,其运算相当于10+9+8+7+6+5+4+3+2+1=55。因此,程序最终的输出结果是55。

70.B

71.A

72.C本题考查for循环及if语句。当执行到第一个满足(i*i>一20)&&(i*i<=100)这个条件的i出现时,break跳出循环,执行下列的printf语句。

73.D

74.A本题考查逻辑运算符的使用及对ASCII码的了解。“&&”为逻辑与运算符,该运算符的特点是当其左右两边对象都为真时,用该运算符连接构成的逻辑表达式为真。“||”为逻辑或运算符,该运算符只要左右两边的对象有一个为真,则整个表达式就为真。在ASCII码中,26个英文小写字母a~z的码值为97~122,26个英文大写字母A~Z的码值为65~90。题中“&&”左边为一个逻辑或运算表达式,因为x=12,y=5,所以该或运算的值为1,右边为一个关系表达式,此时T=’a’,由于’a’的ASCII码值大于’A’的码值,所以该关系表达式的值为1。“&&”连接的左右两边的表达式的值都为1,所以整个表达式的值为1,T=1。

75.D

76.D

77.D在C语言程序中,会出现以“#”号开头的预处理命令,如包含命令#include、宏定义命令#define等。在源程序中,这些命令都放在函数之外,而且一般都放在源文件的前面,它们称为预处理部分。

所谓预处理,是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所做的工作。预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分做处理,处理完毕自动编译源程序。

在C语言中,宏是一种预处理命令,在定义宏时,不需要以语句标识符“;”来表示宏定义结束,而是另起一行表示结束。

综合上面的分析,可以知道本题选项中,A、B、C的说法都正确,只有D的宏定义不正确,因此本题的正确答案选D。

78.C数组的下标是从0开始的,A中越界,行下标和列下标都不能越界;B中,虽然是个地址,但是也同样越界了;选项C中表示的是第一个的首地址;选项D表示的为其元素的值,并不是地址。

79.B对于这种问题可以用真假来判断,当数值不为0时都一律为真,只有是0才是假

A:(a<b)为真,!c为假,所以(真&&假)为假,后来(假‖真)为真,不是0<b)为真,!c为假,所以(真&&假)为假,后来(假||真)为真,不是0B:(真&&假)为假,是0

C:(真&&真)为真,不是0

D:(真||真)为真,c-a为真,(真&&真)为真,不是0</b)为真,!c为假,所以(真&&假)为假,后来(假||真)为真,不是0

80.BA项错误,可行性分析阶段产生可行性分析报告。C项错误,概要设计说明书是总体设计阶段产生的文档。D项错误,集成测试计划是在概要设计阶段编写的文档。B项正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。81.

(1)intk=0;

(2)whffe(+pll+q)

【考点分析】

本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。

【解题思路】

(1)变量k存放数组c的下标,因此应初始化为0。

(2)while循环语句的循环条件是判断两个字符串是否到达结尾。

82.

【解析】按照题目中要求,求除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。首先需要判断除首、尾字符之外,其余7个字符ASCⅡ码值的大小,将不符合顺序要求的字符互换。

2022年江西省宜春市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.以下程序执行后sum的值是()。

A.15

B.14

C.不确定

D.0main(){inti,sum;for(i=1;i<6;i++)sum+=i;printf("%d\n",sum);}

2.串的长度是指()。

A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数

3.

4.有以下程序:

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

A.357B.753C.369D.751

5.C语言中,要求参加运算的数必须是整数的运算符是()。

A./B.!C.%D.==

6.有以下程序

#include<stdio.h>

voidfun(int*a,intn)/*fun函数的功能是将a所指数组元素从大到小排序*/

{intt,i,j;

for(i=0;i<n-1;j++)

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

if(a[i]<a[j]){t=a[i];a[i]=a[j];a[j]=t;}

}

main()

{intc[10]={1,2,3,4,5,6,7,8,9,0},i;

fun(c+4,6);

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

printf("\n");

}

程序的运行结果是

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

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

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

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

7.下列表达式中,可以正确表示的关系是()。

A.(x>=1)10(x<=0)B.x>1‖x=0C.x>=1ORx<=0D.X>=1&&x<=0

8.下面的哪个保留字不能作为函数的返回类型()。

A.voidB.intC.newD.long

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

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

10.设有定义语句:doublex=123.456;则语句printf(“%6.2f,%3.0f\n”,x,x);的输出结果是()。

A.123.46,123.0B.123.45,123C.123.46,123D.123.45,123.

11.下面不能正确表示a*b/(c*d)的表达式是()。

A.(a*b)/c*dB.a*b/(c*d)C.a/c/d*bD.a*b/c/d

12.若有如下程序:main(){inta=0,t=0;while(!a!=0)t+=a++;printf("%d,%d\n",t,A);}则程序运行后的输出结果是()

A.0,1B.1,0C.0,0D.1,1

13.有以下程序:main{inta[]=(2,4,6,8,10},y=0,x,*P;p=&a[1];for(x=1;x<3;x++)y+=p[x];printf("%d\n,y");}程序运行后的输出结果是()。A.10B.11C.14D.15

14.有以下程序:

执行后的结果是()。A.7B.3C.2D.0

15.一个二维数组的定义语句为“inta[3][4]={{3,4},{2,8,6}};”,则元素a[2][1]的值为()。

A.0B.4C.8D.6

16.以下关于return语句的叙述中正确的是()。

A.一个自定义函数中必须有一条return语句

B.一个白定义函数中可以根据不同情况设置多条return语句

C.定义成void类型的函数中可以有带返回值的return语句

D.没有return语句的自定义函数在执行结束时不能返回到调用处

17.下列关于线性链表的叙述中,正确的是()A.各数据结点的存储空间可以不连续,但它们的存储顺序与逻辑顺序必须一致

B.各数据结点的存储顺序与逻辑顺序可以不一致,但它们的存储空间必须连续

C.进行出入与删除时,不需要移动表中的元素

D.以上三种说法都不催

18.

19.在数据流图(DFD)中,带有名字的箭头表示

A.模块之间的调用关系B.程序的组成成分C.控制程序的执行顺序D.数据的流向

20.有以下程序:#include<stdio.h>#defineS(x)x*x/xmain(){intk=6,j=3;printf(“%d,%d\n”,S(k+j+2),S(j+k+2);}程序运行后的输出结果是()。

A.11,11B.29,29C.26,29D.121,121

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

#include<string.h>

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]="abcdergh";

p=ss(str);

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

}

22.下面程序的输出结果是【】。

#include<stdio.h>

main()

{staticchara[]="language",b[]="program";

char*ptr1=a,*ptr2=b;

intk;

for(k=0;k<7;k++)

if(*(ptr1+k)==*(ptr2+k))

printf("%c",*(ptr1+k));}

23.软件结构是以【】为基础而组成的一种控制层次结构。

24.软件测试分为白箱(盒)测试和黑箱(盒)测试。等价类划分法属于【】测试。

25.测试的目的是暴露错误,评价程序的可靠性;而______的目的是发现错误的位置并改正错误。

26.以下程序的功能是进行位运算main(){unsignedchara,b;a=7^3;b=~4&3;pfintf("%d%d\n",a,b);}程序运行后的输出结果是

27.在宏定义#definePI3.14159中,用宏名PI代替一个______。

28.软件工程研究的内容主要包括:【】技术和软件工程管理。

29.如果调用fopen函数不成功,则函数返回【】;如果调用fclose函数不成功,则函数返回【】。

30.当运行以下程序时,输入abcd,程序的输出结果是:()。

insert(charstr[])

{inti;

i=strlen(str);

while(i>0)

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

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

}

main()

{charstr[40];

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

}

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

main()

{

inti,n[]={0,0,0,0,0};

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

{

n[i]=n[i-1]*2+1;

printfi["%d",n[i]);

}

}

32.当调用函数时,实参是一个数组名,则向函数传递的是【】。

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

#include<stdio.h>

voidfun()

{staticinta=0;

a+=2;printf("%d",a);

}

main()

{intcc;

for(cc=1;cc<4;cc++)fun();

printf("\n");

}

34.软件生命周期包括8个阶段。为了使各时期的任务更明确,又可分为3个时期:软件定义期、软件开发期、软件维护期。编码和测试属于【】期。

35.#define命令出现在程序中函数的外面,宏名的有效范围为______。

36.以下程序的功能是输入任意整数给n后,输出n行由大写字母A开始构成的三角形字符阵列图形。例如,输入整数5时(注意:n不得大于10),程序运行结果如下:

ABCDE

FGHI

JKL

MN

O

请填空完成该程序。

main()

{inti,j,n;charch='A';

scanf("%d",&n);

if(n<11)

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

{for(j=1;j<n-i+1;j++)

{printf("%2c",ch);

[10];

}

[11];

}

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

main()

{inta[4][4]={{1,2,3,4),{5,6,7,8},{11,12,13,14},{15,16,17,18}};

inti=0,j=0,s=0;

while(i++<4)

{

if(i==2||i==4)continue;

j=0;

do{S+=a[i][j];j++;}while(j<4);

}

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

}

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

main()

{unsignedshorta=65536;intb;

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

}

39.若有语句doublex=17;inty;,当执行y=(int)(x/5)%2;之后y的值为()。

40.数据库理论中,数据的独立性一般可分为物理独立性和______。

三、1.选择题(20题)41.已知二叉树BT的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是______.

A.cedbaB.acbedC.decabD.deabc

42.有下列函数定义:intfun(doublea,doubleb){returna*b;}若下列选项中所用变量都己正确定义并赋值,错误的函数调用是()。

A.if(fun(x,y)){……}

B.z=fun(fun(x,y),fun(x,y));

C.z=fun(fun(x,y)x,y);

D.fun(x,y);

43.运行下面的程序,其输出结果为______。main(){pintf("%d,%d",5%-3,-5%3);}

A.2,-2B.-2,2C.-2,-2D.2,2

44.以下正确的函数头定义形式是()。

A.doublefun(intx,inty)

B.doublefun(intx;inty)

C.doublefun(intx,inty);

D.doublefun(intx,y);

45.有以下程序#include<stdio.h>main(){ints[12]={1,2,3,4,4,3,2,1,1,1,2,3},c[5]={0},i;for(i=0;i<12;i++)c[s[i]++;for(i=l;i<5;i++)printf("%d",c[i]);printf("\n");}程序的运行结果是

A.1234B.2344C.4332D.1123

46.定义int*swap()指的是______。

A.—个返回整型值的函数swap()

B.—个返回指向整型值指针的函数swap()

C.—个指向函数swap()的指针,函数返回一个整型值

D.以上说法均错

47.有以下程序:#include<stdio.h>#include<string.h>main(){charstr[][20]={"Hello","Beijing"},*P=str[0];printf("%d\n",strlen(p+20));}程序运行后的输出结果是()。

A.0B.5C.7D.20

48.请读程序:#include<stdio.h>main(){inta;floatb,c;scanf("%2d%3f%4f",&a,&b,&c);printf("\na=%d,b=%f,c=%f\n",a,b,c)}若运行时从键盘上输入987643210则上面程序的输出结果是______。

A.a=98,b=75,c=4321

B.a=10,b=432,c=8765

C.a=98,b=765.000000c=4321.000000

D.a=98,b=765.0,c=4321.000000

49.有以下程序:#include<stdio.h>main(){inta,b,d=25;a=d/10%9;b=a&&(-1);printf("%d,%d\n",a,b);}程序运行后的输出结果是()。

A.6,1B.2,1C.6,0D.2,0

50.设变量均已正确定义,若要通过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<回车>20□Y<回车>

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

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

A.线性表是由n个元素组成的一个有限序列

B.线性表是一种线性结构

C.线性表的所有结点有且仅有一个前件和后件

D.线性表可以是空表

52.有以下程序

#include<stdio.h>

intfun(chars[])

{intn=0;

while(*s<=′9′&&*s>=′0′){n=10*n+*s-′0′;s++;}

return(n);

}

main()

{chars[10]={′6′,′1′,′*′,′4′,′*′,′9′,′*′,′0′,′*′};

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

}

程序的运行结果是

A.9B.61490C.61D.5

53.设x、y、t均为血型变量,则执行语句x=y=3;t=++x||++y;后,y的值为______。

A.不定值B.4C.3D.1

54.下列不属于算法特性的是

A.确定性B.可行性C.有输出D.无穷性

55.按照“先进先出”组织数据的数据结构是()。

A.队列B.栈C.双向链表D.二叉树

56.结构化程序设计主要强调的是______。

A.程序的规模B.程序的易读性C.程序的执行效率D.程序的可移植性

57.有以下程序:main(){inti,j,x=0;for(i=0;i<2;i++){x++;for(j=0;j<=3;j++){if(j%2)continue;x++;}x++;}printf("x=%d\n",x);}程序执行后输出结果是()。

A.x=4B.x=8C.x=6D.x=12

58.以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A.chars[10]="abcdefg";

B.chart[]="abcdefg",*s=t;

C.chars[10];s="abcdefg";

D.chars[10];strcpy(s,"abcdefg");

59.若有定义intw[3][5];,则以下不能正确表示该数组元素的表达式是A.*(*w+3)B.*(*w+1)[4]C.*(*(*w+1))D.*(&w[0][0]+1)

60.以下选项中不属于字符常量的是

A.'C'B.CC.'\xCC'D.'\072'

四、选择题(20题)61.有以下程序:

#includc<stdio.h>

voidfun(int*p)

{printf("%d\n",p[5]);}

main()

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

fun(&a[3]);

}

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

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

62.

63.

64.设有定义:intk=0;以下选项的四个表达式中与其他三个表达式的值不相同的是()。

A.++kB.k+=1C.k++D.k+1

65.

66.

67.算法的空间复杂度是指()。

A.算法程序的长度B.算法程序中的指令条数C.算法程序所占的存储空间D.执行算法需要的内存空间

68.下面描述中,不属于软件危机表现的是()A.软件过程不规范B.软件开发生产率低C.软件质量难以控制D.软件成本不断提高

69.有以下程序

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

70.HTTP协议的内容协商消息头包括()。

i.内容协商消息头ii.缓存控制消息头

iii.条件控制消息头iv.服务器状态消息头

A.i和iiB.i、ii和iiiC.ii和iiiD.iii和iv

71.

72.下列程序的输出结果是()。

#include<stdio.h>

main

{inti;

for(i=1;i<=10,i++)

{if((i*i>=20)&&(i*i<=100))

break;

}

printf("%d\n",i*i;

}A.A.49B.36C.25D.64

73.

74.执行以下程序段后,T的值为

intT=’a’,x=12,y=5;

T=((x||y)&&(T>’A’));

A.1B.NULLC.-lD.0

75.

76.下列字符串不属于标识符的是()

A.sumB.averageC.day_nightD.M,D.JOHN

77.以下叙述中不正确的是

A.预处理命令都必须以#号开始

B.在程序中凡是以#号开始的语句行都是预处理命令行

C.宏替换不占用运行时间,只占编译时间

D.以下定义是正确的:#definePI3.1415926;

78.若有以下的定义:‘intt[3][2];”,能正确表示t数组元素地址的表达式是()。

A.&t[3][2]B.t[3]C.t[l]D.t[2][2]

79.有定义:“inta=2,b=3,c=4;”,则下列选项中值为0的表达式是()。A.A.(a<b)&&!c‖1

B.(!a==1)&&(!b==0)

C.a&&b

D.a||(b+b)&&(c-a)

80.在软件开发中,需求分析阶段产生的主要文档是()。

A.可行性分析报告B.软件需求规格说明书C.概要设计说明书D.集成测试计划

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:逐个比较P.q所指两个字符串对应位置上的字符,并把ASCIl值大或相等的字符依次存放到C所指的数组中,形成一个新的字符串。

例如,若主函数中a字符串为“aBCDeFgH”,b字符串为“Abed”,则C中的字符串应为“aBcdeFgH”。请改正程序中的错误,使它能得出正确的结果。

注意:部分源程序在文件MODll.C中,不得增行或删行,也不得更改程序的结构!

六、程序设计题(1题)82.请编写函数proc(),对长度为9个字符的字符串,除首、尾字符外,将其余7个字符按ASCⅡ码值降序排列。例如,原来的字符串为HabcdefA,则排序后输出为HfedcbaA。注意:部分源程序给出如下。请勿改动main()和其他函数中的任何内容,仅在函数proc()中填入所编写的若干语句。试题程序:

参考答案

1.C解析:C语言中,如果对定义的变量没有赋初值,那么在后面使用时,变量的值是不确定的。所以,本程序中,没有对sum赋初值,它的值不确定。在执行了for循环语句后,sum的值也不确定的,所以,4个选项中选项C符合题意。

2.B解析::串的长度定义为串中字符的数目。所以B)为正确答案。C)答案不正确,因为串中可以含有相同的字符;A)答案不正确,因为串中可能含有相同的字母,而且也可能含有数字等其他非字母字符;D)答案不正确,因为空格也是一种字符,在计算长度时理应将其计算在内。

3.D

4.A本题考查的是for循环与二维数组的定义和引用。当定义二维数组的初始化列表只使用一重花括号时,其中的每个值依次代表从第l行的第1个元素起,直到第l行满,接着代表第2行、第3行……的每一个元素。程序中的循环将循环3次,循环变量i的值分别是0、1、2,所以3次循环中输出的数分别是:t[2一O][D]、t[2-1][1]、t[2~2]121,即t[2][0]、t[1][l]、t[0][2],所以最后输出的结果为357。故应该选择A)。

5.C

6.D解析:在本题中,主函数在调用fun()函数进行排序时,传递的参数是c+4和6,fun()函数实现的功能是将数组c的第5个元素开始的6个元素依次进行从大到小的顺序排列。排序之后,数组c的内容变为{1,2,3,4,9,8,7,6,5,0}。

7.A解析:题中要求x的取值是小于等于0或者大于等于1,这说明表达式是或的关系,所以在写成C语言表达式应是逻辑或的关系,逻辑或运算符是'‖'。

8.C

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

10.C对于double类型的实数,可以在printf函数的格式化字符串中使用”n1.n2”的形式来指定输出宽度(n1和n2分别代表一个整常数)。其中n1指定输出数据的宽度(包括小数点),n2指定小数点后小数位

温馨提示

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

评论

0/150

提交评论