计算机三级机试.docx
《计算机三级机试.docx》由会员分享,可在线阅读,更多相关《计算机三级机试.docx(54页珍藏版)》请在冰点文库上搜索。
计算机三级机试
数列问题39题
编写函数JSvalue()它的功能是求F数列中大于t的最小的一个数,结果由函数返回,其中F数列F(n)的定义为:
F(0)=0,F
(1)=1,F(n)=F(n-1)+F(n-2)
最后调用函数writeDAT()把结果输入到文件outDAT中。
答案解析:
intf0=0,f1=1,fn;
fn=f0+f1;
while(fn<=t)
{
f0=f1;
f1=fn;
fn=f0+f1;
}
returnfn;
第38题下列程序的功能是,利用以下所示的简单迭代方法求方程
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的一个实根,作为函数值返回
请编制函数countValue()实现程序要求,最后调用函数writeDAT(),把结果输出到文件outDAT中。
答案解析:
floatx1=0.0,x0;
do{
x0=x1;
x1=cos(x0);
}
while(fabs(x0-x1)>=0.000001);
returnx1;
第95题
请编写函数countValue(),它的功能是求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根,并作为函数值返回,最后结果s输出到文件夹OUTDAT中。
答案解析:
inti;
doubles=0;
for(i=21;is+=i;
returnsqrt(s);
第七题下列程序的功,能是;计算出自然数six和nine,他们满足的条件是six+six+six=nine+nine的个数cnt,以及满足此条件的所有six与nine的和SUM,请编写函数countValue()实现程序要求,最后调用WRITEDAT()把结果cnt,sum输出到文件outDAT中,其中SIXNE各代表一个十进制数字。
答案解析:
inti,j,a1,a2,a3,a4;
for(i=100;i<=999;i++)
{
j=3*i/2;
a1=i/10%10;
a2=j/100%10;
a3=j/1000;
a4=j/10%10;
if(a1==a2&&a3==a4&&j>=1000&&j<=9999&&3*i==2*j)
{
cnt++;
sum+=i+j;
}
}
素数问题444510
45.下列程序的功能是:
将大于整数m且紧靠m的k个素数存入数组xx,请编写函数num(intm,intk,inxx[])实现程序的要求,最后调用函数readwriteDAT()把结果输出到outdat文件中。
答案解析:
inti,d,h,n=0;
d=m+1;
while(n{
h=d/2;
for(i=2;i<=h;i++)
if(d%i==0)break;
if(i>h)
{
xx[n]=d;
n++;
}
d++;
}
44.下列程序的功能是计算500-800之间的个数cnt,并按所要求素数的值从大到小的顺序,在计算其间隔减加之和,即第一个素数-第二个素数+第三个素数-第四个素数+第五个素数……的值sum,请编写函数countvlue(),实现程序的要求,最后调用函数writeDAT()把结果cnt和sum输出到文件outDAT中。
答案解析:
inti,j,h,f=1;
for(i=799;i>500;i-=2)
{
h=i/2;
for(j=2;j<=h;j++)
if(i%j==0)break;
if(j>h)
{
cnt++;
sum+=i*f;
f=-f;
}
}
10.下列程序的功能是:
选出100-1000之间的所有个位数字与十位数字之和被10除所得余数恰是百位数字的素数(293)。
计算并输出上述这些素数的个数cnt,以及这些函数值的和sum
请编写函数vlue(),实现程序的要求,最后调用函数writeDAT()把结果cnt和sum输出到文件outDAT中。
答案解析:
inti,j,h,ge,shi,bai;
for(i=101;i<=999;i+=2)
{
ge=i%10;
shi=i/10%10;
bai=i/100;
if((ge+shi)%10==bai)
{
h=i/2;
for(j=2;j<=h;j++)
if(i%j==0)break;
if(j>h)
{
cnt++;
sum+=i;
}
}
}
第91题下列程序的功能是:
寻找并输出11至999之间的数m,它满足m,m2,m3,均为回文数,所谓回文数是指各位数字左右对称的整数,例如121,676,94249等,满足上述条件的数如m=11,m2=121,m3=1331,皆为回文数,如果是回文数,则函数返回1,反之返回0,把结果输出到文件OUT,DAT中。
答案解析:
inti,cnt=0,xx[10],j;
while(n>0)
{
xx[cnt]=n%10;
n=n/10;
cnt++;
}
for(i=0,j=cnt-1;i<=j;i++,j--)
if(xx[i]!
=xx[j])break;
if(i>j)return1;
elsereturn0;
第九题下列程序的功能是,在三位整数中(100至999)中寻找符合下面条件的整数,并依次从小大存入数组中,它既是完全平方数,又有两位数字相同,例如144,676等,请编制函数intjsvalue(intbb[]),实现此功能满足该条件的的整数的个数通过所编制的函数返回。
答案解析:
inti,j,t,ge,shi,bai,cnt=0;
for(i=100;i<=999;i++)
{
ge=i%10;
shi=i/10%10;
bai=i/100;
if(ge==shi||shi==bai||bai==ge)
for(j=10;j<=33;j++)
if(i==j*j)
{
bb[cnt]=i;
cnt++;
}
}returncnt;
对四位数的处理2242527767778808198
2.已知数据文件INDAT中存有300个四位数,并已调用读函数readdat(),把这些数存入数组a中,请编制函数javalue(),其功能是:
求出千位数上的数加个位数上的数等于百位数上的数加十位数上的数的个数的cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从小到大的顺序进行排序,最后调用写函数writedat把数组b中的数输出到OUTdat中。
{
inti,j,t,ge,shi,bai,qian;
for(i=0;i<300;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
if(ge+qian==shi+bai)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]>b[j])
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
24.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat(),把这些数存入数组a中,请编制函数javalue(),其功能是:
如果四位数各位数上的数均为奇数,则统计出满足条件的个数cnt,并把四位数按从大到小的顺序存入数组b中,最后调用写函数writedat把数组b中的数输出到OUTdat中。
答案解析:
inti,j,t,ge,shi,bai,qian;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
if(ge%2!
=0&&shi%2!
=0&&bai%2!
=0&&qian%2!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
25.已知数据文件INDAT中存有300个四位数,并已调用读函数readdat(),把这些数存入数组a中,请编制函数javalue(),其功能是:
千+百=十+个的个数的cnt,再把所有满足此条件的四位数依次存入数组b中,然后对数组b的四位数按从大到小的顺序进行排序,最后调用写函数writedat把数组b中的数输出到OUTdat中。
答案解析:
inti,j,t,ge,shi,bai,qian;
for(i=0;i<300;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
if(qian+bai==shi+ge)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
76.已知数据文件INDAT中存有300个四位数,并已调用读函数readdat(),把这些数存入数组a中,请编制函数javalue(),其功能是:
如果四位数各位数上的数均是0,2,4,6,或8.则统计满足条件的个数cnt,,最后调用写函数writedat把数组b中的数输出到OUTdat中。
答案解析:
inti,j,t,ge,shi,bai,qian;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
if(ge%2==0&&shi%2==0&&bai%2==0&&qian%2==0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
对四位数的处理
(2)3293031638284
3.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和十位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的千位数字,新2位数字的个位数是原四位数的十位数字)以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新2位数的个位数字是原四位数的百位数字)如果新组成两个十位数ab-cd>=0且ab-cd<=10且两个数均为奇数,同时两个新十位数字均不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=qian*10+shi;
cd=ge*10+bai;
if((ab-cd)>=0&&(ab-cd)<=10&&ab%2==1&&cd%2==1&&qian!
=0&&ge!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
29.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和十位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的千位数字,新2位数字的个位数是原四位数的个位数字)以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的百位数字,新2位数的个位数字是原四位数的个位数字)如果新组成两个十位数均为奇数,并且两个二位数中至少有一个能被5整除,同时两个新十位数字都不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=qian*10+ge;
cd=bai*10+shi;
if(ab%2==1&&cd%2==1&&(ab%5==0||cd%5==0)&&qian!
=0&&bai!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
30已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和十位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的千位数字,新2位数字的个位数是原四位数的十位数字)以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新2位数的个位数字是原四位数的百位数字)如果新组成两个十位数ab-cd>=10且ab-cd<=20且两个数均为偶数,同时两个新十位数字均不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=qian*10+shi;
cd=ge*10+bai;
if((ab-cd>=10)&&(ab-cd<=20)&&(ab%2==0)&&(cd%2==0)&&qian!
=0&&ge!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
31.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和十位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的千位数字,新2位数字的个位数是原四位数的十位数字)以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新2位数的个位数字是原四位数的百位数字)如果新组成两个十位数均为素数,且两个新十位数字均不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=qian*10+shi;
cd=ge*10+bai;
if(isprime(ab)&&isprime(cd)&&qian!
=0&&ge!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
63.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和十位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的千位数字,新2位数字的个位数是原四位数的十位数字)以及把个位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的个位数字,新2位数的个位数字是原四位数的百位数字)如果新组成两个十位数ab且两个新十位数字均不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=qian*10+shi;
cd=ge*10+bai;
if((ab=0)&&(cd%2==0)&&qian!
=0&&ge!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
82.已知数据文件INDAT中存有200个四位数,并已调用读函数readdat()把这些数存入数组a中,请编制一个函数jsval(),其功能是,把千位数字和个位数字重新组成一个新的二位数ab(新十位数的2位数字是原四位数的个位数字,新2位数字的个位数是原四位数的千位数字)以及把十位数字和百位数字组成另一个新的十位数cd(新十位数的十位数字是原四位数的百位数字,新2位数的个位数字是原四位数的十位数字)如果新组成两个十位数均为偶数且至少有一个能被9整除,且两个新十位数字均不为0,则将满足此条件的四位数字按从大到小的顺序存入数组b中,并计算满足上述条件的四位数的个数cnt,最后调用函数writeDAT()中,把结果cnt及数组b中符合条件的四位数输出到outdat文件中。
答案解析:
inti,j,t,ge,shi,bai,qian,ab,cd;
for(i=0;i<200;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
ab=ge*10+qian;
cd=bai*10+shi;
if((ab%2==0&&cd%2==0)&&(ab%9==0||cd%9==0)&&ge!
=0&&bai!
=0)
{
b[cnt]=a[i];
cnt++;
}
}
for(i=0;ifor(j=i+1;jif(b[i]
{
t=b[i];
b[i]=b[j];
b[j]=t;
}
83.84
对四位数处理(3)4329699
4.已知数据文件INDAT中有300个四位数,并已调用函数readDAT(),把这些数存入数组a中,请编制一函数jsvalue(),其功能是:
求出千位数上的数加百位数上的数等于十位数上的数加个位数上的数的个数cnt,再求出满足所有满足条件的四位数的平均值pjz1,以及所有不满足此条件的四位数的平均值pjz2,最后调用函数writedat()把结果cnt.pjz1,pjz2输出到OUTDAT文件。
答案解析:
inti,ge,shi,bai,qian;
doublesum1=0,sum2=0;
for(i=0;i<300;i++)
{
ge=a[i]%10;
shi=a[i]/10%10;
bai=a[i]/100%10;
qian=a[i]/1000;
if(qian+bai==shi+ge)
{
cnt++;
sum1+=a[i];
}
elsesum2+=a[i];
}
pjz1=sum1/cnt;
pjz2=sum2/(300-cnt);
32.已知数据文件INDAT中有300个四位数,并已调用函数readDAT(),把这些数存入数组a中,请编制一函数jsvalue(),其功能是:
求出个位数上的数减千位数上的数减百位数上的数减十位数上的数大于0的数的个数cnt,再求出满足所有满足条件的四位数的平均值pjz1,以及所有不满足此条件的四位数的平均值pjz2,最后调用函数writedat()把结果cnt.pjz1,pjz2输出到OUTDAT文件。
答案解析:
inti,ge,shi,bai,qian;