当前位置:文档之家› 2005年9月计算机等级考试二级C语言习题解析

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

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

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

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

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

(1)下列叙述中正确的是

A.程序设计就是编制程序

B.程序的测试必须由程序员自己去完成

C.程序经调试改错后还应进行再测试

D.程序经调试改错后不必进行再测试

(2)下列数据结构中,能用二分法进行查找的是

A.顺序存储的有序线性表

B.线性链表

C.二叉链表

D.有序线性链表

A、顺序存储的有序线性表

二分法只适用于有序表,其次D. 有序线性链表不可以是因为链表的对结点的操作只能通过p->next的方式,对下标的操作不适合,然而顺序存储的线性表就可以

(3)下列关于栈的描述正确的是

A.在栈中只能插入元素而不能删除元素

B.在栈中只能删除元素而不能插入元素

C.栈是特殊的线性表,只能在一端插入或删除元素

D.栈是特殊的线性表,只能在一端插入元素,而在另一端删除元素

在栈中,你只能从顶端一个一个开始读取,除非你先把所有的栈元素读取出来放到一个列表中,然后再在列表中遍历列表找你想要的东西.,你可以进栈再出栈。

(4)下列叙述中正确的是

A.一个逻辑数据结构只能有一种存储结构

B.数据的逻辑结构属于线性结构,存储结构属于非线性结构

C.一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率

D.一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率

(5)下列描述中正确的是

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

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

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

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

(6)在软件设计中,不属于过程设计工具的是

A.PDL(过程设计语言)

B.PAD图

C.N-S图

D.DFD图

(7)下列叙述中正确的是

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

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

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

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

(8)数据库设计的根本目标是要解决

A.数据共享问题

B.数据安全问题

C.大量数据存储问题

D.简化数据维护

一般数据库是长期存储在计算机内有组织的可共享的数据集合。数据库设计的目的即设计目标从根本上来说就是要实现数据的共享和安全存取,从细化及技术上来说,一个优秀的数据库设计必须要最终实现用户对于数据共享的具体要求,必须要在满足于用户的数据存取要求的基础上实现对于数据的关联性及优化,安全性及可移植性,以保证用户数据能够简单的进行移植,必须要实现数据库的可扩容性结构以保证数据库对于用户未来数据要求的兼容性等。

(9)设有如下关系表:

(10)数据库系统的核心是

A.数据模型

B.数据库管理系统

C.数据库

D.数据库管理员

数据库系统是一个实际可运行的存储、维护和应用系统提供数据的软件系统,是存储介质、处理对象和管理系统的集合体。它通常由软件、数据库和数据管理员组成。其软件主要包括操作系统、各种宿主语言、实用程序以及数据库管理系统。数据库系统的核心是数据库管理系统;数据库管理系统的核心是数据库。

(11)以下叙述中错误的是

A.用户所定义的标识符允许使用关键字

B.用户所定义的标识符应尽量做到“见名知意”

C.用户所定义的标识符必须以字母或下划线开头

D.用户定义的标识符中,大、小写字母代表不同标识

(12)以下叙述中错误的是

A.C语句必须以分号结束

B.复合语句在语法上被看作一条语句

C.空语句出现在任何位置都不会影响程序运行

D.赋值表达式末尾加分号就构成赋值语句

A是对的,分号是C语句必须的要素,以此标志C语句的结束;B是对的,语法指的的是语句构成是否满足C语言标准,语意指的是语句要做什么完成什么任务,如同我们追究某句话说的是否通顺,而无论它的含义是骂人话还是恭唯话,因此说复合语句在语法上被看作一条语句;空语句用在某些地方将影响程序运行,C错误,切记,语句一定是分号结尾的,而不是只有几个空格罢了,如:for(;;)和for(;;;);D也是对的,赋值表达式末尾加分号就是构成赋值语句,但也要知道若是在宏定义中,这么做将会报错。

(13)以下叙述中正确的是

A.调用printf函数时,必须要有输出项printf("Hello !\n");

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

VC++ 编译器stdio.h 头文件可以不写,putchar函数能正确工作。putchar

是库函数,函数使用必须要声明,否则会报错,也有些编译器会报warning;

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

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

是从键盘上输入字符,它返回字符所对应的ASCII码

(14)以下关于函数的叙述中正确的是

A.每个函数都可以被其它函数调用(包括main函数)

B.每个函数都可以被单独编译

C.每个函数都可以单独运行

D.在一个函数内部可以定义另一个函数

(15)若有语句:char *line[5];,以下叙述中正确的是

A.定义line是一个数组,每个数组元素是一个基类型为char的指针变量B.定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组C.定义line是一个指针数组,语句中的*号称为间址运算符&

D.定义line是一个指向字符型函数的指针

(16)有以下程序段

typedef struct NODE

{ int num; struct NODE *next;

} OLD;以下叙述中正确的是

A.以上的说明形式非法

B.NODE是一个结构体类型

C.OLD是一个结构体类型

D.OLD是一个结构体变量

(17)以下叙述中错误的是

A.C语言中对二进制文件的访问速度比文本文件快

B.C语言中,随机文件以二进制代码形式存储数据

C.语句 FILE fp; 定义了一个名为fp的文件指针

D.C语言中的文本文件以ASCII码形式存储数据

(18)当把以下四个表达式用作if语句的控制表达式时,有一个选项与其它三个选项含义不同,这个选项是

A.k%2

B.k%2==1

C.(k%2)!=0

D.!k%2==1

(19)以下不能正确计算代数式值的C语言表达式是

A.1/3*sin(1/2)*sin(1/2) == 0

B.sin(0.5)*sin(0.5)/3

C.pow(sin(0.5),2)/3

D.1/3.0*pow(sin(1.0/2),2)

c语言,计算数学表达式时,会根据运算符两个边的数据类型自动转换类型。

但是不会因为计算结果是浮点型,就吧类型转换成浮点。

A答案里面有1/2这样的表达式,计算结果为整型,数值为0,

因为1和2都是整型,改成这个样子就对了,1/2.0f,计算结果就为0.5,浮点型。

(20)以下能正确定义且赋初值的语句是

A.int n1=n2=10;

B.char c=32;

C.float f=f+1.1;

D.double x=12.3E2.5;

(21)以下程序的功能是:给r输入数据后计算半径为r的圆面积s。程序在编译时出错。main()/* Beginning */{ int r; float s;scanf("%d",&r);s=*p*r*r; printf("s=%f\n",s);}出错的原因是

A.注释语句书写位置错误

B.存放圆半径的变量r不应该定义为整型

C.输出语句中格式描述符非法

D.计算圆面积的赋值语句中使用了非法变量

(22)设有定义:int k=1,m=2; float f=7;,则以下选项中错误的表达式是A.k=k>=k

B.-k++

C.k%int(f)

D.k>=f>=m

(23)设有定义:int a=2,b=3,c=4;,则以下选项中值为0的表达式是

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

B.(a

C.a && b

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

(24)有以下程序段

int k=0,a=1,b=2,c=3;

k=ac ? c:k;

执行该程序段后,k的值是

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

(25)设变量a、b、c、d和y都已正确定义并赋值。若有以下if语句

if (a

if(c==d) y=0;

else y=1;

该语句所表示的含义是

(26)有以下程序段

int n,t=1,s=0;

scanf("%d",&n);

do{ s=s+t; t=t-2; }while (t!=n);

为使此程序段不陷入死循环,从键盘输入的数据应该是

A.任意正奇数

B.任意负偶数

C.任意正偶数

D.任意负奇数

(27)设变量已正确定义,则以下能正确计算f = n!的程序段是

A. f=0;

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

B. f=1;

for(i=1;i<=n;i++) f*=i; B的话,只是乘到n-1

C. f=1;

for(i=1;i>1;i++) f*=i;

D. f=1;

for(i=n;i>=2;i- -) f*=i;

(28)设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是

A.*p=*q;

B.p=q;

C.*p=&n1;

D.p=*q;

(29)若有定义:int x=0, *p=&x;,则语句printf("%d\n",*p);的输出结果是A.随机值

B.0

C.x的地址

D.p的地址

(30)设函数fun的定义形式为

void fun(char ch, float x ) { … }

则以下对函数fun的调用语句中,正确的是

A.fun("abc",3.0);

B.t=fun('D',16.5);

C.fun('65',2.8);

D.fun(32,32);

(31)有以下程序

main(){ int a[10]={1,2,3,4,5,6,7,8,9,10}, *p=&a[3], *q=p+2;

printf("%d\n", *p + *q);}程序运行后的输出结果是

A.16

B.10

C.8

D.6

(32)有以下程序

main(){ char p[]={'a', 'b', 'c'}, q[]="abc";

printf("%d %d\n", sizeof(p),sizeof(q));};程序运行后的输出结果是

A.4 4

B.3 3

C.3 4

D.4 3

(33)有以下程序# define f(x) (x*x)main()

{ int i1, i2;i1=f(8)/f(4) ; i2=f(4+4)/f(2+2) ;printf("%d, %d\n",i1,i2);} 程序运行后的输出结果是

A.64, 28

B.4, 4

C.4, 3

D.64, 64

(34)有以下程序

main()

{ char a1='M', a2='m';

printf("%c\n", (a1, a2) ); }

(a1,a2)是一个逗号表达式,其值取最后一个,即a2。如(a1,a2,a3,a3......an)其值为an。

以下叙述中正确的是

A.程序输出大写字母M

B.程序输出小写字母m

C.格式说明符不足,编译出错

D.程序运行时产生出错信息

(35)有以下程序

#include

main()

{ char c1='1',c2='2';

c1=getchar(); c2=getchar(); putchar(c1); putchar(c2);

}

当运行时输入:a<回车> 后,以下叙述正确的是

A.变量c1被赋予字符a,c2被赋予回车符

B.程序将等待用户输入第2个字符

C.变量c1被赋予字符a,c2中仍是原有字符2

D.变量c1被赋予字符a,c2中将无确定值

(36)有以下程序

main(){ int k=5,n=0;

while(k>0)

{ switch(k)

{ default : break;

case 1 : n+=k;注意木有break,也就是说,还要执行n+=k; case 2 :

case 3 : n+=k;}

k--;}printf("%d\n",n);}程序运行后的输出结果是

A.0

B.4

C.6

D.7

(37)有以下程序

main()

{ int a[]={2,4,6,8,10}, y=0, x, *p;

p=&a[1]; p=&a[1];相当于p[0] = a[1] = 4;

for(x= 1; x<3; x++) y += p[x];

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

}y = p[1]+p[2] = 6+8 = 14

程序运行后的输出结果是

A.10

B.11

C.14

D.15

(38)有以下程序

void sort(int a[], int n)

{ int i, j ,t;

for (i=0; i

for (j=i+1; j

if (a[i] }

main()

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

sort(aa+2, 5);

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

printf("\n");

}

程序运行后的输出结果是

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

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

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

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

(39)有以下程序

void sum(int a[])

{ a[0] = a[-1]+a[1]; }

main(){ int a[10]={1,2,3,4,5,6,7,8,9,10};

sum(&a[2]);printf("%d\n", a[2]);}程序运行后的输出结果是A.6

B.7

C.5

D.8

#####(40)有以下程序

void swap1(int c0[], int c1[])

{ int t ;

t=c0[0]; c0[0]=c1[0]; c1[0]=t;

}void swap2(int *c0, int *c1)

{ int t;

t=*c0; *c0=*c1; *c1=t;

}main(){ int a[2]={3,5}, b[2]={3,5};

swap1(a, a+1); swap2(&b[0], &b[1]);

printf("%d %d %d %d\n",a[0],a[1],b[0],b[1]);

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

A.3 5 5 3

B.5 3 3 5

C.3 5 3 5

D.5 3 5 3

(41)有以下程序

#include main()

{ char p[]={'a', 'b', 'c'}, q[10]={'a', 'b', 'c'};

printf("%d %d\n", strlen(p), strlen(q));

}以下叙述中正确的是

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

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

首先清楚:strlen函数是遇到结束符'\0'才终止的。

问题出在:char p[]={'a','b','c'},p[]你没指定长度,系统就不知道,默认也为无限长(可以验证:你输入p[16]都还可以看到有输出,因为你没指定p[16],所以这个输出是系统随机给的),这时你调用strlen函数来求“长度未知”的字符串,strlen“很聪明”,它就会给你输出一个奇怪的7(但不一定只是7,你换个其他长度的字符串它又可能输出其他数了)

而且:char p[]这种形式下系统是不会在结尾默认加上'\0'的!。只有在指定长度char p[5]={"a","b","c"}或者字符串形式char p[]="abc"的情况下系统才会在末尾

默认加上'\0',这时就不会出错。

我指的“系统”是指VC,在Turbo C下运行char p[]={'a','b','c'}就没问题!!C.由于q数组中没有字符串结束符,长度不能确定;但p数组中字符串长度为3

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

(42)有以下程序,其中函数f的功能是将多个字符串按字典顺序排序

#include

void f(char *p[], int n)

{ char *t; int i,j;

for(i=0; i

for(j=i+1; j

if(strcmp(p[i],p[j])>0){ t=p[i]; p[i]=p[j]; p[j]=t; }

}

main()

{ char *p[5]={"abc","aabdfg","abbd","dcdbe","cd"};

f(p, 5);

printf("%d\n", strlen(p[1]));

}

程序运行后的输出结果是

A.2

B.3

C.6

D.4

(43)有以下程序

# include

void f(char *s, char *t)

{ char k;

k=*s; *s=*t; *t=k;

s++; t--;

if (*s) f(s, t);

}main(

{ char str[10]="abcdefg", *p ;

p=str+strlen(str)/2+1;

f(p, p-2);

printf("%s\n",str);}程序运行后的输出结果是

A.abcdefg

B.gfedcba

C.gbcdefa

D.abedcfg

(44)有以下程序

float f1(float n)

{ return n*n; }

float f2(float n)

{ return 2*n; }

main()

{ float (*p1)(float),(*p2)(float),(*t)(float), y1, y2; p1=f1; p2=f2;

y1=p2( p1(2.0) );

t = p1; p1=p2; p2 = t;

y2=p2( p1(2.0) );

printf("%3.0f, %3.0f\n",y1,y2);}程序运行后的输出结果是

A.8, 16

B.8, 8

C.16, 16

D.4, 8

(45)有以下程序

int a=2;

int f(int n)

{ static int a=3;

int t=0;

if(n%2){ static int a=4; t += a++; }

else { static int a=5; t += a++; }

return t+a++;

}main(){ int s=a, i;

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

printf("%d\n", s);}程序运行后的输出结果是

A.26

B.28

C.29

D.24

####################(46)有以下程序 ##################### # include

struct STU

{ int num;

float TotalScore; };

void f(struct STU p)

{ struct STU s[2]={{20044,550},{20045,537}};

p.num = s[1].num; p.TotalScore = s[1].TotalScore;

}

main()

{ struct STU s[2]={{20041,703},{20042,580}};

f(s[0]);

printf("%d %3.0f\n", s[0].num, s[0].TotalScore);

}

程序运行后的输出结果是

A.20045 537

B.20044 550

C.20042 580

D.20041 703

(47)有以下程序

# include

struct STU

{ char name[10];

int num; };

void f(char *name, int num)

{ struct STU s[2]={{"SunDan",20044},{"Penghua",20045}};

num = s[0].num;

strcpy(name, s[0].name);

}

main()

{ struct STU s[2]={{"YangSan",20041},{"LiSiGuo",20042}},*p;

p=&s[1]; f(p->name地址传送, p->num值传送);

printf("%s %d\n", p->name, p->num);

}

程序运行后的输出结果是

A.SunDan 20042

B.SunDan 20044

C.LiSiGuo 20042

D.YangSan 20041

作为函数参数传递的值和址是有本质区别的。作为值传送的变量,在被调函数中完全等同于一个初始化了的局部变量,但按址传送的变量(指针或数组),就等同于外部变量。对于函数f()中形参num,改变它的值时,不会不会影响实参的值,也就是不能将其值的改变传回到实参中。下面的代码中,将num按址方式传递,以便达到原有发热目的。

(48)有以下程序

struct STU

{ char name[10]; int num; float TotalScore; };

void f(struct STU *p)

{ struct STU s[2]={{"SunDan",20044,550},{"Penghua",20045,537}}, *q=s; ++p ; ++q; *p=*q;

}main()

{ struct STU s[3]={{"YangSan",20041,703},{"LiSiGuo",20042,580}};

f(s);

printf("%s %d %3.0f\n", s[1].name, s[1].num, s[1].TotalScore);

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

A.SunDan 20044 550

B.Penghua 20045 537

C.LiSiGuo 20042 580

D.SunDan 20041 703

(49)以下程序的功能是进行位运算

main(){ unsigned char a, b;a=7^3; b= ~4 & 3;printf("%d %d\n",a,b);} 7按位异或3

111 = 7

011 = 3

^^^^^^^^^

100 = 4

4按位取反再按位与3

00000100 = 4

~~~~~~~~~

11111011

11111011

00000011 = 3

&&&&&&&&

00000011 = 3

所以a=4, b=3

异或相同则为0,不同为1

程序运行后的输出结果是

A.4 3

B.7 3

C.7 0

D.4 0

(50)有以下程序

#include

main()

{ FILE *fp; int i, k, n;

fp=fopen("data.dat", "w+");

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

{ fprintf(fp,"%d ",i);

if(i%3==0) fprintf(fp,"\n");

}rewind(fp);

fscanf(fp, "%d%d", &k, &n); printf("%d %d\n", k, n);

fclose(fp);}程序运行后的输出结果是 1 2

A.0 0

B.123 45

C.1 4

为什么答案不是123 45呢。fprintf(fp,"%d ",i); //因为这个%d后面有个空格,而后面的fscanf(fp,"%d%d",&k,&n); 是以空格为分割点的,去掉这个空格就行了

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

请将每一个空的正确答案写在答题卡【1】至【20】序号的横线上,答在试卷上不得分。(1)数据管理技术发展过程经过人工管理、文件系统和数据库系统三个阶段,其中数据独立性最高的阶段是数据库系统。

(2)算法复杂度主要包括时间复杂度和空间复杂度。

算法复杂度包括时间复杂度和空间复杂度。

时间复杂度就是执行算法所需要的时间(执行多少次赋值、比较、判断等操作),空间复杂度就是执行该算法需要消耗多少存储空间。

2者都是越低越好,但往往不能兼顾,需要找到时间和空间复杂度的平衡点。(3)在进行模块测试时,要为每个被测试的模块另外设计两类模块:驱动模块和承接模块(桩模块)。其中驱动的作用是将测试数据传送给被测试的模块,并显示被测试模块所产生的结果。

桩模块:集成测试前要为被测模块编制一些模拟其下级模块功能的“替身”模块,以代替被测模块的接口,接受或传递被测模块的数据,这些专供测试用的“假”模块称为被测模块的桩模块。

驱动模块在大多数场合称为"主程序",它接收测试数据并将这些数据传递到被测试模块

(4)一棵二叉树第六层(根结点为第一层)的结点数最多为32个。

2的5次方。二叉树,每个结点最多连2个子结点,自己在纸上画画也可以看得出来,第一层1个根节点,第二层2个,每个都往下连2个,第三层就是4个……第n层最多就是2^(n-1)个

(5)数据结构分为逻辑结构和存储结构,循环队列属于储存结构。

数据结构的逻辑结构,简称为数据结构,分为:线性结构(一对一),树形结构(一对多)和图像结构(多对多)。数据的逻辑结构分两大类:线性结构和非线性结构。数据的存储

方法有四种:顺序存储方法、链接存储方法、索引存储方法和散列存储方法。

逻辑结构分为四种:线性,集合,树,图

存储结构分为四种:顺序,链式,散列,索引

(6)以下程序运行后的输出结果是88。

main(){ int x=0210; printf("%X\n",x);

0210就是八进制的210%X就是16进制输入或者输出所以答案是88}

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

main(){ int a=1,b=2,c=3;

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

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

(8)已有定义:double *p;,请写出完整的语句,利用malloc函数使p指向一个双精度型的动态存储单元p=(double * ) malloc (sizeof(double))。(9)以下程序运行后的输出结果是 2 20。

main(){ char c; int n=100;float f=10; double x;

x=f*=n/=(c=50);printf("%d %f\n",n,x);}

x=f*=n/=(c=50);

这个是从右往左运行的

先C=50

然后n=n/c这里n=2 然后f=f*n f=20.0

最后x=f x=20.0所以输出2 20.000000

(10)以下程序的功能是计算:s=1+12+123+1234+12345。请填空。

main(){ int t=0,s=0,i;for( i=1; i<=5; i++){ t=i+ 【10】 ; s=s+t; } printf("s=%d\n",s);}

(11)已知字母A的ASCII码为65。以下程序运行后的输出结果是【11】。main()

{ char a, b;

a='A'+'5'-'3'; b=a+'6'-'2' ;

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

(12)有以下程序

int sub(int n) { return (n/10+n%10 ); }

main(){ int x,y;scanf("%d",&x);y=sub(sub(sub(x)));printf("%d\n",y);} 若运行时输入:1234<回车>,程序的输出结果是10。

(13)以下函数sstrcat()的功能是实现字符串的连接,即将t所指字符串复制到s所指字符串的尾部。例如:s所指字符串为abcd,t所指字符串为efgh,函数调用后s所指字符串为abcdefgh。请填空。

# include void sstrcat(char *s, char *t)

{ int n;n= strlen(s);while (*(s+n)= 【13】 ){s++; t++;} }

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

#include char *ss(char *s)

{ char *p, t;

p=s+1; t=*s;

while(*p) { *(p-1) = *p; p++;}这是个循环阿姐姐.不是一次就结束的.

*(p-1)=t;

return s;}功能是把所有字母向左移一个.然后第一个放到最后一个.

main(){ char *p, str[10]="abcdefgh";p = ss(str) ;printf("%s\n",p);} (15)以下程序运行后的输出结果是【15】。

int f(int a[], int n)

{ if (n >= 1) return f(a, n-1)+a[n-1];

else return 0; }

main(){ int aa[5]={1,2,3,4,5}, s;

s=f(aa, 5); printf("%d\n", s);}

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

struct NODE { int num; struct NODE *next;} ;

main(){ struct NODE s[3]={{1, '\0'},{2, '\0'},{3, '\0'}}, *p, *q, *r; int sum=0;

s[0].next=s+1; s[1].next=s+2; s[2].next=s;

p=s; q=p->next; r=q->next;

sum+=q->next->num; sum+=r->next->next->num;p.next.num=q.num.=2

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

(17)以下程序的功能是输出如下形式的方阵:

13 14 15 16

9 10 11 12

5 6 7 8

1 2 3 4

main(){ int i,j,x;for(j=4; j >0 ; j--)

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

{ x=(j-1)*4 + i ;

printf("M",x);}

printf("\n");}\}

(18)以下函数rotate的功能是:将a所指N行N列的二维数组中的最后一行a[3][n]放到b所指二维数组的第0列b[n][0]中,把a所指二维数组中的第0行a[0][n]放到b所指二维数组的最后一列b[n][3]中,b所指二维数组中其他数据不变。n都从0-3.

# define N 4

void rotate(int a[][N], int b[][N])

{ int i, j;

for(i=0;i

}i=0,b[0][3]=把a所指二维数组中的第0行放到b所指二维数组的最后一列中2005年9月全国计算机等级考试二级C语言笔试答案

一、题答案

1-5 CACDC 6-10DAABB11-15ACBBA 16-20CCDAB21-25DCABC

26-30DDABD31-35BCCAA 36-40DCCAA41-45BCBAC 46-50DABAD

二、填空题

(1)数据库系统(2)空间

(3)驱动模块(4) 32

(5)存储结构(6) 88(7) 1(9) 2 20

(10) t*10(11) 67 G(12) 10(13) *t

(14) bcdefgha(15) 15(16) 5

(17) >0(18) 6(19)

全国计算机等级考试二级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.若变量已正确定义,有以下程序段

2017年全国计算机等级考试二级C语言上机题库

2017年全国计算机等级考试二级 C语言上机题库 第一套 1.程序填空 程序通过定义学生结构体数组,存储了若干个学生的学号、姓名和三门课的成绩。函数fun 的功能是将存放学生数据的结构体数组,按照姓名的字典序(从小到大排序)。请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 第一处struct student t; 第二处for(i=0;i0) 2程序修改 给定程序MODI1.C中函数fun的功能是:在p所指字符串中找出ASCII码值最大的字符,将其放在第一个位置上;并将该字符前的原字符向上顺序移动。 /**found**/ q=p+i; /**found**/ while(q>p) 3程序设计 学生的记录由学号和成绩组成,N名学生的数据已在主函数中放入结构体数组s中,请编写了函数fun,它的功能是:把指定分数范围内的学生数据放在b所指的数组中,分数范围内的学生人数由函数值返回。 int fun(STREC *a,STREC *b,int l,int h) {int i,j=0; for(i=0;i=1&&a[i].s<=h) b[j++]=a[i]; return j; } 第二套 1.程序填空 给定程序中已建立一个带有头结点的单向链表,链表中的各结点按数据域递增有序连接。函数fun的功能是:删除链表中数据域值相同的结点,使之只保留一个。 第一处free(q); 第二处q=p->next; 第三处q=q->next; 2. 程序修改 给定程序MODI1.C中函数fun的功能是:用选择法对数组中的n各元素按从小到大的顺序进行排序。 /**found**/ p=j; /**found**/ p=i; 3. 程序设计 请编写一个fun函数,它的功能是:求出1到m之间(含m)能被7或11整除的所有整数放在数组a中,通过n返回这些数的个数。void fun(int m,int *a,int *n) { int i; *n=0; for(i=7;i<=m;i++) if((i%7==0)||(i%11==0)) a[(*n)++]=i; } 第三套 1. 程序填空 函数fun的功能是:逆置数组元素是的值。例如:若a所指数组中的数据依次为:1、2、3、4、5、6、7、8、9,则逆置后依次为:9、8、7、6、5、4、3、2、1。形参n给出数组中数组中数据的个数。 第一处for(i=0;i

全国计算机等级考试二级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语言题库及答案

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

计算机二级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语言编程题库(100题)

2011,____年上机题100题库 1: 第1题m个人的成绩存放在score数组中,请编写函数fun,它的功能是:将低于平均分的人作为函数值返回,将低于平均分的分数放在below所指定的函数中。 答案: int fun(int score[],int m,int below[]) { int i,k=0,aver=0; for(i=0;i<m;i++) aver+=score[i]; aver/=m; for(i=0;i<m;i++) if(score[i]<aver) { below[k]=score[i]; k++; } return k; } 2: 第2题请编写函数fun,它的功能是:求出1到100之内能北7或者11整除,但不能同时北7和11整除的所有证书,并将他们放在a所指的数组中,通过n返回这些数的个数。

答案: void fun(int *a, int *n) { int i,j=0; for(i=2;i<1000;i++) if ((i%7==0 || i%11==0) && i%77!=0) a[j++]=i; *n=j; } 3: 第3题请编写函数void fun(int x,int pp[],int *n),它的功能是:求出能整除x且不是偶数的各整数,并按从小到大的顺序放在pp所指的数组中,这些除数的个数通过形参n返回。 答案: void fun(int x, int pp[ ], int *n) { int i=1,j=0;k=0,*t=pp; for(i=0;i<=x;i++) if(i%2!=0) { t[j]=I; j++; }

计算机二级考试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

江西计算机省二级试题及答案_二级C语言上机题库1

二级C 语言上机考试复习资料,共有50套题目 一、程序填空题 1、程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。函数fun 的功能是对形参b 所指结构体变量中的数据进行修改,最后在主函数中输出修改后的数据。 例如: b 所指变量t 中的学号、姓名、和三门课的成绩依次是: 1000 2、"ZhangQi"、9 3、85、87,修改后输出t 中的数据应为:1000 4、" LiJie "、93、8 5、87。 请在程序的下划线处填入正确的内容并把下划线删除, 使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #include #include struct student { long sno; char name[10]; float score[3]; }; void fun( struct student *b) { /**********found**********/ b__1__ = 10004; /**********found**********/ strcpy(b__2__, "LiJie"); } main() { struct student t={10002,"ZhangQi", 93, 85, 87}; int i; printf("\n\nThe original data :\n"); printf("\nNo: %ld Name: %s\nScores: ",t.sno, https://www.doczj.com/doc/345347205.html,); for (i=0; i<3; i++) printf("%6.2f ", t.score[i]); printf("\n"); /**********found**********/ fun(__3__); printf("\nThe data after modified :\n"); printf("\nNo: %ld Name: %s\nScores: ",t.sno, https://www.doczj.com/doc/345347205.html,); for (i=0; i<3; i++) printf("%6.2f ", t.score[i]); printf("\n"); } 2、给定程序中,函数fun 的功能是计算下式 例如,若形参e 的值为1e-3,函数的返回值2.985678。 请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #include double fun(double e) { int i; double s, x; /**********found**********/ s=0; i=__1__; x=1.0; while(x>e){ /**********found**********/ __2__; /**********found**********/ x=(2.0*i-1)/((__3__)*(2.0*i)); s=s+x; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); } 3、给定程序中,函数fun 的功能是: 将s 所指字符串中的所有数字字符移到所有非数字字符之后,并保持数字字符串和非数字字符串原有的先后次序。例如,形参s 所指的字符串为:def35adh3kjsdf7。执行结正确的结果。 注意:源程序存放在考生文件夹下的BLANK1.C 中。 不得增行或删行,也不得更改程序的结构! #include void fun(char *s) { int i, j=0, k=0; char t1[80], t2[80]; for(i=0; s[i]!='\0'; i++) if(s[i]>='0' && s[i]<='9') { /**********found**********/ t2[j]=s[i]; ___1___; } else t1[k++]=s[i]; t2[j]=0; t1[k]=0; /**********found**********/ for(i=0; i #define N 4 /**********found**********/ void fun(int (*t)___1___ ) { int i, j; for(i=1; i

二级C语言上机题库及答案

第一套题 上机填空: #include double fun(double e) { int i, k; double s, t, x; s=0; k=1; i=2; /**********found**********/ x=__1__/4; /**********found**********/ while(x __2__ e) { s=s+k*x; k=k* (-1); t=2*i; /**********found**********/ x=__3__/(t*t); i++; } return s; } main() { double e=1e-3; printf("\nThe result is: %f\n",fun(e)); 第一处答案:3.0 第二处答案:> 第三处答案:(2*i+1)或者(t+1) 上机改错题: #include /************found************/ void fun ( int n )

{ int a, b, c, k; double s; s = 0.0; a = 2; b = 1; for ( k = 1; k <= n; k++ ) { /************found************/ s = s + (Double)a / b; c = a; a = a + b; b = c; } return s; } main( ) { int n = 5; printf( "\nThe value of function is: %lf\n", fun ( n ) ); } 第一处改错:将:void fun ( int n ) 改为double fun ( int n ) 第二处改错:s = s + (Double)a / b; 改为s = s + (double)a / b; 第二套题 上机填空题 #include double fun(int n) { int i; double s, t; /**********found**********/ s=__1__; /**********found**********/ for(i=1; i<=__2__; i++) { t=2.0*i; /**********found**********/ s=s+(2.0*i-1)*(2.0*i+1)/__3__; } return s; } main() { int n=-1; while(n<0) { printf("Please input(n>0): "); scanf("%d",&n); }

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’。

2020年全国计算机等级考试二级c语言上机精选题库(共80套)

2020年全国计算机等级考试二级c语言上机精选题库(共80套) 第1套试题 第一题:给定程序中,函数fun的功能是:计算N*N矩阵的主对角元素和反向对角元素之和,并作为函数值返回。注意:要求先累加主对角线元素中的值,然后累加反向对角线元素中的值。 例如,若N=3,有下列矩阵: 1 2 3 4 5 6 7 8 9 fun函数首先累加1、5、9,然后累加3、5、7,函数的返回值为30。 请勿改动主函数main和其他函数中的任何内容,仅在fun函数的横线上填入所编写的若干表达式或语句。 #include #define N 4 fun(int t[][N], int n) { int i, sum; ___1___; for (i=0; i

第二题:下列给定程序中,函数fun 的功能是:根据整型参n ,计算如下公式的值。 ,11=A ,1112A +=A ,1123A +=A … ,1 11-A +=A n n 例如,若n=10,则应输出0.617978。 请改正程序中的错误,使它能得出正确的结果。 注意:不要改动main 函数,不得增行或删行,也不要更改程序的结构! #include #include /********found********/ fun(int n) { double A = 1; int i; /********found********/ for(i=2;i #include void fun (int a, int b, long *c) { }

相关主题
文本预览
相关文档 最新文档