首页 | 考研 | MBA | 专升本 | 成考 | 自考 | 高考 | 中考 | 出国 | 外语 | 电脑 | 公务员 | 司法 | 财考 | 资格考试 | 论文写作
 淘学考试计算机正文
 
全国计算机等级考试三级C语言上机题21-25
 
 
编辑:xujie 时间:2007-11-27 来源:淘学考试网 推荐好友



☆题目21

下列程序prog1.c的功能是:利用以下所示的简单迭代方法求方程: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()把结果输出到文件OUT17.DAT中。
部分源程序已给出。
请勿改动主函数main()和输出数据函数writeDat()的内容。
#include <conio.h>
#include <math.h>
#include <stdio.h>

float countvalue()
{ float x0,x1;
x1=0.0;
do{ x0=x1;
x1=cos(x0);
}while(fabs(x0-x1)>=0.000001);
return x1;
}

main()
{
clrscr();
printf("实根=%f\n",countvalue());
printf("%f\n",cos(countvalue())-countvalue());
writeDat();
}

writeDat()
{
FILE *wf;

wf=fopen("OUT17.DAT","w");
fprintf(wf,"%f\n",countvalue());
fclose(wf);
}

★题目22

请编写函数countvalue(),它的功能是:求n以内(不包括n)同时能被3与7整除的所有自然数之和的平方根s,并作为函数值返回,最后结果s输出到文件out.dat中。
例如若n为1000时,函数值应为:s=153.909064。
部分源程序存在文件prog1.c中。
请勿改动主函数main()和输入输出数据函数progReadWrite()的内容。
#include <conio.h>
#include <math.h>
#include <stdio.h>

double countvalue(int n)
{ int i;
double s=0.0;
for(i=1;i<n;i++)
if(i%21==0) s+=i;
return sqrt(s);
}

main()
{
clrscr();
printf("自然数之和的平方根=%f\n",countvalue(1000));
progReadWrite();
}

progReadWrite()
{
FILE *fp,*wf;
int i,n;
float s;

fp=fopen("in.dat","r");
if(fp==NULL){
printf("数据文件in.dat不存在!");
return;
}
wf=fopen("out.dat","w");
for(i=0;i<10;i++){
fscanf(fp,"%d\n",&n);
s=countvalue(n);
fprintf(wf,"%f\n",s);
}
fclose(fp);
fclose(wf);
}
题目23

已知在文件in.dat中存有N个(个数<200)实数,函数readdat()读取这N个实数并存入数组xx中。请编制函数calvalue(),其功能要求:
1、求出这N个实数的平均值aver;
2、分别求出这N个实数的整数部分之和sumint以及小数部分之和sumdec,最后调用函数writedat()把所求的结果输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()、读数据函数readdat()和输出数据函数writedat()的内容。
#include <stdio.h>
#include <conio.h>
#define MAXNUM 200

float xx[MAXNUM]
int N= 0 /* 文件IN.DAT中共有多少个实数 */
double aver=0.0;/*平均值*/
double sumint=0.0;/*整数部分之和*/
double sumdec=0.0;/*小数部分之和*/

int ReadDat(void)
void WriteDat(void)

void Calvalue(void)
{int i;
for (i=0;i<N;i++)
{sumint+=(long)xx;
sumdec+=xx-(long)xx;
aver+=xx;
}
aver/=N;
}

void main()
{ int i
clrscr()
for(i = 0 i < MAXNUM i++) xx = 0
if(ReadDat()) {
printf("数据文件IN.DAT不能打开!\007\n")
return
}
Calvalue()
printf("文件IN.DAT中共有实数=%d个\n", N)
printf("平均值=%.2lf\n", aver)
printf("整数部分之和=%.2lf\n", sumint)
printf("小数部分之和=%.2lf\n", sumdec)
WriteDat()
system("pause");
}

int ReadDat(void)
{
FILE *fp
int i = 0

if((fp = fopen("in.dat", "r")) == NULL) return 1
while(!feof(fp)) {
fscanf(fp, "%d,", &xx[i++])
}
fclose(fp)
return 0
}

void WriteDat(void)
{
FILE *fp

fp = fopen("OUT.DAT", "w")
fprintf(fp, "%.2lf\n%.2lf\n%.2lf\n", aver,sumint,sumdec)
fclose(fp)
}

题目24

下列程序prog1.c的功能是:在三位整数(100至999)中寻找符合条件的整数并依次从小到大存入数组中;它既是完全平方数,又是两位数字相同,例如144、676等。
请编制函数实现此功能,满足该条件的整数的个数通过所编制的函数返回。
最后调用函数writeDat()把结果输出到文件out.dat中。
请勿改动主函数main()和写函数writeDat()的内容。
#include <stdio.h>

int jsvalue(int bb[])
{int i,j,k=0;
int hun,ten,data;
for(i=10;i<32;i++)
{j=I*I;
hum=j/100;
ten=j%100/10;
data=j%10;
if(hum==ten||hum==data||ten==data)
bb[k++]=j;}
return k;
}

main()
{
int b[20],num;
num=jsvalue(b);
writeDat(num,b);
}

writeDat(int num,int b[])
{
FILE *out;
int i;

out=fopen("out.dat","w");
printf("%d\n",num);
fprintf(out,"%d\n",num);
for(i=0;i<num;i++){printf("%d\n",b);fprintf(out,"%d\n",b);}
fclose(out);
}
★题目25

下列程序的功能是:寻找并输出11至999之间的数m,它满足m,m2和m3均为回文数。所谓回文数是指其各位数字左右对称的整数,例如121,676,94249等。满足上述条件的数如m=11,m2=121,m3=1331皆为回文数。请编制函数int svalue(long m)实现此功能,如果是回文数,则函数返回1,反之则返回0。最后把结果输出到文件out.dat中。
注意:部分源程序已给出。
请勿改动主函数main()的内容。

#include <stdio.h>
int jsvalue(long n)
{int i,strl,half;
char xy[20];
ltoa(n,xy,10);
strl=strlen(xy);
half=strl/2;
for(i=0;i<half;i++)
if(xy!=xy[--strl]) break;
if(i>=half) return 1;
else return 0;
}

main()
{long m;
FILE *out;
out=fopen("out.dat","w");
for(m=11;m<1000;m++)
{ if(jsvalue(m)&&jsvalue(m*m)&&jsvalue(m*m*m))
{ printf("m=%4ld,m*m=%6ld,m*m*m=%8ld \n",m,m*m,m*m*m);
fprintf(out,"m=%4ld,m*m=%6ld,m*m*m=%8ld \n",m,m*m,m*m*m);
}
}
fclose(out);
system("pause");
}

 

 

 相 关 内 容



.

  推荐课程
 
 
 
 
 
 
  资讯动态
  综合辅导
  热文排行
版权信息 - 关于我们 - 联系方式 - 服务承诺 - 客户投诉 - 广告服务 - 网站合作 - 会员服务 - 友情链接 - 站长统计3
1 不良信息
举报中心
文明办网文明上网举报电话:15964542668
举报邮箱:topej@163.com
2 网络110
报警服务
服务热线:15964542668 电子邮件:guoyong@topej.com 服务 QQ:350125289
淘学之家(www.topej.com)旗下网站 ICP注册号:鲁ICP备07016860号