C语言计算机等级考试上机真题.docx

上传人:b****6 文档编号:7733189 上传时间:2023-01-26 格式:DOCX 页数:35 大小:42.34KB
下载 相关 举报
C语言计算机等级考试上机真题.docx_第1页
第1页 / 共35页
C语言计算机等级考试上机真题.docx_第2页
第2页 / 共35页
C语言计算机等级考试上机真题.docx_第3页
第3页 / 共35页
C语言计算机等级考试上机真题.docx_第4页
第4页 / 共35页
C语言计算机等级考试上机真题.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

C语言计算机等级考试上机真题.docx

《C语言计算机等级考试上机真题.docx》由会员分享,可在线阅读,更多相关《C语言计算机等级考试上机真题.docx(35页珍藏版)》请在冰豆网上搜索。

C语言计算机等级考试上机真题.docx

C语言计算机等级考试上机真题

历年上机真题

第一套

填空题

请补充main函数,该函数的功能是:

输出一个NXN矩阵,要求非周边元素赋值0,周边元素赋值1.

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#defineN10

main()

{

intbb[N][N];

inti,j,n;

clrscr();

printf("\nInputn:

\n");

scanf("%d",&n);

for(i=0;i

for(j=0;j

{

if(【1】)

bb[i][j]=1;

else

【2】;

}

printf(“\n***theresult***\n”)

for(i=0;i

{

printf(“\n\n”);

for(j=0;j

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

}

}

答案:

i==0||i==n-1||j==0||j==n-1

bb[i][j]=0

改错题

下列给定程序中,函数fun()的功能是:

给定n个实数,输出平均值,并统计平均值以上(含平均值)的实数个数。

例如,n=8时,输入3.1,5.3,7.4,8.3,9.7,所得平均值为6.76,在平均值以上的实数个数为3.

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

intfun(floatx[],intn)

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

intj,c=0;floatxa=0.0;

for(j=0;j

xa+=x[j]/n;

printf(”ave=%f\n”,xa);

for(j=0;j

if(x[j]>=xa)

c++;

returnc;

}

main()

{

floatx[100]={3.1,5.3,7.4,8.3,9.7};

clrscr();

printf(“%d\n”,fun(x,8));

}

答案:

intj,c=0;floatxa=0.0;改为{intj,c=0;floatxa=0.0;

编程题

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

计算n门课程的平均分,计算结果作为函数值返回。

例如:

有5门课程的成绩是90.5,72,80,61.5,55,则函数的值为71.80.

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

试题程序:

#include

floatfun(float*a,intn)

{

}

main()

{

floatscore[30]={90.5,72,80,61.5,55},aver;

aver=fun(score,5);

printf(“score=%5.2f\n”,aver);

}

/*************************

/*************************

第二套

填空题

请补充main函数,该函数的功能是:

把字符串str1中的非空格字符拷贝到字符串str2中。

例如,若str1=”gladtoseeyou!

”,则str2=”gladtoseeyou!

”。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#defineN80

main()

{

staticcharstr1[N]=”gladtoseeyou!

”;

charstr2[N];

inti=0,j=0;

clrscr();

printf(“\n*******str1*******\n”);

puts(str1);

while(str1[i])

{

if(【1】)

str2[j++]=str1[i];

【2】;

}

printf(“\n*******str2*******\n”);

for(i=0;i

printf(“%c”,str2[i]);

}

改错题

下列给定程序中,函数fun()的功能是:

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

例如,若n=10,则应输出0.617977

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

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

intfun(intn)

{

floatA=1;inti;

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

for(i=2;i

A=1.0/(1+A);

returnA;

}

main()

{

intn;

clrscr();

printf(“\nPleaseentern:

”);

scanf(“%d”,&n);

printf(“A%d=%lf\n”,n,fun(n));

}

intfun(intn)改为floatfun(intn)

for(i=2;i

编程题

假定输入的字符串中只包含字母和*号。

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

将字符串尾部的*号全部删除,前面和中间的*号不删除。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

试题程序:

#include

#include

voidfun(char*a)

{

}

main()

{

chars[81];

printf(“Enterastring:

\n”);

gets(s);

fun(s);

printf(“Thestringafterdeleted:

\n”);

puts(s);

}

/****************

while(*a!

=’\0’)

a++;

a--;

while(*a==’*’)

a--;

*(a+1)=’\0’;

/*******************

第三套

填空题

请补充main函数,该函数的功能是:

计算两个自然数n和m(m<10000)之间所有数的和(n和m从键盘输入)。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#include

main()

{

intn,m;

longsum;

【1】;

clrscr();

printf(“\nInputn,m\n”);

scanf(“%d,%d”,&n,&m);

while(n<=m)

{

【2】;

n++;

}

printf(“sum=%【3】\n”,sum);

}

答案:

sum=0

sum+=n

d

改错题

下列给定程序中,函数fun()的功能是:

给一维数组a输入任意4个整数,并按如下规律输出。

例如输入1,2,3,4,程序运行后输出如下方阵:

4123

3412

2341

1234

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#defineM4

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

intfun(inta)

{

inti,j,k,m;

printf(“Enter4number:

”);

for(i=0;i

printf(”\n\nTheresult:

\n\n”);

for(i=M;i>0;i--)

{k=a[M-1];

for(j=M-1;j>0;j--)

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

a[j]=a[j+1];

a[0]=k;

for(m=0;m

printf(“\n”);

}

}

main()

{

inta[M];

fun(a);

printf(“\n\n”);

}

答案:

intfun(inta)应改为:

intfun(int*a)

a[j]=a[j+1];应该为:

a[j]=a[j-1];

编程题

请编写函数fun(),它的功能是计算:

在C语言中可调用log(n)函数求ln(n)。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

试题程序:

#include

#include

#include

doublefun(intm)

{

}

main()

{

clrscr();

printf(“%f\n”,fun(20));

}

/**********参考答案***********

inti;

doubles=0.0;

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

s=s+log(i);

return(sqrt(s));

/*********************

第四套

填空题

请补充main函数,该函数的功能是:

输出一个3X3的矩阵,要求必须使用行指针表示输出变量。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

main()

{

staticintarray[3][3]={{9,8,7},{6,5,4},{3,2,1}};

int(*p)[3],j,i;

p=【1】;

clrscr();

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

{

printf(“\n\n”);

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

printf(“%4d”,【2】);

}

}

答案:

array

*(*(p+i)+j)或p[i][j]

改错题

下列给定程序中,函数fun()的功能是:

计算正整数n的阶乘。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

doublefun(intn)

{

doubleresult=1.0;

while(n>1&&n<170)

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

result*=--n;

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

return;

}

main()

{

intn;

clrscr();

printf(“Enteraninteger:

”);

scanf(“%d”,&n);

printf(“\n\n%d!

=%lg\n\n”,n,fun(n));

}

答案:

result*=--n;改为result*=n--;

return;改为returnresult;

编程题

N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。

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

求出平均分,由函数值返回。

#include

#include

#defineN8

structlist

{doubles;

structlist*next;

};

typedefstructlistSTREC;

doublefun(SLIST*h)

{

}

SLIST*creatlist(double*s)/*创建链表*/

{SLIST*h,*p,*q;inti=0;

h=p=(SLIST*)malloc(sizeof(SLIST));

p->s=0;

while(i

{q=(SLIST*)malloc(sizeof(SLIST));

q->s=s[i];p->next=q;p=q;

}

p->next=0;

returnh;

}

voidoutlist(SLIST*h)

{SLIST*p;

p=h->next;

if(p==NULL)printf("ThelistisNULL!

\n");

else

{printf("\nHead");

do

{printf("->%4.1f",p->s);p=p->next;/*输出各成绩*/}

while(p!

=0);

printf("->End\n");

}

}

main()

{SLIST*h;

doubles[N]={12,87,45,32,91,16,20,48},ave;

h=creatlist(s);outlist(h);

ave=fun(h);

printf("ave=%6.3f\n",ave);

}

/*********参考答案*************/

SLIST*p;

doublesum;

sum=0;

p=h->next;

while(p->next!

=NULL)

{

sum+=p->s;

p=p->next;

}

return(sum/N);

/***************************

第五套

填空题

请补充main函数,该函数的功能是:

从键盘输入一组字符串,以’*’结束输入,并显示出这个字符串。

例如,输入abcefghi*,结果显示abcefghi

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#defineN80

main()

{

inti=-1,j=0;

charstr[N];

clrscr();

printf(“\nInputastring\n”)

do

{

i++;

scanf(【1】);

}while(【2】);

printf(“\n**displaythestring**\n”);

while(j

{

printf(【3】);

j++;

}

}

答案:

”%c”,&str[i]

str[i]!

=’*’

”%c”,str[j]

改错题

下列给定程序中,函数fun()的功能是:

使数组中的元素值增加10倍。

请改正程序中的错误,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

#include

#include

intm[10];

voidfun(void)

{

intj;

printf(“INsubfuncaftercalling\n”);

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

{

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

printf(“%3d”,m[j]*10);

}

}

main()

{

inti;

printf(“Inmainbeforecalling\n”);

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

{

m[i]=i;

printf(“%3d”,m[i]);

}

fun();

printf(“\nInmainaftercalling\n”);

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

printf(“%3d”,m[i]);

getch();

}

答案:

printf(“%3d”,m[j]*10);改为printf(“%3d”,m[j]=m[j]*10);

编程题

请编写函数fun(),其功能是:

计算并输出给定10个数的方差。

,其中

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

试题程序:

#include

#include

doublefun(doublex[10])

{

}

main()

{

doubles,x[10]={89.3,90.5,67.3,78.0,88.0,58.7,90.4,60.2,74.5,89.0};

inti;

printf(“\nTheoriginaldatais:

\n”);

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

printf(“%6.1f”,x[i]);

printf(”\n\n”);

s=fun(x);

printf(“s=%f\n\n”,s);

}

/****************

doublex1=0.0,s=0.0;

inti;

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

x1=x1+x[i];

x1=x1/10;

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

s=s+(x[i]-x1)*(x[i]-x1);

return(sqrt(s/10));

/*******************

第六套

填空题

请补充main函数,该函数的功能是:

计算每个学生成绩的平均分,并把结果保存在数组bb中。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在main函数的横线上填入所编写的若干表达式或语句。

试题程序:

#include

#defineN3

#defineM5

main()

{

inti,j;

staticfloatscore[N][M]={{83.5,82,86,65,67},{80,91.5,84,99,95},{90.5,95,86,95,97}};

floatbb[N];

clrscr();

for(i=0;i

【1】;

for(i=0;i

{

for(j=0;j

【2】;

bb[i]/=M;

}

for(i=0;i

printf(“\nstudent%d\taverage=%5.1f”,i+1,bb[i]);

}

答案:

bb[i]=0

bb[i]+=score[i][j]

改错题

以下程序可把输入的十进制以十六进制数的形式输出。

请在横线上填上适当的内容并把横线删除,使它能得出正确的结果。

注意:

不要改动main函数,不得增行或删行,也不得更改程序的结构。

试题程序:

main()

{

charb[17]={“0123456789ABCDEF”};

intc[64],d,i=0,base=16;

longn;

printf(“Enteranumber:

\n”);

scanf(“ld”,&n);

do{

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

c[i]=;i++;n=n/base;}

while(n!

=0);

printf(“Transmitenewbase:

\n”);

for(--i;i>=0;--i)

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

{d=c[i];printf(“%c”,b);}

printf(“\n”);

}

答案:

n%base

[d]

编程题

学生的记录由学号和成绩组成,N名同学的数据已在主函数中放入结构体数组s中,请编写函数fun(),该函数的功能是:

把高于等于平均分的学生数据放在b所指的数组中,高于等于平均分的学生人数通过形参n传回,平均分通过函数值返回。

注意:

部分源程序给出如下。

请勿改动主函数main和其它函数中的任何内容,仅在函数fun()的花括号中填入所编写的若干语句。

试题程序:

#include

#defineN12

typedefstruct

{charnum[10];

doubles;

}STREC;

floatfun(STREC*a,STREC*b,int*n)

{

}

main()

{STRECs[N]={{"GA05",85},{"GA03",76},{"GA02",69},{"GA04",85},{"GA01",91},{"GA07",72},{"GA08",64},{"GA06",87},{"GA015",60},{"GA013",79},{"GA012",73},{"GA014",90}};

STRECh[N],t;

FILE*out;

inti,n,j;

doubleave;

ave=fun(s,h,&n);

printf("The%dstudentdatawhichishigherthan%7.3f:

\n",n,ave);

for(i=0;i

printf("%s%4.1f\n",h[i].num,h[i].s);

printf("\n");

out=fopen("out90.dat","w");

fprintf(out,"%d\n%7.3f\n",n,ave);

for(i=0;i

for(j=i+1;j

if(h[i].s

{t=h[i];h[i]=h[j];h[j]=t;}

/*分数从高到低排列*/

for(i=0;i

fprintf(out,"%4.1f\n",h[i].s);

fclose(out);

}

/***************参考答案***********

doublesum;

inti,j;

j=0;

sum=0.0;

for(i=0;i

sum+=a[i].s;

sum=sum/N;

for(i=0;i

{

if(a[i].s>=sum)

{

b[j]=a[i];

j++;

}

}

*n=j;

/******

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

当前位置:首页 > 小学教育 > 语文

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

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