当前位置:文档之家› 江苏省计算机二级C语言2005年春

江苏省计算机二级C语言2005年春

江苏省计算机二级C语言2005年春
江苏省计算机二级C语言2005年春

2005年春季笔试题及上机题

一、选择题

21.已知字符A的机内编码为65,则执行下列函数调用语句时,不能输出字符B的是____。

A. putchar('B');

B. putchar("B");

C. putchar(66);

D. putchar('\x42');

22.下列一维数组的声明中正确的是_________。

A. int a[];

B. int n=10,a[n];

C. int a[10+1]={0};

D. int a[3]={1,2,3,4};

23.已知有结构类型定义:

typedef struct ex{long int num;

char sex;

struct ex *next;

}student;

下列叙述错误的是___________。

A. struct ex 是结构类型

B. student是结构类型的变量名

C. ex可缺省

D. student不可缺省

24.下列程序段的输出结果是___________。

int i,x[3][3]={9,8,7,6,5,4,3,2,1},*p=&x[1][1];

for(i=0;i<4;i+=2) printf("%d",*(p+i));

A. 5 2

B. 5 1

C. 5 3

D. 9 7

25.以下程序在编译时在第三行报错“Redeclaration of 'a' in function d”,如果决定修改该行声明中出现的局部变量a的名字,则下列选项中不能用来替换变量名a的是_________。A. f B. e C. d D. b

[程序] int b;

void d(int a)

{int f; double a=1;

printf("%d",a);

}

main()

{int e=1;d(e);}

26.已知有声明“char a[6],*p=a;”,现需要在程序运行过程中将字符串"Hello"保存到a数组中,则下列选项中能正确完成此操作的表达式是_________。

A. a[6]="Hello"

B. a="Hello"

C. p="Hello"

D. strcpy(a,"Hello")

27.若要使表达式“P++”无语法错误,则变量P不能声明为___________。

A. int P;

B. double P;

C. int *P;

D. struct{int x;}P;

28.以下语句中不包含关键字的是_____________。

A. x=sqrt(2);

B. while(x!=0)x--;

C. if(x<0)x=-x;

D. return x;

29.以下函数定义中正确的是_____________。

A. int fun(inta,b){}

B. int fun(int a[][]){}

C. int fun(void){}

D. int fun(static int a,int b){}

30.已知有函数f 的定义如下: int f(int a,int b)

{if(a

在main 函数中若调用函数f(2,3),得到的返回值是________________。 A. 2 B. 3 C. 2和3 D. 3和2 二、填空题 ·基本概念题

1. 一个用C 语言编写的程序在运行时,如果没有发生任何情况,则只有在执行了

_______函数的最后一条语句或该函数中的return 语句后,程序才会终止运行。 2. 在C 语言的源程序中若出现常量“1L ”,则该常量的类型是____________。

3. 数学式

b

a y

x ++

2

2

所对应的C 语言表达式为_______________________________。

4. 已知有声明“int x=1,y=2;”,则执行表达式“(x>y)&&(--x>0)”后x 的值为_________。

5. 在调用函数fopen("a:\\b.dat","r")时,若A :盘根目录下不存在文件b.dat ,则函数的

返回值是_________。

·阅读程序题

6. 以下程序运行时输出结果为________________。 main()

{int x[4]={1,2,3,5},*p=x+2,i; for(i=0;i<2;i++) printf("%d ",*p++);}

7. 以下程序运行时输出结果为________________。 #include int func(int a) {static int c=1; c*=a; return c; } void main() {int b=1,i;

for(i=2;i<4;i++) b=b+func(i); printf("\n%d",b); }

8. 以下程序输出结果为________________。 #include struct s {int a;

struct s *next; }; main() {int i;

static struct s x[2]={5,&x[1],7,&x[0]},*ptr; ptr=&x[0];

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

{printf("%d ",ptr->a);ptr=ptr->next;}

}

9.以下程序输出结果为________________。

void f(int a,int *b)

{a++;b++;(*b)++;}

main()

{int i,x[2]={4,4};

f(x[0],&x[0]);

printf("%d,%d",x[0],x[1]); }

10.以下程序输出结果为________________。

#include

#define ADD(x,y) x+y

main()

{int a=15,b=10,c=20,d=5;

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

11.以下程序运行时输出结果的第一行为______________,第二行为____________。#include

#include

int process(char *s1,char *s2,char *s3)

{int i=0,j=0,len1=strlen(s1),len2=strlen(s2),len3=0;

for(i=0;i

{for(j=0;j

if(s1[i]= =s2[j])break;

if(j>=len2)

s3[len3++]=s1[i];

}

s3[len3]='\0';

return len1-len3;

}

void main()

{char s1[]="bilker",s2[]="lr",s3[20];

int n;

n=process(s1,s2,s3);puts(s3);printf("%d",n); }

12.以下程序运行时输出结果的第二行为______________,第四行为____________,第

六行为____________。

#include

void change(int s[3][3],int d)

{int i,j,k;

if(d= =0)

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

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

{k=s[i][j];s[i][j]=s[j][i];s[j][i]=k;}

}

else

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

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

{k=s[i][j];s[i][j]=s[2-j][2-i];s[2-j][2-i]=k;}

}

main()

{int s[3][3]={1,2,3,4,5,6,7,8,9},i,j,k,n;

change(s,0);

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

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

printf("\n");

}

change(s,1);

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

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

printf("\n");

}

}

13.以下程序运行时输出结果的第一行为______________,第二行为____________,第

三行为____________。

#include

#include

struct node

{int d;

struct node *next;

};

struct node *create(void)

{struct node *head=NULL,*p,*q=NULL;

int i;

for(i=2;i<=9;i++)

{p=(struct node *)malloc(sizeof(struct node));

p->d=i; p->next=NULL;

if(head= =NULL) head=p;

else q->next=p;

q=p;

}

return head;

}

void print(struct node *head)

{if(head= =NULL) return;

while(head->next!=NULL)

{printf("%d,",head->d);

head=head->next;

}

printf("%d\n",head->d);

}

struct node *delst(struct node *head,int *n) {int count=0; struct node *p,*q,*r; p=r=head;

while(p!=NULL) {q=p->next;

while(q!=NULL)

{if((q->d)%(p->d)= =0) {r->next=q->next; free(q);count++; q=r->next; } else

{r=q;q=q->next;} }

p=p->next; }

*n=count; return head; }

void main() {int y;

struct node *head; head=create(); print(head);

head=delst(head,&y); print(head);

printf("%d",y); } ·完善程序题

14. 已知方程x 2-x-2=0在1.0附近有一个实根。以下程序中root 为递归函数,采用牛顿

法计算方程x 2-x-2=0在已知实数x 附近的一个近似实根。算法提示:计算方程f(x)=0

在x 0附近的一个近似实根的牛顿迭代公式为:

-=+x x

i i 1

)

(')

(x x i i f f (i=0,1,2,……);

若|f(x i+1)|<ε,则认为x i+1是方程f(x)=0在允许误差ε范围内的一个实根。以下程序计算时ε取值为0.000001。 #include #include double f(double x) {return x*x-x-2; }

double f1(double x) /*计算f '(x)的值*/ {return 2*x-1; }

double root(double x) {double y;

if(fabs(f(x))<=1e-6) y=___________; else

y=root(___________); return y; }

main()

{printf("\n One root is %lf",root(1.0));} 15. 以下程序的功能是:计算666666

15555514444133312211-+-+-

=s 的值。 #include #include double f(int n) {int i,j,sign=1;

double term,sum=0.0; for(i=1;i<=n;i++) {term=0;

for(j=0;_________;j++) term+=i*pow(10,j);

sum=sum+sign*___________; sign=-sign; }

return sum; }

void main()

{printf("\nthe sum=%f\n",f(6));}

16. 以下程序的功能是:寻找并输出11至999之间所有的整数m ,满足条件m 、m 2、

m 3均为回文数(所谓回文数,是指其各位数字左右对称的整数。例如,121、12321都是回文数)。 #include int f(long n)

{int i=0,j=0,a[10]; while(n!=0) {a[j++]=n%10; n=__________; } j--;

while(_____________) {if(a[i]= =a[j]) i++,j--; else return 0; }

return 1; }

main()

for(m=11;m<1000;m++)

if(f(m)&&f(m*m)&&f(m*m*m))

printf("m=%ld,m*m=%ld,m*m*m=%ld\n",m,m*m,m*m*m); }

17.以下程序中函数str_count的功能是:统计字符串s2在字符串s1中出现的次数并得

到第一次出现的位置。子串出现的次数通过指针型形参变量返回给调用函数,函数返回值为子串第一次出现的位置下标。main函数中输出这些信息。

#include

#include

int str_count(char s1[],char s2[],int *count)

{int i=0,j=0,flag=0,len1,len2,pos=0,ct=0;

char tmp[100];

len1=strlen(s1); len2=strlen(s2);

while(i<=len1-len2)

{for(j=0;j

tmp[j]='\0';

if(___________________)

{if(flag= =0)

{pos=i;flag=1;}

ct++; i=i+j;

}

else ____________________;

}

*count=ct;

return pos;

}

void main()

{char s1[]="habcdefabcdghij",s2[]="abc";

int count=0,first=0;

first=str_count(s1,s2,___________);

if(count)

printf("'%s' appears %d times in '%s'.\n",s2,count,s1,first);

else

printf("'%s' not be found in '%s'!",s2,s1); }

18.以下程序按结构成员grade的值从大到小对结构数组pu的全部元素进行排序,并输

出经过排序后的pu数组全部元素的值。排序算法为选择法。

#include

__________ struct{

int id;

int grade;

}STUD;

void main()

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

{10,2}},temp;

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

{k=_________;

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

if(________________________) k=j;

if(k!=i)

{temp=pu[i];pu[i]=pu[k];pu[k]=temp;}

}

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

printf("\n %2d:%d",pu[i].id,pu[i].grade);

printf("\n");

}

2005年春二级C语言上机试卷

一、改错题

【题目】

函数void sort(struct T items[],int low,int high)的功能是:对items结构数组中从下标low 开始到high为止的所有数组元素按成员name以字典序排序,并输出排序后的结果。

含有错误的源程序如下:

#include

#include

struct T

{char name [20],num[20];

};

void sort(struct T items[],int low,int high)

{struct T temp;

int k,j;

for(k=low;k

for(j=low;j

if(items[j].name>items[j+1].name)

{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}

}

void main(void)

{struct T stu[4]={"Wang","6723","Cai","2106","Zhang",

"5129","Chang","4512","An","6868"};

int k;

sort(stu,0,4);

printf("The Sorted Array:\n");

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

printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num);

}

【要求】

1.将上述程序录入到文件myf1.c中,然后根据题目的要求以及程序中语句之间的逻辑关系对程序中的错误进行修改。

2.改错时,可以修改语句中的一部分内容,调整语句的次序,增加少量的变量说明或编译

预处理命令,但不能增加其他语句,也不能删去整条语句。

3.改正后的源程序myf1.c保存在考试盘的根目录下,供阅卷用,否则不予评分。

二、编程题

【题目】

1.编写函数void count(char a[ ],char w[ ][10],int n,int b[ ])。其功能是:统计w指向的数组中n个单词在a指向的字符串中各自出现的次数(将非字母字符看做单词分隔符),并将统计结果依次保存在b指向的数组中。

2.编写main函数。采用数组初始化方式将以下测试数据(原数列)保存在数组中,调用count函数作统计,将统计结果(所有单词以及各自出现的次数)保存到结果文件myf2.out中。最后将考生本人的准考证号字符串也保存到结果文件myf2.out 中。

例如,测试数据为

a中字符串:"this is a book,that is an apple"

w中的单词:"this","that","is","a","an","book"

则输出结果为

this:1,that:1,is:2,a:1,an:1,book:1

my exam number is:0112400123(考生本人的准考证号)

【要求】

1.将源程序文件取名为myf2.c,输出结果文件取名为myf2.out。

2.数据文件的打开、使用和关闭均用C语言标准库中缓冲文件系统的文件操作函数实现。3.源程序文件和运行结果文件均需保存在考试盘的根目录下,供阅卷用。

4.不要复制扩展名为OBJ和EXE的文件到考试盘上。

2005年春季笔试题及上机题解析

一、选择题

21.【知识点】字符常量、putchar函数(第二部分/二、五)

【解析】putchar函数专门用于输出一个字符,字符常量是用单引号括住的单个字符或用单引号括住的以\ 开头的转义字符,通常与其ASCII值对应的整型数值可以互相替代使用。字符B的常量表示形式为'B',其ASCII值十进制为66,十六进制为42,转义字符'\x42'表示十六进制数42对应的字符,故选项A、C、D均能输出字符B;双引号括住的字符序列为字符串常量,以'\0'作为结束标志,故选项B不能输出字符B。

【答案】B

22.【知识点】数组定义(第二部分/四)

【解析】数组定义时的维数只能是常量或常量表达式,不能是变量,故B选项错;只有在数组定义的同时给每一个

...元素赋值,才可以省去[ ]内的维数值,否则不能省,故A 选项错;一维数组初始化(即定义时赋值)时{}内的数字个数表示维数值,而D选项中左右矛盾,故而是错的。

【答案】C

23.【知识点】typedef、结构体类型定义(第二部分/二、六)

【解析】typedef用于重新命名类型名,[使用格式:typedef 原类型名新类型名;],本题中用typedef将结构类型struct ex命名为student,故二者是一回事,都是结构体类型

名,故选项A正确而选项B错;定义结构体类型时,若同时

..定义其变量或用typedef 重新命名类型名,关键字struct后的结构体名都可以缺省,故选项C正确;根据typedef 的使用格式,选项D也是正确的。

【注意】结构体类型名与结构体类型的变量名之间的区别。

【答案】B

24.【知识点】数组与指针(第二部分/四)

for循环中i先取值0,再取值2,所以输出的*(p+0)和*(p+2)即x[1][1]和x[2][0],故应选项C是正确的。

【答案】C

25.【知识点】变量命名规则(第二部分/一、二)

【解析】同一个函数体内.的任何变量(即局部变量)不可以同名,子函数d中已有int型变量f和形参int a,故double型变量既不能命名成a,也不能命名成f;而函数名d是全程有效的,相当于全局变量,一旦某函数体内有与之同名的变量,则在该函数体内全局变量失效,故double型变量虽然可以命名成d,但函数名d失效,在该函数体内就不可以再调用自己了。

【答案】A

26.【知识点】字符串赋值(第二部分/四)

【解析】数组名是常量,不能出现在赋值号左边,故B选项错;“指针变量=字符串常量”

格式的执行要领是:先将字符串存放于系统安排的一个连续空间中,再将该连续空间的首地址赋值给指针变量,故C选项改变了指针p的地址值,p不再是a数组的首地址了,

故C选项也不对;定义数组时[ ]内的整数值表示数组元素的个数,在定义之后就不应该出现在[ ]内,故A选项错;strcpy(参数1,参数2)函数的功能是将参数2的字符串值赋到参数1对应的连续空间中,故D选项正确。

【答案】D

27.【知识点】结构体变量的引用、指针自增运算(第二部分/六、二)

【解析】P++可以改写成P=P+1。只能对结构体变量的各个成员进行赋值或存取以及运算等,选项D中P是结构体变量而不是结构体变量的成员,故而不能进行自增运算;C 选项执行P++后,P中存放的地址值为原地址值加上2后的值,因为int型变量占据2个字节的空间,下一个空间的地址为前一个空间地址值加2,假设P中原有地址值为ffdc(十六进制),执行P++后,P中存放的地址值为ffde (十六进制)。

【答案】D

28.【知识点】关键字(第二部分/一、二)

【解析】while、if、return均是关键字,而系统函数(即库函数)名不是关键字,故求平方根的函数sqrt不是关键字,答案应选A。

【答案】A

29.【知识点】参数定义(第二部分/五)

【解析】形参定义在函数头部的()中时,每一个形参前均要有类型名,故A选项错;

二维数组作为形参,在定义时只能省去第一维中的常数,故B选项错;形参不能定义为static存储类别(只能是auto或register型),故D选项错;C选项中的(void)相当于没有参数,是可以的。

【答案】C

30.【知识点】函数的调用、逗号表达式(第二部分/五、二)

【解析】实参2和3分别传给形参a和b,于是a小于b成立,执行return(a,b);语句,而return语句的()中的表达式是逗号表达式,逗号表达式的值是最后一个表达式分量的值,本题中即为b的值3。

【答案】B

二、填空题

·基本概念题

1.【知识点】程序的执行顺序、return语句(第二部分/五)

【解析】return语句的三种形式:return; 、return (表达式);、return 表达式;,该语句的主要功能是:结束本函数的执行,返回调用点。

正常

..情况下,程序的执行总是从主函数main开始,到主函数main结束。(除非遇到子函数的exit(1);语句等非正常情况。)

【答案】main

2.【知识点】常量的书写格式(第二部分/二)

【解析】C语言中以书写格式来判断常量的类型,小写字母l或大写字母L是长整型常量的后缀。

【答案】long int 或long

3.【知识点】表达式的书写(第二部分/二)

【解析】C语言的运算式与数学中的运算式写法有区别,主要由于二者的运算符有不少差异,例如数学中的乘号×、除号÷在C中分别用*和/表示;且在C语言编辑环境中无法表达出上标、开方等形式。

【答案】sqrt(x*x+y*y)/(a+b)

4.【知识点】逻辑运算、关系运算、自减运算(第二部分/二)

【解析】关系表达式的运算结果为逻辑值,而C语言中用1和0表示逻辑真和逻辑假;

通常,自减运算符出现在运算对象左边时,先自减再参与其他运算;逻辑与运算的特点是:只要有一个运算对象为假,结果即为假,所以当&&的左边为假时,右边就不作处理了。

本题中&&左边的表达式(x>y)不成立,值为0,其右边的表达式(--x>0) 不作处理,故x保持原值不变,依然为1。

【答案】1

5.【知识点】常用系统函数的返回值(第二部分/五)

【解析】函数fopen调用成功,则返回一个文件指针(文件信息区的起始地址),否则返回0;

在C语言中0、'\0' 和NULL等值。

【答案】0或NULL

·阅读程序题

6.【知识点】数组与指针(第二部分/四)

【解析】自增后

等价于&x[2],指针p指向x[2];而*p++中*和++都是单目运算符,右结合性,等价于*(p++),先取p的原值与*组合,紧接着p自增p指向x[3],故而for循环当i为0时,输出x[2]的值3,当i为1时,输出x[3]的值5。

【注意】指针定义时

...的*只是一个标记,不具备“取内容符”的含义。

【答案】3 5

7.【知识点】静态存储变量、函数调用(第二部分/五)

【解析】静态存储变量如果进行初始化,只在第一次执行定义语句时随着分配内存赋予初值,当退出所定义的函数时,将保留其当时值,再次进入所在函数时,将不重新定义,也不进行初始化。main函数中当i为2和3时各调用fun函数一次:第一次调用时,形参a获值2,执行c*=a; 即c=c*a; 后,c获值2并带回到b=b+func(i);处,b获值3;第二次调用时,形参a获值3,c保持上次的2,执行c*=a;后,c获值6并带回到b=b+func(i);

处,b获值9被输出。

【答案】9

8.【知识点】结构体与指针(第二部分/六)

【解析】结构体数组x获值情况如下图所示:

i=0时

i=2时

i=0时,ptr->a即x[0].a,值为5被输出,ptr->next即x[0].next,值为&x[1],赋给ptr;i=1时,ptr->a即x[1].a,值为7被输出,ptr->next即x[1].next,值为&x[0],赋给ptr;i=2时,ptr->a即x[0].a,值为5被输出,ptr->next即x[0].next,值为&x[1],赋给ptr,结束。【注意】输出语句中的分隔符,本题中为空格。

【答案】5 7 5

9.【知识点】参数的不同传递方式之间的区别(第二部分/五) 【解析】

a b

参数a 、b 获值情况如上图,a++;后,a 中值为5,b++;后,b 中值为&x[1],*b 即为x[1],故(*b)++;即为x[1]++,x[1]的值增为5,返回主函数后,a 、b 释放空间,输出x[0]和x[1]的值4和5。 【答案】4,5

10.【知识点】带参数的宏定义(第二部分/二) 【解析】在宏替换时,注意原样..替换(不要随意附加括号等内容,除非本身有括号),本题中ADD(a,b)/ADD(c,d)的替换结果是:a+b/c+d ,故而输出的值为15+10/20+5的运算结果20,因为10/20的结果为0,而不是0.5。

【注意】表达式中各运算对象类型相同时,结果也为该类型。 【答案】20

11.【知识点】字符串处理(第二部分/四) 【解析】 形参s1 (注意:不含字符'\0'),嵌套的for 循环将s1的每一个字符分别与s2的每一个字符相比较(除'\0'外),一旦相等就跳出内循环;当s2中没有与s1中某字符相等的字符时,就将s1中的该字符依次赋到s3中;处理完后,在s3中所有获得的字符后加上..'.\.0'..,使得其中存放的也为字符串...

,因而s3存放的字符串为"bike",串长为4,则len1-len3值为2。puts 函数在输出字符串后自动换行。

【注意】内循环变化得快,相当于时钟的秒针;外循环变化得慢,相当于时钟的分针。 【答案】bike 2

12.【知识点】函数调用、二维数组(第二部分/五、四) 【解析】 形参s 数组s

由于是地址传递,形参的变化直接导致实参发生同样的变化,故第一次调用change(s,0);后,数组s 值为: 再被输出;

第二次调用change(s,1);后,数组s 值为 : 再被输出。

【技巧】画图..

来处理此类繁琐的读程题将事半功倍。 【答案】2 5 8 9 8 7 3 2 1

13.【知识点】链表的基本操作:创建、输出、删除及函数调用(第二部分/六) 【解析】调用create()函数后,生成如下链表:

故调用print

函数后,输出链表上各结点的第一个成员值如下:2,3,4,5,6,7,8,9。 调用delst 函数,参数

delst 函数的功能是删除链表上每一个结点之后的凡第一个成员值是该结点的第一个成员值的整数倍的所有结点,即第三、五、七、八个结点,count 记录所删结点的个数4,再将值赋给*n ,而*n 即为y 。

再次调用print 函数后,输出链表上各结点的第一个成员值如下:2,3,5,7。 输出y 值为4。

【答案】2,3,4,5,6,7,8,9 2,3,5,7 4 ·完善程序题

14.【知识点】数值算法(第二部分/八)

【解析】函数f 的功能是计算f(x)的值,函数f1的功能是计算f ’(x)的值,函数root 的功能是计算方程的近似根,该函数为自己调用自己,即递归调用。第一个待填空处的含义是:此时的x 对应的函数值f(x)已小于10-6,即为所求,赋值给y 并返回主函数后输出即可;第二个待填空处的含义是:根据牛顿迭代公式描述出下一个x ,再次调用root 函数,判断下一个x 对应的函数值是否满足条件。 【答案】x

x-f(x)/f1(x)

15.【知识点】累加式的求解(第二部分/八)

【解析】此题的关键是描述出任一项的分母,经分析,term 应该是某一项的分母,term+=i*pow(10,j);即为term=term+i*pow(10,j);当i 为3时,term 的值应为333,故而上式应被执行3次,而j 取初值为0,步长为1,所以应填 j

16.【知识点】函数调用、一维数组的应用(第二部分/五、二)

【解析】函数f 的功能是判断某数是否为回文数,主函数用m 、m 2、m 3三次调用,三数同时都是回文数时即被输出。函数f 中第一个while 循环的作用是:将某数的每一位数位上

的数字从个位数到最高位数依次存放于数组a中,算法提示:反复求出个位数字,每求出一次,就将原数缩小十倍,直到求出最高位为止(即当原数变成一位数时求出最后一个个位数字,再缩小十倍为0时终止该循环),例如,当n为121时,先用n%10求得其个位数字1存放于a[0]中,再通过n=n/10;使n变为12,再用n%10求得其个位数字2存放于a[1]中,再通过n=n/10;使n变为1,再用n%10求得其个位数字1存放于a[2]中,再通过n=n/10;使n 变为0,终止。第二个while循环是依次比较a数组中存放的某数的最低位数字与最高位数字是否相等,若相等,再比较次低位数字与次高位数字是否相等……,直到比完或不等为止。当某数n含k位数字时,当k为奇数例如5时,依次比较的是第1、5位数字和第2、4位数字;当k为偶数例如6时,依次比较的是第1、6位数字和第2、5位数字及第3、4位数字,故第二个空应填i

【答案】n/10

i

17.【知识点】字符串应用(第二部分/四)

【解析】主函数中的待填空处,应该让count获得子串第一次出现的位置下标值,而实参欲想通过形参获得值,只有借助地址传递,故而应填&count。

将s1中连续len2(s2的串长)个字符存入tmp数组中,以便于同s2进行比较,故第一空应填strcmp(tmp,s2)= =0,表示两串相等,即s1中含子串s2;若不等,则从下一个字符开始再取连续len2个字符存入tmp数组中,继续比较……故第二空应填i++或++i 或i=i+1。

【技巧】完善题的解题要领是理解题意后,通篇阅读整个程序,弄清重要变量的作用,将容易填写的空白处先填上,……填完后,再通篇阅读整个程序。

【答案】strcmp(tmp,s2)= =0或! strcmp(tmp,s2)

i++或++i或i=i+1

&count

18.【知识点】排序算法(选择法)(第二部分/八)

【解析】若使自定义标识符STUD成为类型名,应使用typedef完成;降序排列用选择法完成的要领是:找出数组pu中成员grade值最大的元素与其第一个元素交换、找出除第一个元素以外的成员grade值最大的元素与其第二个元素交换……k中最终存放每一次找到的成员grade值最大的元素的下标,总是先认为待获得grade “最大值”的元素位置中存放的就是最大值,故第二空将i赋给k,再与其后的每一个元素的grade成员比较,一旦发现更大的,k立即记录下其下标值,故第三空填pu[k].grade

【答案】typedef

i

pu[k].grade

2005年春二级C语言上机试卷

一、改错题

含有错误的源程序如下:

#include

#include

struct T

{char name [20],num[20];

};

void sort(struct T items[],int low,int high)

{struct T temp;

int k,j;

for(k=low;k

for(j=low;j

if(items[j].name>items[j+1].name)②

{temp=items[j];items[j]=items[j+1];items[j+1]=temp;}

}

void main(void)

{struct T stu[4]={"Wang","6723","Cai","2106","Zhang",③

"5129","Chang","4512","An","6868"};

int k;

sort(stu,0,4);

printf("The Sorted Array:\n");

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

printf("name:%s,num:%s\n",stu[k]->name,stu[k]->num);④

}

【知识点】冒泡排序、结构体数组、程序的调试

【解析】程序中的错误一般可以分为两类,一类是语法错误,即程序中有拼写错误,书写不符合C语言的规定等,此类错误可通过调试(按F9键),根据提示进行改正。另一类是逻辑错误,程序调试已通过(报success),但运行结果不正确,此类错误的修改必须要理解程序后方能改正。

本题使用起泡法完成排序,①处j

stu[k]不是指针,不能用指向成员符描述成员。

【答案】加下划线的部分改为:

①j

②if(strcmp(items[j].name, items[j+1].name)>0)

③stu[5]

④stu[k].name, stu[k].num

二、编程题

【知识点】字符串处理、函数调用、数据文件的使用

【解析】编程题的结果一般都是客观的,这样便于老师主观阅卷评分,虽然考生个人的准考证号是各异的,对评阅老师却是可以通过所交磁盘标签直接观察到,故必须如实输入,不能直接套用题中例子。注意,按要求必须调用函数,且使用数据文件完成输出。使用数据文件有5大步骤:①#include ,②用FILE *定义指针,③用fopen("A:\\myf2.out","w")打开文件并赋值给指针,④用fprintf输出结果,⑤用fclose关闭文件。

【注意】fopen("A:\\myf2.out","w")中盘符A:后要加双斜杠表示根目录,因为C语言用转义字符'\\'才能表达字符\;另外,文件的命名一定要严格按照规定处理,千万不要随便命

名。

【参考答案】

#include

#include

#include

void count(char a[],char w[][10],int n,int b[])

{int i=0,j,k=0;char s[10];

for(i=0;a[i]!=0;i++)

{if(isalpha(a[i]))s[k++]=a[i]; /* isalpha函数用于判断字符是否为字母*/

/*此句将连续字母组成的一个单词存放于s中,便于与二维数组中的某一行进行比较*/ else

{s[k]= '\0'; /*加上'\0'才能使s中存放的是字符串,才能使用strcmp函数进行比较*/ for(j=0;j

if(strcmp(s,w[j])= =0){b[j]++;break;}

k=0; /*让s重新存放另一个单词*/

}

}

}

main()

{FILE *fp;

char line[80]="this is a book,that is an apple",word[6][10]={"this","that","is","a","an","book"}; /*按要求初始化,用二维字符数组的一行存放一个单词便于后面比较处理*/

int c[6]={0},m;

count(line,word,6,c);fp=fopen("A:\\myf2.out","w");

if(fp= =NULL){printf("Can't open file");exit(1);}

for(m=0;m<6;m++)fprintf(fp,"%s:%d",word[m],c[m]);

fprintf(fp,"\nmy exam number is:%s","0112400123"); /*注意输入实际

..准考证号*/

fclose(fp);

}

计算机c语言二级考试复习资料

第一章C语言概述 一、选择题: 1、一个C程序的执行是从( A )。 A本程序的main函数开始,到main函数结束 B本程序文件的第一个函数开始,到本程序文件的最后一个函数结束C本程序的main函数开始,到本程序文件的最后一个函数结束 D本程序文件的第一个函数开始,到本程序main函数结束 2、在 C 语言中,每个语句必须以( D )结束。 A. 回车符 B. 冒号 C. 逗号 D. 分号 3、C 语言规定:在一个源程序中,main函数的位置( C )。 A. 必须在最开始 B. 必须在系统调用的库函数的后面 C. 可以任意 D. 必须在最后 4、一个C 语言程序是由( B )。 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 5、下列说法中错误的是( D )。

A. 主函数可以分为两个部分:主函数说明部分和主函数体 B. 主函数可以调用任何非主函数的其他函数 C. 任何非主函数可以调用其他任何非主函数 D. 程序可以从任何非主函数开始执行 6、用 C 语言编写的源文件经过编译,若没有产生编译错误,则系统将( C )。 A. 生成可执行目标文件 B. 生成目标文件 C. 输出运行结果 D. 自动保存源文件 二、填空题: 1、C 语言只有 32 个关键字和 9 种控制语句。 2、每个源程序有且只有一个 main 函数,系统总是从该函数开始执行C语言程序。 3、C 语言程序的注释可以出现在程序中的任何地方,它总是以 \* 符号作为开始标记,以 */ 符号作为结束标记。 4、C 语言中,输入操作是由库函数 scanf 完成的,输出操作是由库函 数 printf 完成的。 5、系统默认的C 语言源程序文件的扩展名是 .c ,经过编译后生成的目标文件的扩展名是 .obj ,经过连接后生成的可执行文件的扩展名是 .exe 。 6、C 语言的标识符只能由字母、数字和下划线三种字符组成。 第三章数据类型、运算符和表达式

2013年全国计算机等级考试二级C语言考试大纲及重点

2013年全国计算机等级考试二级C语言考试大纲 ◆基本要求 1.熟悉V isual C++ 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格。 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在V isual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序的能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。 二、数据类型及其运算 1.C的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 2.C运算符的种类、运算优先级和结合性。 3.不同类型数据间的转换与运算。 4.C表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。 三、基本语句 1.表达式语句,空语句,复合语句。 2.输入输出函数的调用,正确输入数据并正确设计输出格式。 四、选择结构程序设计 1.用if语句实现选择结构。 2.用switch语句实现多分支选择结构。 3.选择结构的嵌套。 五、循环结构程序设计 1.for循环结构。 2.while和do-while循环结构。 3.continue语句和break语句。 4.循环的嵌套。 六、数组的定义和引用 1.一维数组和二维数组的定义、初始化和数组元素的引用。 2.字符串与字符数组。 七、函数 1.库函数的正确调用。 2.函数的定义方法。 3.函数的类型和返回值。 4.形式参数与实在参数,参数值传递。

计算机二级考试C语言练习题及答案

一、选择题 1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用putchar( )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节getchar( )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C 语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名 {成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一 D.多对多 正确答案:B 答案解析:由于B和C有一一对应的联系,而A和B只间有一对多的联系,则通过关系之间的传递,则A和C之间也是一对多的联系。 4). 关于C语言的变量,以下叙述中错误的是( ) A.所谓变量是指在程序运行过程中其值可以被改变的量 B.变量所占的存储单元地址可以随时改变 C.程序中用到的所有变量都必须先定义后才能使用 D.由三条下划线构成的符号名是合法的变量名 正确答案:B

全国计算机等级考试二级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语言考试内容

计算机二级 公共基础知识 基本要求 1.掌握算法的基本概念。 2.掌握基本数据结构及其操作。 3.掌握基本排序和查找算法。 4.掌握逐步求精的结构化程序设计方法。 5.掌握软件工程的基本方法,具有初步应用相关技术进行软件开发的能力。 6.掌握数据库的基本知识,了解关系数据库的设计。 考试内容 一、基本数据结构与算法 1.算法的基本概念;算法复杂度的概念和意义(时间复杂度与空间复杂度)。 2.数据结构的定义;数据的逻辑结构与存储结构;数据结构的图形表示;线性结构与非线性结构的概念。 3.线性表的定义;线性表的顺序存储结构及其插入与删除运算。 4.栈和队列的定义;栈和队列的顺序存储结构及其基本运算。 5.线性单链表、双向链表与循环链表的结构及其基本运算。 6.树的基本概念;二叉树的定义及其存储结构;二叉树的前序、中序和后序遍历。

7.顺序查找与二分法查找算法;基本排序算法(交换类排序,选择类排序,插入类排序)。 二、程序设计基础 1.程序设计方法与风格 2.结构化程序设计。 3.面向对象的程序设计方法,对象,方法,属性及继承与多态性。 三、软件工程基础 1.软件工程基本概念,软件生命周期概念,软件工具与软件开发环境。 2.结构化分析方法,数据流图,数据字典,软件需求规格说明书。 3.结构化设计方法,总体设计与详细设计。 4.软件测试的方法,白盒测试与黑盒测试,测试用例设计,软件测试的实施,单元测试、集成测试和系统测试。 5.程序的调试,静态调试与动态调试。 四、数据库设计基础 1.数据库的基本概念:数据库,数据库管理系统,数据库系统。 2.数据模型,实体联系模型及E―R图,从E―R图导出关系数据模型。 3.关系代数运算,包括集合运算及选择、投影、连接运算,数据库规范化理论。

全国计算机等级考试二级C语言考点(完整版)

C语言二级考点(完整版) 第一章…… C语言基础知识 第二章……顺序结构 第三章……选择结构 第四章. ……循环结构 第五章……函数 第六章……指针 第七章……数组与指针 第八章……数组与函数 第九章……字符串 第十章……结构体与共用体 第十一章……文件 第一章C语言基础知识 考点1. C语言程序的结构认识 本节通过一个简单的c程序例子,介绍c语言的基本构成、格式、以及良好的书写风格,使读者对c语言有个初步认识。 例1 计算两个整数之和的c程序: #include main() { int a,b,sum; /*定义变量a,b,sum为整型变量*/ a=20; /*把整数20赋值给整型变量a*/ b=15; /*把整数15赋值给整型变量b*/ sum=a+b; /*把两个数之和赋值给整型变量sum*/ printf("a=%d,b=%d,sum=%d\n",a,b,sum); /*把计算结果输出到显示屏上*/ } 重点说明: 1、任何一个c语言程序都必须包括以下格式: main() { } 这是c语言的基本结构,任何一个程序都必须包含这个机构。括号内可以不写任何内容,那么该程序将不执行任何结果。 2、main()----在c语言中称之为“主函数”,一个c程序有且仅有一个main函数,任何一个c程序总是从main函数开始执行,main函数后面的一对圆括号不能省略。 3、被大括号{ }括起来的内容称为main函数的函数体,这部分内容就是计算机要执行的内容。 4、在{ }里面每一句话后面都有一个分号(;),在c语言中,我们把以一个分号结尾的一句话叫做一个c语言的语句,分号是语句结束的标志。 5、printf(“a=%d,b=%d,sum=%d\n”,a,b,sum); ----通过执行这条c语言系统提供给我们直接使用的屏幕输出函数,用户即可看到运行结果,本程序运行后,将在显示器上显示如下结果: a=20,b=15,sum=35 6、#include 注意:(1)以#号开头(2)不以分号结尾

全国计算机二级考试C语言(最全复习资料)

二级公共基础知识作为必考内容出现,出题形式为选择题前10道,占考试总分的10%。 考试其它比重: 1、C语言程序的结构占总分1% 2、数据类型及其运算占总分4% 3、选择结构程序设计占比分的3% 4、循环结构占比分的5% 5、数组的定义和引用占比分的5% 6、函数占比分的5% 7、编译预处理占比分1% 8、指针占比分的5% 9、结构体占比分的3% 10、位运算占比分的2% 11、文件操作占比分的2% 考试方式 上机考试,时长120分钟 单选题40分(含公共基础10分),操作题60分(包括程序填空题、程序修改题、程序设计题) 第一部分 C语言知识复习资料 第一章C语言基本知识(90分) 【考点1】C程序 用C语言编写的程序称为C语言源程序,源程序文件的后缀名为“.c”。源程序经编译后生成后缀名为“.obj”的目标文件,再把目标文件与各种库函数连接起来,生成“.exe”可执行文件。C语言有三种基本结构:顺序结构、选择结构、循环结构。

【考点2】main函数 又称主函数,是C程序的入口。main后面跟一对小括号和一对花括号,花括号括起来的部分称为main 函数的函数体。一个C程序从main函数开始执行,到main函数体执行完结束,而不论main函数在整个程序中的位置如何。每一个程序有且仅有一个main函数,其他函数都是为main函数服务的。 【考点3】存储形式 计算机在电脑中保存数据是采用二进制形式,由0或1构成的二进制称为位(bit),八个位构成一个字节(Byte),1个Byte=8个bit。二进制、八进制、十六进制转化为十进制采用乘法,十进制转化为二进制、八进制、十六进制采用除法。数据的存放位置就是它的地址。 【考点4】注释 是对程序的说明,可出现在程序中任意合适的地方,注释从“/*”开始到最近一个“*/”结束,其间任何内容都不会被计算机执行,注释不可以嵌套。 【考点5】书写格式 每条语句的后面必须有一个分号,分号是语句的一部分。一行内可写多条语句,一个语句可写在多行上。 【考点6】标识符 是标识名字的有效字符序列,可以理解为C程序中的单词。 标识符的命名规则是: (1)标识符只能由字母、数字和下划线组成,字母区分大小写。 (2)标识符的第一个字符必须是字母或下划线,不能为数字。 C语言标识符分如下3类 (1)关键字。它们在程序中有固定的含义,不能另作他用。如int、for、switch等。 (2)预定义标识符。预先定义并具有特定含义的标识符。如define、include等。 (3)用户标识符。用户根据需要定义的标识符,符合命名规则且不与关键字相同。 【考点7】常量与变量 常量是指在程序运行过程中,其值不能改变的量。常量分为整型常量、实型常量、字符常量、字符串常量、符号常量5种。在程序运行过程中其值可以改变的量称为变量。C语言中没有字符串变量。存放字符串使用字符数组。 【考点8】整型数据 整型常量有十进制、八进制、十六进制三种表示形式,没有二进制形式。八进制整型常量加前导数字0,十六进制常量加前导0X,八进制常量中不会出现8。 整型变量可分为基本整型(int)、短整型(short)、长整型(long)、和无符号整型(unsigned)。一个基本整型占4个字节。其它类型的整型占用字节数和取值范围详见教材第9页。 【考点9】实型数据 实型数据有两种表示形式:小数形式和指数形式。掌握判定指数形式合法性。 口诀:E前E后必有数,E后必须为整数。 实型变量分为单精度型(float)和双精度型(double),单精度型占四个字节。 【考点10】算术运算 算术运算符一共有+、—、*、/、%这五个。求余运算要求运算对象只能为整型,除法运算符两边运算对象都为整型时,运算结果也为整型即舍掉小数部分。 【考点11】强制类型转换 将一个运算对象转换成指定类型,格式为(类型名)表达式,注意小括号位置。 【考点12】赋值 赋值运算符为“=”,不同于关系等于“= =”。赋值表达式格式为:变量名=表达式,赋值运算符左边必须为变量,赋值运算是把赋值运算符右边表达式的值赋给左边变量。

计算机二级C语言要求

基本要求 1. 熟悉Visual C++ 6. 0 集成开发环境。 2. 掌握结构化程序设计的方法,具有良好的程序设计风格。 3. 掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4. 在Visual C++ 6. 0 集成环境下,能够编写简单的C 程序,并具有基本的纠错和调试程序的能力。 考试内容 一、C 语言程序的结构 1. 程序的构成,main 函数和其他函数。 2. 头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3. 源程序的书写格式。 4. C 语言的风格。 二、数据类型及其运算 1. C 的数据类型(基本类型,构造类型,指针类型,无值类型)及其定义方法。 2. C 运算符的种类、运算优先级和结合性。 3. 不同类型数据间的转换与运算。 4. C 表达式类型(赋值表达式,算术表达式,关系表达式,逻辑表达式,条件表达式,逗号表达式)和求值规则。 三、基本语句 1. 表达式语句,空语句,复合语句。 2. 输入输出函数的调用,正确输入数据并正确设计输出格式。 四、选择结构程序设计 1. 用if 语句实现选择结构。 2. 用switch 语句实现多分支选择结构。 3. 选择结构的嵌套。 五、循环结构程序设计 1. for 循环结构。 2. while 和do-while 循环结构。 3. continue 语句和break 语句。 4. 循环的嵌套。 六、数组的定义和引用 1. 一维数组和二维数组的定义、初始化和数组元素的引用。 2. 字符串与字符数组。 七、函数 1. 库函数的正确调用。 2. 函数的定义方法。 3. 函数的类型和返回值。 4. 形式参数与实在参数,参数值的传递。 5. 函数的正确调用,嵌套调用,递归调用。 6. 局部变量和全局变量。 7. 变量的存储类别(自动,静态,寄存器,外部),变量的作用域和生存期。 八、编译预处理 1. 宏定义和调用(不带参数的宏,带参数的宏)。 2. “文件包含冶处理。 九、指针 1. 地址与指针变量的概念,地址运算符与间址运算符。

全国计算机等级考试二级笔试样卷C语言程序设计(含答案)

全国计算机等级考试二级笔试样卷C语言程序设计 【打印】【字体:大中小】【关闭】 一、选择题((1)~(10)、(21)~(40)每题2分,(11)~(20)每题2分,共70分) 下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确选项涂写在答题卡相应位置上,答在试卷上不得分。 (1)下列选项中不符合良好程序设计风格的是 A)源程序要文档化B)数据说明的次序要规范化 C)避免滥用goto语句D)模块设计要保证高耦合、高内聚 (2)从工程管理角度,软件设计一般分为两步完成,它们是 A)概要设计与详细设计B)数据设计与接口设计

C)软件结构设计与数据设计 D)过程设计与数据设计 (3)下列选项中不属于软件生命周期开发阶段任务的是 A)软件测试B)概要设计 C)软件维护 D)详细设计 (4)在数据库系统中,用户所见的数据模式为 A)概念模式B)外模式C)内模式D)物理模式 (5)数据库设计的四个阶段是:需求分析、概念设计、逻辑设计和A)编码设计B)测试阶段C)运行阶段 D)物理设计 (6)设有如下三个关系表 R S T

下列操作中正确的是 A)T=R∩S B)T=R∪S C)T=R×S D)T=R/S (7)下列叙述中正确的是 A)一个算法的空间复杂度大,则其时间复杂度也必定大 B)一个算法的空间复杂度大,则其时间复杂度必定小 C)一个算法的时间复杂度大,则其空间复杂度必定小 D)上述三种说法都不对 (8)在长度为64的有序线性表中进行顺序查找,最坏情况下需要比较的次数为A)63 B)64 C)6 D)7 (9)数据库技术的根本目标是要解决数据的

C语言二级考试试题及答案

1.若i,j和k都是int型变量,则表达式(i=4,j=16,k=32,i=j)的值为 A. 4 B. 16 C. 32 D. 52 2.若有函数内部说明:int a[3][4];则数组a中各元素 A. 可在程序的运行阶段得到初值0 B. 可在程序的编译阶段得到初值0 C. 不能得到确定的初值 D. 可在程序的编译或运行阶段得到初值0 3.一个C语言程序是由 A. 一个主程序和若干子程序组成 B. 函数组成 C. 若干过程组成 D. 若干子程序组成 4.若有说明 int a[2][4];则a数组元素的非法引用是 A. a[0][2*1] B. a[1][3] C. a[4-3][0] D. a[0][4] 5.阅读下面程序,则执行后的输出结果是___。 #include "stdio.h" main() {int x,y,z; x=1;y=2;z=3; if(x>y)if(x>z)printf("%d",x); else printf("%d",y); printf("%d\n",z); } A. 0 B. 1 C. 2 D. 3 6.下面程序的输出结果为 main() { int a,b;b=(a=3*5,a*4,a*5); printf("%d",b ;} A. 60 B. 75 C. 65 D. 无确定值 7.下列选项中不是结构化程序基本结构的是 A. 顺序结构 B. 跳转分支结构 C. 选择结构 D. 循环结构 8.所有C函数的结构都包括的三部分是 A. 语句、花括号和函数体 B. 函数名、语句和函数体 C. 函数名、形式参数和函数体 D. 形式参数、语句和函数体 9.设int a=5,b=6,表达式(--b==6)?++a:--b的值是___ A. 5 B. 6 C. 7 D. 4 10.下列叙述中不是C语言的特点的是______。 A. 简洁、紧凑,使用方便、灵活,易于学习和应用 B. C语言是面向对象的程序设计语言 C. C语言允许直接对位、字节和地址进行操作 D. C语言数据类型丰富、生成的目标代码质量高 11.下列关于C语言注释的叙述中错误的是______。 A. 以“/*”开头并以“*/”结尾的字符串为C语言的注释符 B. 注释可出现在程序中的任何位置,用来向用户提示或解释程序的意义 C. 程序编译时,不对注释作任何处理 D. 程序编译时,需要对注释进行处理 12.s1和s2已正确定义并分别指向两个字符串。 若要求:当s1所指串大于s2所指串时,执行语句S;则以下选项中正确的是 A. if(s1>s2)S; B. if(strcmp (s1,s2))S; C. if(strcmp(s2,s1)>0) S; D. if(strcmp (s1,s2)>0)S; 13.设i,j,k均为int型变量,则执行完下面的for语句后,k的值为___ 。 for(i=0, j=10; j>=i; i++, j--) k=i+j; A. 10 B. 20 C. 8 D. 0 14.已知:int c[3][4];则对数组元素引用正确的是 A. c[1][4] B. c[1.5][0] C. c[1+0][0]

计算机二级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语言考试题型及考试重点

全国计算机二级C语言资格考试分析 ◆考试方式 全国计算机等级考试二级C语言每年上半年3月份与9月份两次考试,报名时间查看通知。 1.笔试:90分钟,满分100分,其中含公共基础知识部分的30分。 2.上机:90分钟,满分100分 3.上机操作包括: (1)填空。 (2)改错。 (3)编程。 ◆题型分析 二级C考试分笔试和机试两部分,两部分总分均为100分,两部分考试均需60分以上才能合格发放证书。若其中一科(笔试或机试)通过,另一科可在下一次考试中补考,若补考合格发放证书。若二科均在85分以上,在合格证书上将加印“优秀”字样,若二科均在70分以上,在合格证书上将加印“良好”字样。 (一)笔试 笔试内容分两部分。公共基础知识考核内容:30分;C语言基础知识考核内容:70分。题型分析如下: 1、单向选择题40道题,共70分。 分值分布如下: 其中(1)-(10)、(21)-(40)小题,每題2分,(11)-(20)小题,每题1分。 考核内容分布如下: (1)-(10)小题为公共基础知识考核内容,共计20分; (11)-(40)小题为C语言知识考核内容,共计50分。 2、填空题15个空,每空2分,共30分。 考核内容分布如下: (1)-(5)空为公共基础知识考核内容,共计10分; (6)-(15)空为C语言知识考核内容,共计20分。 ◆基本要求 1.熟悉Visual C++ 6.0 集成开发环境。 2.掌握结构化程序设计的方法,具有良好的程序设计风格 3.掌握程序设计中简单的数据结构和算法并能阅读简单的程序。 4.在Visual C++ 6.0 集成环境下,能够编写简单的C程序,并具有基本的纠错和调试程序能力 ◆考试内容 一、C语言程序的结构 1.程序的构成,main函数和其他函数。 2.头文件,数据说明,函数的开始和结束标志以及程序中的注释。 3.源程序的书写格式。 4.C语言的风格。

计算机二级考试C语言知识点总结

计算机二级考试C语言知识点总结 (完全针对考试大纲) 概述 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1)、编译预处理不是C语言的一部分,不再运行时间。C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2)、每个C语言程序中main函数是有且只有一个。 3)、在函数中不可以再定义函数。 4)、算法的是一定要有输出的,他可以没有输入。 5)、break可用于循环结构和switch语句。 6)、逗号运算符的级别最低。 第一章 1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。

2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。 考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。 5)转义字符的考查: 在程序中int a = 0x6d,是把一个十六进制的数给变量a 注意这里的0x必须存在。 在程序中int a = 06d, 是一个八进制的形式。 在转义字符中,’\x6d’才是合法的,0不能写,并且x是小写。 ‘\141’是合法的。 ‘\108’是非法的,因为不可以出现8。 转义字符意义ASCII码值(十进制) \a 响铃(BEL) 007 \b 退格(BS) 008 \f 换页(FF) 012 \n 换行(LF) 010 \r 回车(CR) 013 \t 水平制表(HT) 009 \v 垂直制表(VT) 011 \\ 反斜杠092 \? 问号字符063 \' 单引号字符039 \" 双引号字符034

计算机二级C语言上机考试操作步骤及流程

二级C语言上机考试操作步骤 一、进入考试系统 单击桌面上的“考试系统”图标,进入考试启动界面。“考试启动界面”如图1所示。 图1 二、输入考生信息 进入考试界面后,单击“开始登录”按钮即可进入考试环境进行“考生信息”的输入。“信息输入”如图2所示。 图2 考生输入准考证号如“2427180018001800”后,单击“考号验证”按钮进行信息核实,系统会弹出如图3所示的对话框。 图3

在确定考生信息完全正确时,单击“是”按钮,进入答题界面,如下图所示,上方含有“程序填空题”、“程序修改题”、“程序设计题”三个按钮, 三、开始答题 本次考试共有50套题,每一套题的填空、改错和编程题的答案均附在后面。学生进入上述考试界面后,首先点击程序设计题,根据程序设计题从而明白是哪一套题的组合,然后开始正式答题。过程如下: 1.程序填空题 单击考试界面中的“程序填空题”按钮后,题目显示区将显示出题目对应的文字叙述信息。通过文字叙述可以了解到该题目的考试内容。然后单击左上角“答题”菜单中的“启动Microsoft Visual C++”菜单项进入“Visual C++ 6.0”系统环境界面,如下图所示。 进入系统环境后,执行左上角的“文件|打开”命令,系统弱出“打开”对话框,选择“blank1.c”程序文件,

点击左下角的“打开”按钮,如图4所示。 图4 打开“blank1.c”程序文件后,开始填空。填空方法如下: (1)在程序中找到“******** found *******”标识位置。 (2)把“found ”标识位置下面的需要填空的“占位符”删除(需要连横线一起删除),将程序的答案写在对应位置。例如下图所示。 原“blank1.c ”程序图: 打开

历年全国计算机等级考试-二级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

2017年全国计算机等级考试二级C语言真题及答案

2017年全国计算机等级考试二级笔试试卷 C 语言程序设计(附答案) (考试时间90 分钟,满分100 分) 一、选择题((1)—(10)、(21)—(40)每题2 分,(11)—(20)每题1 分,共70 分)下列各题A)、B)、C)、D)四个选项中,只有一个选项是正确的,请将正确的选项填涂在答题卡相应位置上,答在试卷上不得分。 (1)下列叙述中正确的是 A)线性表的链式存储结构与顺序存储结构所需要的存储空间是相同的 B)线性表的链式存储结构所需要的存储空间一般要多于顺序存储结构 C)线性表的链式存储结构所需要的存储空间一般要少于顺序存储结构 D)上述三种说法都不对 (2)下列叙述中正确的是 A)在栈中,栈中元素随栈底指针与栈顶指针的变化而动态变化B)在栈中,栈顶指针不变,栈中元素随栈底指针的变化而动态变化C)在栈中,栈底指针不变,栈中元素随栈顶指针的变化而动态变化D)上述三种说法都不对 (3)软件测试的目的是 A)评估软件可靠性 B)发现并改正程序中的错误 C)改正程序中的错误 D)发现程序中的错误 (4)下面描述中,不属于软件危机表现的是 A)软件过程不规范B)软件开发生产率低C)软件质量难以控制C)软件成本不断提高(5)软件生命周期是指 A)软件产品从提出、实现、使用维护到停止使用退役的过程 B)软件从需求分析、设计、实现到测试完成的过程 C)软件的开发过程 D)软件的运行维护过程 (6)面向对象方法中,继承是指 A)一组对象所具有的相似性质 B)一个对象具有另一个对象的性质 C)各对象之间的共同性质 D)类之间共享属性和操作的机制 (7)层次型、网状型和关系型数据库划分原则是 A)记录长度B)文件的大小B)联系的复杂程度D)数据之间的联系方式 (8)一个工作人员可以使用多台计算机,而一台计算机可被多个人使用,则实体工作人员与实体计算机之间的联系是 A)一对一B)一对多C)多对多D)多对一 (9)数据库设计中反映用户对数据要求的模式是 A)内模式B)概念模式C)外模式D)设计模式 (10)有三个关系R、S 和T 如下:

C语言二级考试重点_看完必过

C语言最重要的知识点 总体上必须清楚的: 1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch) 2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。 3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址. 4)bit是位是指为0 或者1。byte 是指字节, 一个字节= 八个位. 5)一定要记住二进制如何划成十进制。 概念常考到的: 1、编译预处理不是C语言的一部分,不再运行时间。C 语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。 2、每个C语言程序中main函数是有且只有一个。 3、在函数中不可以再定义函数。 4、算法的是一定要有输出的,他可以没有输入。 5、break可用于循环结构和switch语句。 6、逗号运算符的级别最低。 第一章

1)合法的用户标识符考查: 合法的要求是由字母,数字,下划线组成。有其它元素就错了。 并且第一个必须为字母或则是下划线。第一个为数字就错了。 关键字不可以作为用户标识符号。main define scanf printf 都不是关键字。迷惑你的地方If是可以做为用户标识符。因为If中的第一个字母大写了,所以不是关键字。 2)实型数据的合法形式: 2.333e-1 就是合法的,且数据是2.333×10-1。考试口诀:e前e后必有数,e后必为整数。. 3)字符数据的合法形式:: '1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。 '0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。 4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节: 考试时候一般会说,在16位编译系统,或者是32位系统。碰到这种情况,不要去管,一样做题。掌握整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节就可以了。

全国计算机等级考试二级C语言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++; } for(i=0;i<j;i++) if(x%t[i]==0) { pp[k]=t[i]; k++; } *n=k; }

计算机二级c语言考试习题及答案

1). 下列叙述中正确的是( )。 A.调用printf( )函数时,必须要有输出项 B.使用put )函数时,必须在之前包含头文件stdio.h C.在C语言中,整数可以以二进制、八进制或十六进制的形式输出 D.调节get )函数读入字符时,可以从键盘上输入字符所对应的ASCII码 正确答案:B 答案解析:选项A,若printf函数没有输出项,且格式字符串中不含格式信息,则输出的是格式字符串本身,若格式字符串含有格式信息,运行时则出现错误提示;选项C,在C语言中,整数可以十进制、八进制或十六进制的形式输出;选项D,getchar函数是从标准输入设备读取一个字符。 2). 以下结构体类型说明和变量定义中正确的是( ) A.typedef struct { int n; char c; } REC; REC t1,t2; B.struct REC ; { int n; char c; }; REC t1,t2; C.typedef struct REC; { int n=0; char c=′A′; } t1,t2; D.struct { int n; char c; } REC; REC t1,t2; 正确答案:A 答案解析:定义结构体类型的一般形式为:struct 结构体名{成员列表};struct 结构体名后不能加″;″号,所以选项B、C)错误,选项D中定义无名称的结构体类型同时定义结构体变量形式应为struct t1,t2;选项A为用户自定义类型,其为正确的定义形式。 3). 若实体A和B是一对多的联系,实体B和C是一对一的联系,则实体A和C的联系是( ) A.一对一 B.一对多 C.多对一

2013计算机二级考试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)关系中的每一列称为元组,一个元组就是一个字段

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