2021年江苏省盐城市全国计算机等级考试C语言程序设计_第1页
2021年江苏省盐城市全国计算机等级考试C语言程序设计_第2页
2021年江苏省盐城市全国计算机等级考试C语言程序设计_第3页
2021年江苏省盐城市全国计算机等级考试C语言程序设计_第4页
2021年江苏省盐城市全国计算机等级考试C语言程序设计_第5页
已阅读5页,还剩108页未读 继续免费阅读

下载本文档

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

文档简介

2021年江苏省盐城市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在单链表中,增加头结点的目的是()。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

2.以下函数不能用于向文件中写入数据的是()。

A.hellB.fwriteC.fputcD.fprintf

3.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

4.一个C语言程序总是从()开始执行。

A.书写顺序的第一函数B.书写顺序的第一条执行语句C.主函数main()D.不确定

5.以下符合C语言语法的赋值表达式是()。

A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9十e,e++,d十9D.d=9十e++=d十7

6.表达式a*(-b+c)的逆波兰式是()

A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*

7.计算机识别.存储和加工处理的对象被统称为_________

A.数据B.数据元素C.数据结构D.数据类型

8.

9.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

10.有下列程序: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);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

11.下列变量声明合法的是()。

A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=OxfdaL;

D.float2

12.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.9,18B.8,11C.7,11D.10,14

13.有以下程序:#include<stdio.h>#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“%d\n”,d);}程序的运行结果是()。

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

14.有以下程序:#include<stdio.h>main{shortC=124;C=C_;printf("%d\n",c);}若要使程序的运行结果为248,应在下划线处填入的是()。A.>>2B.|248C.&0248D.<<1

15.按照“先进后出”原则组织数据的结构是()。

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

16.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的运行结果是()。A.20,30,B.30,17,C.15,30,D.20,15,

17.在下列几种排序方法中,要求内存量最大的是______。

A.插入排序B.选择排序C.快速排序D.归并排序

18.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

19.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。

A.O(1)B.O(n)C.O(n2)D.O(nlog2n)

20.

二、2.填空题(20题)21.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

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

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

24.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

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

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

#include<stdio.h>

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

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

#include<stdio.h>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;f=【】;}

returnm;

}

main()

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

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{inta=10,b=3;

printf("%d,",a%B);

printf("%d,",(a-b,a+B));

printf("%dLn",a-b?a-b:a+B);

}

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

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

main()

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

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

32.软件定义时期主要包括______和需求分析两个阶段。

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

34.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

35.在面向对象方法中,类之间共享属性和方法的机制称为______。

36.解题方案的准确而完整的描述称为______。

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

intmystrlen(char*str)

{inti;

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

return(i);}

38.按照“先进先出”的原则组织数据的结构是______。

39.以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k

s=s+fac;

}

}

40.有以下程序

main()

{intn=0,m=l,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出的结果是______。

三、1.选择题(20题)41.不能把字符串"HELLO!"赋绐数组b的语句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

42.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

43.有以下程序:#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。

A.2030B.2050C.3050D.3020

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

A.sets(&s[0]);

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

C.gets(s);

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

45.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

46.下列描述说明正确的是()

A.定义结构体时,它的每个成员的数据类型可以不同

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型不能是结构体本身

D.结构体定义时各成员项之间可用分号也可用逗号隔开

47.下列程序的输出结果为main(){unionu{char*name;intage;intincome;}="WANGLIONG";s.age=28;s.income=1000;printf("%d\n",s.age);}

A.28B.1000C.0D.不确定

48.下列关于字符串的说法中错误的是

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B.′\0′作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入′\0′

D.在C语言中,字符串常量隐含处理成以′\0′结尾

49.下面程序中有错误的行是()。(每行程序前面的数字表示符号)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}

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

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

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

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

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

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

51.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是

A.69825B.63825C.6385D.693825

52.下列程序的输出结果是()。intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-fprintf("%d,%d,%d\n",e,f,g);}

A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

53.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。

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

54.下面程序的输出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

55.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

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

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

57.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

58.阅读下列程序,则执行后的结果为#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

59.下列关于switch语句和break语句的结论中,正确的是

A.break语句是switch语句中的一部分

B.在switch语句中可以根据需要使用或不使用break句

C.在switch语句中必须使用break语句

D.以上三个结论中有两个是正确的

60.控制键^C的功能为()

A.终止当前操作B.系统复位C.暂停标准输出设备的输出D.结束命令行

四、选择题(20题)61.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其输出结果是()。

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

62.以下程序的运行结果是()。

A.17B.16C.15D.14

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

A.调用printf函数时,必须要有输出项

B.使用putChar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getChar函数读入字符时,可以从键盘上输入字符所对应的ASCIl码

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

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

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

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

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

65.将c语言的整数设为整数类1,则下面属于类I实例的是()。

A.一103B.10E3C.10.3D.“0103”

66.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

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

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

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

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

67.对于算法的每一步,指令必须是可执行的。算法的()要求算法在有限步骤之后能够达到预期的目的。

A.可行性B.有穷性C.正确性D.确定性

68.

69.

70.

71.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

A.1B.2C.4D.死循环

72.

73.

74.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

75.

76.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

A.32B.16C.1D.0

77.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以()方式打开文件。

A."wb"B."wb+"C."rb+"D."rb"

78.以下选项中可用做C程序合法实数的是()。

A..leOB.3.0e0.2C.E9D.9.12E

79.下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是()。

A.选择B.连接C.投影D.并

80.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:从字符串str中,删除所有大写字母F。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}

六、程序设计题(1题)82.编写函数fun,其功能是:将所有大于1小于整数m的非素数存人XX所指数组中,非素数的个数通过k返回。

例如,若输入17,则应输出:46891012141516。注意:部分源程序在文件PROGl.C中。

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

参考答案

1.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

2.Aftell是返回文件当前指针。

3.C

\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初始化;而语句q[]='abe'表示定义了一个一维字符数组,并用一个字符串常量'abc'进行了初始化。在C语言中,系统在每个字符串常量的最后自动加入一个字符\0作为字符串的结束符。所以函数sizeof(q)=4,而sizeof(p)=3,因而选项C为正确答案。

\n

\n

\n

4.C

5.B

6.D

7.A

8.B

9.D解析:栈是仅在表头和表尾进行插入和删除元素操作的线性表,其特点是“先进后出”。本题中,进栈的过程中可以出栈。选项D中,如果第一个出栈的元素为e3,由于入栈顺序是e1、e2、e3,那么e3出栈后,栈中元素必定有e1和e2,因为e1先入栈,故e1应在e2后出栈,所以选项D是不可能的出栈顺序。

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

11.A解析:解答本题需了解3个知识点:①标识符是由字母、数字或下划线组成,并且它的第一个字符必须是字母或者下划线;②do是C语言中的一个关键字,不能再用做变量名和函数名;③C语言规定,指数形式的实型常量e或E后面的指数必须是整数。

12.D第一次执行循环前,a=1,满足a<8,执行循环后,b=3,a=3。执行完a++操作后,a=4。由于a<8,执行第二次循环后,b=7,a=6,执行完a++操作后,a=7。由于a<8,执行第三次循环后,b=14,a=9,执行完a++操作后a=10。此时不满足a<8,跳出循环。

13.C宏定义只是做简单的替换,本题中SUB(a+b)*c=(a+b)-(a+b)*c=-20。故本题答案为C选项。

14.D124的2进制值为1111100,要输出为248即124*2,则2进制值为11111000,即右移l位,所以选D。

15.B栈是线性表的一种,其插入和删除运算都只在表的一端进行。进行插入、删除的一端称为栈顶,封闭的一端称为栈底。栈顶元素是最后被插入的元素,不是最后被删除的元素,是按先进后出的原则组织数据的。

16.D程序的结构体数组a的元素形成了一个单向的循环链表,每个元素的指针成员都指向下一个元素的地址。

17.D解析:快速排序的基本思想是,通过一趟排序将排序记录分割成独立的两部

分,其中一部分记录的关键字均比另一部分记录的关键字小,再分别对这两部分记录继

续进行排序,以达到整个序列有序;插入排序的基本操作是指将无序序列中的各元素依

次插入到已经有序的线性表中,从而得到一个新的序列;选择排序的基本思想是:扫描整

个线性表,从中选出最小的元素,将它交换到表的最前面(这是它应有的位置),然后对剩

下的于表采用同样的方法,直到表空为止;归并:排序是将两个或两个以上的有序表组合

成一个新的有序表。

注意:各种排序方法实现过程及实现机制。

18.C解析:在C语言中,字符串以'\\0'作为结束符,因此数组x的长度为7+1=8,而数组y的长度等于7。

19.B

20.B

21.概念(或概念级)概念(或概念级)

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

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

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

23.3131解析:在函数调用时,形参值和改变,不会改变实参的值。

24.ii解析:上三角的情况是对数组a[i][j],j≥j的时候,因此,在j≥i时应输出所需要的元素,故横线上应填i。

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

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

27.(-1)*ffun(10)(-1)*f\r\nfun(10)解析:本题利用一个fun函数来完成题目要求的计算。程序中变量f起的作用是控制i*f的符号,偶数位都为负值,第一处填(-1)*f。在main函数中要输出fun函数返回的m值,因此第二处填fun(10),实参10传给形参n。

28.11解析:本题是一个陷阱题。在if语句的判断表达式中,使用的不是逻辑运算符==而是赋值运算符=,使该表达式返回的结果正好相反。如果是c==a,则结果为假。但是c=a则是将a赋给c,且表达式的结果是赋值之后的c的值,因此结果为1是真.故最后输出c的值1。

29.11371,13,7解析:本题考查3个知识点:①余数的计算,题中的a=10,b=3,a%b=1;②(表达式1,表达式2)形式的结果为最后—个表达式的值,题中的a=10,b=3,(a-b,a+b)=a+b=13:③条件运算符的使用,题中的a-b?a-b:a+b,判断语句a-b=7不为0,所以执行a-b,结果为7。

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

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

32.可行性研究可行性研究解析:软件生命周期一般包括可行性研究与需求分析、设计、实现、测试、交付使用及维护等,还可以将软件生命周期分为三个阶段:①软件定义阶段:可行性研究和需求分析;②软件开发阶段:设计、实现和测试;③软件运行维护阶段:交付使用和维护。

33.22132,2,1,3解析:本题考查++,--运算符和条件运算符的使用。

“表达式1?表达式2:表达式3”的功能是:表达式1的值若非0,则计算表达式2的值,且表达式2的值为最终结果;若表达式1的值为0,则计算表达式3的值,且为最终结果。

本题中,x=1,y=2时,x<y成立,输出y的值2;y=2,z=3时,z<y不成立,执行y++,输出2后y值增1,所以最后一个输出x的值不变为1,y的值为增加后的3。

34.输出结果输出结果解析:注意:测试的基本方法和步骤。

35.继承继承解析:在面向对象的程序设计方法中,某些属性和方法是可以共享的,由于类从父类中继承而来,这样提高了软件的可重用性。

36.算法算法解析:算法是指对解题方案的准确而完整的描述。

37.*(str+i)或str[i]*(str+i)或str[i]解析:str是指针变量,它指向字符型数据,在循环过程中,可以用*(str+i)来访问字符串中的第i个元素,判断是否是结束标志,如果不是,i=i+1,继续取下一个元素进行判断,直到*(str+i)的值为'\\0'为止,也可以用下标的方式引用字符,如*(str+i)相当于str[i]。

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

39.k=k*ik=k*i解析:本题中通过for循环求s表达式中每一项的和,表达式“fac=fac/k;”求的是每一项的值,所以k的值应为n!,在求n!的时候,可以用上次循环阶乘的值乘i,就可以直接得此次n!,故本题填k=k*i。

40.-4-4解析:本题考核的知识点是if...else结构的应用。if…else构造了一种二路分支选择,是一种最基本的选择结构,if(条件)S1(if分结构)elseS2(else分结构),它的工作过程是:先对条件表达式进行判断,若为真(成立,值为非零),就执行if分结构(S1);否则(不成立,值为0),就执行else分结构(S2)。本题中,n=0,可以判断(!n)为真,执行x=x-1=2-1=1;m=1,可以判断(m)为真,执行x=x-2=1-2=-1;进而可以判断(x)为真,执行x=x-3=-l-3=4。所以,最后输出为叫

41.B解析:在C语言中,写字母和小写字母被认为是两个不同的字符,因此,“hello!”和“Hello!”是两个不同的字符串。

42.A解析:本题考查ifelse语句的使用。先判断第1个if语句,因为c=1>0,所以x=x+y=0+2=2。第1个if语句,因为a=-5<0,所以进入下列的复合语句。经判断发现,复合语句中第2个if语句的条件均不满足,不执行任何语句退出,在这个过程中y和z的值没有发生变化。

43.A解析:本题主要考查有关文件操作的函数的应用,其中:

①函数fopen的功能是打开一个文件,调用方式是:FILE*fp;

fp=fopen(文件名,使用文件方式);

②函数fprintf的功能是将格式化数据输出到一个文件中,调用方式是:

fprintf(文件指针,格式字符串,输出表列);

③函数fclose的功能是关闭一个文件,调用方式是:

fclose(文件指针);

④函数fscanf的功能是从磁盘文件执行格式化输入,调用方式是:

fscanf(文件指针,格式字符串,输入表列)。

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

45.A解析:函数定义时如果数据类型默认,则默认为int。函数中如果有“retum(表达式):”语句,表达式的类型可能与函数的类型不一致,但它并不能改变函数的类型,实际情况是把表达式转换为函数值的类型作为返回值,因此本题的函数值类型是int。

46.A

47.B解析:本题对共用体的使用进行了考查。由于共用体所有成员共同占据一段存储空间,所以对成员变量的赋值,后面的赋值会覆盖掉前面的赋值,因为s.income=1000;是最后一次成员变量赋值,变量age与变量income共同占据一段存储空间,所以age的值也为1000。

48.B解析:'\\0'作为标志占用存储空间,但是不计入串的实际长度。当给一个字符型指针赋值时,赋给这个指针的是这个字符串的地址。

49.D解析:第5行代码中scanf输入数据时,要求输入项为地址,而数组名即为数组的首地址,所以不应该再在前面加取地址符号&。注意:二维数组的定义、初始化及元素的引用方法。

50.C\r\n软件工程是试图用工程、科学和数学的原理与方法研制、维护计算机软件的有关技术及管理方法。软件工程的主要思想是强调在软件开发工程中需要应用工程化的原则。软件工程用来解决以下问题:软件需求的增长得不到满足、软件开发成本和进度无法控制、软件质量难以保证、软件不可维护或维护程度低、软件得成本不断提高、软件开发生产率的提高赶不上硬件的发展和应用需求的增长。软件项目的管理、软件产品的生产率、软件开发中的技术都是软件工程需要解决的部分问题。因此选项C正确。

51.C解析:该题稍微难一点。主要要搞清楚以下几点:①定义了一个指针数组char*p[2]后,程序中第一个循环for(i=0;i<2;i++)p[i]=ch[i];的作用,是使指针数组的p[0]元素(它本身是一个指针)指向了二维数组ch的第一行字符串,并使指针数组的p[1]元素指向二维数组ch的第二行字符串,这样,就使指针数组p和二维数组ch建立起了一种对应关系,以后对二维数组ch的某个元素的引用就有两种等价的形式:ch[i][j]或p[i][j]。②对二维数组ch的初始化,使其第一行ch[0]中存入了字符串“693

52.C解析:本题考查while循环。while循环的控制表达式k=1是个赋值表达式而不是逻辑表达式,所以循环体一次也不执行。

53.BB。【解析】根据二分法查找法需要两次:(1)首先将90与表中间的元素50进行比较,由于90大于50,所以性表的后半部分查找。(2)第二次比较的元素是后半部分的中间元素,即90,这时两者相等,即查找成功。

54.D解析:在C语言格式字符的输出中,“%d”是以带符号的十进制形式输出整数;“%60”是以8进制无符号形式输出整数(不输出前导符o);“%x”是以16进制无符号形式输出整数(不输出前导符Ox)。

55.B解析:此题为数据库的基本概念,可以对照办工软件的电子表格进行如下理解:选择:我们根据某条件选择出一行或多行元组(一个元组即为二维表中的一行)。投影:按字段(也称属性,比如学生关系(学号,姓名,出生年月,性别),学号、姓名…都是属性)选取一列或多列(一个二维表中所有元组在某一列或几列上截取出来)。连接:2个或2个以上的表连接组成一张新的表,通常有条件连接。比如学生关系(学号,姓名,系号),又有一张系表(系号,系名,主任),2张表可以合并为一张这样的表(学号,姓名,系号,系名,主任)。

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

57.D解析:20世纪70年代以来,提出了许多软件设计方法,主要有①逐步求精:对复杂的问题,应设计一些子目标作过渡,逐步细化;②自顶向下:程序设计时应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。不要一开始就过多追求众多的细节,先从最上层总目标开始设计,逐步使问题具体化;⑧模块化:一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为分目标,再进一步分解为具体的小目标,把每个小目标称为一个模块,而可复用是面向对象程序设计的一个优点。

58.A解析:数组a[5][5],0<=i<5,0<=j<5,则可以用5种表达式来引用,a[i][j],*a(a[i]+j),*(*(a+i)+j),(*(a+i))[j],*(&a[0][0]+5*i+j)。数组的下限为0,%后面为小写的x,所以输出的结果为小写字母表示的十六进制。

59.B解析:break语句可以用在switch和循环语句中,作用是跳出switch或循环结构,但并不要求switch结构和循环结构中必须有break语句,所以选项B)的说法是正确的。注意:break、continue语句在循环语句中的使用。

60.A

61.C

\n本题考查do-while循环,先执行d0输出的x的值为1,接着执行while语句,此时--x的值为0,x也为0,而非0为1,循环成立,接着执行do输出X值为-2,执行--x后,表达式为-2,而!(--x)为0,退出循环。

\n

62.Dfun函数语句retun3(a++)+c;中访问的a,是其内部定义的静态局部变量,main函数中语句k+=f(a)访问的a是其局部变量,所以两次调用实际上都是调用f(3)。第一次调用时,fun函数中c=4,表达式(a++)+c的

值为6,a递增为3,k=6。第二次调用时,fun函数种c=4,表达式(a++)+c的值为7,a递增为4,k=6+7=13。语句k+=a中的a是全局变量,所以k=13+l=14。

63.B本题考查的是标准输入输出函数。在使用标准输入输出库函数(除了printf和scanf)前,必须要用预编译命令”#include”将头文件”stdio.h”包括到用户源文件中。调用printf函数时可以没有输出项,比如printf(””)是允许的。c语言中整数的输出形式中没有十二进制的形式。getchar函数读人字符时可以得到第一个输入字符的ASCIl码,无法通过输入相应字符的ASCIl得到该字符。

64.A字符型指针变量可以用选项A的赋值方法:char$s;s=”Olympic”,选项C的写法:char$s。s={¨Olympic”};是错误的。字符数组可以在定义的时候初始化:chars[]={¨Olympic”};?或者chars[]=”Olympic”,都是正确的。但是不可以在定义字符数组后,对数组名赋值。(数组名是常量,代表数组首地址)所以选项8和选项D都是错误的。对于本例,选项B、D中字符数组s的大小至少为8,才能存放下字符串。(字符串的末尾都有结束标识‘、0’)。

65.A整数类实例包括:十进制常量用0—9表示,不能以0开头;/k进制常量用0-7表示,必须用0开头;十六进制常量用0—9和A—F(a—f)表示,必须以0x或OX开头。本题中B选项是科学计数法表示的浮点数实例,c选项是浮点数实例,D选项是字符串实例。故选A选项。

66.A\n对下标为偶数的元素进行降序排序,下标为奇数元素保持不变。

\n

67.A算法的特性;可行性,有穷性,确定性,有输入和输出。算法的可行性就是要求算法在有限步骤之后能够达到预期的目的。确定性要求算法每一个步骤都必须明确,无歧义,有穷性是指算法在不能无限制地执行下去。

68.A

69.B

70.C

71.A

\n在程序语句中,k的初始值为5,进行第l次while循环后,k自减1为4,非0,执行循环体里的printf语句,输出k,此时k的值变为1。程序执行第2次循环时,k自减1变为0,为假,退出while循环语句。所以程序的最后结果为1。

\n

72.B

73.C

74.C解析:EOF是文本文件的文件结束标志,NULL是打开文件错误的时候返回值。foef(fp)用来判断文件位置指针是否在文件末尾,文本文件和二进制文件均可以使用此函数。如果遇到文件结束就返回1,否则返回0。

75.D

76.C\n题中定义了无符号数,c=a>>3;是指右移3位,然后输出。结果为C。

\n

77.B本题考查文件使用方式标识符。方式“wb”为输出打开一个二进制文件;方式“wb+”为读写建立一个新的二进制文件;方式“rb+”为读写打开一个二进制文件;方式“rb”为输入打开一个二进制文件。

78.AC语言中实数的指数计数表示格式为字母e或者E之前必须有数字,且e或E后面的指数必须为整数。所以选项A正确。

79.B选择,连接,投影是专门的关系运算,选择是选择满足条件的元组,而投影是选择满足条件的属性或者说列。并是传统的关系运算,是将两个关系中的元组合并在一起再去掉重复的部分。选择,投影,并三个运算得到的结果属性数并没有改变或者说还有减少,而连接时将两个关系进行笛卡尔积运算,在挑选满足条件的项。其属性个数一般会多于原来关系中的属性数。

80.C十六进制是以“0x、0X”开头的字符串,字符串中只能含有0~9这l0个数字和a、b、C、d、e、f这6个字母。

81.(1)错误:for(i=j=0;str[i]!=0;i++)正确:for(i=j=0;str[i]!=\0;i++)(2)错误:str[j]=str[i];正确:str[i++]=str[i];【解析】根据题目中的要求,从字符串str中删除所有大写字母F,需要检查字符串str中的每一个字符,直到字符串结束,因此,“for(i=j=0;str[i]!=0;i++)”应改为“for(i=J=0;str[i]!=0;i++)”;将每一个不是F的字符放入原来的字符串中,形成新的字符串,因此,“str[j]=str[i];”应改为“str[j++]=str[i];”。

82.

【考点分析】

本题考查:如何判断非素数;循环判断结构;数组的引用。

【解题思路】

题目要求将l—m之问的非素数存人数组中,应使用循环判断结构。循环语句用来遍历1一m之间的每个数,判断语句用来判断该数是否为素数,若不是素数,则将其存人数组中。这道题目是考查—个数是否为素数的简单延伸,只要掌握了判断素数的方法,问题便能顺利解决。

【解题宝典】

判定一个数是否为素数,即该数除了能被l和它本身外,不能被任何数整除。

代码实现为:

for(j=2;j<i;j++)if(i%j==0)/*如余数为0,证明i不是素数·/

此语句需要熟记,很多判断素数的题目也可通过此法解决。2021年江苏省盐城市全国计算机等级考试C语言程序设计学校:________班级:________姓名:________考号:________

一、单选题(20题)1.在单链表中,增加头结点的目的是()。

A.方便运算的实现B.使单链表至少有一个结点C.标识表结点中首结点的位置D.说明单链表是线性的链式存储实现

2.以下函数不能用于向文件中写入数据的是()。

A.hellB.fwriteC.fputcD.fprintf

3.

有下列程序:

main

{charp[]={a,h,c},q[]="a";

printf("%d%d\n".sizeof(P),sizeof(q));

}

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

A.44B.33C.34D.43

4.一个C语言程序总是从()开始执行。

A.书写顺序的第一函数B.书写顺序的第一条执行语句C.主函数main()D.不确定

5.以下符合C语言语法的赋值表达式是()。

A.d=9+e+f=d+9B.d=9+e,f=d+9C.d=9十e,e++,d十9D.d=9十e++=d十7

6.表达式a*(-b+c)的逆波兰式是()

A.ab-+c*B.abc-+*C.a*b-c+D.ab-c+*

7.计算机识别.存储和加工处理的对象被统称为_________

A.数据B.数据元素C.数据结构D.数据类型

8.

9.设栈S的初始状态为空,栈的容量为5,若入栈元素的顺序是e1、e2、e3、e4、e5,则出栈元素的顺序不可能是______。

A.e1、e2、e3、e4、e5

B.e5、e4、e3、e2、e1

C.e2、e4、e3、e5、e1

D.e3、e4、e1、e2、e5

10.有下列程序: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);printS(”%d,”,k);k=fun(j,m);printf(”%d\n”,k);)执行后的输出结果是()。A.5,5B.5,11C.11,11D.11,5

11.下列变量声明合法的是()。

A.shorta=1.4e-1;

B.doubleb=1+3e2.8;

C.longdo=OxfdaL;

D.float2

12.有以下程序:#include<stdi0.h>main(){inta=1,b=2;for(;a<8;a++){b+=a;a+=2;)printf("%d,%d\n",a,b);}程序运行后的输出结果是()。A.9,18B.8,11C.7,11D.10,14

13.有以下程序:#include<stdio.h>#defineSUB(a)(a)-(a)main(){inta=2,b=3,c=5,d;d=SUB(a+b)*c;printf(“%d\n”,d);}程序的运行结果是()。

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

14.有以下程序:#include<stdio.h>main{shortC=124;C=C_;printf("%d\n",c);}若要使程序的运行结果为248,应在下划线处填入的是()。A.>>2B.|248C.&0248D.<<1

15.按照“先进后出”原则组织数据的结构是()。

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

16.有以下程序#include<stdio.h>structtt(intx;structtt*y;)*P;structtta[4]={20,a+1,15,a+2,30,a+3,17,a};main{inti;p=a;for(i=l;i<=2;i++){printf("%d,",p->x);P=p->y;}}程序的运行结果是()。A.20,30,B.30,17,C.15,30,D.20,15,

17.在下列几种排序方法中,要求内存量最大的是______。

A.插入排序B.选择排序C.快速排序D.归并排序

18.给出以下定义:charx[]="abcdefg";chary[]={'a','b','c','d','e','f','g'};则正确的叙述为()。

A.数组x和数组y等价B.数组x和数组y的长度相同C.数组x的长度大于数组y的长度D.数组x的长度小于数组y的长度

19.在一个具有n个结点的有序单链表中插入一个新结点并仍然保持有序的时间复杂度是()。

A.O(1)B.O(n)C.O(n2)D.O(nlog2n)

20.

二、2.填空题(20题)21.数据库系统的三级模式分别为______模式、内部级模式与外部级模式。

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

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

fun(intx,inty,intz)

{z=x*x+y*y;}

main()

{inta=31;

fun(6,3,a)

printf("%d,a)

}

24.有以下程序:

main()

{intnum[4][4]={{1,2,3,4),{5,6,7,8),{9,10,11,12),{13,14,15,16}},i,j;

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

{for(j=0;j<=i;j++)printf("%4c",'');

for(j=______;j<4;j++)printf("%4d",num[i][j]);

printf("\n");

}

}

若要按以下形式输出数组右上半三角:

1234

678

1112

16

则在程序下划线处应填入的是【】。

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

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

#include<stdio.h>

voidfun()

{staticinta=0;

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

}

main()

{intcc;

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

printf("\n");

}

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

#include<stdio.h>

intfun(intn)

{intm=0,f=1,i;

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

{m+=i*f;f=【】;}

returnm;

}

main()

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

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

main()

{inta=1,b=2,c=3;

if(c=A)printf("%d\n",C);

elseprintf("%d\n",B);

}

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

#include<stdio.h>

main()

{inta=10,b=3;

printf("%d,",a%B);

printf("%d,",(a-b,a+B));

printf("%dLn",a-b?a-b:a+B);

}

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

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

main()

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

for(;;)

{i+=k;

if(i>j)

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

break;}

s+=i;}}

32.软件定义时期主要包括______和需求分析两个阶段。

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

main()

{intx=1,y=2,z=3;

printf("%d,",x<y?y:x);

printf("%d,",z<y?x++:y++);

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

}

34.为了便于对照检查,测试用例应由输入数据和预期的【】两部分组成。

35.在面向对象方法中,类之间共享属性和方法的机制称为______。

36.解题方案的准确而完整的描述称为______。

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

intmystrlen(char*str)

{inti;

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

return(i);}

38.按照“先进先出”的原则组织数据的结构是______。

39.以下函数的功能是计算s=1+1/2!+1/3!+…+1/n!,请填空。

doublefun(intn)

{doubles=0.0,fac=1.0;

inti,k=1;

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

{【】;

fac=fac/k

s=s+fac;

}

}

40.有以下程序

main()

{intn=0,m=l,x=2;

if(!n)x-=1;

if(m)x-=2;

if(x)x-=3;

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

}

执行后输出的结果是______。

三、1.选择题(20题)41.不能把字符串"HELLO!"赋绐数组b的语句是______。

A.charb[10]={'H,''E','L','L','O','!'};

B.charb[10]={'h','e'.,l','l','o''!'};

C.charb[10];strcpy(b,"Hello!");

D.charb[10]="Hello!";

42.下列程序的运行结果是()。main(){inta=-5,b=1,c=1;intx=0,Y=2,z=0;if(c>0)x=x+y;if(a<=0){if(b>0)if(c<=0)y=x-y;}elseif(c>0)Y=x-y;elsez=y;printf("%d,%d,%d\n",x,y,z);}

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

43.有以下程序:#include<stdio.h>main(){FILE*fp;inti=20,j=30,k,n;fp=fopen("d1.dat","w");fprintf(fp,"%d\n",i);fprintf(fp,"%d\n",j);fclose(fp);fp=fopen("d1.dat","r");fscanf(fp,"%d%d",&k,&n);printf("%d%d\n",k,n);fclose(fp);}程序运行后的输出结果是()。

A.2030B.2050C.3050D.3020

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

A.sets(&s[0]);

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

C.gets(s);

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

45.以下函数值的类型是_______。fun(floatx){floaty;y=3*x-4;returny;}

A.intB.不确定C.voidD.float

46.下列描述说明正确的是()

A.定义结构体时,它的每个成员的数据类型可以不同

B.不同结构体的成员名不能相同

C.结构体定义时,其成员的数据类型不能是结构体本身

D.结构体定义时各成员项之间可用分号也可用逗号隔开

47.下列程序的输出结果为main(){unionu{char*name;intage;intincome;}="WANGLIONG";s.age=28;s.income=1000;printf("%d\n",s.age);}

A.28B.1000C.0D.不确定

48.下列关于字符串的说法中错误的是

A.在C语言中,字符串是借助于字符型一维数组来存放的,并规定以字符′\0′作为字符串结束标志

B.′\0′作为标志占用存储空间,计入串的实际长度

C.在表示字符串常量的时候不需要人为在其末尾加入′\0′

D.在C语言中,字符串常量隐含处理成以′\0′结尾

49.下面程序中有错误的行是()。(每行程序前面的数字表示符号)1main()2{3inta[3]={1};4inti;5scanf("%d",&a);6for(i-1;i<3;i++)a[0]=a[0]+a[i];7printf("a[0]=%d\n,"a[0]);8}

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

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

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

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

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

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

51.有如下程序main(){charch[2][5]={"6937","8254"},*p[2];inti,j,s=0;for(i=0;i<2;++)p[i]=ch[i];for(i=0;i<2;i++)for(j=0;p[i][j]>'\0';j+=2)s=10*s+p[i][j]-'0';printf("%d\n",s);}该程序的输出结果是

A.69825B.63825C.6385D.693825

52.下列程序的输出结果是()。intf1(intx,inty){returnx>y?x:y;}intf2(intx,inty){returnx>y?y:x;}main(){inta=4,b=3,c=5,d=2,e,f,g;e=f2(f1(a,b),f1(c,d));f=f1(f2(a,b),f2(c,d));g=a+b+c+d-e-fprintf("%d,%d,%d\n",e,f,g);}

A.while循环执行10次B.循环是无限循环C.循环体语句一次也不执行D.循环体语句执行一次

53.已知一个有序线性表为(13,18,24,35,47,50,62,83,90,115,134),当用二分法查找值为90的元素时,查找成功的比较次数为()。

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

54.下面程序的输出是______。main(){intk=11;printf("k=%d,k=%o,k=%x\n",k,k,k);}

A.k=11,k=12,k=11

B.k=11,k=13,k=13

C.k=11,k=013,k=0xb

D.k=11,k=13,k=B

55.关系数据库管理系统能实现的专门关系运算包括()。

A.排序、索引、统计B.选择、投影、连接C.关联、更新、排序D.显示、打印、制表

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

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

57.下列选项中不属于结构化程序设计方法的是()。

A.自顶向下B.逐步求精C.模块化D.可复用

58.阅读下列程序,则执行后的结果为#include"stdio.h"main(){intc[][4]={1,2,3,4,5,6,7,34,213,56,62,3,23,12,34,56};printf("%x,%x\n",c[2][2],*(*(c+1)+1));}

A.3e,6B.62,5C.56,5D.3E,6

59.下列关于switch语句和break语句的结论中,正确的是

A.break语句是switch语句中的一部分

B.在switch语句中可以根据需要使用或不使用break句

C.在switch语句中必须使用break语句

D.以上三个结论中有两个是正确的

60.控制键^C的功能为()

A.终止当前操作B.系统复位C.暂停标准输出设备的输出D.结束命令行

四、选择题(20题)61.

有以下程序段:

intx=3;

do

{printf("%d",x-=2);)

while(!(--x));

其输出结果是()。

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

62.以下程序的运行结果是()。

A.17B.16C.15D.14

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

A.调用printf函数时,必须要有输出项

B.使用putChar函数时,必须在之前包含头文件stdio.h

C.在C语言中,整数可以以十二进制、八进制或十六进制的形式输出

D.调用getChar函数读入字符时,可以从键盘上输入字符所对应的ASCIl码

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

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

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

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

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

65.将c语言的整数设为整数类1,则下面属于类I实例的是()。

A.一103B.10E3C.10.3D.“0103”

66.有以下程序(函数fun只对下标为偶数的元素进行操作):

#include<stdio.h>

voidfun(int*n)

{inti,j,k,t;

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

{k=i;

for(j=i;j<n;j+=2)if(a[j]>a[k])k=j;

t[a[i];a[i]=a[k];a[k]=t;

}

}

main

{intaa[lO]=[1,2,3,4,5,6,7],a;

fun(aa,7);

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

printf("n");

}

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

A.7,2,5,4,3,6,1,

B.1,6,3,4,5,2,7,

C.7,6,5,4,3,2,1,

D.1,7,3,5,6,2,1,

67.对于算法的每一步,指令必须是可执行的。算法的()要求算法在有限步骤之后能够达到预期的目的。

A.可行性B.有穷性C.正确性D.确定性

68.

69.

70.

71.

有下列程序:

main

{intk=5:

while(--k)printf("%d",k=1);

printf("\n");

}

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

A.1B.2C.4D.死循环

72.

73.

74.若fp是指向某文件的指针,且已读到文件末尾,则库函数feof(fp)的返回值是

A.EOFB.-1C.1D.NULL

75.

76.有以下程序:

#include<stdio.h>

main()

{unsignedchara=8,C;

C=a>>3:

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

}

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

A.32B.16C.1D.0

77.若要用函数fopen打开一个新的二进制文件,该文件要既能读也能写,则应以()方式打开文件。

A."wb"B."wb+"C."rb+"D."rb"

78.以下选项中可用做C程序合法实数的是()。

A..leOB.3.0e0.2C.E9D.9.12E

79.下列关系运算中,能使经运算后得到的新关系中属性个数多于原来关系中属性个数的是()。

A.选择B.连接C.投影D.并

80.下列选项中不合法的十六进制数是()。

A."0"xffB."0"X11C."0"x1gD.”0”Xabc

五、程序改错题(1题)81.下列给定程序中,函数proc的功能是:从字符串str中,删除所有大写字母F。请修改程序中的错误,使它能得到正确结果。注意:不要改动main函数,不得增行或删行,也不得更改程序的结构。试题程序:#include<stdio.h>voidproc(char*str){inti,j;//****found****for(i=j=0;str[i]一0;i++)if(str[i]!=F)//****found****str[i]=str[i];str[j]=\0;}voidmain{charstr[80];printf("\nEnterastring:");gets(str);printf("Theoriginalstring:");puts(str);proc(str);printf("Thestringafterdeleted:");puts(str);printf("\n\n");}

六、程序设计题(1题)82.编写函数fun,其功能是:将所有大于1小于整数m的非素数存人XX所指数组中,非素数的个数通过k返回。

例如,若输入17,则应输出:46891012141516。注意:部分源程序在文件PROGl.C中。

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

参考答案

1.A根据单位链表(包含头结点)的结构,只要掌握了表头,就能够访问整个链表,因此增加头结点的目的是为了便于运算的实现。

2.Aftell是返回文件当前指针。

3.C

\n语句charp[]={a,b,c);定义了一个一维字符数组p[],并用3个字符a,b,c进行了初

温馨提示

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

最新文档

评论

0/150

提交评论