2011全国计算机等级考试二级C语言机考数据库

重要提示:这个题库从一个问题复制到另一个问题的工作量很大,很多表达式在word中无法快速表达(会增加工作量),所以省略或者放错了位置,有些地方可能或者肯定会错。相信准备考C语言二级的同学,从参考答案中应该能看出来。这是2011最新版最全的考试题库,相信大家都会过!

第一集

程序填空

在给定的程序中,fun的作用是将形参n所指示的变量的每一位中的偶数相除,从原来的高阶到低阶形成一个新的数,并通过形参指针n返回所指示的变量..如果您输入一个数字:27638496,新的数字是729。

第一个空格:{ t = * n % 10;

秒空:if(t%2!=0)

第三个空格:* n = x;

2.程序修改

给定程序modi1.c中fun的作用是计算n!。例如,如果为n输入5,将输出120.00000。

双重乐趣(整数)

{ double result = 1.0;

/* * * * * *找到了******/

如果(n==0)

返回1.0;

while(n & gt;1。& ampn & lt170)

/* * * * * *找到了******/

结果* = n-;

返回结果;

}

编程;编排

请写一个函数fun,它的作用是将一个数值型的字符串转换成整数(不允许C语言提供的将字符串转换成整数的函数)。例如,如果输入字符串“-1234”,函数会将其转换为整数值-1234。

长乐趣(char *p)

{

int i,len,t;

long x = 0;

len = strlen(p);

if(p[0]=='-')

{ t =-1;len-;p++;}

else t = 1;

while(*p)

x = x * 10-48+(* p++);

返回x * t;

}

第二集

1.在给定的程序中,fun的作用是将形参给定的字符串、整数和浮点数写入一个文本文件,然后以字符的方式从这个文本文件中一个一个地读取出来,显示在终端屏幕上。

请在程序的下划线处填写正确的内容,并删除下划线,这样程序才能得到正确的结果。

注意:源程序存储在BLANK1中。考生文件夹下的c。

FILE * fp在1;

第二名while(!feof(fp)) {

第三位的putchar(ch);ch = fgetc(FP);}

2.程序修改

fun在给定程序MODI1中的作用。c是把字符串中的所有数字字符依次拿出来组成一个新的字符串,替换原来的字符串。

无效乐趣(字符)

{ int i,j;

for(i=0,j = 0;s[i]!='\0';i++)

if(s[I]& gt;= ' 0 ' & amp& amps[I]& lt;='9')

/* * * * * *找到了******/

s[j++]= s[I];

/* * * * * *找到了******/

s[j]= ' \ 0 ';

}

3.编程问题

请写函数fun,它的作用是将m行n列二维数组中的字符数据按列顺序放入一个字符串中。

void fun(char s[][N],char *b)

{

int i,j,n = 0;

for(I = 0;我& ltn;i++)

/*请填写相应的语句以完成其功能*/

{

for(j = 0;j & ltm;j++) {

b[n]= s[j][I];

n = I * M+j+1;

}

}

b[n]= ' \ 0 ';

}

第三集

1.按程序填空

通过定义学生结构的变量,程序存储学生的学号、姓名和三门课程的成绩。所有学生数据都以二进制形式输出到文件中。fun的作用是重写形参filename所引用的文件中最后一个学生的数据,即用新的学生数据覆盖这个学生的原有数据,而其他学生的数据保持不变。

No.1: fp=fopen(文件名,

“rb+”)

第二名:fseek(fp,-1L*

sizeof(STU),SEEK _ END);

第三名:fwrite(&;n,

sizeof(STU),1,FP);

2.程序修改

Creatlink在给定程序MODI1中的作用。c是创建一个领导节点的单向链表,并为每个节点的数据字段分配从0到m-1的值。请更正Creatlink函数指定部分的错误,使其能够得到正确的结果。

NODE *Creatlink(int n,int m)

{ NODE *h=NULL,*p,* s;

int I;

/* * * * * *找到了******/

p=(节点*) malloc(sizeof(节点));

h = p;

p->;next = null

for(I = 1;我& lt= n;i++)

{s=( NODE *) malloc(sizeof(NODE))。

s-& gt;data = rand()% m;

s-& gt;next = p-& gt;接下来;

p->;next = s;

p = p-& gt;接下来;

}

/* * * * * *找到了******/

返回h;

}

3.编程;编排

请写fun这个函数,它的作用是统计一个字符串的字数,并作为函数值返回。在main函数中输入一行字符串,规定所有单词由小写字母组成,单词之间用几个空格隔开,一行的开头没有空格。

利息(char *s)

{

int k = 1;

while(*s)

{ if(* s = = ' ')k++;

s++;}

返回k;

}

第四集

1.按程序填空

通过定义学生结构的变量,程序存储学生的学号、姓名和三门课程的成绩。所有学生数据都以二进制形式输出到文件中。fun的功能是从形参filename指示的文件中读入学生数据,按照学号从小到大排序,然后将排序后的学生数据以二进制的方式输出到filename指示的文件中,覆盖原来的文件内容。

Fp = fopen(文件名,“rb”)在1;

第二位if (s [I]。SnO >;s[j]。sno)

第三个fwrite(s,sizeof(STU),N,FP);

2.程序修改

fun在给定程序MODI1中的作用。c是在字符串前面加n *号,形成一个新字符串,这个新字符串是不同的,覆盖了原来的字符串。注意:字符串的最大长度是79。

void fun(char s[ ],int n)

{

char a[80],* p;

int I;

/* * * * * *找到了******/

p = s;

for(I = 0;我& ltn;i++)

a[I]= ' * ';

{ a[I]= * p;

i++;

}

/* * * * * *找到了******/

while(*p++)

a[I]= 0;

strcpy(s,a);

}

3.编程;编排

请把函数写得有趣些。函数的作用是统计各个年龄段的人数。调用一个随机函数可以得到n个年龄,放在主函数的年龄数组中。函数要求将0到9岁的人数放在d[0]中,10到19岁的人数放在d[1]中,20到20岁的人数。结果在main函数中输出。

void fun(int *a,int *b)

{

int i,j;

for(I = 0;我& ltm;i++)b[I]= 0;

for(I = 0;我& ltn;i++)

{ j = a[I]/10;

if(j & gt;10)b[M-1]++;

else b[j]++;

}

}

第五集

1.按程序填空

在一个给定的程序中,fun的作用是将给定参数的字符串、整数、浮点数写入一个文件,然后以字符串的形式从这个文本文件中一个一个地读取,调用库函数atoi、atof将字符串转换成相应的整数、浮点数,然后显示在屏幕上。

1:FILE * FP;

第二名:fclose(FP);

第三名:fscanf (FP,“%s% s”,str,str 1,str 2);

2.程序修改

fun在给定程序MODI1中的作用。c是找出最上面的M (m

STU *fun(STU a[ ],int m)

{ STU b[N],* t;

int i,j,k;

/* * * * * *找到了******/

t=(STU *)calloc(sizeof(STU),m);

for(I = 0;我& ltn;i++)

b[I]= a[I];

for(k = 0;k & ltm;k++)

{ for(I = j = 0;我& ltn;i++)

if(b[i]。s & gtb[j]。s)j = I;

/* * * * * *找到了******/

t[k]= b[j];

b[j]。s = 0;

}

return t;

}

3.编程;编排

请写函数fun,函数是删除一维数组中所有相同的数字,只留下一个。数组中的数字已经从小到大排序,函数返回被删除数组中的数据个数。

int fun(int a[ ],int n)

{

int i,j=1,k = a[0];

for(I = 1;我& ltn;i++)

如果(k!=a[i]){

a[j++]= a[I];

k = a[I];}

a[j]= 0;

返回j;

}

第六集

1.按程序填空

在给定的程序中,fun的作用是根据形参I的值返回一个函数的年值..当调用正确时,程序输出:x1=5.000000。

x2=3.000000。

x 1 * x 1+x 1 * x2 = 40.000000

第一名:double fun(int i,double x,double y)

第二名:返回f 1(x);

第三位:返回f2(x,y);

2.程序修改

给定程序中的fun函数MODI1。c是比较两个字符串,返回较长字符串的第一个地址作为函数值。

# include & ltstdio.h & gt

/* * * * * *找到了******/

char *fun(char *s,char *t)

{

int sl=0,TL = 0;

char *ss,* TT;

ss = s;TT = t;

while(*ss)

{ sl++;

/* * * * * *找到了******/

ss++;

}

而(*tt)

{ tl++;

/* * * * * *找到了******/

TT ++;

}

if(TL & gt;sl)返回t;

else返回s;

}

3.编程;编排

请写fun这个函数,它的作用是移动字符串的内容。移动的规则如下:将第1到第m个字符平均移动到字符串末尾,将第m+1移动到最后;字符移动到字符串的前面。

无效资金(char *w,int m)

{

int I;

for(I = 0;我& ltm;i++)

fun 1(w);

}

第七集

1.按程序填空

程序使用结构变量通过定义和赋初值来存储一个学生的信息,而fun的功能就是输出这个学生的信息。

无效显示(斯图tt)在1

第二个printf ("%5.1f ",TT。score[I]);

第二场秀(std)

2.程序修改

fun在给定程序MODI1中的作用是求数组中的最大数和第二大数,用a[0]中的数交换最大数,用a[1]中的数交换第二大数。

int fun(int *a,int n)

{ int i,m,t,k;

for(I = 0;我& lt2;i++){

/* * * * * *找到了******/

m = I;

for(k = I+1;k & ltn;k++)

/* * * * * *找到了******/

if(a[k]& gt;a[m])m = k;

t = a[I];a[I]= a[m];a[m]= t;

}

}

3.编程;编排

请写一个无符号fun(无符号w),其中w是大于10的无符号整数,如果w是n(n & gt;=2)位整数,函数找到w的最后n-1位数,并将其作为函数值返回。

例如,如果W的值为5923,则函数返回923;如果w是923,函数返回23。

无符号乐趣(无符号w)

{

如果(w & gt=10000)返回w % 10000;

如果(w & gt=1000)返回w % 1000;

如果(w & gt=100)返回w % 100;

返回w % 10;

}

第八集

1.按程序填空

通过定义和赋值,给定的程序使用结构变量来存储学生的学号、姓名和三门课程的分数。乐趣的功能是将学生所有科目的分数乘以一个系统A..

Void修改(STU *ss,浮点a)在1

第二名ss-& gt;score[I]* = a;

第三处修改(&;std,a);

2.程序修改

fun在给定程序MODI1中的作用。c是:找k!& lt13 >,阶乘的值作为函数值返回。比如k=10,输出应该是:3628800。

龙趣(int k)

{

/* * * * * *找到了******/

if(k & gt;0)

return(k * fun(k-1));

/* * * * * *找到了******/

else if(k==0)

返回1L;

}

3.编程;编排

程序定义了一个N*N的二维数组,并在main函数中自动赋值。请写函数fun(int a[ ][N],int n),它的作用是将数组左下三角元素中的值乘以N。

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

{ int i,j;

for(I = 0;我& ltn;i++)

for(j = 0;j & lt= I;j++)

a[I][j]* = n;

}

第九集

1.按程序填空

在给定的程序中,fun的作用是将单向链表的节点数据字段中的数据进行从小到大的无前导节点排序。即,如果原始链表节点数据字段中的数据是:10,4,2,8和6,那么排序后的链表节点数据字段中的数据是:2,4,6,8和10。

在1处,q = p->;接下来;

而(q)在第二位

第三位是p = p-& gt;接下来;

2.程序修改

fun在给定程序MODI1中的作用。c是把S表示的字符串中的字母转换成后面字母的字母顺序(但是Z转换成A,Z转换成A),其他字符不变。

无效乐趣(字符)

{

/* * * * * *找到了******/

while(*s)

{ if(* s & gt;一个'和amp& amp* s & lt='Z '

| | * s & gt= ' a ' & amp& amp* s & lt='z ')

{ if(* s = = ' Z ')* s = ' A ';

else if(* s = = ' z ')* s = ' a ';

else * s = * s+1;}

/* * * * * *找到了******/

s++;

}

}

3.编程;编排

void fun(int *w,int p,int n)

{

int i,j=0,b[N];

for(I = p+1;我& ltn;i++)b[j++]= w[I];

for(I = 0;我& lt= p;i++)

b[j++]= w[I];

for(I = 0;我& ltn;i++)

w[I]= b[I];

}

第十集

用1程序填空

在给定的程序中,fun的作用是判断形参A所指的N×N(其中N为奇数)的矩阵是否为“幻方”,如果是,则函数返回值为1;不,函数的返回值是0。“幻方”的准则是矩阵的每一行、每一列、主对角线和反对角线上的元素之和相等。

row = column = 0 = 0 at 1;

如果((排!= column)| |(row!=m1))返回0;

第三位返回1;

2程序修改

给定MODI1的功能。Cfun函数就是根据整数参数m计算下面公式的值t=1-1/2-1/3-......-1/米。

# include & ltsdio.h & gt

双重乐趣(int m)

{

双t = 1.0;

int I;

for(I = 2;我& lt= m;i++)

/* * * * * * * *找到了**********/

t = t-1.0/I;

/* * * * * * * *找到了**********/

return t;

}