全国计算机二级上机题库二级C.docx

上传人:b****7 文档编号:10344105 上传时间:2023-02-10 格式:DOCX 页数:148 大小:61.99KB
下载 相关 举报
全国计算机二级上机题库二级C.docx_第1页
第1页 / 共148页
全国计算机二级上机题库二级C.docx_第2页
第2页 / 共148页
全国计算机二级上机题库二级C.docx_第3页
第3页 / 共148页
全国计算机二级上机题库二级C.docx_第4页
第4页 / 共148页
全国计算机二级上机题库二级C.docx_第5页
第5页 / 共148页
点击查看更多>>
下载资源
资源描述

全国计算机二级上机题库二级C.docx

《全国计算机二级上机题库二级C.docx》由会员分享,可在线阅读,更多相关《全国计算机二级上机题库二级C.docx(148页珍藏版)》请在冰豆网上搜索。

全国计算机二级上机题库二级C.docx

全国计算机二级上机题库二级C

第一套

1程序填空

函数fun将指定源文件中的内容复制到目标文件中,复制成功时函数返回值为1,失败时返回值为0。

第1处if((fs=fopen(source,”r”))==NULL)

第2处while(!

feof(fs))

第3处fputc(ch,ft);

2程序修改

将长整型中每一位上为偶数的数依次取出,构成一个新数放在t中。

高位仍在高位,低位仍在低位。

voidfun(longs,long*t)

{intd;

longs1=1;

*t=0;

while(s>0)

{d=s%10;

/*******found******/

if(d%2==0)

{*t=d*sl+*t;

sl*=10;

}

/*******found******/

s/=10;

}

}

3程序设计

将两个两位数的正整数a、b合并形成一个整数放在c中。

合并的方式是:

将a数的十位和个位数依次放在c数的十位和千位上,b数的十位和个位数依次放在c数的百位和个位上。

voidfun(inta,intb,long*c)

{

*c=(a%10)*1000+(b/10)*100+(a/10)*10+(b%10);

}

第二套

1程序填空

若形参ch中是数字字符‘0’--‘9’,则‘0’转换成‘9’,‘1’转换成‘8’,‘2’转换成‘7’,……‘9’转换成‘0’;若是其它字符则保持不变;并将转换后的结果作为函数值返回。

第1处charfun(charch)

第2处if(ch>=’0’&&ch<=’9’)

第3处return‘9’-(ch-‘0’);

2程序修改

将p所指字符串中的所有字符复制到b中,要求复制第三个字符之后插入一个空格。

voidfun(char*p,char*b)

{inti,k=0;

while(*p)

{i=1;

while(i<=3&&*P)

{

/*******found******/

b[k]=*p;

k++;p++;i++;

}

if(*p)

{

/*******found******/

b[k++]=’’;

}

}

b[k]=’\0’;

}

3程序设计

N名学生的成绩已在主函数中放入一个带头节点的链表结构中,h指向链表的头节点求出平均分,由函数值返回。

doublefun(STREC*h)

{

STREC*p=h->next;

doubleav=0.0;

intn=0;

while(p!

=NULL)

{

av=av+p->s;

p=p->next;

n++;

}

av/=n;

returnav;

}

第三套

1程序填空

有N×N矩阵,根据给定的m(m<=N)值,将每行元素中的值均右移m个位置,左边值为0。

第1处for(i=0;i

第2处t[i][j+m]=t[i][j];

第3处for(j=0;j

2程序修改

计算并输出high以内最大的10个素数之和。

high的值由主函数传给fun函数。

intfun(inthigh)

{intsum=0,n=0,j,yes;

/*******found******/

while((2<=high)&&(n<10))

{yes=1;

for(j=2;j<=high/2;j++)

if(high%j==0){

/*******found******/

yes=0;break;

}

if(yes){sum+=high;n++;}

high--;

}

returnsum;

}

3程序设计

利用以下所示的简单迭代方法求方程:

cos(x)-x=0的一个实根。

xn+1=cos(xn)迭代步骤如下:

(1)取x1初值为0.0

(2)x0=x1,把x1的值赋给x0

(3)x1=cos(x0),求出一个新的x1

(4)若x0-x1的绝对值小于0.000001执行步骤(5)否则执行步骤

(2)

(5)所求x1就是方程cos(x)-x=0的一个实根作为函数值返回。

程序将输出结果Root=0.739058。

floatfun()

{

floatx0,x1=0.0;

do{

x0=x1;

x1=cos(x0);

}while(fabs(x0-x1)>0.000001);

returnx1;

}

第四套

1程序填空

程序通过定义学生结构体变量,存储了学生的学号、姓名和3门课的成绩。

所有学生数据均以二进制方式输出到文件中。

函数fun的功能是从形参filename所指的文件中读入学生数据,并按照学号从小到大排序后,再用二进制方式把排序后的学生数据输出到filename所指的文件中,覆盖原来的文件内容。

第1处fp=fopen(filename,"rb");

第2处if(s[i].sno>s[j].sno)

第3处fwrite(s,sizeof(STU),N,fp);

1.程序修改

给定程序MODI1.C中函数fun的功能是:

在字符串的最前端加入n个*号,形成新串,差且覆盖原串。

注意:

字符串的长度最长允许为79.

voidfun(chars[],intn)

{

chara[80],*p;

inti;

/*****found******/

p=s;

for(i=0;i

a[i]=’*’;

do

{a[i]=*p;

i++;

}

/*****found******/

while(*p++)

a[i]=0;

strcpy(s,a);

}

2.程序设计

请编写函数fun,函数的功能是:

统计各年龄段的人数,N个年龄能过调用随机函数获得,并放在主函数的age数组中:

要求函数把0至9岁的年龄段的人数放在d[0]中,把10至19岁的年龄段的人数放在d[1]中,把20至29岁的年龄段的人数放在d[2]中,其余依次类推,把100岁(含100岁)以上年龄的人数都放在d[10]中。

结果在主函数中输出。

voidfun(int*a,int*b)

{

inti,j;

for(i=0;i

for(i=0;i

{j=a[i]/10;

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

elseb[j]++;

}

}

第五套

1程序填空

给定程序中,函数fun的功能是将参数给定的字符串、整数、浮点数写到文件文件中,再用字符串方式从此文本文件中逐个读入,并调用库函数atoi和atof将字符串换成相应的整数和浮点数,然后将其显示在屏幕上。

第1处:

FILE*fp;

第2处:

fclose(fp);

第3处:

fscanf(fp,”%s%s%s”,str,str1,str2);

2.程序修改

给定程序MODI1.C中函数fun的功能是:

对N名学生的学生成绩,按从高到低的顺序找出前m(m<10)名学生来,将这些学生数据存放在一个动态分配的连续存储区中,此存储区的首地址作为函数值返回。

STU*fun(STUa[],intm)

{STUb[N],*t;

inti,j,k;

/*****found******/

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

for(i=0;i

b[i]=a[i];

for(k=0;k

{for(i=j=0;i

if(b[i].s>b[j].s)j=i;

/*****found******/

t[k]=b[j];

b[j].s=0;

}

returnt;

}

3.程序设计

请编写函数fun,函数的功能是,删去一维数组中所有相同的数,使之只剩一个。

数组中的数已按从小到大的顺序排序,函数返回删除后数组中数据的个数。

intfun(inta[],intn)

{

inti,j=1,k=a[0];

for(i=1;i

if(k!

=a[i]){

a[j++]=a[i];

k=a[i];}

a[j]=0;

returnj;

}

第六套

1程序填空

给定程序中,函数fun的功能是用函数指针指向要调用的函数,并进行调用。

规定在_2_处使f指向函数f1,在_3_处使f指向函数f2。

当调用正确时,程序输出:

x1=5.000000,x2=3.000000,x1*x1+x1*x2=40.000000请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处double(*f)();

第2处f=f1;

第3处f=f2;

2程序修改

给定程序MODI1.C是建立一个带头点的单向链表,并用随机函数为各结点赋值。

函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

intfun(NODE*h)

{intsum=0;

NODE*p;

/*******found******/

p=h->next;

while(p)

{if(p->data%2==0)

sum+=p->data;

/*******found******/

p=p->next;

}

returnsum;

}

3程序设计

请编写函数fun,函数的功能是:

判断字符串是否为回文?

叵是,函数返回1,主函数中输出:

YEX,否则返回0,主函数中输出NO。

回文是指顺读t和倒读都一样的字符串。

intfun(char*str)

{

inti,j=strlen(str);

for(i=0;i

if(str[i]!

=str[j-i-1])return0;

return1;

}

第七套

1.程序填空

程序通过定义并赋初值的方式,利用结构体变量存储了一名学生的信息,函数fun的功能是输出这位学生的信息。

第1处voidshow(STUtt)

第2处printf(“%5.1f”,tt.score[i]);

第2处show(std)

2.程序修改

给定程序MODI1中函数fun的功能是:

求出数组中最大数和次最大数,并把最大数和a[0]中的数对调、次最大数和a[1]中的数对调。

intfun(int*a,intn)

{inti,m,t,k;

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

/*****found******/

m=i;

for(k=i+1;k

/*****found******/

if(a[k]>a[m])m=k;

t=a[i];a[i]=a[m];a[m]=t;

}

}

3.程序设计

请编写一个unsignedfun(unsignedw),w是一个大于10的无符号整数,若w是n(n>=2)位的整数,函数求出w的后n-1位的数作为函数值返回。

例如:

w值为5923,则函数返回923;w值为923则函数返回23。

unsignedfun(unsignedw)

{

if(w>=10000)returnw%10000;

if(w>=1000)returnw%1000;

if(w>=100)returnw%100;

returnw%10;

}

第八套

1.程序填空

给定程序通过定义并赋值的方式,利用结构体变量存储了一名学生学号、姓名和3门课的成绩。

函数fun的功能是将该学生的各科成绩都乘以一个系统a。

第1处voidmodify(STU*ss,floata)

第2处ss->score[i]*=a;

第3处modify(&std,a);

2.程序修改

给定程序MODI1.C中函数fun的功能是:

求k!

<13>,所求阶乘的值作为函数值返回。

例如:

若k=10,则应输出:

3628800。

longfun(intk)

{

/*****found******/

if(k>0)

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

/*****found******/

elseif(k==0)

return1L;

}

3.程序设计

程序定义了N*N的二维数组,并在主函数中自动赋值。

请编写函数fun(inta[][N],intn),函数的功能是:

使数组左下三角元素中的值乘以n。

intfun(inta[][N],intn)

{inti,j;

for(i=0;i

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

a[i][j]*=n;

}

第九套

1程序填空

给定程序中,函数fun的功能是:

将形参n中,各位上为偶数的数取出,并按原来从高位到低们的顺序组成一个新的数。

并作为函数值返回。

第1处i=1;

第2处while(s)

第3处x=x+t*i;i=i*10;

2程序修改

给定程序MODI1.C中函数fun的功能是:

输出M行M列整数方阵,然后求两条对角线上元素之和,返回此和数。

/*******found******/

intfun(intn,intxx[][M])

{inti,j,sum=0;

printf(“\nThe%dx%dmatrix:

\n”,M,M);

for(i=0;i

{for(j=0;j

/*******found******/

printf(“%d”,xx[i][j]);

printf(“\n”);

}

for(i=0;i

sum+=xx[i][i]+xx[i][n-i-1];

return(sum);

}

3程序设计

函数fun的功能是:

将a、b中的两个两位正整数合并形成一个新的整数放在c中。

合并的方式是:

将a中的十位和个位数依次放在变量c的千位和十位上,b中的十位和个位数依次放在变量c的个位和百位上。

voidfun(inta,intb,long*c)

{

*c=(a/10)*1000+(b%10)*100+(a%10)*10+(b/10);

}

第十套

1程序填空

给定程序中,函数fun的功能是:

判定形参a所指的N×N(规定N为奇数)的矩阵是否是“幻方”,若是,函数返回值为1;不是,函数返回值为0。

“幻方”的判定条件是:

矩阵每行、每列、主对角线及反对角线上元素之和都相等。

第1处row=colum=0;

第2处if((row!

=colum)||(row!

=m1))return0;

第3处return1;

2程序修改

给定MODI1.Cfun函数的功能是:

根据整型形参m,计算如下公式的值。

t=1-1/2-1/3-……-1/m.

#include

doublefun(intm)

{

doublet=1.0;

inti;

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

/********found***********/

t=t-1.0/i;

/********found***********/

returnt;

}

3程序设计

请编写一个函数,函数的功能是删除字符串中的所有空格。

intfun(char*str)

{

char*p=str;

inti=0;

while(*p){

if(*p!

=’’)str[i++]=*p;

p++;

}

str[i]=0;

}

第十一套

1程序填空

给定程序中,函数fun的功能是将带头结点的单向链表逆置。

即若原链表中从头至尾结点数据域依次为:

2、4、6、8、10,逆置后,从头至尾结点数据域依次为:

10、8、6、4、2、。

第1处p=h->next;

第2处if(p==0)return;

第3处p=q;q=r;

2.程序修改

给定MODI1.Cfun函数的功能是:

计算s所指字符串中含有t所指字符串的数目,并作为函数值返回。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

#include

#include

#defineN80

intfun(char*s,char*t)

{intn;

char*p,*r;

n=0;

while(*s)

{p=s;

/*******found******/

r=t;

while(*r)

if(*r==*p){r++;p++;}

elsebreak;

/*******found******/

if(*r==0)

n++;

s++;

}

returnn;

}

3程序设计

请编写函数fun,函数的功能是:

将放在字符串数组中的M个字符串(每串的长度不超过N),按顺序合并组成一个新的字符串,函数fun中给出的语句供供参考。

voidfun(chara[M][N]),char*b)

{inti;*b=0;

for(i=0;i

}

第十二套

1程序填空

给定程序中,函数fun的功能是将不带头结点的单向链表逆置。

即若原链表中从头至尾结点数据域依次为:

2、4、6、8、10,逆置后,从头至尾结点数据域依次为:

10、8、6、4、2。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处NODE*fun(NODE*h)

第2处r=q->next;

第3处q=r;

2程序修改

给定程序MODI1.C中函数fun的功能是:

将s所指字符串中位于奇数位置的字符或ASCII码为偶数的字符放入t所指数组中(规定第一个字符放在第0位中)。

#include

#include

#defineN80

voidfun(char*s,chart[])

{inti,j=0;

for(i=0;i

/*******found******/

if(i%2||s[i]%2==0)

t[j++]=s[i];

/*******found******/

t[j]=’\0’;

}

3程序设计

请编写函数fun,函数的功能是:

将M行N列的二维数组中的数据,按列的顺序依次放到一维数组中。

函数fun中给出的语句仅供参考。

#include

voidfun(int(*s)[10],int*b,int*n,intmm,intnn)

{

inti,j,np=0;

for(i=0;i

for(j=0;j

{

b[np]=s[j][i];

np=i*mm+j+1;

}

*n=np;

}

第十三套

1程序填空

给定程序中,函数fun的功能是:

计算出带有头节点的单向链表中各节点数据域中值之和作为函数值返回。

第1处s+=p->data;

第2处p=p->next;

第3处printf(“\nsum=%d\n”,fun(head));

2程序修改

给定程序MODI1.C中函数fun的功能是:

将s所指字符串中出现的与t1所指字符串相同的子串全部替换成t2所指字符串,所形成的新串放在w所指的数组中。

在此处,要求t1和t2所指字符串的长度相同。

intfun(char*s,char*t1,char*t2,char*w)

{

inti;char*p,*r,*a;

strcpy(w,s)

while(*w)

{p=w;r=t1;

/*******found******/

while(*r)

if(*r==*p)

{r++;p++;}

elsebreak;

if(*r==’\0’)

{a=w;r=t2;

while(*r){

/*******found******/

*a=*r;a++;r++;

}

w+=strlen(t2);

}

elsew++;

}

}

3程序设计

函数fun的功能是:

将s所指字符串中下标为偶数的字符删除,串中剩余字符形成的新串放在t所指数组中。

voidfun(char*s,chart[])

{

inti,j=0;

for(i=1;i

t[j++]=s[i];

t[j]=0;

}

第十四套

1.程序填空

给定程序中,函数fun的功能是根据形参i的值返回某个函数年值。

当调用正确时,程序输出:

x1=5.000000

x2=3.000000.

x1*x1+x1*x2=40.000000

第一处:

doublefun(inti,doublex,doubley)

第二处:

returnf1(x);

第三处:

returnf2(x,y);

2.程序修改

给定程序MODI1.C中函数fun的功能是:

比较两个字符串,将长的那个字符串的首地址作为函数值返回。

#include

/*****found******/

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

{

intsl=0,tl=0;

char*ss,*tt;

ss=s;tt=t;

while(*ss)

{sl++;

/*****found******/

ss++;

}

while(*tt)

{tl++;

/*****found******/

tt++;

}

if(tl>sl)returnt;

elsereturns;

}

3.程序设计

请编写函数fun,函数的功能是:

移动字符串中的内容,移动的规则如下:

把第1到第m个字符,平均移到字符串的最后,把第m+1个到最后的;字符移到字符串的前部。

voidfun(char*w,intm)

{

inti;

for(i=0;i

fun1(w);

}

第十五套

1程序填空

程序通过定义学生结构体变量,存储了学生的学号,姓名和3门课的成绩。

所有学生数据均以二进制方式输出到student.dat文件中。

函数fun的功能是从指定文件中找出指定学号的学生数据,读入此学生数据,对该生的分数进行修改,使每门课的分数加3分,修改后重写文件中该学生的数据,即用该学生的背后数据覆盖原数据,其它学生数据不变;若找不到,则什么都不做。

请在程序的下划线处填入正确的内容并把下划线删除,使程序得出正确的结果。

第1处while(!

feof(fp))

第2处if(n.sno==sno)break;

第3处fseek(fp,-1L*sizeof(STU),SEEKCUR);

2程序修改

给定程序MODI1.C中函数fun的功能是:

利用插入排序法对字符串中的字符按从小到大的顺序进行排序,插入法的基本算法是:

先对字符串中的头两个元素进行排序,然后把第三个字符插入到前两个字符中,插入后前三个字符依然有序;再把第四个字符插入到前三个字符中,……。

待排序的字符串已在主函数中赋予。

请改正函数fun中指定部位的错误,使它能得出正确的结果。

voidinsert(char*aa)

{inti,j,n;charch;

/*******found******/

n=s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 高等教育 > 军事

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1