计算机国家二级考试机试题1Word格式.docx
《计算机国家二级考试机试题1Word格式.docx》由会员分享,可在线阅读,更多相关《计算机国家二级考试机试题1Word格式.docx(98页珍藏版)》请在冰豆网上搜索。
2.根据以下公式求π的值(要求精度0.005)
math.h>
doublefun(doubleeps)
doubles=1.0,s1=1.0;
intn=1;
while(s1>
=eps)/*当某项大于精度要求时,继续求下一项*/
{s1=s1*n/(2*n+1);
/*求多项式的每一项*/
s=s+s1;
/*求和*/
n++;
}
return2*s;
{doublex;
Inputeps:
"
);
scanf("
%lf"
&
x);
\neps=%lf,PI=%lf\n"
x,fun(x));
3.求出1~1000之间能被7或11整除,但不能同时被7和11
整除的所有整数,并将其放在a所指的数组中,通过n返回这些数的个数。
voidfun(int*a,int*n)
inti,j=0;
for(i=1;
=1000;
i++)/*求1到1000之内能被7或11整除、但不能同时被7和11整除的所有整数,并放入数组a中*/
if((i%7==0||i%11==0)&
&
i%77!
=0)
a[j++]=i;
*n=j;
{intaa[1000],n,k;
voidNONO();
fun(aa,&
n);
for(k=0;
k<
n;
k++)
if((k+1)%10==0)printf("
\n"
elseprintf("
%5d"
aa[k]);
4.规定输入的字符串中只包含字母和*号。
编写函数fun,其功能是:
删除字符串中所有的*号。
编写函数时,不能使用C语言提供的字符串函数。
voidfun(char*a)
a[i]!
='
\0'
;
if(a[i]!
*'
)
a[j++]=a[i];
/*若不是要删除的字符'
则留下*/
a[j]='
main()
{chars[81];
Enterastring:
);
gets(s);
fun(s);
Thestringafterdeleted:
puts(s);
NONO();
5.实现两个字符串的连接(不要使用库函数strcat),即把p2所指的字符串连接到p1所指的字符串后面。
voidfun(charp1[],charp2[])
inti,j;
p1[i]!
i++);
p2[j]!
p1[i++]=p2[j];
p1[i]='
{chars1[80],s2[40];
Enters1ands2:
%s%s"
s1,s2);
s1=%s\n"
s1);
s2=%s\n"
s2);
Invokefun(s1,s2):
fun(s1,s2);
Afterinvoking:
%s\n"
NONO();
6.某学生的记录由学号、8门课程成绩和平均分组成,学号和8门课程的成绩已在主函数中给出,请编写函数fun,其功能是:
求出该同学的平均分,并放入记录的ave成员中。
#defineN8
typedefstruct
{charnum[10];
doubles[N];
doubleave;
}STREC;
voidfun(STREC*a)
doubleave=0.0;
inti;
N;
a->
ave=a->
ave+a->
s[i];
ave/=N;
{STRECs={"
GA005"
85.5,76,69.5,85,91,72,64.5,87.5};
fun(&
s);
The%s'
sstudentdata:
s.num);
i++)
%4.1f\n"
s.s[i]);
\nave=%7.3f\n"
s.ave);
7.N名学生的成绩已在主函数中放入一个带头结点的链表结构中,h指向链表的头结点。
请编写函数fun,其功能是:
求出平均分,并由函数值返回。
stdlib.h>
structslist
{doubles;
structslist*next;
};
typedefstructslistSTREC;
doublefun(STREC*h)
STREC*p=h->
next;
while(p!
=NULL)
{ave=ave+p->
s;
p=p->
returnave/N;
STREC*creat(double*s)
{STREC*h,*p,*q;
inti=0;
h=p=(STREC*)malloc(sizeof(STREC));
p->
s=0;
while(i<
N)
{q=(STREC*)malloc(sizeof(STREC));
q->
s=s[i];
i++;
p->
next=q;
p=q;
next=0;
returnh;
outlist(STREC*h)
{STREC*p;
p=h->
head"
do
{printf("
->
%4.1f"
p->
s);
p=p->
=0);
\n\n"
{doubles[N]={85,76,69,85,91,72,64,87},ave;
STREC*h;
h=creat(s);
outlist(h);
ave=fun(h);
ave=%6.3f\n"
ave);
8.将所有大于1小于m的非素数存入xx所指数组中,非素数的个数通过k返回。
voidfun(intm,int*k,intxx[])
/*inti,j;
intt=0;
for(i=2;
m;
{j=2;
while(j<
i)
{if(i%j==0)
{xx[t]=i;
t++;
break;
j++;
*k=t;
}*/
inti,j,n=0;
for(i=4;
i++)/*找出大于1小于整数m的非素数*/
{for(j=2;
i;
if(i%j==0)break;
if(j<
i)xx[n++]=i;
*k=n;
/*返回非素数的个数*/}
intm,n,zz[100];
printf("
\nPleaseenteranintegernumberbetween10and100:
"
);
scanf("
%d"
&
n);
fun(n,&
m,zz);
\n\nThereare%dnon-primenumberslessthan%d:
m,n);
for(n=0;
n<
m;
n++)
\n%4d"
zz[n]);
9.求ss所指字符串中指定字符的个数,并返回此值。
string.h>
#defineM81
intfun(char*ss,charc)
inti=0;
for(;
*ss!
ss++)
if(*ss==c)
returni;
{chara[M],ch;
\nPleaseenterastring:
gets(a);
\nPleaseenterachar:
ch=getchar();
\nThenumberofthecharis:
%d\n"
fun(a,ch));
NONO();
10.计算n门课程的平均分,结果作为函数值返回。
floatfun(float*a,intn)
inti;
floatav=0.0;
for(i=0;
i<
n;
av=av+a[i];
return(av/n);
{floatscore[30]={90.5,72,80,61.5,55},aver;
aver=fun(score,5);
\nAveragescoreis:
%5.2f\n"
aver);
11.学生的记录由学号和成绩组成,N名学生的数据已放入主函数中的结构体数组s中。
把分数最高的学生数据放在b所指的数组中。
注意:
分数最高的学生可能不止一个,函数返回分数最高的学生的人数。
#defineN16
ints;
intfun(STREC*a,STREC*b)