文档库 最新最全的文档下载
当前位置:文档库 › 2005年4月计算机等级考试二级C语言习题解析

2005年4月计算机等级考试二级C语言习题解析

2005年4月计算机等级考试二级C语言习题解析
2005年4月计算机等级考试二级C语言习题解析

2005年4月全国计算机等级考试二级C语言笔试试题及答案

一、选择题(1~10每小题2分,11~50每小题1分,共60分)

下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。

(1)数据的存储结构是指______。数据结构的存储结构包括顺序存储链式存储,是指逻辑结构在计算机中的表示,

A)存储在外存中的数据 B)数据所占的存储空间量

C)数据在计算机中的顺序存储方式 D)数据的逻辑结构在计算机中的表示(2)下列关于栈的描述中错误的是______。不是,可以链式存储

栈也是线性表,因此线性表的存储结构对栈也线性表可以链式存储

A)栈是先进后出的线性表

B)栈只能顺序存储

C)栈具有记忆作用

D)对栈的插入与删除操作中,不需要改变栈底指针

(3)对于长度为n的线性表,在最坏情况下,下列各排序法所对应的比较次数中正确的是______。

A)冒泡排序为n/2 B)冒泡排序为n n(n-1)/2

C)快速排序为n D)快速排序为n(n-1)/2最坏为n*(n-1)/2

最好为n*logn

(4)对长度为n的线性表进行顺序查找,在最坏情况下所需要的比较次数为______。

A)log2n B)n/2 C)n D)n+1

(5)下列对于线性链表的描述中正确的是______。

A)存储空间不一定是连续,且各元素的存储顺序是任意的

B)存储空间不一定是连续,且前件元素一定存储在后件元素的前面

C)存储空间必须连续,且前件元素一定存储在后件元素的前面

D)存储空间必须连续,且各元素的存储顺序是任意的

(6)下列对于软件测试的描述中正确的是______。

A)软件测试的目的是证明程序是否正确

B)软件测试的目的是使程序运行结果正确

C)软件测试的目的是尽可能多地发现程序中的错误

D)软件测试的目的是使程序符合结构化原则

(7)为了使模块尽可能独立,要求______。

A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强

B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱

C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱

D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强

(8)下列描述中正确的是______。

A)程序就是软件

B)软件开发不受计算机系统的限制

C)软件既是逻辑实体,又是物理实体

D)软件是程序、数据与相关文档的集合

(9)数据独立性是数据库技术的重要特点之一,所谓数据独立性是指______。A)数据与程序独立存放

B)不同的数据被存放在不同的文件中

C)不同的数据只能被对应的应用程序所使用

D)以上三种说法都不对数据独立性分逻辑独立性和物理独立性,物理独立性是指存储结构的独立性,逻辑独立性是元素间的独立性

(10)用树形结构表示实体之间联系的模型是______。

A)关系模型 B)网状模型 C)层次模型 D)以上三个都是

(11)算法具有五个特性,以下选项中不属于算法特性的是______。

A)有穷性 B)简洁性 C)可行性 D)确定性

(12)以下选项中可作为C语言合法常量的是______。

A)-80. B) -080 C)-8e1.0 D)-80.0e e前e后(整数)必须有数字。(13)以下叙述中正确的是______。

A)用C程序实现的算法必须要有输入和输出操作

B)用C程序实现的算法可以没有输出但必须要输入

C)用C程序实现的算法可以没有输入但必须要有输出可以没有输入,但至少有一个输出

D)用C程序实现的算法可以既没有输入也没有输出

(14)以下不能定义为用户标识符的是______。

A)Main B)_0 C)_int D)sizeof

(15)以下选项中不能作为合法常量的是______。

A)1.234e04 B)1.234e0.4 C)1.234e+4 D)1.234e0

(16)数字字符0的ASCII值为48,若有以下程序

main()

{ char a='1',b='2 ';

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

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

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

A) 3,2 B)50,2 C)2,2 D)2,50

(17)有以下程序

main(){ int m=12,n=34;

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

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

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

A)12353514 B)12353513 C)12343514 D)12343513

(18)有定义语句:int b;char c[10];,则正确的输入语句是______。

A) scanf("%d%s",&b,&c); B)scanf("%d%s",&b, c);

C) scanf("%d%s",b, c); D) scanf("%d%s",b,&c);

(19)有以下程序

main(){ int m,n,p;

scanf("m=%dn=%dp=%d",&m,&n,&p);

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

若想从键盘上输入数据,使变量m中的值为123,n中的值为456,p中的值为789,则正确的输入是______。

A)m=123n=456p=789 B) m=123 n=456 p=789

C) m=123,n=456,p=789 D)123 456 789

(20)有以下程序

main()这段程序意思是将b除以10 得2(int型省略小数)再求余得2。a && (-1)是一个bool值两边都不得0 表示两边都是真所以 b=1 所以输出结果为 a=2 b=1

{ int a,b,d=25;

a=d/10%9;

b=a&&(-1);

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

}程序运行后的输出结果是______。

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

(21)有以下程序

main()

{ int i=1,j=2,k=3;

if(i++==1&&(++j==3||k++==3))

printf("%d %d %d\n",i,j,k); }

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

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

#include

void main()

{

int i=1,j=2,k=3;

//这样换行格式不太好,但解说方便

if(i++==1 //先使用i的值,再给i+1,也就是先判断i==1(true),然后i+1变为2

&&

(++j==3 //先给j+1,再判断j==3,此值为true,j变为3 此小括号内表达式为true

||k++==3) ) //由于此表达式与前一个外层有小括号,而它们是用|| 连接,前一式子为true,此处不执行,k仍然为3

printf("%d%d%d\n",i, j, k); //我补全了,是这样吧。if后表达式为true,此处执行,输出

}

此处只要考察

i++ //先使用i的值再加1 ,看加号的位置,很好记

++i //先加1再使用i的值

以及 || 当第一个表达式为真时,后面的表达式不运算;

(22)若整型变量a、b、c、d中的值依次为:1、4、3、2。则条件表达式aA)1 B)2 C)3 D)4

(23)有以下程序

main()

{ int p[8]={11,12,13,14,15,16,17,18},i=0,j=0;

while(i++<7) if(p[i]%2) j+=p[i];

printf("%d\n",j); }

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

if(p[i]%2) 等同if(p[i]%2==1)

i = 0, < 7, i++ 得1,p[i]=12, p[i]%2=0 为假

i = 1, < 7, i++ 得2,p[i]=13,p[i]%2=0 为真j=13

i = 2 < 7, i++ 得3,p[i]=14, p[i]%2=0 为假

i = 3, < 7, i++ 得4,p[i]=15,p[i]%2=0 为真j=13+15

i = 4, ,,,为假

i = 5, < 7, i++ 得6,p[i]=17,p[i]%2=0 为真j=13+15+17

i= 6, ,,,为假

最终 j=13+15+17=45

A)42 B)45 C)56 D)60

(24)有以下程序

main()

{ char a[7]="a0\0a0\0"; int i,j;

i=sizeof(a); j=strlen(a);

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

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

A)2 2 B)7 6 C)7 2 D)6 2

(25)以下能正确定义一维数组的选项是______。

A)int a[5]={0,1,2,3,4,5}; B)char a[]={0,1,2,3,4,5};对应的ascll码值。

C)char a={'A','B','C'}; D)int a[5]="0123";

A中超出了数组长度C没指名数组长度D中赋予初始值没有加上括号。

(26)有以下程序

int f1(int x,int y){return x>y?x:y;}

int f2(int x,int y){return x>y?y:x;}

main()

{ int a=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-f;

printf("%d,%d,%d\n",e,f,g); }

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

A)4,3,7 B)3,4,7 C)5,2,7 D)2,5,7

(27)已有定义:char a[]="xyz",b[]={'x','y','z'};,以下叙述中正确的是______。

A)数组a和b的长度相同 B)a数组长度小于b数组长度

C)a数组长度大于b数组长度 D)上述说法都不对

(28)有以下程序

void f(int *x,int *y)

{ int t; t=*x;*x=*y;*y=t; }

main()

{ int a[8]={1,2,3,4,5,6,7,8},i,*p,*q;

p=a;q=&a[7];

while(p{f(p,q);p++;q--;}

for(i=0;i<8;i++)printf("%d,",a[i]);}

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

A)8,2,3,4,5,6,7,1, B)5,6,7,8,1,2,3,4,

C)1,2,3,4,5,6,7,8, D)8,7,6,5,4,3,2,1,

(29)有以下程序

main()

{ int a[3][3],*p,i;

p=&a[0][0];

for(i=0;i<9;i++)p[i]=i;

for(i=0;i<3;i++)printf("%d",a[1][i]); }

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

A)012 B)123 C)234 D)345

(30)以下叙述中错误的是______。

A)对于double类型数组,不可以直接用数组名对数组进行整体输入或输出

B)数组名代表的是数组所占存储区的首地址,其值不可改变

C)当程序执行中,数组元素的下标超出所定义的下标范围时,系统将给出“下标越界”的出错信息

D)可以通过赋初值的方式确定数组元素的个数

(31)有以下程序#define N 20

fun(int a[],int n,int m)

{ int i,j;

for(i=m;i>=n;i--)a[i+1]=a[i]; }

main()

{ int i,a[N]={1,2,3,4,5,6,7,8,9,10};

fun(a,2,9);

for(i=0;i<5;i++)printf("%d",a[i]); }

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

A)10234 B)12344 C)12334 D)12234

(32)有以下程序

main()

{ int a[3][2]={0},(*ptr)[2],i,j;

for(i=0;i<2;i++) {ptr=a+i;scanf("%d",ptr); ptr++; }即只能输入0和1行。for(i=0;i<3;i++)

{ for(j=0;j<2;j++) printf("%2d",a[i][j]); printf("\n"); }

}若运行时输入:1 2 3<回车>,则输出结果是______。

A)产生错误信息 B)1 0 C)1 2 D)1 0

2 0

3 0 2 0

0 0 0 0 3 0

(33)有以下程序

prt(int *m,int n) { int i; for(i=0;i}

main() { int a[]={1,2,3,4,5},i; prt(a,5);

for(i=0;i<5;i++) printf("%d,",a[i]); }

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

A)1,2,3,4,5, B)2,3,4,5,6, C)3,4,5,6,7, D)2,3,4,5,1,

(34)有以下程序

main()

{ int a[]={1,2,3,4,5,6,7,8,9,0},*p;

for(p=a;p}

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

A)1,2,3,4,5,6,7,8,9,0, B)2,3,4,5,6,7,8,9,10,1,

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

(35)有以下程序

#define P 3

void F(int x){return(P*x*x);}

main(){printf("%d\n",F(3+5));}

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

A)192 B)29 C)25 D)编译出错

#define P 3

#define F(x) P*(x)*(x)

main() { printf("%d\n",F(3+5)); }

(宏定义只是一个简单的带入。没有函数的功能。所以说运行结果出错。) 这道题目答案是192。

(36)有以下程序

main()

{int c=35;printf("%d\n",c&c);}

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

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

(37)以下叙述中正确的是______。

A)预处理命令行必须位于源文件的开头

B)在源文件的一行上可以有多条预处理命令

C)宏名必须用大写字母表示

D)宏替换不占用程序的运行时间

评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可用小写字母。

预处理命令是以#号开头的代码行,每一条预处理命令必须单独占用一行,由于不是C的语句,因此在结尾不能有分号“;”。

宏被定义后,其作用域一般为定义它的文件,通常#define命令写在文件的开头,但这也并非规定,实际上宏定义可以出现在程序的任何地方,但必须位于引用之前。

(38)若有以下说明和定义

union dt

{int a;char b;double c;}data;

以下叙述中错误的是______。

A)data的每个成员起始地址都相同

B)变量data所占的内存字节数与成员c所占字节数相等

C)程序段:data.a=5;printf("%f\n",data.c);输出结果为5.000000

D)data可以作为函数的实参

5在内存中的存储为00000000....101(二进制)

这样的数对于符点数解释输出是0

(39)以下语句或语句组中,能正确进行字符串赋值的是______。

A)char *sp;*sp="right!"; B)char s[10];s="right!";

C)char s[10];*s="right!"; D)char *sp="right!";

(40)设有如下说明

typedef struct ST

{long a;int b;char c[2];}NEW;

则下面叙述中正确的是______。

A)以上的说明形式非法 B)ST是一个结构体类型

C)NEW是一个结构体类型 D)NEW是一个结构体变量

(41)有以下程序

main()

{ int a=1,b;

for(b=1;b<=10;b++)

{ if(a>=8)break;

if(a%2==1){a+=5;continue;}

a-=3;

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

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

A)3 B) 4 C)5 D)6

(42)有以下程序

main()

{ char s[]="159",*p; p=s; printf("%c",*p++);printf("%c",*p++); }

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

A)15 B)16 C)12 D)59

*p++ 表达式的意思是向后移动了一位,但是此时指针所指的位置没有变,所以输出是1,然后第一次printf("%c",*p++)运行后,指针向后移动了一位,指到了5的位置。。所以输出15, 即先*p,p++。

(43)有以下函数

fun(char *a,char *b)

{ while((*a!='\0')&&(*b!='\0')&&(*a==*b))

{ a++;b++; }

return(*a-*b);

}该函数的功能是______。

A)计算a和b所指字符串的长度之差

B)将b所指字符串连接到a所指字符串中

C)将b所指字符串连接到a所指字符串后面

D)比较a和b所指字符串的大小

(44)有以下程序

main()

{ int num[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=i;j<4;j++)printf("%4d",num[i][j]);输出左三角即对调for后语句、printf("\n"); } }

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

1 2 3 4

6 7 8

11 12

16

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

A)i-1 B)i C)i+1 D)4-i

(45)有以下程序

point(char *p){p+=3;} 指针传进去,不是改指针指向的值

main() { char b[4]={'a','b','c','d'},*p=b;

point(p);printf("%c\n",*p);

void point(char **p)p装的是b的首地址。Char *p,p接受b的首地址。Char *(*P)即p的地址,p装的是b的地址。*P即p里装着的地址,使得地址+3,若为p+3,则释放。

{ *p+=3; }

* 在调用函数里,要改指针的值,需要指针的指针

* 记住,c语言的参数都是按值传递的

}程序最后一句如果是:printf("%c\n",*p);输出a。

point函数的功能:使传入的指针偏移三个单位。

当你在main函数中调用point函数,将p指针的值传给point函数进行偏移。在程序运行中当执行一个函数时都是开辟一段空间让函数执行,当执行完毕之后程序就会收回这段空间。

所以说当你执行完point之后程序就收回了空间,所以在point函数中的p的值增加了3.但是当这个函数执行结束后这段空间就被释放了,所以在main函数中p的值不变,所以打印出来得还是a。

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

A)a B)b C)c D)d

(46)程序中若有如下说明和定义语句

char fun(char *); main()

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

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

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

(47)有以下结构体说明和变量定义,如图所示:

struct node

{int data;

struct node *next;

} *p,*q,*r;

现要将q所指结点从链表中删除,同时要保持链表的连续,以下不能完成指定操作的语句是______。

A)P->next=q->next; B)p->next=p->next->next;

C)p->next=r; D)p=q->next;

(48)以下对结构体类型变量td的定义中,错误的是______。

A)typedef struct aa B)struct aa

{ int n; { int n;

float m; float m;

}AA; }td;

AA td; struct aa td;

C)struct D)struct

{ int n; { int n;

float m; float m;

}aa; }td;

struct aa td;

(49)以下与函数fseek(fp,0L,SEEK_SET)有相同作用的是______。

fseek

函数名: fseek

功能: 重定位流上的文件指针

用法: int fseek(FILE *stream, long offset, int fromwhere);

描述: 函数设置文件指针stream的位置。如果执行成功,stream将指向以fromwhere为基准,偏移offset个字节的位置。如果执行失败(比如offset超过文件自身大小),则不改变stream指向的位置。

返回值: 成功,返回0,否则返回其他值。

函数名: rewind

功能: 将文件内部的位置指针重新指向一个流(数据流/文件)的开头

注意:不是文件指针而是文件内部的位置指针,随着对文件的读写文件的位置指针(指向当前读写字节)向后移动。而文件指针是指向整个文件,如果不重新赋值文件指针不会改变。

用法: void rewind(FILE *stream);

A)feof(fp)检测流上的文件结束符 B)ftell(fp) 返回当前文件位置,也就是说返回FILE指针当前位置。C)fgetc(fp) D)rewind(fp)

(50)有以下程序

#include

void WriteStr(char *fn,char *str)

{ FILE *fp;

fp=fopen(fn,"w");fputs(str,fp);fclose(fp); }

main()

{ WriteStr("t1.dat","start"); WriteStr("t1.dat","end"); }

程序运行后,文件t1.dat中的内容是______。

A)start B)end C)startend D)endrt

原因如下:

fopen打开文件时,如果打开文件的流形态为"w"的话,

相关的处理如下:

w:

打开只写文件,若文件存在则文件长度清为0,即该文件内容会消失。若文件不存在则建立该文件。

所以,在进行fp=fopen(fn,"w");这个处理时,

由于是以w方式打开文件"t1.dat",

所以不论之前文件中有没有内容,或者有什么内容,

在打开时,都会被清空。

所以,t1.dat中指会被写上最后一次写入的内容,

在这里也就是"end"了。

二、填空题(每空2分,共40分)

请将每空的正确答案写在【1】至【20】序号的横线上,答在试卷上不得分。(1)某二叉树中度为2的结点有18个,则该二叉树中有【1】个叶子结点。

度为2的节点数=度为0的节点数(叶子节点数)-1

(2)在面向对象方法中,类的实例称为【2】对象。

(3)诊断和改正程序中错误的工作通常称为【3】程序调试。

(4)在关系数据库中,把数据表示成二维表,每一个二维表称为【4】关系。(5)问题处理方案的正确而完整的描述称为【5】算法。

(6)以下程序运行时,若从键盘输入:10 20 30<回车>,输出的结果是【6】。#include

main()

{ int i=0,j=0,k=0;

scanf("%d%*d%d",&i,&j,&k);也就是说忽略一个输入,那么20就被忽略了,即输入10和30.k=0、printf("%d%d%d\n",i,j,k);}

(7)以下程序运行后的输出结果是【7】。

#define S(x) 4*x*x+1

main(){ int i=6,j=8;printf("%d\n",S(i+j));}

(8)以下程序运行后的输出结果是【8】。

main(){ int a=3,b=4,c=5,t=99;

if(b

if(a a

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

初始a=3,b=4,c=5,t=99

第一个if语句b

此时a=5,c=99第二个if语句a

此时,a=4,b=5最后输出4,5,99

(9)以下程序运行后的输出结果是【9】。

main(){ int a,b,c;

a=10; b=20; c=(a%b<1)||(a/b>1);a对b求余

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

因为%的优先级高于<的优先级,所以a%b<1=(a%b)<1=(10%20)<1=0<1=1

同理a/b > 1 = 0 (/的优先级高于>的优先级)

所以c也为1因此 a=10,b=20,c=1

(10)以下程序运行后的输出结果是【10】。

main()

{ char c1,c2;

for(c1='0',c2='9';c1 printf("\n");}

(11)已知字符A的ASCII代码值为65,以下程序运行时若从键盘输入:B33<回车>,则输出结果是【11】。

#include main(){ char a,b; a=getchar();scanf("%d",&b);

a=a-'A'+'0';b=b*2;printf("%c %c\n",a,b);}

(12)以下程序中,fun函数的功能是求3行4列二维数组每行元素中的最大值。请填空。

void fun(int,int,int(*)[4],int *);

main()

{ int a[3][4]={{12,41,36,28},{19,33,15,27},{3,27,19,1}},b[3],i;

fun(3,4,a,b);

for(i=0;i<3;i++) printf("%4d",b[i]);

printf("\n");

}void fun(int m,int n,int ar[][4],int *br)

{ int i,j,x;

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

{ x=ar[i][0];

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

if( x

x=ar[i][j]; br[i] = x ;

【12】 =x; }}

(13)以下程序运行后的输出结果是【13】。

void swap(int x,int y)

{ int t;t=x;x=y;y=t;printf("%d %d ",x,y);}

main()

{ int a=3,b=4;swap(a,b); printf("%d %d",a,b);}

(14)以下程序运行后的输出结果是【14】。

#include

void fun(char *s,int p,int k)

{ int i;

for(i=p;i}

main()

{ char s[]="abcdefg";

fun(s,3,strlen(s)); puts(s);}

(15)以下程序运行后的输出结果是【15】。

#include main()

{ char ch[]="abc",x[3][4]; int i;

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

for(i=0;i<3;i++) printf("%s",&x[i][i]);输出x[1][1]x[2][2]x[3[3].

printf("\n");}

x保存的是就是

Abc abc

Abc bc

Abc c

最后输出为abcbcc

(16)以下程序运行后的输出结果是【16】。

fun(int a){ int b=0; static int c=3;b++;c++;return(a+b+c);}

main()

{ int i,a=5;for(i=0;i<3;i++) printf("%d%d",i,fun(a));printf("\n");} (17)以下程序运行后的输出结果是【17】。

struct NODE{ int k;struct NODE *link;};

main(){ struct NODE m[5],*p=m,*q=m+4;

int i=0;

while(p!=q){

p->k=++i; p++;

q->k=i++; q--;}

q->k=i;

for(i=0;i<5;i++) printf("%d",m[i].k);

printf("\n");}

*p=m[0],*q=m[4],i=0,这是初始状态。然后判断循环,p和q是否指向同一区域,不是。

所以m[0].k=++i=1;p指向m[1]。m[4].k=i++=1,i的值变为2,q指向m[3];再循环回去。

p,q不是指向同一区域。所以M[1]=++i=3;p指向m[2],m[3].k=i++=3;i变为4,q 指向m[2];再循环

p和q指针相等了。所以退出循环,执行下面语句。q->k也就是m[2].k=4;

所以最后输出m[0]-m[4]为13431

(18)以下程序中函数huiwen的功能是检查一个字符串是否是回文,当字符串是回文时,函数返回字符串:yes!,否则函数返回字符串:no!,并在主函数中

输出,所谓回文即正向与反向的拼写都一样,例如:adgda。请填空。

#include char *huiwen(char *str)

{ char *p1,*p2; int i,t=0;

p1=str;p2= str+strlen(str)-1 ;

for(i=0;i<=strlen(str)/2;i++)

if(*p1++!=*p2--){t=1;break;}

if【19】return("yes!");

else return("no!");}

main(){ char str[50];

printf("Input:"); scanf("%s",str);

printf("%s\n", 【20】 );

2005年4月全国计算机等级考试二级C语言笔试答案

一、选择题

1-5 DBDCA 6-10 CBDDC 11-15 BACDB 16-20 CABAB 21-25 DABCB 26-30 ACDDC 31-35 CBBAD 36-40 CDCDC 41-45 BADBA 46-50 ADCDB

二、填空题

(1) 19 (2)对象 (3)程序调试 (4)关系 (5)算法 (6) 10 30 0 (7) 81 (8) 4599 (9) 10 20 0 (10) 0918273645 (11) 1B

(12) br[i] (13) 4 3 3 4 (14) abcfg (15) abcbcc (16) 0 10 1 11

2 12

(17) 13431 (18) str+strlen(str)-1 (19)t==0或!t (20)huiwen(str)

全国计算机等级考试二级C语言真题

2009年3月二级C语言笔试真题((1)—(10)每小题2分,(11)—(50)每题1分,共60分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)栈是“先进先出”的线性表 B)队列是“先进先出”的线性表 C)循环队列是非线性结构 D)有序性表既可以采用顺序存储结构,也可以采用链式存储结构 (2)支持子程序调用的数据结构是 A)栈B)树C)队列D)二叉树 (3)某二叉树有5个度为2的结点,则该二叉树中的叶子结点数是 A)10B)8C)6D)4 (4)下列排序方法中,最坏情况下比较次数最少的是 A)冒泡排序 B)简单选择排序 C)直接插入排序 D)堆排序 (5)软件按功能可以分为:应用软件、系统软件和支撑软件(或工具软件)。下面属于应用软件的是 A)编译软件 B)操作系统 C)教务管理系统 D)汇编程序 (6)下面叙述中错误的是 A)软件测试的目的是发现错误并改正错误 B)对被调试的程序进行“错误定位”是程序调试的必要步骤 C)程序调试通常也称为Debug D)软件测试应严格执行测试计划,排除测试的随意性 (7)耦合性和内聚性是对模块独立性度量的两个标准。下列叙述中正确的是 A)提高耦合性降低内聚性有利于提高模块的独立性 B)降低耦合性提高内聚性有利于提高模块的独立性

C)耦合性是指一个模块内部各个元素间彼此结合的紧密程度D)内聚性是指模块间互相连接的紧密程度 (8)数据库应用系统中的核心问题是 A)数据库设计 B)数据库系统设计 C)数据库维护 D)数据库管理员培训 (9)有两个关系R,S如下: 由关系R通过运算得到关系S,则所使用的运算为 A)选择B)投影C)插入D)连接 (10)将E-R图转换为关系模式时,实体和联系都可以表示为A)属性B)键C)关系D)域 (11)以下选项中合法的标识符是 A)1-1B)1—1C)-11D)1-- (12)若函数中有定义语句:intk;,则 A)系统将自动给k赋初值0 B)这时k中值无定义 C)系统将自动给k赋初值-1 D)这时k中无任何值 (13)以下选项中,能用作数据常量的是 A)o115B)0118C))115L (14)设有定义:intx=2;,以下表达式中,值不为6的是A)x*=x+1 B)x++,2*x C)x*=(1+x)

计算机二级c语言历年真题及答案

计算机二级c语言历年真题及答案【篇一:国家计算机二级c语言历年真题及答案】 class=txt>c语言程序设计 (考试时间90分钟,满分100分) 一、选择题((1)—(10)、(21)—(40)每题2分,(11)—(20)每题1分,共70分) (1)下列数据结构中,属于非线性结构的是 a)循环队列 b) 带链队列 c) 二叉树 d)带链栈 (2)下列数据结果中,能够按照“先进后出”原则存取数据的是 a) 循环队列 b) 栈 c)队列 d)二叉树 (3)对于循环队列,下列叙述中正确的是 a)队头指针是固定不变的 b)队头指针一定大于队尾指针 c)队头指针一定小于队尾指针 d)队头指针可以大于队尾指针,也可以小于队尾指针 (4)算法的空间复杂度是指 a)算法在执行过程中所需要的计算机存储空间 b)算法所处理的数据量 c)算法程序中的语句或指令条数 d)算法在执行过程中所需要的临时工作单元数 (5)软件设计中划分模块的一个准则是 a) 低内聚低耦合 b) 高内聚低耦合 c) 低内聚高耦合 d) 高内聚高耦合 (6)下列选项中不属于结构化程序设计原则的是 a) 可封装 d) 自顶向下

c) 模块化 d) 逐步求精 (7)软件详细设计产生的图如下: 该图是 a) n-s图 b) pad图 c) 程序流程图 d) e-r图 (8)数据库管理系统是 a)操作系统的一部分 b) 在操作系统支持下的系统软件 c) 一种编译系统 d) 一种操作系统 (9)在e-r图中,用来表示实体联系的图形是 a) 椭圆图 b) 矩形 c) 菱形 d) 三角形 (10)有三个关系r,s和t如下: 其中关系t由关系r和s通过某种操作得到,该操作为 a) 选择 b) 投影 c) 交 d) 并 (11)以下叙述中正确的是 a)程序设计的任务就是编写程序代码并上机调试 b)程序设计的任务就是确定所用数据结构 c)程序设计的任务就是确定所用算法 d)以上三种说法都不完整 (12)以下选项中,能用作用户标识符的是 a)void b)8_8 c)_0_ d)unsigned (13)阅读以下程序

新版计算机二级C语言测试题及答案解析

计算机二级C语言测试题及答案解析计算机二级C语言测试题及答案解析 C语言的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,下面给大家整理了计算机二级C语言测试题及答案,欢迎阅读! 计算机二级C语言测试题及答案解析 1.(A )是构成C语言程序的基本单位。 A、函数 B、过程 C、子程序 D、子例程 2.C语言程序从 C 开始执行。 A、程序中第一条可执行语句 B、程序中第一个函数 C、程序中的main函数 D、包含文件中的第一个函数 3、以下说法中正确的是( C )。

A、C语言程序总是从第一个定义的函数开始执行 B、在C语言程序中,要调用的函数必须在main( )函数中定义 C、C语言程序总是从main( )函数开始执行 D、C语言程序中的main( )函数必须放在程序的开始部分 4.下列关于C语言的说法错误的是( B ) 。 A、 C程序的工作过程是编辑、编译、连接、运行 B、 C语言不区分大小写。 C、 C程序的三种基本结构是顺序、选择、循环 D、C程序从main函数开始执行 5.下列正确的标识符是(C )。 A、-a1 B、a[i] C、a2_i D、int t 5~8题为相同类型题 考点:标识符的命名规则 只能由字母、数字、下划线构成

数字不能作为标识符的开头 关键字不能作为标识符 选项A中的“-” ,选项B中“[”与“]”不满足(1);选项D中的int 为关键字,不满足(3) 6.下列C语言用户标识符中合法的是(B )。 A、3ax B、x C、case D、-e2 E)union 选项A中的标识符以数字开头不满足(2);选项C,E均为为关键字,不满足(3);选项D中的“-”不满足(1); 7.下列四组选项中,正确的C语言标识符是( C )。 A、 %x B、a+b C、a123 D、123 选项A中的“%” ,选项B中“+”不满足(1);选项D中的标识符以数字开头不满足(2)

历年全国计算机二级C语言试题库完整

. . . . 参考 50道C 语言知识题 1.以下叙述中正确的是 A)用C 程序实现的算法必须要有输入和输出操作 B)用C 程序实现的算法可以没有输出但必须要有输入 C)用C 程序实现的算法可以没有输入但必须要有输出 D)用C 程序实现的算法可以既没有输入也没有输出 2.下列可用于C 语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C 语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line 是一个数组,每个数组元素是一个基类型为char 为指针变量 B)定义line 是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line 是一个指针数组,语句中的*号称为间址运算符 D)定义line 是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a 的ASCII 码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c 的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段

全国计算机等级考试二级C语言真题2013年3月

全国计算机等级考试二级C语言真题2013年3月 (总分40, 做题时间90分钟) 一、选择题 1. 程序流程图中带有箭头的线段表示的是______。 A 图元关系 B 数据流 C 控制流 D 调用关系 答案:C [解析] 在数据流图中,用标有名字的箭头表示数据流。在程序流程图中,用标有名字的箭头表示控制流。所以选择C。 2. 结构化程序设计的基本原则不包括______。 A 多态性 B 自顶向下 C 模块化 D 逐步求精 答案:A [解析] 结构化程序设计的思想包括:自顶向下、逐步求精、模块化、限制使用goto语句,所以选择A。 3. 软件设计中模块划分应遵循的准则是______。 A 低内聚低耦合 B 高内聚低耦合

C 低内聚高耦合 D 高内聚高耦合 答案:B [解析] 软件设计中模块划分应遵循的准则是高内聚低偶合、模块大小规模适当、模块的依赖关系适当等。模块的划分应遵循一定的要求,以保证模块划分合理,并进一步保证以此为依据开发出的软件系统可靠性强,易于理解和维护。模块之间的耦合应尽可能的低,模块的内聚度应尽可能的高。 4. 在软件开发中,需求分析阶段产生的主要文档是______。 A 可行性分析报告 B 软件需求规格说明书 C 概要设计说明书 D 集成测试计划 答案:B [解析] A错误,可行性分析阶段产生可行性分析报告。C错误,概要设计说明书是总体设计阶段产生的文档。D错误,集成测试计划是在概要设计阶段编写的文档。B正确,需求规格说明书是后续工作如设计、编码等需要的重要参考文档。 5. 算法的有穷性是指______。 A 算法程序的运行时间是有限的 B 算法程序所处理的数据量是有限的 C 算法程序的长度是有限的 D 算法只能被有限的用户使用

计算机二级C语言考试编程题题库

计算机c语言编程题库 1、求100之内自然数中最大的能被17整除的数。 void main() { int i; for(i=100;i>0;i--) if(i%17==0)break; printf("%d\n",i); } 2、已知a,b,c都是1位整数,求当三位整数abc、cba的和为1333时a、b、c的值。 void main() { int a,b,c; for(a=1;a<=9;a++) { for(b=0;b<=9;b++) { for(c=1;c<=9;c++) if(a*100+b*10+c+c*100+b*10+a==1333) printf("%d,%d,%d\n",a,b,c); } } } 3、计算并输出200-400之间不能被3整除的整数的和。 void main() { int i,sum=0; for(i=200;i<=400;i++) if(i%3!=0) sum=sum+i; printf("%d\n",sum); } 4、从键盘输入10个数,统计非负数的个数,并计算非负数的和。 void main() { int i,n=0,sum=0; int a[10]; printf(“请输入10个数:”);

for(i=0;i<10;i++) scanf(“%d”,&a[i]); for(i=0;i<10;i++) if(a[i]>=0) { sum=sum+a[i]; n++;} printf("非负个数是%d,sum=%d\n",n,sum); } 5、求100之内自然数中偶数之和。 void main() { int i,sum=0; for(i=0;i<=100;i++) if(i%2==0) sum=sum+i; printf("sum=%d\n",sum); } 6、输入5个数,求和并输出。要求编写求和的函数。 void main() { int b(int x[],int n); int sum=0; int a[5]; int i; printf("请输入5个数:"); for(i=0;i<5;i++) scanf("%d",&a[i]); sum=b(a,5); printf("sum=%d\n",sum); } int b(int x[],int n) { int i,sum=0; for(i=0;i<5;i++) sum=sum+x[i]; return sum; } 7、编程计算1*2*3+3*4*5+5*6*7+...+99*100*101的值。 void main() { int i,sum=0; for(i=1;i<=99;i=i+2) sum=sum+i*(i+1)*(i+2); printf("%d\n",sum); } 8、编写程序,将用户输入的字符串中所有的字符a用*代替,然后输出。void main()

计算机二级考试C语言试题及答案第一套

一、选择题(在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。) (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图 B)N-S图 C)结构图 D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模 B)程序的效率 C)程序设计语言的先进性 D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法 B)软件开发工具 C)软件开发费用 D)软件系统功能 (5)算法的有穷性是指

A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序 B)冒泡排序 C)直接插入排序 D)堆排序 (7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序 (8)将E-R图转换到关系模式时,实体与联系都可以表示成 A)属性 B)关系 C)键 D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1

(完整版)历年全国计算机二级C语言题库

50道C语言知识题 1.以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出 D)用C程序实现的算法可以既没有输入也没有输出 2.下列可用于C语言用户标识符的一组是 A)void,define,WORDB)a3_3,_123,Car C)For,-abc,IFCaseD)2a,DO,sizeof 3.以下选项中可作为C语言合法常量的是 A)-80B)-080C)-8e1.0D)-80.0e 4.若有语句:char*line[5];,以下叙述中正确的是 A)定义line是一个数组,每个数组元素是一个基类型为char为指针变量 B)定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组 C)定义line是一个指针数组,语句中的*号称为间址运算符 D)定义line是一个指向字符型函数的指针 5.以下定义语句中正确的是 A)inta=b=0;B)charA=65+1,b=′b′; C)floata=1,*b=&a,*c=&b;D)doublea=00;b=1.1; 6.有以下程序段 charch;intk; ch=′a′; k=12; printf("%c,%d,",ch,ch,k);printf("k=%d\n",k); 已知字符a的ASCII码值为97,则执行上述程序段后输出结果是 A)因变量类型与格式描述符的类型不匹配输出无定值 B)输出项与格式描述符个数不符,输出为零值或不定值 C)a,97,12k=12 D)a,97,k=12 7.有以下程序 main() {inti,s=1; for(i=1;i<50;i++) if(!(i%5)&&!(i%3))s+=i; printf("%d\n",s);} 程序的输出结果是 A)409B)277C)1D)91 8.当变量c的值不为2、4、6时,值也为"真"的表达式是 A)(c==2)||(c==4)||(c==6) B)(c>=2&&c<=6)||(c!=3)||(c!=5) C)(c>=2&&c<=6)&&!(c%2) D)(c>=2&&c<=6)&&(c%2!=1) 9.若变量已正确定义,有以下程序段 inta=3,b=5,c=7;

计算机二级C语言测试题(含答案)

(第一章) 1. 以下关于算法的描述不正确的是__________。 A. 任何一个问题,它的实现算法是唯一的 B. 描述算法常用的表达工具有流程图、N-S图、PAD图、伪码等 C. 算法的最终实现是计算机程序 D. 正确性和清晰易懂性是一个好算法的基本条件 2.下面是一个加法程序,指出存在的逻辑错误和语法错误。 /* 求整数a和b的和*/ main( ) { int a,b; a=8; b=2000; print("%d\n",a-b); } 3.在每个C程序中都必须包含有这样一个函数,该函数的函数名为__________。 A.main B. MAIN C. name D. function 4.以下叙述不正确的是__________。 A.C程序书写格式规定,一行内只能写一个语句 B.main()函数后面有一对花括号,花括号内的部分称为函数体 C.一个C程序必须有main()函数 D.C规定函数内的每个语句以分号结束 5.以下各标识符中,合法的用户标识符为_________。 A.A#C B.mystery C.main D.ab* 6.已知求解某问题的算法如下: ⑴输入a、b、c三个数。 ⑵将a和b比较,较大者放在a中,小者放在b中。 ⑶将a和c比较,较大者放在a中,小者放在c中。 ⑷将b和c比较,较大者放在b中,小者放在c中。 ⑸依次输出a、b、c。 请根据上述算法描述,把算法的功能表达出来。 【答案】把任意输入的三个数a、b、c按降序排列的顺序输出。 7.一个C语言程序可以包括多个函数,程序总是按照如下_________所描述的方式执行当前的程序。 A.从本程序的main()函数开始,到本程序文件的最后一个函数结束。 B.从本程序文件的第一个函数开始,到本程序文件的最后一个函数结束。 C.从main()函数开始,到main()函数结束。 D.从本程序文件的第一个函数开始,到本程序main()函数结束。 8.以下叙述正确的是_________。 A.在C程序中,main()函数必须位于程序的最前面。 B.C程序的每行中只能写一条语句。 C.在对一个C程序进行编译的过程中,可发现注释中的拼写错误。 D.C语言本身没有输入输出语句。 答案: 1. A 2.语法错误是print, 应该为printf;逻辑错误是a-b,应该为a+b。 3.A 4.A 5.B 6.把任意输入的三个数a、b、c按降序排列的顺序输出。 7.C 8.D

2016年计算机二级c语言题库及参考答案

2016年计算机二级c语言题库及答案 一、选择题(每小题1分,共40小题,共40分) 1.设循环队列的存储空间为Q(1:35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为( )。 A.20 B.0或35 C.15 D.16 2.下列关于栈的叙述中,正确的是( )。 A.栈底元素一定是最后入栈的元素 B.栈操作遵循先进后出的原则 C.栈顶元素一定是最先入栈的元素 D.以上三种说法都不对 3.下列链表中,其逻辑结构属于非线性结构的是( )0、 A.双向链表 B.带链的栈 C.二叉链表 D.循环链表 4.在关系数据库中,用来表示实体间联系的是( )。 A.网状结构 B.树状结构 C.属性 D.二维表 5.公司中有多个部门和多名职员,每个职员只能属于一个部门,一个部门可以有多名职员。则实体部门和职员间的联系是( )。 A.1:m联系 B.m:n联系 C.1:1联系 D.m:l联系 6.右两个关系R和S如下:

则由关系R得到关系S的操作是( )。 A.自然连接 B.并 C.选择 D.投影 7.数据字典(DD)所定义的对象都包含于( )。 A.软件结构图 B.方框图 C.数据流图(DFD图) D.程序流程图 8.软件需求规格说明书的作用不包括( )。 A.软件设计的依据 B.软件可行性研究的依据 C.软件验收的依据 D.用户与开发人员对软件要做什么的共同理解 9.下面属于黑盒测试方法的是( )。 A.边界值分析 B.路径覆盖 C.语句覆盖 D.逻辑覆盖 10.下面不属于软件设计阶段任务的是( )。 A.制订软件确认测试计划 B.数据库设计 C.软件总体设计 D.算法设计 11.以下叙述中正确的是( )。 A.在C语言程序中,main函数必须放在其他函数的最前面 B.每个后缀为C的C语言源程序都可以单独进行编译 C.在C语言程序中,只有main函数才可单独进行编译 D.每个后缀为.C的C语言源程序都应该包含一个main函数 12.C语言中的标识符分为关键字、预定义标识符和用户标识符,以下叙述正确的是( )。 A.预定义标识符(如库函数中的函数名)可用做用户标识符,但失去原有含义

2020计算机二级C语言考试真题汇总

模拟卷1 1 [填空题] 下列给定程序中,函数fun的功能是:在形参S所指字符串中寻找与参数C相同的字符,并在其后插入一个与之相同的字符,若找不到相同的字符则不做任何处理。 例如,若s所指字符串为“baacda”,c中的字符为a,执行后S所指字符串为“baaaacdaa”。 请在程序的下画线处填入正确的内容并将下画线删除,使程序得出正确的结果。 注意:部分源程序给出如下。 不得增行或删行,也不得更改程序的结构! 试题程序: 参考解析: 【参考答案】 【解题思路】 填空1:for语句循环条件是判断是否到达字符串结尾,即当前字符是否为‘\0’。 填空2:while语句用以确定字符串的长度,所以变量n赋初值为0。 填空3:题目要求如果找到与参数c相同的字符,就在后面插入一个相同的字符,且找到后应该给数组元素赋值,本题目给出参数为c。 二、程序修改题 2 [简答题] 下列给定程序中函数fun的功能是:逐个比较p、q所指两个字符串对应位置上的字符,并把ASCII 值大或相等的字符依次存放到c所指的数组中,形成一个新的字符串。 例如,若主函数中a字符串为“aBCDeFgH”,b字符串为"Abcd",则c中的字符串应为“aBcdeFgH”。 请改正程序中的错误,使它能得出正确的结果。 注意:部分源程序在文件MODl1.C中,不得增行或删行,也不得更改程序的结构!

参考解析: 【参考答案】 (1)int k=0; (2)while(*p||*q) 【考点分析】 本题考查:变量初始化,需根据题意确定变量含义,然后对其进行初始化操作;while循环语句。 【解题思路】 (1)变量k存放数组e的下标,因此应初始化为0。 (2)while循环语句的循环条件是判断两个字符串是否到达结尾。 三. 程序设计题 3 [简答题] 规定输入的字符串中只包含字母和*号。请编写函数fun,其功能是:将字符串尾部的*号全部删除,前面和中间的*号不动。 例如,字符串中的内容为:“****A*BC*DEF*G*******”.删除后,字符串中的内容应当是: “****A*BC*DEF*G”。在编写函数时,不得使用C语言提供的字符串函数。 注意:部分源程序在文件PROG1.C中。 请勿改动主函数main和其他函数中的任何内容,仅在函数fun的花括号中填入你编写的若干语句。 参考解析: 【参考答案】 【考点分析】 本题考查:删除字符串尾部+号;删除的主要思想是把不删除的字符保留起来。 【解题思路】 对于一个字符串要删除其尾部的*号,只需要在最后一个不是*号的字符后面加上结束符号‘\0’。具体操作为:首先找到字符串的结尾,然后从最后一个字符开始往前逐个判断是否为*号,直到找到非*号字符为止,最后在该字符后面加上结束符号‘\0’。

全国计算机等级考试二级C语言真题库之选择题(15)

全国计算机等级考试等级考试真题库之选择题(15) 1.下列链表中,其逻辑结构属于非线性结构的是 A) 二叉链表 B) 循环链表 C) 双向链表 D) 带链的栈 参考答案:A 【解析】在定义的链表中,若只含有一个指针域来存放下一个元素地址,称这样的链表为单链表或线性链表。带链的栈可以用来收集计算机存储空间中所有空闲的存储结点,是线性表。在单链表中的结点中增加一个指针域指向它的直接前件,这样的链表,就称为双向链表(一个结点中含有两个指针),也是线性链表。循环链表具有单链表的特征,但又不需要增加额外的存贮空间,仅对表的链接方式稍做改变,使得对表的处理更加方便灵活,属于线性链表。二叉链表是二叉树的物理实现,是一种存储结构,不属于线性结构。答案为A选项。 2.设循环队列的存储空间为Q(1: 35),初始状态为front=rear=35。现经过一系列入队与退队运算后,front=15,rear=15,则循环队列中的元素个数为 A) 15 B) 16 C) 20 D) 0或35 参考答案:D 【解析】在循环队列中,用队尾指针rear指向队列中的队尾元素,用排头指针front指向排头元素的前一个位置。在循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界时,其加1操作的结果是指向向量的下界0。由于入队时尾指针向前追赶头指针,出队时头指针向前追赶尾指针,故队空和队满时,头尾指针均相等。答案为D选项。 3.下列关于栈的叙述中,正确的是 A) 栈底元素一定是最后入栈的元素 B) 栈顶元素一定是最先入栈的元素 C) 栈操作遵循先进后出的原则 D) 以上说法均错误 参考答案:C 【解析】栈顶元素总是后被插入的元素,从而也是最先被删除的元素;栈底元素总是最先被插入的元素,从而也是最后才能被删除的元素。栈的修改是按后进先出的原则进行的。因此,栈称为先进后出表,或"后进先出"表,所以选择C。 4.在关系数据库中,用来表示实体间联系的是 A) 属性 B) 二维表 C) 网状结构 D) 树状结构 参考答案:B

历年全国计算机等级考试-二级C语言上机考试题库及答案

1.填空 给定程序的功能是调用fun函数建立班级通讯录。通讯录中记录每位学生的编号,姓名和电话号码。班级的人数和学生的信息从键盘读入,每个人的信息作为一个数据块写到名为myfile5.dat的二进制文件中。 请在程序的下划线处填入正确的内容并把下划线删除,是程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.c中 不得增行或删行,也不得更改程序的结构! void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

二级C语言考试题

1.程序设计语言的语言处理程序是一种___A___。(1分) A 、系统软件 B 、应用软件 C 、办公软件 D 、工具软件 2. 计算机只能直接运行__C____。(1分) A 、高级语言源程序 B 、汇编语言源程序 C 、机器语言程序 D 、任何源程序 3.为解决某一特定问题而设计的指令序列称为___C___。(1分) A 、文档 B 、语言 C 、程序 D 、系统 4. 程序设计中,若用数组名作为函数调用的实参,传递给形参的是___D___。(1分) A 、数组第一个元素的值 B 、数组中全部元素的值 C 、数组元素的个数 D 、数组的首地址 5. 编制一个好的程序首先要确保它的正确性和可靠性,除此以外,通常更注重源程序的______。(1分) A 、易使用性、易维护性和效率 B 、易使用性、易维护性和易移植性 C 、易理解性、易测试性和易修改性 D 、易理解性、安全性和效率 6. 程序设计中,下列结论只有一个是正确的,它是__A____。(1分) A 、递归函数中的形式参数是自动变量 B 、递归函数中的形式参数是外部变量 C 、递归函数中的形式参数是静态变量 D 、递归函数中的形式参数可以根据需要自己定义存储类型 7.__A____是面向对象程序设计语言不同于其它语言的主要特点。 (1分) A 、继承性 B 、消息传递 C 、多态性 D 、静态联编 8. 从软件工程的观点,软件是___B___。(1分) A 、程序的集合 B 、程序、数据和文档的集合 C 、算法的集合 D 、算法和程序的集合 9. 存储器管理主要是对__A____的管理。(1分) A 、内存 B 、外存 C 、内存和外存 D 、文件 10. 设W 为二维数组,其中每个数据元素占用6个字节,行下标i 从0到8 ,列下标j 从2到5,W 中第6行的元素和第4列的元素共占用___A___个字节。(1分) A 、78 B 、72 C 、66 D 、84 11. 函数的形参和实参结合是__C____(1分) A 、传值 B 、传地址 C 、根据情况而定 D 、传名字 12. 下面关于变量的生存周期的说法错误的是_A_____(1分) A 、全局变量的生存周期从程序运行开始到程序结束 B 、局部变量的生存周期从块或函数的开始到块或函数的结束 C 、静态局部变量的生存周期与全局变量相同 D 、静态全局变量的作用域是整个程序 13. 对计算机进行程序控制的最小单位是__C____。(1分) A 、语句 B 、字节 C 、指令 D 、程序 14. 通常面向对象程序设计的英文缩写用__C____。(1分) A 、OOA B 、OOD C 、OOP D 、OOT 15. 在软件设计和编码时,采取___B____等措施都有利于提高软件的可测试性。(1分) A 、不使用标准文本以外的语句,书写详细正确的文档 B 、不使用标准文本以外的语句,采用良好的程序结构 C 、书写详细正确的文档,信息隐蔽 D 、书写详细正确的文档,采用良好的程序结构 16. 程序段和数据段的地址信息在__D____中保存。(1分) A 、进程标识符 B 、处理机状态 C 、进程调度信息 D 、进程控制信息

最新福建省计算机等级考试二级C语言考试题库

改错题 #include #include void main() { char s1[100], s2[100]; int i,s_len; printf("Please input string: \n"); gets(s1); s_len = /**/ s1 /**/; for(i=0; i= '0' && s1[i] <= '7') s2[i] = s1[i] + 2; else if(s1[i] == '8'/**/ && /**/s1[i]=='9') s2[i] = s1[i]-8; else s2[i] = s1[i]; } /**/ s2[i+1] /**/ = '\0'; puts(s2); getch(); }

#include #include int prime( int x ) { int i, mark=1 ; double k; /**/ i=1 /**/; k=(int)sqrt((double)x); while (i<=k) { if(x%i==0) {/**/ i=k+1; /**/ break; } i++; } return (mark); } void main() { int a; printf("Input a number: "); scanf("%d",&a); if(/**/ !prime(a) /**/) printf("%d is a prime number.\n", a); else printf("It's not.\n"); getch(); }

(完整版)2019二级C语言题库参考答案解析

2019年C语言考题答案1、程序填空题 给定的程序的功能是调用fun函数建立班 级通讯录。通讯录中记录 每位学生的编号、姓名和电话号码班级的人 数和学生的信息从键盘 读入,每个人的信息作为一个数据块写到名 为myfile5.dat的二进 制中。 填空:(1)STYPE(2)FILE(3)fp 改错:(1) for(i=0;i<=sl;i++)(2) t[2*sl]=“\0“ 或t[sl+sl]=“\0“ 编程: *c=(a/10)*1000+(b/10)*100+(a%10)*10+(b% 10); 2、程序填空题 给定程序的功能是:从键盘输入若干文本 (每行不超过80个字符),写到文件 myfile4.txt中,用-1作为字符串输出输入的 标志。然后将文件的内容读出显示在屏幕 上。文件的读写分别由自定义函数ReadText

和Writetext实现。 填空:(1)*fw(2)str (3) str 改错:(1)voidfun(longs,long*t)(2) s1=s1*10; 编程:int i,j=0,min=a[0].s; for(i=0;i

最新全国计算机等级考试二级C语言-题库(全)

2016年3月份全国计算机等级考试二级C语言题库(全)一、选择题 在下列各题的A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)为了避免流程图在描述程序逻辑时的灵活性,提出了用方框图来代替传统的程序流程图,通常也把这种图称为 A)PAD图B)N-S图C)结构图D)数据流图 (2)结构化程序设计主要强调的是 A)程序的规模B)程序的效率C)程序设计语言的先进性D)程序易读性 (3)为了使模块尽可能独立,要求 A)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量强 B)模块的内聚程度要尽量高,且各模块间的耦合程度要尽量弱 C)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量弱 D)模块的内聚程度要尽量低,且各模块间的耦合程度要尽量强 (4)需求分析阶段的任务是确定 A)软件开发方法B)软件开发工具C)软件开发费用D)软件系统功能 (5)算法的有穷性是指 A)算法程序的运行时间是有限的 B)算法程序所处理的数据量是有限的 C)算法程序的长度是有限的 D)算法只能被有限的用户使用 (6)对长度为n的线性表排序,在最坏情况下,比较次数不是n(n-1)/2的排序方法是 A)快速排序B)冒泡排序C)直接插入排序D)堆排序(7)如果进栈序列为e1,e2,e3,e4,则可能的出栈序列是 A)e3,e1,e4,e2 B)e2,e4,e3,e1 C)e3,e4,e1,e2 D) 任意顺序(8)将E-R图转换到关系模式时,实体与联系都可以表示成

A)属性B)关系C)键D)域 (9)有三个关系R、S和T如下: R B C D a 0 k1 b 1 n1 S B C D f 3 h2 a 0 k1 n 2 x1 T B C D a 0 k1 由关系R和S通过运算得到关系T,则所使用的运算为 A)并B)自然连接C)笛卡尔积D)交 (10)下列有关数据库的描述,正确的是 A)数据处理是将信息转化为数据的过程 B)数据的物理独立性是指当数据的逻辑结构改变时,数据的存储结构不变 C)关系中的每一行称为元组,每一个列称为属性 D)如果一个关系中的属性或属性组并非该关系的关键字,但它是另一个关系的关键字,则称其为本关系的外关键字 (11)以下叙述中正确的是 A)用C程序实现的算法必须要有输入和输出操作 B)用C程序实现的算法可以没有输出但必须要有输入 C)用C程序实现的算法可以没有输入但必须要有输出

二级C语言题库

第1套题 一、程序填空题 #include #include #define N 5 typedef struct { int num; char name[10]; char tel[10]; }STYPE; void check(); /**********found**********/ int fun(___1___ *std) { /**********found**********/ ___2___ *fp; int i; if((fp=fopen("myfile5.dat","wb"))==NULL) return(0); printf("\nOutput data to file !\n"); for(i=0; i

void check() { FILE *fp; int i; STYPE s[10]; if((fp=fopen("myfile5.dat","rb"))==NULL) { printf("Fail !!\n"); exit(0); } printf("\nRead file and output to screen :\n"); printf("\n num name tel\n"); for(i=0; i #include void fun (char *s, char *t) { int i, sl; sl = strlen(s); /************found************/ for( i=0; i<=s1; i ++) t[i] = s[i]; for (i=0; i

c语言2级考试题

一、选择题 (1) 下面叙述正确的是(C) A. 算法的执行效率与数据的存储结构无关 B. 算法的空间复杂度是指算法程序中指令(或语句)的条数 C. 算法的有穷性是指算法必须能在执行有限个步骤之后终止 D. 以上三种描述都不对 (2) 以下数据结构中不属于线性数据结构的是(C) A. 队列 B. 线性表 C. 二叉树 D. 栈 (3) 在一棵二叉树上第5层的结点数最多是(B) 注:由公式2k-1得 A. 8 B. 16 C. 32 D. 15 (4) 下面描述中,符合结构化程序设计风格的是(A) A. 使用顺序、选择和重复(循环)三种基本控制结构表示程序的控制逻辑 B. 模块只有一个入口,可以有多个出口 C. 注重提高程序的执行效率 D. 不使用goto语句 (5) 下面概念中,不属于面向对象方法的是(D) 注:P55-58 A. 对象 B. 继承 C. 类 D. 过程调用 (6) 在结构化方法中,用数据流程图(DFD)作为描述工具的软件开发阶段是(B) A. 可行性分析 B. 需求分析 C. 详细设计 D. 程序编码 (7) 在软件开发中,下面任务不属于设计阶段的是(D) A. 数据结构设计 B. 给出系统模块结构 C. 定义模块算法 D. 定义需求并建立系统模型 (8) 数据库系统的核心是(B) A. 数据模型 B. 数据库管理系统 C. 软件工具 D. 数据库 (9) 下列叙述中正确的是(C) A.数据库是一个独立的系统,不需要操作系统的支持 B.数据库设计是指设计数据库管理系统 C.数据库技术的根本目标是要解决数据共享的问题 D.数据库系统中,数据的物理结构必须与逻辑结构一致 (10) 下列模式中,能够给出数据库物理存储结构与物理存取方法的是(A) 注:P108 A. 内模式 B. 外模式 C. 概念模式 D. 逻辑模式 (11) 算法的时间复杂度是指(C) A. 执行算法程序所需要的时间 B. 算法程序的长度 C. 算法执行过程中所需要的基本运算次数 D. 算法程序中的指令条数 (12) 算法的空间复杂度是指(D) A. 算法程序的长度 B. 算法程序中的指令条数 C. 算法程序所占的存储空间 D. 算法执行过程中所需要的存储空间 (13) 设一棵完全二叉树共有699个结点,则在该二叉树中的叶子结点数为(B) 注:利用公式n=n0+n1+n2、n0=n2+1和完全二叉数的特点可求出 A. 349 B. 350 C. 255 D. 351 (14) 结构化程序设计主要强调的是(B) A.程序的规模 B.程序的易读性 C.程序的执行效率 D.程序的可移植性 (15) 在软件生命周期中,能准确地确定软件系统必须做什么和必须具备哪些功能的阶段是 (D) 注:即第一个阶段 A. 概要设计 B. 详细设计 C. 可行性分析 D. 需求分析 (16) 数据流图用于抽象描述一个软件的逻辑模型,数据流图由一些特定的图符构成。下列图符名标识的图符不属于数据流图合法图符的是(A) 注:P67

相关文档
相关文档 最新文档