2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)_第1页
2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)_第2页
2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)_第3页
2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)_第4页
2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.软件工程的出现是由于()。A.A.程序设计方法学的影响B.软件产业化的需要C.软件危机的出现D.计算机的发展

2.下列关于效率的说法不正确的是()

A.效率是一个性能要求,其目标应该在需求分析时给出

B.提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法

C.效率主要指处理机时间和存储器容量两个方面

D.程序的效率与程序的简单性无关

3.有以下结构体说明、变量定义和賦值语句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则下列scanf函数调用语句有错误的是()。

A.scanf(“%s”,s[0].name);

B.scanf(“%d”,&s[0].age);

C.scanf(“%c”,&(ps->sex));

D.scanf(“%d”,ps->age);

4.

5.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

cb='b';

k=10;

printf("%X,%o,”,ch,ch,k);

printf("k=%%d\n",k);A.A.因变量类型与格式描述符的类型不匹配,输出无定值

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

C.62,142,k=%d

D.62,142,k=%10

6.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序运行后的输出结果是()。A.2B.1C.0D.3

7.有以下程序:

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

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

8.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的运行结果是()。A.2B.3C.7D.0

9.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

10.设有如下定义语句:intm[]={2,4,6,8,10},*k=m;以下选项中,表达式的值为6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

11.顺序结构的本质特点是()。

A.数据元素存储在地址连续的内存空间

B.数据元素紧邻

C.数据元素在内存中的相对位置表示数据之间的逻辑关系

D.不使用指针

12.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

13.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整数集合{1,2,3,4,5}

14.

15.下列语句中,()是错误的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

16.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.终止当前应用程序的运行

D.退出Windows后重新启动计算机

17.下列有关图的遍历说法中,不正确的是()

A.图的遍历必须用递归实现

B.基本遍历算法两种:深度遍历和广度遍历

C.有向图和无向图都可以进行遍历操作

D.图的遍历算法可以执行在有回路的图上

18.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a1,1为第一个元素,其存储地址为1,每个元素占1个地址空间,则a8,5的地址为()。

A.13B.33C.18D.40

19.设有以下说明,则不正确的叙述是()。

A.A.arr所占的内存长度等于成员c的长度

B.arr的地址和它的各成员的地址都是同一地址

C.arr可以作为函数参数

D.不能在定义arr时对它初始化

20.定义下列结构体(联合)数组:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);执行语句printf("%d,%C",a[2].age,*(a[3].name+2))的输出结果为()。A.15,AB.16,HC.16,AD.17,H

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

22.数据库系统中实现各种数据管理功能的核心软件称为【】。

23.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

24.设y为血型变量,请写出描述“y是偶数”的表达式______。

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

main()

{chars[]="abcdef";

s[3]='\0';

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

}

26.现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

当编译连接通过后,运行程序T18时,输入Thank!,则输出结果是【】。

27.阅读下面语句,则执行后的输出结果为【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

printf("%c%c",a,b);

printf("\n");}

28.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

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

#include<stdio.h>

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

31.若从键盘输入58,则以下程序输出的结果是【】。

mam()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

32.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

33.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

34.以下程序从输入的10个字符串中找出最长的那个串,请填空。

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("输出最长的那个串:\n%s\n",sp);

printf("输出最长的那个串的长度:%d\n",strlen(sp));}

35.【】是数据库设计的核心。

36.有下列程序,功能是把输入的+进制长整型数以+六进制的形式输出,完成程序

#include"stdio.h"

main()

{charb[17]={"0123456789ABCDEF"};

intc[50],d,i=0,base=16;

longn;

scanf("%1d",&n);

do{c[i]=n%base;i++;n=【】;}

while(n!=0);

for(--i;i>=0;--i)

{d=【】;printf("%c",b[d]);}

printf("H\n");}

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>l;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

38.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

39.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

三、1.选择题(20题)41.以下选项中正确的语句组是()。

A.chars[];s="HELLO!";

B.char*s;s={"HELLO!"};

C.chars[10];s="HELLO!";

D.char*s;s="HELLO!";

42.有以下说明和定义语句structstudent{intage;charnum[8];structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;};以下选项中引用结构体变量成员的表达式错误的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].age

43.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

44.若有定义intx,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

46.若有以下的说明和语句,则在执行for语句后,*(*pt+1)+2)表示的数组元素是()intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

47.下面语句的输出结果是______。printf("%d\n",strlen("\t\"\065\xff\n"));

A.14B.8C.5D.输出项不合法,无正常输出

48.为了提高软件模块的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

49.下列选项中正确的语句组是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

50.在位运算中,操作数每右移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

51.在下列文件名表示方式中,与*E.*等效的是()

A.*.??B.?.*C.???????E.???D.*.*

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

A.chars[10]="abcdefg";

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

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

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

53.以下选项中不能作为合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

54.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

55.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。

A.234B.432C.23D.4534554334344523

56.设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_______。

A.x=x*l00+0.5/100.0

B.x=(x*100+O.5)/100

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.设有语句:if(a==1)b=2;c=3;,以下语句中与之等价的是()。

A.if(a==1){b=2;c=3;}

B.if(a!=1){;}else{b=2;c=3;}

C.if(a=1)c=3;b=2;

D.(a==1)?b=2:a:=a;c=3;

58.下列程序的输出结果是()。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

59.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

60.下面程序的输出结果是()。#include"stdio.h"intsub(intm){statica=4;a+=m;returna;}voidmain(){inti=2,j=1,k;k=sub(i);k=sub(j);printf("%d",k);}

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

四、选择题(20题)61.以下选项中,能用作用户标识符的是()。A._0_B.8—8C.voidD.unsigned

62.有以下程序:

#include<stdio.h>

voidexch(intt[])

{t[0]=t[s];}

main()

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

while(i<=4){exch(&x[i]);i++;}

for(i=0;i<5;i++)printf("%dl"x[i]);

printf("\n");

}

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

A.246810

B.13579

C.12345

D.678910

63.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

64.

下述程序的输出结果是()。

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

65.

66.若有定义语句:

charS[10]=”1234567\0\0”;则strlen(s)的值是()。

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

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

A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

D.c语言源程序经编译后生成后缀为.obj的目标程序

68.有以下程序:执行时输入:0<;回车>;后,则输出结果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.有如下程序

#include"stdio.h"

main()

{intj,i,k=0;

for(j=20;j<=30;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

程序的运行结果是

A.2329B.2923

C.3292D.9232

70.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

71.

72.

73.

74.下面属于黑盒测试方法的是()。

A.边界值分析B.路径覆盖C.语句覆盖D.逻辑覆盖

75.

76.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

77.若intk=8;则执行下列程序后,变量k的正确结果是

main()

{intk=8;

switch(k)

{case9:k+=1;

case10:k+=1;

default:k+=1;

case11:k+=1;break;

}

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

}

A.12B.1

C.10D.9

78.有以下程序:

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

A.45B.20C.25D.36

79.若有定义语句:intX=10;,则表达式x-=x+x的值为()。

A.0B.-20C.-10D.10

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…

例如,若给n输入7,则该项的斐波拉契数值为l3。

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

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

试题程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

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

}

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的功能是把字符串中的内容逆置。

例如,字符串中原有的字符串为asdf9,则调用该函数后,串中的内容为9fdsa。

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

试题程序:

#include<string.h>

#include<conio.h>

#include<stdio.h>

#defineN100

voidfun(char*str)

{

}

voidmain

{

chara[N];

FILE*out:

printf("Enterastring:");

gets(a);

printf("Theorigiralstringis:");

puts(a);

fun(a):

printf("Thestringaftermodified:");

puts(a);

strcpy(a,"Welcome!");

fun(a);

ut=fopen("outfile.dat","w");

fprintf(out,"%s".a);

fclose(out);

}

参考答案

1.C解析:软件工程的基本概念。软件工程概念的出现源自于软件危机。为了消除软件危机,通过认真研究解决软件危机的方法,认识到软件工程是使计算机软件走向工程科学的途径,逐步形成了软件工程的概念。

2.D

3.D题目中需要输入一个变量,scanf要求输入参数为指针,而D选项中“ps->age”为变量,不是指针。故本题答案为D选项。

4.C

5.C第1个printf函数,格式说明的个数是2,而输出项的个数是3,所以对于多余的输出项k不予输出;第2个printf函数,有两个%说明,第1个%后面的字符要原样输出。本题考查printf函数的格式。①“%x”和“%0”分别表示以十六进制和八进制无符合型输出整型数据(不带前导ox或0);②printf函数中格式说明符之前插入的任何字符都原样输出;③格式说明与输出项的个数,也要相等,如果格式说明的个数少于输出项的个数,则对于多余的输出项不予输出。

6.C在ifelse语句中else,总是与离它最近的配对。本题目中x劝1所以!x为0,所以执行else龉句中的内容,判断(x==0)是否成立,因为x为1所以条件不成立,所以else部分的近.else语句不再执行,所以y的值还是初始值0。

7.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)。

8.A因为fun(intx)是一个递归函数。在主函数中fun(7)经过3次递归调用。其过程可以描述为fun(7)=7-fun(5)=7-(5*fun(3))=7*(5*(3*fun(1)))=7-(5-(3-3))=7-5=2。最后的输出结果为2。故本题答案为A选项。

9.C解析:二叉树的遍历分为先序、中序、后序三种不同方式。本题要求先序遍历遍历顺序应该为:访问根结点->先序遍历左子树->先序遍历右子树。按照定义,先序遍历序列是ABDECF。

10.A本题考查数组和指针,*k指针是指向rn数组的首地址,所以要使表达武的值为6,只需要指针指向第m[2],所以答案选择A。-

11.C

12.C

13.B

14.A

15.C

16.C解析:在Windows环境下,单击当前窗口中的按钮“x”,其功能是终止当前应用程序的运行,关闭当前窗口。

17.A

18.B

19.C本题主要考查联合体的内存使用:联合体所占用的内存空间为最长的成员所占用的空间,int占2个字节,char占1个字节,float占4个字节,所以arr所占的内存长度等于成员c的长度:arr的地址和它的各成员的地址都是同一地址;不能直接对arr赋值,即不能在定义arr时对它初始化:arr也不可以作为函数参数。

20.C本题考查结构体数组。a[2].age为结构体aEZ]的age成员,即a[3].name为指向结构体a[3]的name成员的第一个元素的指针,即指向“2”,(a[3].name+2)将指针后移两位指向第三个元素“A”,*(a[3].name+2)是取指针所指向地址的内容。

21.77解析:在C语言中,宏定义是直接替换的,所以在对表达式MAX(a+b,c+d)*l0进行替换后,表达式变为(a+b)>(c+d)?(a+b):(c+d)*10。在这个条件表达式中,(a+b)>(c+d)为真,所以用(a+b)的值作为整个表达式的值(否则用(c+9d)*10)的值作为整个表达式的值),而(a+b)的值为7。所以整个表达式的值为7。

22.数据库管理系统数据库管理系统(DBMS)

23.(非法)不合法(非法)不合法

24.(y%2)==0(y%2)==0解析:因符合偶数的条件是对2取余为0,所以要描述y是偶数的表达式是(y%2)==0。

25.abcabc解析:字符串的结束标记'\\0',当输出一个存放在字符数组中的字符串时,只需输出到'\\0'为止,而不管其后有什么数据。本题给字符数组s的元素s[3]赋值为'\\0',故只能输出3个字符“abc”。

26.!knahT!knahT解析:此程序是一道次序颠倒题,即输入'Thank!',则输出'!knahT'。

27.918273645918273645解析:for是C语言的关键字,其后的一对圆括号中通常含有3个表达式,各个表达式之间用分号隔开,这3个表达式可以是任意形式的表达式,通常主要用于for循环控制。

28.77解析:本题考查的是函数的递归调用。x=0或x=1是递归的终止条件,然后用回代的方法从一个已知值推出下一个值,直到计算出最终结果。

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

30.33解析:条件表达式的一般形式为;表达式1?表达式2:表达式3条件运算符的执行顺序:先求解表达式1,若为非0(真)则求解表达式2,此时表达式2的值就作为整个条件表达式的值;若表达式1的值为0(假),则求解表达式3,表达式3的值就是整个条件表达式的值。30/3=10>0,所以执行p/10,结果为3。

31.585858585858解析:在程序小,执行scanf()语句后,a被赋值为58。接着执行第一个if语句,因为,a=58>50,执行第一个if语句后面的输出语句,输出58;接着执行第二个if语句,因为,a=58>40,执行第二个if语句后面的输出语句,输出58;接着执行第三个if语句,因为,a=58>30,执行第三个if语句后面的输出语句,输出58,所以最后的输出为585858。

32.350350解析:在任意一棵二叉树中,度为0的结点(即叶子结点)总是比度为2的结点多一个。在根据完全二叉树的定义,在一棵完全二叉树中,最多有1个度为1的结点。因此,设一棵完全二叉树具有n个结点,若n为偶数,则在该二叉树中有n/2个叶子结点以及n/2-1个度为2的结点,还有1个是度为1的结点:若n为奇数,则在该二叉树中有[n/2]+1个叶子结点以及[n/2]个度为2的结点,没有度为1的结点。本题中,完全二叉树共有700个结点,700是偶数,所以,在该二叉树中有350个叶子结点以及349个度为2的结点,还有1个是度为1的结点。所以,本题的正确答案为350。

33.-6354-6354解析:本题的考查点是函数的返回值。这个函数的目的是提取出由函数的形参传送来的字符串中的数字字符,并通过相应字符位置计算出它们数值形式的幂,最后返回字符串中的数字字符的数值形式,所以函数的返回值应当是“-6354”。

34.sp=str[i]sp=str[i]解析:二维字符数组即数组的每个元素又是一个字符串,即字符串数组。题中二维数组的第一行的首地址赋给字符指针sp,使sp指向了二维字符数组的一个字符串。求字符串长度函数strlen比较当前字符串与数组的下一个元素的字符串的长度,如果当前字符串的长度小于下一个元素的,则指针sp又指向了下一个元素,直到比较到数组的最后一个元素,得到的sp指针所指向的字符串即为长度最长的字符串。

35.数据模型数据模型

36.n/base或n/16c[i]n/base或n/16\r\nc[i]解析:字符串的综合运用。

37.5555解析:分析程序执行过程,第一次循环时,j=3,i-5,因为switch(3),所以执行case3,调用P(a[-i)=p(a[4])=P(5),输出5;第二次循环时,j=2,i=4,因为switch(2),所以执行case2,调用P(s[i++])=P(a[4])=P(5),输出5,之后i的n等于5。

38.软件危机软件危机

39.非0非0解析:逻辑运算中,非0表示逻辑“真”,用。表示逻辑“假”。

40.111,1解析:POWER(i++)中先引用i的值1,再将i的值加1,POWER(i++)=1*1=1。

41.D本题考查数组和字符串的赋值。选项A)中数组s没有明确其大小就赋值是错误的。选项B)中不能有大括号,选项C)中的写法应该为{\'H\'\'E\'\'L\'\'L\'\'O'!\'}。

42.D解析:结构体变量也有地址,因此可以把它的地址赋值给一个指针变量,然后通过该指针变量来引用结构体的成员,选项A和选项B就是通过指针变量来引用结构体的成员,也可以通过结构体数组元素的成员引用,而在选项D中stu[3].age不正确,因为结构体数组stu共有三个元素,其下标应该为0,1,2。

43.B解析:子函数fun(intx,inty),将变量m和i声明为局部静态变量,因此第1次调用主函数后,局部静态变量m和i的值为5和3,第1次函数调用结束时,它们的值不释放保持不变,所以第2次调用时,局部静态变量m和i的初始值分别为5和3,即在执行“i+=m+1”时,i的值为9,因此最终m的值为11。

44.C

45.D解析:时间复杂度是指一个算法执行时间的相对度量;空间复杂度是指算法在运行过程中临时占用所需存储空间大小的度量。人们都希望选择一个既省存储空间、又省执行时间的算法。然而,有时为了加快算法的运行速度,不得不增加空间开销;有时为了能有效地存储算法和数据,又不得不牺牲运行时间。时间和空间的效率往往是一对矛盾,很难做到两全。但是,这不适用于所有的情况,也就是说时间复杂度和空间复杂度之间虽然经常矛盾,但是二者不存在必然的联系。因此,选项A、B、C的说法都是错误的。故本题的正确答案是D。

46.C

47.C解析:在C语言中,以“\\”开头的字符均为转义字符,其中“\\”后可跟1~3位八进制数或在“\\”后跟字母x及1~2位十六进制数,以此来代表一个特定的字符。

48.D解析:耦合性与内聚性是模块独立性的两个定性标准,是互相关联的。在程序设计中,各模块间的内聚性越强,则耦合性越弱。一般较优秀的软件设计,应尽量做到高内聚、低耦合,有利于提高模块的独立性。

49.D解析:C语言规定可以对字符指针变量直接赋字符串常量,但不能给字符数组直接赋字符串常量,对字符数组赋字符串常量应使用的是strcpy函数。正确答案为选项D。

50.C解析:在位运算中,操作数每右移两位,相当于在操作数的左侧添0,最右面的两位被移出,即操作数除以4。

51.C

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

53.B解析:本题考查的是C语言中实型常量的指数表示法。实型常量的指数表示法是用字母e(或E)将一个实数的小数部分和指数部分分隔开。字母e(或E)之前是小数部分,之后是指数部分,这两部分都不能省略,且指数部分必须为整数。故选项B不正确。所以,4个选项中选项B符合题意。

54.A解析:在C语言中,合法标识符的命名规则是:标识符可以由字母、数字和下画线3种字符组成,且第一个字符必须为字母或下画线。C语言的标识符可以分为关键字、预定义标识符和用户标识符。选项B)和C)中的横线以及点都不合法,选项D)中的case为C语言关键字。

55.D解析:本题主要考查for循环语句的嵌套。外层主循环执行了3次,嵌套的循环语句每轮执行2次,每次输出i+j的值,推出嵌套循环语句后换行。

56.C解析:本题通过算术表达式的运算实现小数保保留两位并四舍五入的操作,其中(int)(x*100+0.5)是指将(x*100+0.5)的值强制转换成整型。

57.D

58.B解析:算术运行符“/”、“%”的优先级处于同一级,并且两者的结合性都是从左到右。所以算术表达式运算过程为:a=25/10%9=2%9=2:当逻辑运算符“&&”两边的值都是非零时,逻辑表达式的值才为真(即为1)。所以b=2&&(-1)=1。

59.B在计算机中,算法被定义为对一个问题求解步骤的一种描述,是求解问题的方法,它是指令的有限序列,其中每条指令表示一个或者多个操作。算法具有有穷性、确定性、可行性、输入和输出五大特点。

在本题中,选项A、C、D的说法明显偏离了算法的定义,因此正确答案选B。

60.B解析:在函数sub()的函数体中定义了一个静态存储变量a,a的值在函数调用完毕返回主函数后仍存在。第一次调用sub(i),a=a+m=4+2=6,返回值为6。第二次调用sub(j),a=a+m=6+1=7,返回值为7,最后输出k的值为7。

61.Ac语言中标识符由字母、下划线或数字组成,且开头必须是字母或下划线。另外,关键字不能作为标识符。B)选项中以数字8开头,所以错误。c)与D)中用的是关键字void与unsigned,因此错误。故本题答案为A)。

62.D本题中exch函数是用数组中的第6个元素对第1个元素进行赋值,所以数组的值应该为678910。

63.D

64.B\n根据判断本题共进行三次for循环,第一次执行for循环,p[1][0]=p[1][0]-1=3;第2次执行for循环,p[1][1]=p[1][1]-1=4;第3次执行for循环,[1][2]=1,最后输出的是a[o][1]+a[1][1]+a[1][2]=2+4+1=7。

\n

65.C

66.Astrlen()函数在计算字符串长度时,遇到结束标识为止,且长度不包括结束标识。本题中字符串,从第一个字符开始,遇到第一个结束标识‘\0’为止,注意‘\0’不占字符串长度,所以字符串长度为7。因此A选项正确。

67.Ac语言中的非执行语句不会被编译,不会生成二进制的机器指令,因此A)选项错误。由C语言构成的指令序列称为C源程序,c源程序经过c语言编译程序编译之后生成一个后缀为obj的二进制文件(称为目标文件);最后要由“连接程序”把此.0bj文件与c语言提供的各种库函数连接起来生成一个后缀为.exe的可执行文件。根据上述分析可知,A)选项叙述错误。

68.C”anf(”%c”,&c),输入的字符,题目中输入了0,字符0,对应于ASCIl码为48,因此for循环中,i的范围从0~5,均小于48,if条件不成立,直接执行下一条语句,执行语句prinff,因此得到的结果是0,1,2,3,4。故答案为C选项。

69.A在本题中,程序首先定义了三个整型变量,并将变量k赋值为0,然后开始循环,循环开始时,变量j的值为20,结束时,变量j的值为30,每循环一次,变量j自加1,即循环10。

当j=20,k=0时,“!(k%10)”为真,输出换行,即循环开始时,输出从新的一行开始,执行第二重循环,此时的i=2,“!(j%i)”为真,运行break语句,即跳出本层循环(从这里我们可以看出,j如果可以被i整除,则跳出本层循环),然后判断i是否不小于j-1,如果是,则输出此时j的值,否则k自加1。

从程序执行的过程来看,这个题目确实非常复杂,循环的次数太多,但经过上面一次循环过程的分析,我们可以发现,其实这个程序的作用是找出20~30之间除1和本身外,不能被其他小于本身的数据整除的数,并从小到大输出这样的数。这样就能很容易地得到答案是2329。

70.D软件测试是为了发现错误而执行程序的过程,测试要以查找错误为中心,而不是为了演示软件的正确功能,也不是为了评估软件或改正错误,因此本题答案为D)。

71.D

72.A

73.D

74.A黑盒测试方法主要有等价类划分、边界值分析、因果图、错误推测等。白盒测试的主要方法有逻辑驱动、路径测试等,主要用于软件验证。

75.D

76.BA选项说的是偶数,B选项求的是奇数,C选项求的是偶数,而题目求的是奇数。

77.C在本题中,程序首先定义了一个整型变量k,并赋初值8,然后执行switch选择结构。由于k的初值为8,与程序中给出的选择结构不匹配,那么只能执行default结构,即执行k+=1,将变量k的值变为9,执行完后,由于没有break语句,程序接着往下执行,执行case11结构,将变量k的值再加1,然后执行break语句,跳出switch选择结构。此时变量k的值为10,然后执行输出语句输出k的值。因此,本题程序的最后输出结果为10,答案选C。\r\n\r\n\r\n

78.C统计1~9九个数中的奇数和,此题重点考察指向数组的指针。c语言规定数组名代表数组的首地址,也就是第一个元素的地址。因此*(t+i)代表数组的第i+1个元素。程序运行的结果是l+3+5+7+9=25。1

79.C算术运算符+的优先级高于-=.且-=的结合方向为自右向左,所以表达式x-=x+x可以表示成;=x-(x+x)=10-(10+10)=-10,选择C。

80.A

81.(1)错误:switch(g);

\n正确:switch(g)

\n(2)错误:casel:case2:returnl;

\n正确:casel;case2:returnl;

\n【解析】此题考查C语言的语法规则,switch(表达式)后不应该带有“;”,case语句常量后应该是“:”。

\nswitch语句的一般形式如下:

\nswitch(表达式){

\ncase常量表达式1:语句1;

\ncase常量表达式2:语句2;

\ncase常量表达式n:语句i;

\ndefault:语句n+1;

\n}

\n

82.\n\tcharch;

\ninti,m,n;

\ni=0:

\nm=n=strlen(str)-1;//求字符串str长度

\nwhile(i<(n+1)/2)//循环逆置交换

\n{

\nch=str[i];

\nstr[i]=str[m];

\nstr[m]=ch:

\ni++;

\nm--;

\n}

\n【解析】在fun函数中,首先求行字符串的长度,然后通过循环进行字符交换。要注意的是,如果字符串长度是奇数,则最中间的元素在逆置前后的位置是没有改变的。\n2021年湖南省湘潭市全国计算机等级考试C语言程序设计模拟考试(含答案)学校:________班级:________姓名:________考号:________

一、单选题(20题)1.软件工程的出现是由于()。A.A.程序设计方法学的影响B.软件产业化的需要C.软件危机的出现D.计算机的发展

2.下列关于效率的说法不正确的是()

A.效率是一个性能要求,其目标应该在需求分析时给出

B.提高程序效率的根本途径在于选择良好的设计方法,数据结构与算法

C.效率主要指处理机时间和存储器容量两个方面

D.程序的效率与程序的简单性无关

3.有以下结构体说明、变量定义和賦值语句:structSTD{charname[10];intage;charsex;}s[5],*ps;ps=&s[0];则下列scanf函数调用语句有错误的是()。

A.scanf(“%s”,s[0].name);

B.scanf(“%d”,&s[0].age);

C.scanf(“%c”,&(ps->sex));

D.scanf(“%d”,ps->age);

4.

5.若ch为char型变量,k为int型变量(已知字符a的ASCII码是97),则执行下列语句后输出的结果为()。

cb='b';

k=10;

printf("%X,%o,”,ch,ch,k);

printf("k=%%d\n",k);A.A.因变量类型与格式描述符的类型不匹配,输出无定值

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

C.62,142,k=%d

D.62,142,k=%10

6.有以下程序:#includeMain(){Intx=1,y=0;if(!x)y++;elseif(x==0)if(x)y+=2;Elsey+=3;print("%d\n",y);}程序运行后的输出结果是()。A.2B.1C.0D.3

7.有以下程序:

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

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

8.有以下程序:#include<stdio.h>intfun(intx){intp;if(x==0||x==1)return(3);p=x-fun(x-2);returnp;}main(){printf(“%d\n”,fun(7));}程序的运行结果是()。A.2B.3C.7D.0

9.设有下列二叉树:

对此二叉树先序遍历的结果是

A.ABCDEFB.DBEAFCC.ABDECFD.DEBFCA

10.设有如下定义语句:intm[]={2,4,6,8,10},*k=m;以下选项中,表达式的值为6的是()。

A.*(k+2)B.k+2C.*k+2D.*k+=2

11.顺序结构的本质特点是()。

A.数据元素存储在地址连续的内存空间

B.数据元素紧邻

C.数据元素在内存中的相对位置表示数据之间的逻辑关系

D.不使用指针

12.若x,i,j和k都是int型变量,则执行下面表达式后x的值为()。x=(i=4,j=16,k=32)

A.4B.16C.32D.52

13.定义无符号整数类为UInt,下面可以作为类UInt实例化值的是A)B)369C)0.369D)A.-369B.369C.0.369D.整数集合{1,2,3,4,5}

14.

15.下列语句中,()是错误的。A.x=x+1;B.x=x+y;C.x+y=x;D.x=4;

16.在Windows环境下,单击当前窗口中的按钮“”,其功能是A.将当前应用程序转为后台运行

B.退出Windows后再关机

C.终止当前应用程序的运行

D.退出Windows后重新启动计算机

17.下列有关图的遍历说法中,不正确的是()

A.图的遍历必须用递归实现

B.基本遍历算法两种:深度遍历和广度遍历

C.有向图和无向图都可以进行遍历操作

D.图的遍历算法可以执行在有回路的图上

18.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a1,1为第一个元素,其存储地址为1,每个元素占1个地址空间,则a8,5的地址为()。

A.13B.33C.18D.40

19.设有以下说明,则不正确的叙述是()。

A.A.arr所占的内存长度等于成员c的长度

B.arr的地址和它的各成员的地址都是同一地址

C.arr可以作为函数参数

D.不能在定义arr时对它初始化

20.定义下列结构体(联合)数组:structst{charname[15];intage;}a[10]={"ZHA0",14,"WANG",15,"LIU",16,"ZHANG",17);执行语句printf("%d,%C",a[2].age,*(a[3].name+2))的输出结果为()。A.15,AB.16,HC.16,AD.17,H

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

#defineMAX(x,y)(x)>(y)?(x):(y)

main()

{inta=5,b=2,c=3,d=3,t;

t=MAX(a+b,e+d)*10;

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

}

22.数据库系统中实现各种数据管理功能的核心软件称为【】。

23.数据的安全性是指保护数据以防止【】用户的使用造成的数据泄密和破坏。

24.设y为血型变量,请写出描述“y是偶数”的表达式______。

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

main()

{chars[]="abcdef";

s[3]='\0';

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

}

26.现有两个C程序文件T18.c和myfun.c同在TC系统目录(文件夹)下,其中T18.c文件如下:

#include<stdio.h>

#include"myfun.c"

main()

{fun();printf("\n");}

myfun.c文件如下:

voidfun()

{chars[80],c;intn=0;

while((c=getchar())!=′\n′)s[n++]=c;

n--;

while(n>=0)printf("%c",s[n--]);

}

当编译连接通过后,运行程序T18时,输入Thank!,则输出结果是【】。

27.阅读下面语句,则执行后的输出结果为【】。

#include"stdio.h"

main()

{chara,b;

for(a='0',b='9';a<b;a++,b--)

printf("%c%c",a,b);

printf("\n");}

28.下述程序的输出结果是【】。

#include<stdio.h>

intfun(intx)

{intp;

if(x==0||x==1)

return3;

else

p=x-fun(x-2);

returnp;}

voidmain()

{printf("\n%d",fun(9));}

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

#include<stdio.h>

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

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

main()

{

intp=30;

printf("%d\n",(p/3>0?p/10:p%3));

}

31.若从键盘输入58,则以下程序输出的结果是【】。

mam()

{inta;

scanf("%d",&a);

if(a>50)printf("%d",a);

if(a>40)printf("%d",a);

if(a>30)printf("%d",a);

}

32.设一棵完全二叉树共有700个结点,则在该二叉树中有【】个叶子结点。

33.若给fun函数的形参s传送字符串:"abc-6354abc",则函数的返回值是()。(字符串中包括空格)

longfun(charS[])

{longn;intsign;

for(;isspace(*s)||islower(*s);s++);

sign=(*s=='-')?-1:1;

if(*s=='+'||*s=='-')s++;

for(n=0;isdigit(*s);s++)

n=10*n+(*S-'0');

returnsign*n;

}

34.以下程序从输入的10个字符串中找出最长的那个串,请填空。

#include<stdio.h>

#include<string.h>

#defineN10

main()

{charstr[N][81],*sp;

inti;

for(i=0;i<N;i++)gets(str[i]);

sp=str[0];

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

if(strlen(sp)<strlen(str[i]))

【】;

printf("输出最长的那个串:\n%s\n",sp);

printf("输出最长的那个串的长度:%d\n",strlen(sp));}

35.【】是数据库设计的核心。

36.有下列程序,功能是把输入的+进制长整型数以+六进制的形式输出,完成程序

#include"stdio.h"

main()

{charb[17]={"0123456789ABCDEF"};

intc[50],d,i=0,base=16;

longn;

scanf("%1d",&n);

do{c[i]=n%base;i++;n=【】;}

while(n!=0);

for(--i;i>=0;--i)

{d=【】;printf("%c",b[d]);}

printf("H\n");}

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

#defineP(a)printf("%d",a)

main()

{intj,a[]={1,2,3,4,5,6,7},i=5;

for(j=3;j>l;j--)

{switch(j)

{case1:

case2:P(a[i++]);break;

case3:P(a[--i]);

}

}

}

38.开发软件所需要的高成本和产品的低质量之间有着尖锐的矛盾,这种现象被人们称之为【】。

39.C语言中用______表示逻辑值为“真”,用数字“0”表示逻辑值为“假”。

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

#definePOWER(x)((x)*(x))

main()

{inti=1;

printf("%d,%d",POWER(i++),i);

}

三、1.选择题(20题)41.以下选项中正确的语句组是()。

A.chars[];s="HELLO!";

B.char*s;s={"HELLO!"};

C.chars[10];s="HELLO!";

D.char*s;s="HELLO!";

42.有以下说明和定义语句structstudent{intage;charnum[8];structstudentstu[3]={{20,"200401"},{21,"200402"},{19,"200403"}};structstudent*p=stu;};以下选项中引用结构体变量成员的表达式错误的是

A.(p++)->numB.p->numC.(*p).numD.stu[3].age

43.有下列程序:fun(intx,inty){staticintm=0,i=2;i+=m+1;m=i+x+y;returnm;}main(){intj=1,m=1,k;k=fun(j,m);printf("%d,",k);k=fun(j,m);printf("%d\n".k);}执行后的输出结果是()。

A.5,5B.5,11C.11,11D.11,5

44.若有定义intx,y;并已正确给变量赋值,则下列选项中与表达式(x-y)?(x++):(y++)中的条件表达式(x-y)等价的是()。

A.(x-y>0)B.(x-y<0)C.(x-y<0||x-y>0)D.(x-y==0)

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

A.一个算法的空间复杂度大,则其时间复杂度也必定大

B.一个算法的空间复杂度大,则其时间复杂度必定小

C.一个算法的时间复杂度大,则其空间复杂度必定小

D.上述三种说法都不对

46.若有以下的说明和语句,则在执行for语句后,*(*pt+1)+2)表示的数组元素是()intt[3][3],*pt[3],k;for(k=0;k<3;k++)pt[k]=&t[k][0];

A.t[2][0]B.t[2][2]C.t[1][2]D.t[2][1]

47.下面语句的输出结果是______。printf("%d\n",strlen("\t\"\065\xff\n"));

A.14B.8C.5D.输出项不合法,无正常输出

48.为了提高软件模块的独立性,模块之间最好是()。

A.控制耦合B.公共耦合C.内容耦合D.数据耦合

49.下列选项中正确的语句组是______。

A.chars[8];s={"Beijing"};

B.char*s;s={"Beijing"};

C.chars[8];s="Beiiing";

D.char*s;s="Beijing";

50.在位运算中,操作数每右移两位,其结果相当于()。

A.操作数乘以2B.操作数除以2C.操作数除以4D.操作数乘以4

51.在下列文件名表示方式中,与*E.*等效的是()

A.*.??B.?.*C.???????E.???D.*.*

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

A.chars[10]="abcdefg";

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

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

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

53.以下选项中不能作为合法常量的是_____。A.1.234e04B.1.234e0.4C.1.234e+4D.1.234e0

54.可在C程序中用作用户标识符的一组标识符是A.and2007

B.Date_y-m-d

C.HiDr.Tom

D.caseBigl

55.有以下程序:#include<stdio.h>main(){inti,j;for(i=3;i>=1;i--){for(j=1;j<=2;j++)printf("%d",i+j);printf("\n");}}程序运行的结果是()。

A.234B.432C.23D.4534554334344523

56.设变量x为float型且已经赋值,则以下语句中能够将x中的数值保留到小数点后面两位,并将第三位四舍五入的是_______。

A.x=x*l00+0.5/100.0

B.x=(x*100+O.5)/100

C.x=(int)(x*100+0.5)/100.0

D.x=(x/100+0.5)*100.0

57.设有语句:if(a==1)b=2;c=3;,以下语句中与之等价的是()。

A.if(a==1){b=2;c=3;}

B.if(a!=1){;}else{b=2;c=3;}

C.if(a=1)c=3;b=2;

D.(a==1)?b=2:a:=a;c=3;

58.下列程序的输出结果是()。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

59.在计算机中,算法是指()

A.加工方法B.解题方案的准确而完整的描述C.排序方法D.查询方法

60.下面程序的输出结果是()。#include"stdio.h"intsub(intm){statica=4;a+=m;returna;}voidmain(){inti=2,j=1,k;k=sub(i);k=sub(j);printf("%d",k);}

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

四、选择题(20题)61.以下选项中,能用作用户标识符的是()。A._0_B.8—8C.voidD.unsigned

62.有以下程序:

#include<stdio.h>

voidexch(intt[])

{t[0]=t[s];}

main()

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

while(i<=4){exch(&x[i]);i++;}

for(i=0;i<5;i++)printf("%dl"x[i]);

printf("\n");

}

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

A.246810

B.13579

C.12345

D.678910

63.若变量c为char类型,能正确判断出c为小写字母的表达式是_______。A.′a′<=c<=′z′

B.(c>=′a′)||(c<=′z′)

C.(′a′=C)

D.(c>=′a′)&&(c<=′z′)

64.

下述程序的输出结果是()。

#include<stdio.h>

main

{inta[2][3]={{1,2,3),{4,5,6}},(*p)[3],i;

p=a;

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

{if(i<2)

p[1][i]=p[1][i]一1;

else

p[1][i]=1;)

printf("%d\n",a[0][1]+a[1][1]+a[1][2]);}

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

65.

66.若有定义语句:

charS[10]=”1234567\0\0”;则strlen(s)的值是()。

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

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

A.c语言中的每条可执行语句和非执行语句最终都将被转换成二进制的机器指令

B.c程序经过编译、连接步骤之后才能形成一个真正可执行的二进制机器指令文件

C.用c语言编写的程序称为源程序,它以ASCIl代码形式存放在一个文本文件中

D.c语言源程序经编译后生成后缀为.obj的目标程序

68.有以下程序:执行时输入:0<;回车>;后,则输出结果是()。A.5,B.0,0,0,0,0,C.0,1,2,3,4,D.0,1.

69.有如下程序

#include"stdio.h"

main()

{intj,i,k=0;

for(j=20;j<=30;j++)

{if(!(k%10))printf("\n");

for(i=2;i<j;i++)if(!(j%i))break;

if(i>=j-1)

{printf("%d",j);

k++;}

}

}

程序的运行结果是

A.2329B.2923

C.3292D.9232

70.软件测试的目的是()。

A.评估软件可靠性B.发现并改正程序中的错误C.改正程序中的错误D.发现程序中的错误

71.

72.

73.

74.下面属于黑盒测试方法的是()。

A.边界值分析B.路径覆盖C.语句覆盖D.逻辑覆盖

75.

76.当把以下四个表达式用作if语句的控制表达式时,有一个选项与表达式(k%2)!=0含义相同,这个选项是()。

A.k%2==0B.k%2==1C.!k%2==1D.都不同

77.若intk=8;则执行下列程序后,变量k的正确结果是

main()

{intk=8;

switch(k)

{case9:k+=1;

case10:k+=1;

default:k+=1;

case11:k+=1;break;

}

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

}

A.12B.1

C.10D.9

78.有以下程序:

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

A.45B.20C.25D.36

79.若有定义语句:intX=10;,则表达式x-=x+x的值为()。

A.0B.-20C.-10D.10

80.

五、程序改错题(1题)81.下列给定程序中函数fun的功能是:用递归算法计算斐波拉契数列中第n项的值。从第l项起,斐波拉契数列为:1,1,2,3,5,8,13,21,…

例如,若给n输入7,则该项的斐波拉契数值为l3。

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

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

试题程序:

#include<stdio.h>

longfun(intg)

{

//****found****

switch(g);

{

case0:return0;

//****found****

casel:case2:return1;

}

return(fun(g-1)+fun(g-2));

}

voidmain

{

longfib;intn;

printf("Inputn:");

scanf("%d",&n);

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

fib=fun(n);

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

}

六、程序设计题(1题)82.请编一个函数fun(ohlr*str),该函数的

温馨提示

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

评论

0/150

提交评论